<?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>FreeBSD Diary: Monitoring your HDD using SMART and Nagios</title>
	<guid>http://www.freebsddiary.org/smart.php</guid>
	<link>http://www.freebsddiary.org/smart.php</link>
	<description>Checking your HDD!</description>
	<pubDate>Sat, 13 Mar 2010 00:48:08 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): New version of the monotone-server package in pkgsrc</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1599070089952057305</guid>
	<link>http://blog.julipedia.org/2010/03/new-version-of-monotone-server-package.html</link>
	<description>Wow, it has been a long time... 5 years ago, I created the &amp;amp;lt;a href=&quot;http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/monotone-server/?only_with_tag=MAIN&quot;&amp;amp;gt;monotone-server&amp;amp;lt;/a&amp;amp;gt; package in pkgsrc, a package that provided an interactive script to set up a &amp;amp;lt;a href=&quot;http://monotone.ca/&quot;&amp;amp;gt;monotone&amp;amp;lt;/a&amp;amp;gt; server from scratch with, what I though, minimal hassle.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;My package did the job just fine, but past year I was blown away by the simplicity of the same package in &amp;amp;lt;a href=&quot;http://www.fedoraproject.org/&quot;&amp;amp;gt;Fedora&amp;amp;lt;/a&amp;amp;gt;: their &amp;amp;lt;tt&amp;amp;gt;init.d&amp;amp;lt;/tt&amp;amp;gt; script provides a set of extra commands to initialize the server before starting it up, and that is it. No need to mess with a separate interactive script; no need to create and memorize passphrases that you will never use; and, what's more, all integrated in the only single place that makes sense: in the init.d &quot;service management&quot; script.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;It has been a while since I became jealous of their approach, but I've finally got to it: I've spent the last few days rewriting the monotone-server package in pkgsrc and came up with a similar scheme.  And this &amp;amp;lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-changes/2010/03/12/msg038844.html&quot;&amp;amp;gt;new package&amp;amp;lt;/a&amp;amp;gt; just made its way &amp;amp;lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-changes/2010/03/12/msg038844.html&quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;to pkgsrc-HEAD!  The new package comes with what I think is a detailed manual page that explains how to configure the server from scratch.  Take a look and, if you find any mistakes, inconsistencies or improvements to be done, let me know!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;In the meantime, I will log into my home server, rebuild the updated package and put it in production :-)&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-1599070089952057305?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Fri, 12 Mar 2010 09:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Introducing the ATF nofork branch</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1501363386005733392</guid>
	<link>http://blog.julipedia.org/2010/03/introducing-atf-nofork-branch.html</link>
	<description>Despite my time for free software being virtually zero these days, I have managed to implement a prototype of what ATF would look like if it didn't implement forking and isolation in test programs. This feature has been often requested by users to simplify their life when debugging test cases.&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;I shouldn't repeat everything I posted on the atf-devel mailing list regarding this announcement, so please &amp;amp;lt;a href=&quot;http://mail-index.netbsd.org/atf-devel/2010/03/05/msg000070.html&quot;&amp;amp;gt;refer to that email for details&amp;amp;lt;/a&amp;amp;gt;. But I must say that the results look promising: the overall code of ATF is much simpler and also faster. (An execution I just tried cuts the run time of the ATF test suite from 1m 41s to 1m 16s.)  Expect more simplifications and speed-ups!&amp;amp;lt;/div&amp;amp;gt;&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-1501363386005733392?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sat, 06 Mar 2010 20:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Do It Sudo</title>
	<guid>http://linux.amazingdev.com/blog/archives/000945.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000945.html</link>
	<description>I've come across a couple sudo tricks during the past few days and thought I would pass them along. The first thing you need to know before using sudo is that you should use the visudo command to edit the sudo config file. This script does a number of useful...</description>
	<pubDate>Sun, 28 Feb 2010 18:30:30 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Google Summer of Code 2010 NetBSD swcryptX Project Suggestion (Updated)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100222_2216.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100222_2216.html</link>
	<description>I've been thinking of a neat-o project for this year's 
Google Summer of Code:
&lt;p&gt;

&lt;ul&gt;
&lt;b&gt;Abstract:&lt;/b&gt;
The goal of this project is to provide crypto acceleration
by utilizing multiple CPU cores.
The work is to extend the existing software-only &quot;swcrypto&quot;
crypto driver and hook that up with NetBSD's OpenCrypto
framework.
&lt;/ul&gt;

&lt;h2&gt;Overview of operation&lt;/h2&gt;

The opencrypto(9) framework exists to coordinate hardware
acceleration in NetBSD. Applications of the framework can
be inside the kernel like the FAST_IPSEC IPsec implementation,
or in userland like OpenSSL with the &quot;cryptodev&quot; engine.
Crypto drivers can be realized in software or in hardware.
Hardware drivers can be used to instruct e.g. the AMD Geode
LX's AES block or a HIFN chip to perform cryptographic
operations.
Upon system startup, the crypto drivers at the opencrypto(9)
framework, telling what operations they can perform.
When an operation is required later, the framework
will look which crypto device is currently not busy, and
offload the operation to that device.
Upon completion, the result is fed back to the application.
&lt;p&gt;

The following image illustrates the components
and their interaction.
&lt;p&gt;
&lt;img src=&quot;http://www.feyrer.de/NetBSD/images/gsoc2010-swcryptX-1.png&quot;&gt;


&lt;h2&gt;Limitations&lt;/h2&gt;

Offloading the cryptographic requests involves some overhead.
Data needs to be transferred to the hardware and back.
On systems with a slow CPU, this overhead is relatively
small compared to the operation speed of the CPU. On faster
CPUs, the overhead becomes more of a burden, making the
benefit of the crypto hardware negligible.
&lt;p&gt;

As examples, while a hifn(4) chip can provide worthwhile
speedups on 500MHz and 1GHz CPUs, no performance
win is experienced on a 2.4GHz CPU.
&lt;p&gt;


&lt;h2&gt;Proposal&lt;/h2&gt;

The communication overhead involves data transfers over
a PCI bus, which is of relatively low speed compared
to today's modern CPUs. Preventing the data transfer
is a worthwhile goal. In coordination with today's modern
multi-core CPUs, using one or more CPUs solely for the
purpose of crypto acceleration, a measurable 
improvement of crypto performance is expected. At
the same time, no special hardware requirements beyond
the CPU exist. This allows turning standard contemporary
systems into fast crypto systems easily.
&lt;p&gt;

The following image illustrates the idea of
interoperation between a CPU core that runs 
the kernel and application codes and three
cores that are dedicated to crypto code.
&lt;p&gt;

&lt;img src=&quot;http://www.feyrer.de/NetBSD/images/gsoc2010-swcryptX-2.png&quot;&gt;


&lt;h2&gt;Implementation Roadmap&lt;/h2&gt;

This is where it gets fishy. ;)
&lt;strike&gt;The existing opencrypto(4) framework probably needs to be make
MP-aware at the same time, employing proper use of NetBSD's
locking framework.&lt;/strike&gt;&lt;i&gt; (Already done)&lt;/i&gt;
The existing swcrypto(4) needs to be adjusted for operation on
multiple CPUs at the same time.
A way to decide how many CPUs are dedicated to run swcrypto(4)
instances.
CPUs that run swcrypto(4) need to be taken out from the
usual NetBSD CPU scheduling so that they are available exclusively
for crypto.


&lt;h2&gt;Requirements&lt;/h2&gt;

In no particular order:
&lt;ul&gt;
&lt;li&gt; Know how to build and install a kernel
&lt;li&gt; Understanding of fine grained SMP and locking
&lt;li&gt; How to use NetBSD's kernel threads, code-wise
&lt;li&gt; How to interact with NetBSD's scheduler, code-wise
&lt;li&gt; Tell the scheduler to pin a specific kernel thread to a
     specific CPU
&lt;li&gt; Interaction between applications (IPsec, OpenSSL) with opencrypto(9), code-wise

&lt;li&gt; Interaction of crypto providers with opencrypto(9), code-wise
&lt;li&gt; Hardware! You won't be able to do this without at least two
     CPU cores in your machine. The more the better.
&lt;li&gt; Benchmarking &amp;amp; a test setup for it
&lt;/ul&gt;

&lt;h2&gt;Project Applications&lt;/h2&gt;

Please follow 
&lt;a href=&quot;http://www.netbsd.org/contrib/soc-application.html&quot;&gt;the
NetBSD Project Application/Proposal HowTo&lt;/a&gt;
if you're serious to work on this project.

&lt;p&gt;

If you have any questions let me know, public discussion
should be led on the tech-crypto@ list.</description>
	<pubDate>Mon, 22 Feb 2010 22:57:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: More news from NetBSD land: inside and outside the kernel</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100221_1249.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100221_1249.html</link>
	<description>My inbox is still overflowing with NetBSD related news,
so here is the next chunk for you:

&lt;ul&gt;
&lt;li&gt; People owning a Marvell PCMCIA WiFi card can how have
	a look at
     &lt;a href=&quot;http://mail-index.netbsd.org/port-arm/2009/12/06/msg000864.html&quot;&gt;the malo(4) driver&lt;/a&gt;.
     If you use this on a gumstix ARM board, have a look
     as some fiddling with drvctl(8) is needed to get the
     card recognized properly.
     &lt;p&gt;

&lt;li&gt; Speaking about
     &lt;a href=&quot;http://www.feyrer.de/NetBSD/blog.html?-tags=gumstix&quot;&gt;Gumstix&lt;/a&gt;,
     KIYOHARA Takashi has declared the 
     &lt;a href=&quot;http://mail-index.netbsd.org/port-arm/2009/12/06/msg000865.html&quot;&gt;porting effort as finished&lt;/a&gt;.
     Support for the baex, connex, verdex and verdex-pro
     modules is available, as is support for the support modules.
     &lt;p&gt;

&lt;li&gt;  &lt;a href=&quot;http://openblocks.plathome.com/products/600/pict.html&quot;&gt;
     &lt;img border=&quot;0&quot; src=&quot;http://openblocks.plathome.com/products/600/image/obs.jpg&quot; align=&quot;right&quot;&gt;
     &lt;/a&gt;
	Staying in the &quot;embedded&quot; corner, KIYOHARA Takashi has
     &lt;a href=&quot;http://mail-index.netbsd.org/current-users/2009/12/24/msg011832.html&quot;&gt;announced&lt;/a&gt;
     that Plathome's OpenBlockS600 (AMCC 405EX) can now
     boot NetBSD via NFS. See the posting for dmesg output.
     The 
     &lt;a href=&quot;http://openblocks.plathome.com/products/600/spec.html&quot;&gt;OpenBlockS600&lt;/a&gt;
     comes with a AMCC 405EX PowerPC CPU, 
     two GigE ethernet ports and a bunch of other
     goodies for a price of about $600US.
     &lt;p&gt;

&lt;li&gt; Coming from hardware to software,
     &lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-users/2010/01/31/msg011603.html&quot;&gt;pkgsrc-2009Q4&lt;/a&gt;
     was released some time ago, and of course
     binary packages are available
     for a number of platforms:
     &lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-users/2010/02/08/msg011677.html&quot;&gt;5.0/macppc&lt;/a&gt;,
     &lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-users/2010/02/01/msg011620.html&quot;&gt;4.0.1/sparc and 5.0.1/sparc&lt;/a&gt;,
     &lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-users/2010/01/20/msg011500.html&quot;&gt;4.0.1/i386, 5.0.1/i386 and the same for 4.0.1/amd64 5.0.1/amd64&lt;/a&gt;.
     Also, binaries of pkgsrc-2009Q3 are available
     for &lt;a href=&quot;http://mail-index.netbsd.org/pkgsrc-users/2010/01/24/msg011530.html&quot;&gt;5.0/shark&lt;/a&gt;.
     &lt;p&gt;

&lt;li&gt; 
	&lt;a href=&quot;http://code.google.com/soc/&quot;&gt;
	&lt;img border=&quot;0&quot; align=&quot;right&quot; src=&quot;http://code.google.com/images/2010soclogo.jpg&quot;&gt;
	&lt;/a&gt;
	Google's 
     &lt;a href=&quot;http://code.google.com/intl/de/soc/&quot;&gt;Summer of Code&lt;/a&gt;
     was a big success for NetBSD and all of the Open Source
     community, and it seems 
     &lt;a href=&quot;http://groups.google.com/group/google-summer-of-code-discuss/browse_thread/thread/d839c0b02ac15b3f&quot;&gt;there will be one again&lt;/a&gt;
     &lt;a href=&quot;http://socghop.appspot.com/&quot;&gt;this summer&lt;/a&gt;.
     &lt;p&gt;

     Preparations are in an early stage, but there are already
     &lt;a href=&quot;http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs&quot;&gt;a FAQ&lt;/a&gt; and
     &lt;a href=&quot;http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/timeline&quot;&gt;a timeline&lt;/a&gt;
     as well as the 
     &lt;a href=&quot;http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/tos&quot;&gt;Program Terms of Service&lt;/a&gt;.
     From the NetBSD side, we're always happy for project suggestions
     (please use our mailing lists for discussions),
     and in NetBSD, we are currently working on out
     &lt;a href=&quot;http://www.netbsd.org/contrib/soc-projects.html&quot;&gt;projects page&lt;/a&gt;.
     If you plan to submit a proposal for a project
     with NetBSD, please see 
     &lt;a href=&quot;http://www.netbsd.org/contrib/soc-projects.html&quot;&gt;our project application/proposal form&lt;/a&gt;
     If you plan to submit a proposal for a project
     with NetBSD, please see 
     &lt;a href=&quot;http://www.netbsd.org/contrib/soc-application.html&quot;&gt;our Project Application/Proposal HowTo&lt;/a&gt;.

     &lt;p&gt;

&lt;li&gt; Getting back to the NetBSD code, a number of interesting changes
     were made in the previous weeks. The first to mention is that
     David Young has continued is work on
     &lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2010/02/02/msg007142.html&quot;&gt;the new shutdown order&lt;/a&gt;
     for device drivers:
     ``&lt;i&gt;cgd, dk, dm, md, raid, and vnd gracefully detach from the device
     tree during shutdown.  I believe that ccd is the only virtual disk that
     does not detach.&lt;/i&gt;''
     This allows having arbitrary stack of file systems, and still
     have them unconfigured properly in the right order on system
     shutdown.
     &lt;p&gt;

&lt;li&gt; Another major change that went into NetBSD recently is that
     &lt;a href=&quot;http://mail-index.netbsd.org/current-users/2010/02/03/msg012335.html&quot;&gt;terminfo was imported into NetBSD-current&lt;/a&gt;.
     Terminfo replaces termcap, but provides a
     backward compatible termcap interface.
     This move follows 
     &lt;a href=&quot;http://mail-index.netbsd.org/tech-userlevel/2009/06/05/msg002214.html&quot;&gt;discussion from last summer&lt;/a&gt;,
     and 
     &lt;a href=&quot;http://www.opengroup.org/onlinepubs/007908775/xcurses/tgoto.html&quot;&gt;docs by The Open Group&lt;/a&gt; (the people who make
     things like the POSIX standard and the Single Unix Specification),
     which indicates that the termcap specification will be
     withdrawn in the future.
     &lt;p&gt;

&lt;li&gt; Moving from userland inside the kernel, David Holland has
     proceeded with work to 
     &lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2010/02/07/msg007225.html&quot;&gt;unhook LFS from UFS&lt;/a&gt;.
     Historically, the Log structured File System was written after
     the Berkeley Fast File System. With the idea of sharing
     the core &quot;Unix File System&quot; code for both file systems,
     this resulted in a strong relationship between LFS and FFS,
     which was/is not always the best for the advantage and
     stability of either one: 
     ``&lt;i&gt;sharing ufs between both ffs and lfs has
     made all three entities (but particularly lfs) gross. ffs and lfs are
     not similar enough structurally for this sharing to really be a good
     design.&lt;/i&gt;''
     &lt;p&gt;

&lt;li&gt; Another major addition to the NetBSD kernel was made recently
     by Darren Hunt:
     ``&lt;i&gt;Courtesy of CoyotePoint Systems, I've been working on a port of
     &lt;a href=&quot;http://en.wikipedia.org/wiki/DTrace&quot;&gt;DTrace&lt;/a&gt; [...] to NetBSD for i386.&lt;/i&gt;''
     Citing Wikipedia, 
     ``&lt;i&gt;DTrace is a comprehensive dynamic tracing framework created by Sun Microsystems for troubleshooting kernel and application problems on production systems in real time. Originally developed for Solaris, it has since been released under the free Common Development and Distribution License (CDDL) and has been ported to several other Unix-like  systems.
     &lt;p&gt;

     DTrace can be used to get a global overview of a running system, such as the amount of memory, CPU time, filesystem and network resources used by the active processes. It can also provide much more fine-grained information, such as a log of the arguments with which a specific function is being called, or a list of the processes accessing a specific file.  &lt;/i&gt;''
     &lt;p&gt;

     The code is available in NetBSD-current. I haven't looked
     into this yet, but I'm looking forward of reports and blog
     postings if 
     &lt;a&gt;the wikipedia command line examples&lt;/a&gt; work.
     &lt;p&gt;

     (I think like with ZFS, Dtrace could use a hand with
     documenting the NetBSD side of things. Any takers?)
     &lt;p&gt;

&lt;li&gt; The last kernel change to mention is related to security:
     &lt;a href=&quot;http://mail-index.netbsd.org/current-users/2010/02/20/msg012656.html&quot;&gt;mapping the address 0 from userland was disabled&lt;/a&gt;.
     This issue
     &lt;a href=&quot;http://lwn.net/Articles/341773/&quot;&gt;went through&lt;/a&gt;
     &lt;a href=&quot;http://security.freebsd.org/advisories/FreeBSD-EN-09:05.null.asc&quot;&gt;the press&lt;/a&gt;
     late last year, and
     it this is now addressed in NetBSD, too.
     Those that still beed to map address 0 can do so via
     the USER_VA0_DISABLED_DEFAULT kernel option
     or the vm.user_va0_disable sysctl.
     &lt;p&gt;

&lt;li&gt;
	&lt;a href=&quot;http://www.NetBSD.org/&quot;&gt;
	&lt;img src=&quot;http://www.netbsd.org/images/NetBSD-smaller.png&quot; border=&quot;0&quot; align=&quot;right&quot;&gt;
	&lt;/a&gt;
	So much about about the NetBSD code for now. Of course having
 	all those fine features added screams for an immediate (*cough*)
	release, which brings me to the fact that
     &lt;a href=&quot;http://www.netbsd.org/releases/formal-5/NetBSD-5.0.2.html&quot;&gt;NetBSD 5.0.2 has been released&lt;/a&gt;:
     ``&lt;i&gt; NetBSD 5.0.2 is the second critical/security update of the NetBSD 5.0 release branch. It represents a selected subset of fixes deemed critical for security or stability reasons.
     &lt;p&gt;
     
     Please note that all fixes in critical/security updates (i.e., NetBSD 5.0.1, 5.0.2, etc.) are cumulative, so the latest update contains all such fixes since the corresponding minor release. These fixes will also appear in future minor releases (i.e., NetBSD 5.1, 5.2, etc.), together with other less-critical fixes and feature enhancements. &lt;/i&gt;''
&lt;/ul&gt;

I'm closing for today by pointing to three NetBSD-related events:
&lt;ul&gt;
&lt;li&gt; There's a 
	&lt;a href=&quot;http://wiki.netbsd.se/Hackathon13&quot;&gt;hackathon&lt;/a&gt;
	going this weekend (Feb 20/21 2010)
&lt;li&gt; Volunteers are wanted to setup &amp;amp; man a NetBSD booth at
     &lt;a href=&quot;http://wiki.froscamp.org/Welcome/&quot;&gt;FrOSCamp&lt;/a&gt; 2010 Zurich, Switzerland, on Sep 17/18 2010
&lt;li&gt; &lt;a href=&quot;http://mail-index.netbsd.org/tech-pkg/2010/02/16/msg004989.html&quot;&gt;pkgsrcCon 2010&lt;/a&gt; will be held in Basel, Switzerland, from
	May 28ths to 30ths 2010.
&lt;/ul&gt;
Have fun meeting the gang!</description>
	<pubDate>Sun, 21 Feb 2010 14:20:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Setting up a PPPoE server with NetBSD</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100215_2152.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100215_2152.html</link>
	<description>I had an urge to configure PPPoE today, but didn't have a 
DSL line handy to test it. So, with some help from martin@,
I got to prod NetBSD into becoming a PPPoE server.
&lt;p&gt;

&lt;a href=&quot;http://www.netbsd.org/docs/network/pppoe/index.html#pppoe-server&quot;&gt;I've put my notes here&lt;/a&gt;.
&lt;p&gt;

Open issues:
&lt;ul&gt;
&lt;li&gt; Whenever I terminate a client session (&quot;ifconfig pppoe0 down&quot;), 
     the server's pppoe0 interface goes down as well. Before new
     connections are served, I have to do a manual &quot;ifconfig pppoe0 up&quot;.

&lt;li&gt; When I add &quot;query-dns=3&quot; to the client side, the connection is
     terminated immediately after it's established. I don't know
     how to offer DNS servers via PPPoE/LCP, but at least just
     leaving the connection open instead of terminating it would
     be nice.
&lt;/ul&gt;

I understand this method is only for one/few PPPoE connections.
If more sessions are needed, this may not be the best option.
It still served my purpose well. YMMV.</description>
	<pubDate>Mon, 15 Feb 2010 21:56:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Org-ing in Emacs</title>
	<guid>http://linux.amazingdev.com/blog/archives/000944.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000944.html</link>
	<description>I have been using emacs since the beginning of computer time, way back in the mid-80s. My .emacs file has been carried around for almost as long. Each major rev causes me headaches, as I never know what archaic options are going to break things. And yet, I'm still learning...</description>
	<pubDate>Mon, 15 Feb 2010 15:54:03 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Musing about git's object store efficiency</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100212_1706.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100212_1706.html</link>
	<description>I'm currently looking at git to see what it can and cannot do,
and one thing I've looked today is how effective the backing store
mechanism is. To recall: CVS stores a list of patches between versions
in a single file,
and git stores each new revision in full in a separate file in the
so-called object store.
Is that an issue for NetBSD?
Let's see;
&lt;p&gt;

One of the more frequently updated files is the i386 port's GENERIC
kernel config file, which is at revision 1.963 right now. This means
that since it's import into CVS, 963 different revisions have been
made. In CVS, all those files are kept in a single GENERIC,v file.
In git, this puts 963 files on the file system.
A bit of a difference.
&lt;p&gt;

Looking at the space requirements for storing the repository data
itself, the GENERIC,v file is 883,233 bytes[1]. Extracting all 963
versions from revision 1.1 to revision 963 results in disk space
usage of 32,805,828 bytes[2,3]. And that's not counting the overhead of 962 
inodes and the related directory bookkeeping. 
&lt;p&gt;

In other words, the
git model requires about 37 times the space that CVS does. 
&lt;p&gt;

Sure the example file is not exactly one with an average
number of revisions, and I know that git offers some 
more efficient storage methods via &quot;pack&quot; files,
but investigating those is left as an exercise to
the reader. :-)

&lt;hr&gt;

[1] Obtained via rsync from cvs.netbsd.org:
&lt;pre&gt;
% ls -la GENERIC,v 
-r--r--r--  1 feyrer  wheel  883233 Feb 12 16:57 GENERIC,v &lt;/pre&gt;
&lt;p&gt;

[2]
&lt;pre&gt;
% mkdir extracted
% chdir extracted
% sh -c 'for i in `jot 964`; do echo $i ; co -p -r1.$i ../GENERIC &gt;GENERIC-`printf %04d $i` ; done'
&lt;/pre&gt;
&lt;p&gt;

[3]
&lt;pre&gt;
% cat extracted/* | wc -c
 32805828 &lt;/pre&gt;</description>
	<pubDate>Fri, 12 Feb 2010 17:26:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Tumblings, Jan 24</title>
	<guid>http://linux.amazingdev.com/blog/archives/000943.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000943.html</link>
	<description>A couple of links posted to my Linux Tumblr last week: Wicked Cheap Hosting - some great web hosting deals, courtesy of All About Linux TermBuilder - a simple web app to build a commandline command...</description>
	<pubDate>Mon, 08 Feb 2010 18:07:12 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Arched</title>
	<guid>http://linux.amazingdev.com/blog/archives/000942.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000942.html</link>
	<description>So early in December, I went on a quest for a new Linux distro. It wasn't so much that I was unhappy with my openSUSE 11.0 installation, but I knew I was probably going to install the new 11.2 version and so I figured I would cast about to see...</description>
	<pubDate>Sun, 07 Feb 2010 15:37:22 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Hackathon, February 19-22 2010</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100205_2258.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100205_2258.html</link>
	<description>Aleksej Saushev 
&lt;a href=&quot;http://mail-index.netbsd.org/current-users/2010/02/02/msg012326.html&quot;&gt;writes on a bunch of lists&lt;/a&gt;:

&lt;pre&gt;
We're running 13th Hackathon February 19-22 2010,
come and join us on IRC channel #netbsd-code at FreeNode (irc.freenode.net).
You may choose other ways to participate, if you find it more convenient.
See Hackathon page for updates: &lt;a rel=&quot;nofollow&quot; href=&quot;http://wiki.netbsd.se/Hackathon13&quot;&gt;http://wiki.netbsd.se/Hackathon13&lt;/a&gt;


Goal

Fix as many bugs as possible, close as many PRs as possible.


Details

In previous years we have accumulated a lot of problem reports.
Some of them relate to no longer supported branches (e.g. 2.0)
and were occasionally fixed during regular code work.
Some of them relate to hardware developers don't have access to.
Some of them may be too easy to fix, but noone looks at that part
of code (e.g. documentation).
Some of them relate to packages already removed or heavily reworked.
Some of them relate to packages in exotic environment (Solaris, Interix)
and developers cannot test if the bug is present or not.

You can find more in PR database at &lt;a rel=&quot;nofollow&quot; href=&quot;http://netbsd.org/support/query-pr.html&quot;&gt;http://netbsd.org/support/query-pr.html&lt;/a&gt;


More specifically, David Holland maintains categorized lists of PRs at

  &lt;a rel=&quot;nofollow&quot; href=&quot;http://www.netbsd.org/~dholland/buglists/&quot;&gt;http://www.netbsd.org/~dholland/buglists/&lt;/a&gt;

of which &quot;Wanted for 5.1&quot; 

(&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.netbsd.org/~dholland/buglists/51-WANTED.html&quot;&gt;http://www.netbsd.org/~dholland/buglists/51-WANTED.html&lt;/a&gt;)
and &quot;Stuck&quot; (&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.netbsd.org/~dholland/buglists/STUCK.html&quot;&gt;http://www.netbsd.org/~dholland/buglists/STUCK.html&lt;/a&gt;)
are of particular interest.

Another hot area is pkgsrc 
(&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.netbsd.org/~dholland/buglists/pkgsrc.html&quot;&gt;http://www.netbsd.org/~dholland/buglists/pkgsrc.html&lt;/a&gt;).


IMPORTANT NOTE: You don't have to be programmer to be able to help us,
you can help us with generic testing support.  &lt;/pre&gt;
&lt;p&gt;

Come, bring your favourite booze, and join in!</description>
	<pubDate>Fri, 05 Feb 2010 23:00:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Linux Love Links</title>
	<guid>http://linux.amazingdev.com/blog/archives/000941.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000941.html</link>
	<description>A few things I have recently thrown down on my Linux Love Tumblr blog, which I use for quick little Linux links and notes: 7 Best Linux Apps for Ripping CDs and DVDs | Maximum PC 50+ Ultimate Collections of Planet Wallpapers TermBuilder: a graphical Linux command line generator...</description>
	<pubDate>Tue, 02 Feb 2010 20:46:39 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Turn your ALIX into KITT (Updated)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100201_0026.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100201_0026.html</link>
	<description>&lt;img align=&quot;right&quot; border=&quot;0&quot; src=&quot;http://www.gifninja.com/Workspace/59f3f22e-5f40-4937-936c-1dc0d6fbe690/output.gif&quot;&gt;
Drop the following script into /etc/rc.d/alixkitt,
put &quot;alixkitt=yes&quot; into /etc/rc.conf and enjoy:

&lt;pre&gt;
#!/bin/sh
# Turn ALIX2c front LEDs into running LED
# http://www.gifninja.com/Workspace/59f3f22e-5f40-4937-936c-1dc0d6fbe690/output.gif
#
# Copyright (c) 2010 Hubert Feyrer &amp;lt;hubertf@NetBSD.org&amp;gt;

# PROVIDE: alixkitt

$_rc_subr_loaded . /etc/rc.subr

name=&quot;alixkitt&quot;
start_cmd=&quot;alixkitt_start&quot;
stop_cmd=&quot;alixkitt_stop&quot;
pidfile=&quot;/var/run/${name}.pid&quot;

alixkitt_sleeptime=1.0          # 0.5

alixkitt_setled()
{
        gpioctl -q -d /dev/gpio 6 $1
        gpioctl -q -d /dev/gpio 25 $2
        gpioctl -q -d /dev/gpio 27 $3

        sleep $alixkitt_sleeptime
}

alixkitt_start()
{
	touch $pidfile
        (
                alixkitt_setled 0 0 0

                while [ -f $pidfile ] ; do
                        alixkitt_setled 0 1 1
                        alixkitt_setled 1 0 1
                        alixkitt_setled 1 1 0
                        alixkitt_setled 1 0 1
                done
        ) &amp;amp;;
        echo $! &amp;gt;$pidfile
        echo Started pid $!
}

alixkitt_stop()
{
        if [ -f /var/run/alixkitt.pid ]; then
                read pid &amp;lt;$pidfile
                echo Stopped pid $pid
                kill $pid
                rm $pidfile
                alixkitt_setled 1 1 1
        fi
        exit 0
}

load_rc_config $name
run_rc_command &quot;$1&quot;
&lt;/pre&gt;

P.S.: There's still a bug left in that stopping immediately
re-starts the process. Got a patch?

&lt;b&gt;Update:&lt;/b&gt;
Axel Scheepers suggested doing the while-loop only
as long as the PID-file exists. Changed above.</description>
	<pubDate>Tue, 02 Feb 2010 10:18:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: On Being Persistent</title>
	<guid>http://linux.amazingdev.com/blog/archives/000940.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000940.html</link>
	<description>Those of us who have multiple hard drives in our computers will inevitably boot up one morning to find the naming scheme for these drives has changed. What was once /dev/sda is now /dev/sdb and vice versa. Your computer won't boot and fsck complains about an uknown or mismatched filesystem...</description>
	<pubDate>Mon, 01 Feb 2010 14:28:05 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Toggling Alix2c LEDs</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100131_2336.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100131_2336.html</link>
	<description>&lt;a href=&quot;http://www.pcengines.ch/alix.htm&quot;&gt;
&lt;img align=&quot;right&quot; src=&quot;http://www.mgraves.org/voip/wp-content/uploads/2009/11/alix-miniwall2c3+antredrear.jpg&quot; border=&quot;0&quot;&gt;
&lt;/a&gt;
I've found that the three LEDs at the front of a 
&lt;a href=&quot;http://www.pcengines.ch/alix.htm&quot;&gt;PC Engines Alix2C board&lt;/a&gt;
can be toggled on and off via their attachment to the GPIO bus.
Here are the commands for this:
&lt;p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td&gt;left:   &lt;/td&gt;&lt;td&gt;gpioctl -d /dev/gpio 6 2 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;middle: &lt;/td&gt;&lt;td&gt;gpioctl -d /dev/gpio 25 2 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;right:  &lt;/td&gt;&lt;td&gt;gpioctl -d /dev/gpio 27 2 &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
	<pubDate>Sun, 31 Jan 2010 23:50:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Unfilling my inbox: NetBSD news from the past few weeks -  ACPI, NUMA, Xen, and more</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100131_1551.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100131_1551.html</link>
	<description>Herre are some more things that I've caught in my inbox for too long,
and I'm finally finding some time
to sum them up here:

&lt;ul&gt;
&lt;li&gt; NetBSD's &quot;let's move kernel parts to the userland&quot; RUMP 
	project is still under heavy development, and in order
	to make testing of compatibility after kernel changes easier,
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/18/msg006508.html&quot;&gt;a new command &quot;rumptest&quot; was added to build.sh&lt;/a&gt;:

	``&lt;i&gt;Basically you say:
	&lt;pre&gt;
	    ./build.sh ${yourargs} tools ; ./build.sh ${yourargs} rumptest
	&lt;/pre&gt;

	    Where yourargs are what have you, e.g. '-U -u -o -O /objs'.
	    &lt;p&gt;

	    The latter builds only the rump kernel libs and uses some ld+awk magic
	    to figure out if things go right or not.  This is to avoid having to
	    install headers and build libs (which is too slow since a full build is
	    too slow).  The magic is not a substitute for a full build, but it is
	    n+1 times faster and works probably 99.9% of the time.
	    &lt;p&gt;
	    
	    The scheme uses a number of predefined component sets
	    (e.g. tmpfs+vfs+rumpkern) to test linkage.  They are currently listed
	    in build.sh.  This area probably needs some work in the future.  It would
	    be nice to autogenerate the combinations somehow.
	    &lt;p&gt;
	    
	    If things go well, you get something like this:
	    &lt;p&gt;
	    
	    &lt;pre&gt;
        ===&amp;gt; Rump build&amp;amp;link tests successful
        ===&amp;gt; build.sh ended:   Wed Nov 18 20:10:59 EET 2009 &lt;/pre&gt;
&lt;/i&gt;''

	See Antti's 
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/18/msg006508.html&quot;&gt;Antti's mail to tech-kern&lt;/a&gt;:
	on how to tell if things didn't go so well, and what to do in that case.
	&lt;p&gt;

&lt;li&gt;	According to
	&lt;a href=&quot;http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access&quot;&gt;Wikipedia&lt;/a&gt;,
``&lt;i&gt;Non-Uniform Memory Access or Non-Uniform Memory Architecture (NUMA) is a computer memory design used in multiprocessors, where the memory access time depends on the memory location relative to a processor. Under NUMA, a processor can access its own local memory faster than non-local memory, that is, memory local to another processor or memory shared between processors.&lt;/i&gt;''
	&lt;p&gt;

	Supporting NUMA in a contemporary (i.e.: Intel centric)
	SMP-enabled operating system requires following a bunch
	of standards, two of which are
	parsing of two tables, the &lt;a href=&quot;http://ixbtlabs.com/articles2/cpu/rmma-numa2.html&quot;&gt;System Resource Affinity Table (SRAT)&lt;/a&gt;
	and the
	&lt;a href=&quot;http://www.linux-mag.com/id/6868&quot;&gt;System Locality Information Table (SLIT)&lt;/a&gt;.
	Both tables are accessible via 
	the 
	&lt;a href=&quot;http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface&quot;&gt;Advanced Configuration and Power Interface (ACPI)&lt;/a&gt;, and according
	to the
	&lt;a href=&quot;http://de.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface&quot;&gt;German-language Wikipedia&lt;/a&gt;,
	the SRAT is used to assign local memory to local threads
	to boost their performance, and the SLIT defines the
	&quot;distance&quot; of the nodes among themselves, which is used to
	determine the &quot;nearest&quot; memory if local memory is not
	enough.
	&lt;p&gt;
	
	Now, Christop Egger has posted patches to add
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/23/msg006518.html&quot;&gt;an ACPI SLIT parser&lt;/a&gt;
	and
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/23/msg006517.html&quot;&gt;an ACPI SRAT parser&lt;/a&gt;.
	See the two postings for
	dmesg pr0n from his tests on an 8-node system.
	&lt;p&gt;

&lt;li&gt; Staying with ACPI and Christoph Egger, he found that even
	though the ACPI spec defines an ACPI device for fans,
	BIOS vendors and OEMs do their own thing. 
	To accommodate things like the fan sensor found in
	the ACPI Thermal Zone in his HP Pavillion DV9700 laptop
	he has
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/23/msg006519.html&quot;&gt;proposed a driver&lt;/a&gt;
	to extend the acpitz(4) driver with fan information.
	That way, envstat(8) can be used to display the ran's
	RPMs:

&lt;pre&gt;
[acpitz0]
  Processor Thermal Zone:     56.000   95.000                       degC
                     fan:       2840                                 RPM &lt;/pre&gt;
	&lt;p&gt;

&lt;li&gt; Staying with driver games, iMil writes me that
	there's documentation on 
	&lt;a href=&quot;http://wiki.netbsd.se/DRI%2C_AIGLX%2C_Composite_and_Compiz&quot;&gt;getting DRI, AIGLX, Composite and Compiz&lt;/a&gt;
	going with NetBSD 5.0 available in 
	&lt;a href=&quot;http://wiki.netbsd.se/&quot;&gt;the O(ther)NetBSD Wiki&lt;/a&gt; now.
	&lt;p&gt;

	The documentation covers how to enable the
	Direct Rendering Manager (DRI), setting up and configuring
	Modular X.org, assuring that everything's in place, and
	how to get 
	&lt;a href=&quot;http://en.wikipedia.org/wiki/Compiz&quot;&gt;Compitz&lt;/a&gt; going.  Mmm, wobbly windows at last! :-)
	&lt;p&gt;

&lt;li&gt; While we're talking funky desktop stuff: Marc Balmer has
	submitted 
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/11/26/msg006535.html&quot;&gt;a patch to get touchpanel support for ums(4)&lt;/a&gt;.
	ums(4) is for USB mice, and in contrast to mice, touch panels need
	to deal with absolute numbers, not relative numbers.
	&lt;p&gt;

&lt;li&gt; Back to the guts of the kernel, another patch suggested
	by Christop Egger was for 
&lt;a href=&quot;http://mail-index.netbsd.org/current-users/2009/12/22/msg011794.html&quot;&gt;adding x2apic&lt;/a&gt;. What is x2apic?
X2APIC is
``&lt;i&gt;an Intel-only feature but can also be found
in virtual environments with support for CPU apic id's &amp;gt; 0xff.
&lt;p&gt;

I.e. Xen 4.0 (not yet released) supports 128 CPUs in HVM guests
with the CPUs enumerated with even apic id's. That means you need
x2apic for the 128th CPU :)
&lt;/i&gt;''
	&lt;p&gt;

&lt;li&gt; While speaking of Xen: Xen 4.0 is coming soon,
	and there's a 
	&lt;a href=&quot;http://mail-index.netbsd.org/port-xen/2010/01/18/msg005638.html&quot;&gt;call to help testing it on NetBSD&lt;/a&gt;!
	&lt;p&gt;
	Install Mercurial, check out latest Xen
	sources, apply a bunch of patches, build and install.
	Examples of commands are given, in addition to changes
	required for /boot.cfg etc.
&lt;p&gt;
	Report your findings to 
	&lt;a href=&quot;http://www.netbsd.org/mailinglists/#port-xen&quot;&gt;port-xen&lt;/a&gt;!
	&lt;p&gt;

&lt;li&gt; Last one for today: Michal Gladecki,
	Editor-in-Chief of BSD Magazine 
	&lt;a href=&quot;http://mail-index.netbsd.org/netbsd-advocacy/2010/01/12/msg000214.html&quot;&gt;writes&lt;/a&gt;:
	``&lt;i&gt;We are happy to announce that BSD Magazine is transforming into a free monthly online publication. The online version of BSD Magazine will stay in the same quality and form. It will look like the BSD magazine one is familiar and comfortable with. Please sign up to our newsletter at www.bsdmag.org and get every issue straight to your inbox. Also, you can now download any of the previous issues from our website. The first online issue -- 2/2010 -- is coming out in February. Please spread the word about BSD Magazine. &lt;/i&gt;''
	&lt;a href=&quot;http://www.bsdmag.org/&quot;&gt;Click&lt;/a&gt;!
	&lt;p&gt;
&lt;/ul&gt;

So much for today. I still have a bunch of news items
in my inbox for next time, but let's call it
good for today. 
&lt;p&gt;

Unrelated, I've been playing with git a bit over the
past few days, and wile I have a number of questions building up 
(which will be subject to tech-repository or so), what I 
can say today is that the speed of &quot;git pull&quot; with
NetBSD's git repository and my 1MBit DSL line reminds me
a lot of the times when I used SUP with my 56k modem
- it took forever, too. :-(</description>
	<pubDate>Sun, 31 Jan 2010 16:54:00 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: cssh - cluster ssh</title>
	<guid>http://www.freebsddiary.org/css.php</guid>
	<link>http://www.freebsddiary.org/css.php</link>
	<description>Sometimes you need more than one</description>
	<pubDate>Tue, 26 Jan 2010 01:48:06 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): set -e and set -x</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-8947551254574129862</guid>
	<link>http://blog.julipedia.org/2010/01/set-e-and-set-x.html</link>
	<description>If you write shell scripts, you definitely need to know about two nice features that can be enabled through the &amp;amp;lt;tt&amp;amp;gt;set&amp;amp;lt;/tt&amp;amp;gt; builtin:&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;set -e&amp;amp;lt;/tt&amp;amp;gt;: Enables checking of all commands. If a command exits with an error and the caller does not check such error, the script aborts immediately. Enabling this will make your scripts more robust. But don't wait until your script is &quot;complete&quot; to set the flag as an afterthought, because it will be a nightmare to fix the scrip to work with this feature enabled. Just write &amp;amp;lt;tt&amp;amp;gt;set -e&amp;amp;lt;/tt&amp;amp;gt; as the very first line of your code; well... after the shell bang.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;set -x&amp;amp;lt;/tt&amp;amp;gt;: If you are writing simple scripts that are meant to, well, script the execution of a few tasks (as opposed of being full-flown programs written in shell), set this flag to trace the execution of all commands. This will make the interpreter print each command right before it is executed, so it will aid you in knowing what is happening at any point in time.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&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-8947551254574129862?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sun, 24 Jan 2010 22:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>FreeBSD Diary: Problems starting a jail with ezjail</title>
	<guid>http://www.freebsddiary.org/ezjail-freebsd-8.php</guid>
	<link>http://www.freebsddiary.org/ezjail-freebsd-8.php</link>
	<description>Things change.  We must evolve.</description>
	<pubDate>Sat, 23 Jan 2010 00:48:09 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: A colorful collection of NetBSD news  from the past few weeks</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100112_2316.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100112_2316.html</link>
	<description>AKA &quot;I've been slacking again, and there's a whole pile of stuff
here now that I'm putthing into one blog posting&quot;. Here we go:

&lt;ul&gt;
&lt;li&gt;	&lt;a href=&quot;http://www.friendlyarm.net/products/mini2440&quot;&gt;&lt;img src=&quot;http://www.friendlyarm.net/sites/products/mini2440-70s.jpg&quot; border=&quot;0&quot; align=&quot;right&quot;&gt;&lt;/a&gt;
	&lt;a href=&quot;http://mail-index.netbsd.org/port-arm/2009/10/28/msg000842.html&quot;&gt;Initial support&lt;/a&gt;
	for the 
	&lt;a href=&quot;http://www.friendlyarm.net/products/mini2440&quot;&gt;FriendlyArm Mini2440&lt;/a&gt; board has been announced by Paul Fleischer. 
	In a &lt;a href=&quot;http://mail-index.netbsd.org/port-arm/2010/01/08/msg000874.html&quot;&gt;later update&lt;/a&gt;,
	most of the hardware is reported working, and
	&lt;a href=&quot;http://xpg.dk/files/File/netbsd/mini2440-20100108.patch&quot;&gt;the patch is available for review &amp;amp; comments&lt;/a&gt;.
	Furthermore, the touch screen is usable, and 
	Qt/Embedded was built on top of wscons.
	&lt;p&gt;

&lt;li&gt; &lt;a href=&quot;http://www.businesswire.com/portal/site/google/?ndmViewId=news_view&amp;newsId=20091104005262&amp;newsLang=en&quot;&gt;Force10 Networks Receives Common Criteria Security Certification for Its High-Performance Ethernet Switch/Router Products&lt;/a&gt;.
	According to the article, ``&lt;i&gt;Common Criteria evaluations entail formal rigorous analysis and testing to examine security aspects of a product or system. Extensive testing activities involve a comprehensive and formally repeatable process, confirming that the security product functions as claimed by the manufacturer. Security weaknesses and potential vulnerabilities are specifically examined during wide-ranging evaluation and testing.
	&lt;p&gt;
	
	FTOS is the operating system software that runs on Force10 switch/router product lines, including the E-Series, C-Series and S-Series platforms. &lt;b&gt;Based on NetBSD&lt;/b&gt;, FTOS leverages a distributed, multiprocessor architecture that delivers highly scalable protocols and reliability. By delivering the same OS across its entire switch/router line, Force10 ensures that customers benefit from stable code, a consistent configuration environment and simpler software management. &lt;/i&gt;''
	&lt;p&gt;

&lt;li&gt; While there:
	&lt;a href=&quot;http://www.your-story.org/force10-networks-delivers-ethernet-optimized-platform-for-mpls-core-networks-65185/&quot;&gt;Force10 Networks Delivers Ethernet-Optimized Platform for MPLS Core Networks&lt;/a&gt;:
	``&lt;i&gt;Force10 Networks, Inc. [...]
	announced the immediate availability of MPLS (multi-protocol label switching) functionality for its ExaScale E-Series core switch/routers.
	[...] 
	The ExaScale platform combines high-density, non-blocking, line-rate 10 GbE switching and routing with robust MPLS LSR support at 1/5th of the cost of a traditional core router, enabling carriers to fully capitalize on the economic advantages of Ethernet.&lt;/i&gt;''
	&lt;p&gt;

&lt;li&gt; &lt;a href=&quot;http://techie-buzz.com/utilites/create-bootable-live-linux-usb-drives-with-unetbootin.html&quot;&gt;Create Bootable Live Linux USB Drives with UNetbootin&lt;/a&gt;:
	``&lt;i&gt;UNetbootin allows you to create bootable Live USB drives for a variety of Linux distributions from Windows or Linux, without requiring you to burn a CD. You can either let it download one of the many distributions supported out-of-the-box for you, or supply your own Linux .iso file if you've already downloaded one or your preferred distribution isn't on the list.&lt;/i&gt;''
	&lt;p&gt;

	And of course we all know that NetBSD is Linux, right?
	See the list of supported distributions:
	&lt;p&gt;

	&lt;a href=&quot;http://unetbootin.sourceforge.net/&quot;&gt;&lt;img src=&quot;http://sourceforge.net/dbimage.php?id=167328&quot; border=&quot;0&quot;&gt;&lt;/a&gt;
	&lt;p&gt;

	The 
	&lt;a href=&quot;http://unetbootin.sourceforge.net/&quot;&gt;homepage&lt;/a&gt;
	mentions that NetBSD 4.0 is supported, maybe someone wants
	to give them an update on what's up with NetBSD 5.0?
	Would be nice to see that on the list!
	&lt;p&gt;

&lt;li&gt; Ever wondered what happened with the BSD Certification recently?
	There's a video from the talk
	&lt;a href=&quot;http://www.archive.org/details/BsdCertificationGroupACaseStudyInOpenSourceCertification&quot;&gt;BSD Certification Group: A Case Study in Open Source Certification&lt;/a&gt;
	available that talks about the goal of the project,
	the two exams (BSD Associate, BSD Professional), and what's
	going on behind the scenes.
	&lt;p&gt;

&lt;li&gt; With the move from XFree to X.org, the X server for the DNARD Shark's
	NetBSD/shark lost support for accelerated X.
	Thanks to Michael 'macallan' Lorenz, 
	&lt;a href=&quot;http://mail-index.netbsd.org/port-arm/2009/11/10/msg000847.html&quot;&gt;hardware-accelerated X for NetBSD/shark is back now&lt;/a&gt;:
	``&lt;i&gt;I finally got around to start working on an Xorg driver for the IGS CyberPro
	20x0 family found in rev. 5 Sharks, Netwinder etc. - currently the driver is
	built only on shark and supports only the VL variant found there. Adding
	support for PCI chips is trivial though, just needs extra probing.
	The driver supports autoconfiguration ( X -configure should yield something
	almost usable, only DefaultDepth needs to be adjusted).&lt;/i&gt;''
	&lt;p&gt;

&lt;li&gt; Staying with cool platforms, here's a
	&lt;a href=&quot;http://mail-index.netbsd.org/port-sun2/2009/11/14/msg000070.html&quot;&gt;quick procedure&lt;/a&gt;
	to run 
	&lt;a href=&quot;http://www.netbsd.org/ports/sun2/&quot;&gt;NetBSD/sun2&lt;/a&gt; 5.0.1
	on 
	&lt;a href=&quot;http://people.csail.mit.edu/fredette/tme/&quot;&gt;The Machine Emulator (TME)&lt;/a&gt;
	(see &lt;a href=&quot;http://www.NetBSD.org/packages/emulators/tme/&quot;&gt;pkgsrc/emulators/tme&lt;/a&gt;), compiled by Izumi Tsutsui.
	Who's first do get a pkgsrc bulk build done? :-)
	&lt;p&gt;

&lt;li&gt; Jed Davis has committed the
	&lt;a href=&quot;http://netbsd-soc.sourceforge.net/projects/raidframe/&quot;&gt;RAIDframe parity Summer-of-Code project&lt;/a&gt;.
	See
	&lt;a href=&quot;http://mail-index.netbsd.org/current-users/2009/11/17/msg011303.html&quot;&gt;his posting&lt;/a&gt;
	for the details. The project
	``&lt;i&gt;drastically reduces
	the time RAIDframe spends rewriting parity after an unclean shutdown by
	keeping better track of outstanding writes (thus, &quot;parity map&quot;).  The
	tech-kern archives have more details [...]
	&lt;p&gt;
	
	This feature is enabled by default on all sets (other than RAID 0).  It
	can be administratively disabled with the new &quot;raidctl -M&quot; flag, which
	is described in the changes to the raidctl(8) man page; however, the I/O
	overhead for updating the parity map is expected to be unnoticeable in
	practice.&lt;/i&gt;''
&lt;/ul&gt;

So much for now. There is more in the pipe, but that will have
to wait for now. Good night!</description>
	<pubDate>Tue, 19 Jan 2010 15:17:00 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: Integrating the Tape Library with an existing Bacula installation</title>
	<guid>http://www.freebsddiary.org/tape-library-integration.php</guid>
	<link>http://www.freebsddiary.org/tape-library-integration.php</link>
	<description>Adding a new tape drive isn't always simple</description>
	<pubDate>Tue, 19 Jan 2010 00:48:15 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: Tape Libraries &amp; Bacula</title>
	<guid>http://www.freebsddiary.org/tape-library.php</guid>
	<link>http://www.freebsddiary.org/tape-library.php</link>
	<description>Tape libraries can be complex to set up</description>
	<pubDate>Mon, 18 Jan 2010 00:48:10 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: NetBSD and ISO 8859-2</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100117_2242.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100117_2242.html</link>
	<description>Flying by one one of our mailing lists, I found this gem:
``&lt;i&gt;&lt;a href=&quot;http://v3.sk/~lkundrak/netbsd-sk_cz-howto/summary-en.html&quot;&gt;This short article&lt;/a&gt; aims to help people that want to use ISO8859-2 character encoding in NetBSD/i386's wscons(4) console. It is very brief, so if you understand Slovak language, I recommend you to read 
&lt;a href=&quot;http://ovecka.be/~lkundrak/netbsd-sk_cz-howto&quot;&gt;NetBSD Slovak &amp; Czech HOWTO&lt;/a&gt; instead. &lt;/i&gt;''
&lt;p&gt;

The article describes how to teach wscons to use a ISO 8859-2 font,
and also how to adjust the wscons keymap to either a
czech or slovak keyboard mapping.
&lt;p&gt;

I think that gives support for ISO 8859-1, -2 and -15, so now where
are your patches for
&lt;a href=&quot;http://en.wikipedia.org/wiki/ISO/IEC_8859&quot;&gt;the&lt;/a&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Unicode&quot;&gt;rest&lt;/a&gt;?</description>
	<pubDate>Sun, 17 Jan 2010 22:47:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Hardware crypto with Geode LX based ALIX board</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100113_1629.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100113_1629.html</link>
	<description>I'm using an 
&lt;a href=&quot;http://pcengines.ch/alix2d13.htm&quot;&gt;Alix 2d13&lt;/a&gt;
machine as home router for quite some time now - uptime was 158 days
today. The board has a 500MHz AMD Geode LX800 CPU, which can do
AES crypto in hardware.
Today, I've found time to play with the
&lt;a href=&quot;http://netbsd.gw.com/cgi-bin/man-cgi?glxsb++NetBSD-5.0&quot;&gt;glxsb(4)&lt;/a&gt;
driver, and get some numbers:
&lt;p&gt;

&lt;pre&gt;
The 'numbers' are in 1000s of bytes per second processed.
crypto   type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sw       aes-128-cbc       3583.29k     3931.51k     4037.32k     8113.75k     8205.61k
hw       aes-128-cbc       1200.70k     4470.18k    11729.65k    17328.05k    34006.33k&lt;/pre&gt;

The command &quot;openssl speed -evp aes-128-cbc -elapsed&quot; was ran each time, in the first case with 
glxsb(4) disabled (boot -c, disable glxsb), in the second case
with the driver enabled.
&lt;p&gt;

Still, I find those numbers interesting in comparison to
&lt;a href=&quot;http://www.feyrer.de/NetBSD/blog.html/nb_20070623_0108.html&quot;&gt;those of a Soekris 5501&lt;/a&gt;, esp.
as the machines have the same CPU &amp; clock rate.
&lt;p&gt;

I couldn't find a way to switch use of hardware crypto off in
software, anyone got a hint? openssl(1)'s &quot;-engine cryptodev&quot; seems
to always use hardware crypto when it's there, and leaving out
that switch uses the same engine, so no difference.
I've found a few sysctls under kern.*, but apparently none seems
relevant to my goal (not to speak of the lack of documentation...)</description>
	<pubDate>Wed, 13 Jan 2010 16:55:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: sysupdate - an addition for etcupdate(8) (Update #2)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20100104_0228.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20100104_0228.html</link>
	<description>I wanted to update a few machines with latest netbsd-5 and -current today, and found that there's a certain lack of tools to aid in the process: we have etcupdate(8) and postinstall(8), but nothing to help extract the userland sets (let alone do the same thing for the kernel, esp. now that modules must be put into place, too).
&lt;p&gt;

To save me from re-typing the same commands, I've hacked a script &quot;sysupdate&quot; that's intended to run with a new kernel booted, and which will then 1) extract all the sets where mtree files are in /etc/mtree, and 2) run etcupdate for etc (and xetc, if in /etc/mtree).
&lt;p&gt;

Here's an example run:
&lt;p&gt;

&lt;pre&gt;
    % sh ~/tmp/sysupdate -s /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets -n
    ---------------------------------------------------------------------------
    Updating your userland now!
    ---------------------------------------------------------------------------

    New userland: NetBSD 5.99.23 (GENERIC) #0: Sun Jan 3 02:13:00 CET 2010
    Current kernel: NetBSD vmnetbsd6 5.99.23 NetBSD 5.99.23 (GENERIC) #0:
     Sun Jan 3 02:13:00 CET 2010 feyrer%mini.local@localhost
     :/usr/cvs/src-current/obj.i386/sys/arch/i386/compile/GENERIC i386

    Really update? (y/N) y
    Updating sets...
    Extracting base.tgz
    tar -plzx -C / -f base.tgz
    Extracting comp.tgz
    tar -plzx -C / -f comp.tgz
    Extracting games.tgz
    tar -plzx -C / -f games.tgz
    Extracting man.tgz
    tar -plzx -C / -f man.tgz
    Extracting misc.tgz
    tar -plzx -C / -f misc.tgz
    Extracting modules.tgz
    tar -plzx -C / -f modules.tgz
    Extracting tests.tgz
    tar -plzx -C / -f tests.tgz
    Extracting text.tgz
    tar -plzx -C / -f text.tgz
    Extracting xbase.tgz
    tar -plzx -C / -f xbase.tgz
    Extracting xcomp.tgz
    tar -plzx -C / -f xcomp.tgz
    Extracting xfont.tgz
    tar -plzx -C / -f xfont.tgz
    Extracting xserver.tgz
    tar -plzx -C / -f xserver.tgz
    Updating etc files...
    etcupdate -s /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets/etc.tgz \
     -s /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets/xetc.tgz
    Done.
    % &lt;/pre&gt;

The script is available
&lt;a href=&quot;http://mail-index.netbsd.org/current-users/2010/01/04/msg011927.html&quot;&gt;in the current-users@ mailing list archive&lt;/a&gt;.

&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt;
Chavdar Ivanov tells me that there's a package
pkgsrc/sysutils/etcmanage that comes with a script INSTALL-NetBSD
which does the same as mine (plus more). Seems that's not established
enough that it's the communicated way for updating (yet?).
Given that the script uses perl, maybe that's some time off. :-P
&lt;p&gt;

Another option that uses toosl that come with NetBSD
out of the box (ksh!) is available 
&lt;a href=&quot;http://www.daemonforums.org/showthread.php?t=4003&quot;&gt;here&lt;/a&gt; - thanks to Dalibor Gudzic
for the hint and the script!
&lt;p&gt;

&lt;b&gt;Update #2:&lt;/b&gt;
Asmodehn sent me mail that he also has
&lt;a href=&quot;http://svn.gna.org/viewcvs/netbsd-intro/trunk/sysupdate?rev=45&amp;view=markup&quot;&gt;made a script for performing system updates&lt;/a&gt;.
How about someone collect all these into one, and import something
into NetBSD that at least provides minimal functionality?</description>
	<pubDate>Tue, 12 Jan 2010 12:54:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Installing NetBSD/macppc on a Mac Mini G4</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1422463512138756573</guid>
	<link>http://blog.julipedia.org/2010/01/installing-netbsdmacppc-on-mac-mini-g4.html</link>
	<description>Yesterday, I spent a while installing NetBSD/macppc 5.0.1 on a Mac Mini G4.  The process wasn't easy, as it involved the following steps. I'm omitting many details, as they are &quot;common knowledge&quot; to Mac users (or otherwise can be easily found on the net):&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;After booting the installer from the CD image, drop into the shell.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Use &amp;amp;lt;tt&amp;amp;gt;pdisk&amp;amp;lt;/tt&amp;amp;gt; to create an &amp;amp;lt;tt&amp;amp;gt;Apple_HFS&amp;amp;lt;/tt&amp;amp;gt; partition for the boot loader and two &amp;amp;lt;tt&amp;amp;gt;Apple_UNIX_SVR2&amp;amp;lt;/tt&amp;amp;gt; partitions, one for the root file system and another for swap.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Run &amp;amp;lt;tt&amp;amp;gt;sysinst&amp;amp;lt;/tt&amp;amp;gt; and install the system. When asked to repartition the disk, just say &amp;amp;lt;i&amp;amp;gt;Use existing partition sizes&amp;amp;lt;/i&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Once the system is installed, drop again into the shell before rebooting.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Mount your hard disk into &amp;amp;lt;tt&amp;amp;gt;/mnt&amp;amp;lt;/tt&amp;amp;gt; and chroot into it.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Fetch a copy of pkgsrc.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Install the &amp;amp;lt;tt&amp;amp;gt;sysutils/hfsutils&amp;amp;lt;/tt&amp;amp;gt; package.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Use &amp;amp;lt;tt&amp;amp;gt;hformat&amp;amp;lt;/tt&amp;amp;gt; to create a new HFS file system in the &amp;amp;lt;tt&amp;amp;gt;Apple_HFS&amp;amp;lt;/tt&amp;amp;gt; partition we created.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Mount the installation CD.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Copy, using &amp;amp;lt;tt&amp;amp;gt;hcopy&amp;amp;lt;/tt&amp;amp;gt;, the &amp;amp;lt;tt&amp;amp;gt;ofwboot.xcf&amp;amp;lt;/tt&amp;amp;gt; file from the CD to the boot partition.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Reboot.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Drop into the OpenFirmware setup (Command+Option+P+R).&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Set &amp;amp;lt;tt&amp;amp;gt;boot-device&amp;amp;lt;/tt&amp;amp;gt; to &amp;amp;lt;tt&amp;amp;gt;hd:,\ofwboot.xcf&amp;amp;lt;/tt&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Set &amp;amp;lt;tt&amp;amp;gt;boot-file&amp;amp;lt;/tt&amp;amp;gt; to &amp;amp;lt;tt&amp;amp;gt;netbsd&amp;amp;lt;/tt&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;And here is the tricky thing to get the machine to auto-boot: Set &amp;amp;lt;tt&amp;amp;gt;boot-command&amp;amp;lt;/tt&amp;amp;gt; to &amp;amp;lt;tt&amp;amp;gt;.&quot; hello&quot; cr &quot; screen&quot; output boot&amp;amp;lt;/tt&amp;amp;gt;, not &amp;amp;lt;tt&amp;amp;gt;mac-boot&amp;amp;lt;/tt&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;I found the last command somewhere on the Internet (dunno where now), but, supposedly, a regular &amp;amp;lt;tt&amp;amp;gt;mac-boot&amp;amp;lt;/tt&amp;amp;gt; should have worked. In fact, it works if you call this command from the prompt, but not during automatic boot. (It turns out to be a problem with the version of OpenFirmware I have.)&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;Just writing down the steps in case I need them later on. Installing Debian stable was much, much easier, but the installer for testing crashes every day with a different error, so I gave up.&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;(Oh, by the way, I did the same installation into an old PowerMac G3 and that was really painful. The machine refused to boot from any of the CDs I tried and the prebuilt kernels hang during initialization due to a bogus driver. In the end: netbooting and using custom kernels.)&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-1422463512138756573?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 11 Jan 2010 23:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Mounting fixed and removable disks with KDE</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091228_1227.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091228_1227.html</link>
	<description>If you're among the people running KDE, and if you want to be
able to have KDE handle removable and fixed disks properly during
the HAL subsystem, there's a 
&lt;a href=&quot;http://mail-index.netbsd.org/current-users/2009/12/28/msg011869.html&quot;&gt;suggestion by David Brownlee&lt;/a&gt;
to achieve this.
&lt;p&gt;

To get removable devices automatically mounted and a file browser
pop up, add the following to /usr/pkg/etc/PolicyKit/PolicyKit.conf:

&lt;pre&gt;
        &amp;lt;match action=&quot;org.freedesktop.hal.storage.mount-removable&quot;&amp;gt;
                &amp;lt;return result=&quot;yes&quot; /&amp;gt;
        &amp;lt;/match&amp;gt;&lt;/pre&gt;

David writes that ``&lt;i&gt;[w]ith the above plugging in a USB flash drive into my amd64 laptop pops up a
notification window, clicking on it opens dolphin, and clicking on the
device in dolphin correctly mounted it.&lt;/i&gt;''
&lt;p&gt;

A similar thing can be achieved for fixed disks, by adding the following
data:

&lt;pre&gt;
        &amp;lt;match action=&quot;org.freedesktop.hal.storage.mount-fixed&quot;&amp;gt;
                &amp;lt;return result=&quot;yes&quot; /&amp;gt;
        &amp;lt;/match&amp;gt; &lt;/pre&gt;

There are still discussions if/what part of this should be enabled
by default, but I think it's nevertheless useful to document this 
here. Enjoy!</description>
	<pubDate>Mon, 28 Dec 2009 12:50:00 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: Upgrading PostgreSQL</title>
	<guid>http://www.freebsddiary.org/postgresql-upgrading.php</guid>
	<link>http://www.freebsddiary.org/postgresql-upgrading.php</link>
	<description>Upgrading the client, then the server</description>
	<pubDate>Mon, 21 Dec 2009 00:48:11 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Catching up on source changes</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091210_0004.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091210_0004.html</link>
	<description>I've dug through my source-changes archive once more, and 
there are entries from February(?!?) to mid-October 2009
in there that I think may be of interest to casual
followers of NetBSD.
&lt;p&gt;

Before I go into the details, let me add a hint on the
&quot;source-changes-full&quot; mailing list, which is like source-changes,
but the mails there also contain diffs of the changes (as long
as they are below 1MB in size). The -full list is not archived
on &lt;a href=&quot;http://mail-index.netbsd.org/&quot;&gt;mail-index.netbsd.org&lt;/a&gt;,
and I must have missed the announcement. It's definitely useful!
&lt;p&gt;

So, what interesting changes have there been to NetBSD-current
recently? Here we go:

&lt;ul&gt;
&lt;li&gt; New / updated drivers:
	&lt;ul&gt;
	&lt;li&gt; sdtemp(4) reads the on-DIMM temperature sensors following
		the JEDEC Standard No. 21-C Section 4-7.
	&lt;li&gt; gpio(4) got support for Intel ICH southbridges as found on
		Intel SS4220-E (ICH7) and Acorp 6A815EPD (ICH2) motherboards
	&lt;li&gt; lom(4) supports the LOMlite &quot;Lights Out Management&quot; boards found
		on Sun hardware like the LOMlite found on the Sun Netra t1 
		and the LOMlite2 found on Sun Netra T1/X1 and Sun Fire V100/V120.
	&lt;li&gt; An initial version of a SD/MMC driver for the Winbond W83L518D (and probably
	W83L519D) Integrated Media Reader with PNP bus attachment glue was added.
	&lt;li&gt; acpiwmi(4) was added to added, to further support ACPI
		development. See
		&lt;a href=&quot;http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx&quot;&gt;the specs&lt;/a&gt; for more details.
	&lt;li&gt; piixide(4) now supports Intel 3400 SATA
	&lt;/ul&gt;

&lt;li&gt; New kernel interfaces and library functions include:
	&lt;ul&gt;
	&lt;li&gt; getdate(3) and getdate_err(3) were added according
		to POSIX.1 and the Open Group 
	&lt;li&gt; RAIDframe was sped up massively when checking parity
		after a system crash with the help of a parity map.
		This work was done during this year's Google Summer-of-Code.
	&lt;li&gt; A &quot;netbsd.inet.icmp.bmcastecho&quot; sysctl was added to
		disable replies to the broadcast address.
	&lt;li&gt; Floating point functions f{min,max,dim}{,l,f}(3) were added
	&lt;li&gt; udl(4) adds support for DisplayLink DL-1x0/1x5 based USB LCDs and USB-VGA adaptors
	&lt;/ul&gt;

&lt;li&gt; Random other additions and changes include:
	&lt;ul&gt;
	&lt;li&gt; hdaudioctl(8) can be used to manipulate hdaudio(4) devices
	&lt;li&gt; The NetBSD/playstation2 port was removed due to a lack
		of developer support. It's still available in CVS.
	&lt;li&gt;  The NetBSD/i386 bootloader now knows a &quot;dev&quot; command
		to list available boot devices and their size.
	&lt;/ul&gt;

&lt;li&gt; Newly imported and updated 3rd party software includes:
	&lt;ul&gt;
	&lt;li&gt; pfsync from OpenBSD 4.2, adopted in this year's Google
		Summer of Code.
	&lt;li&gt; PF from OpenBSD 4.2 was imported.
	&lt;li&gt; Multicast DNS (&quot;Bonjour&quot;) support was added, based on 
		Apple's mDNSResponder. Enable with &quot;dns: mdns&quot; in
		/etc/nsswitch.conf.
	&lt;li&gt; GNU binutils were updated to version 2.19
	&lt;li&gt; Many of the bazillion of X.org components were updated - ways too many to note in detail.
	&lt;li&gt; BIND was updated to 9.7.0b1
	&lt;li&gt; Flex 2.5.35 was imported
	&lt;li&gt; A new m4(1) was imported
	&lt;/ul&gt;
&lt;/ul&gt;</description>
	<pubDate>Thu, 10 Dec 2009 00:30:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Logical Volume Management (LVM)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091209_2334.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091209_2334.html</link>
	<description>Adam Hamsik has been working on Logical Volume Management (LVM) support
in NetBSD during the Google Summer of Code and beyond. The code is 
a from-scratch implementation of the same interfaces found in the
Linux kernel, and as a result, the same userland tools can be used. 
The code is now enabled in NetBSD by default, i.e. it will be part
of NetBSD 6.0 (quite some time down the road, but time to test and
shake out the bugs is *now*).
&lt;p&gt;

Besides the code, there's also
&lt;a href=&quot;http://www.netbsd.org/docs/guide/en/chap-lvm.html&quot;&gt;documentation available&lt;/a&gt;
in 
&lt;a href=&quot;http://www.netbsd.org/docs/guide/en/&quot;&gt;the NetBSD Guide&lt;/a&gt;.
&lt;p&gt;

Happy Volume Managing!</description>
	<pubDate>Wed, 09 Dec 2009 23:37:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Glorious LXF126 Contest</title>
	<guid>http://linux.amazingdev.com/blog/archives/000939.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000939.html</link>
	<description>If you are the winner in my glorious Linux Format 2009 Christmas Issue giveaway, here's what you have to look forward to: Ultimate eye candy - a pretty interesting article on how to get the most dazzling display, whether you use Compiz, KDE, or GNOME. Despite my general disdain...</description>
	<pubDate>Wed, 02 Dec 2009 13:27:29 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Contest and Projects</title>
	<guid>http://linux.amazingdev.com/blog/archives/000938.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000938.html</link>
	<description>Due to a mix-up, I ended up with two copies of Linux Format #126, the Christmas 2009 issue. I figure I'll run my first ever contest here at Daemon Dancing - after over 6 years of writing on this blog, why not? Let's make it a simple one - just...</description>
	<pubDate>Mon, 30 Nov 2009 15:15:27 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>FreeBSD Diary: mailwrapper exited on signal 11</title>
	<guid>http://www.freebsddiary.org/postfix-not-sendmail.php</guid>
	<link>http://www.freebsddiary.org/postfix-not-sendmail.php</link>
	<description>Sometimes, Postfix gets clobbered.</description>
	<pubDate>Mon, 30 Nov 2009 00:48:06 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: logcheck - a log file scanner</title>
	<guid>http://www.freebsddiary.org/logcheck-new.php</guid>
	<link>http://www.freebsddiary.org/logcheck-new.php</link>
	<description>Automate the scanning of your log files</description>
	<pubDate>Sun, 29 Nov 2009 00:48:06 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Holiday Projects</title>
	<guid>http://linux.amazingdev.com/blog/archives/000937.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000937.html</link>
	<description>So on this long weekend in the US, I have a few technology projects I hope to work on: Fix Girls' Computer Their computer finally gave up the ghost a few weeks ago and they've been using one of my work computers while I figured out what to do. I...</description>
	<pubDate>Fri, 27 Nov 2009 14:29:57 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>FreeBSD Diary: spamd-setup gives 404</title>
	<guid>http://www.freebsddiary.org/spamd-setup.php</guid>
	<link>http://www.freebsddiary.org/spamd-setup.php</link>
	<description>Lists change.  Find out which one.</description>
	<pubDate>Tue, 24 Nov 2009 00:48:05 +0000</pubDate>
</item>
<item>
	<title>FreeBSD Diary: c partition goes away in FreeBSD 8</title>
	<guid>http://www.freebsddiary.org/upgrade8.php</guid>
	<link>http://www.freebsddiary.org/upgrade8.php</link>
	<description>Sometimes, things change.</description>
	<pubDate>Sun, 22 Nov 2009 00:48:08 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Processing Makefile.am with M4</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5706562320936440325</guid>
	<link>http://blog.julipedia.org/2009/10/processing-makefileam-with-m4.html</link>
	<description>ATF's Makefile.am, which is a single Makefile for the whole tree, was already at the 1300 lines mark and growing. At this size, it is unmanageable, and a quick look at its contents reveals tons of repeated delicate code.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Why so much repeated code, you ask, if the whole point of Automake is to simplify Makefiles? Automake does in fact simplify Makefile code when you define targets known by Automake, such as binaries and/or libraries. However, as soon as you start doing fancy things with documentation, building tons of small programs or messing with shell scripts, things get out of control because you are left on your own to define their targets and their necessary build logic.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Up until now, I had just kept up with the boilerplate code... but now that I'm starting to add pretty complex rules to generate HTML and plain text documentation out of XML files, the complexity must go. And here comes my solution:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;I've just committed an experiment to &amp;amp;lt;a href=&quot;http://mtn-host.prjek.net/viewmtn/atf/revision/info/aca66742e00b236d0b6dcb22ae70468736b612bc&quot;&amp;amp;gt;process Makefile.am with M4&amp;amp;lt;/a&amp;amp;gt;. I've been trying to look for prior art behind this idea and couldn't find any, so I'm not sure how well this will work. But, so far, this has cut down 350 lines of Makefile.am code.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;How does this work? First of all, I've written a script to generate the Makefile.am from the Makefile.am.m4 and put it in admin/generate-makefile.sh. All this script does is call M4, but I want to keep this logic in a single place because it has to be used from two call sites as described below.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Then, I've added an autogen.sh script to the top-level directory that generates Makefile.am (using the previous script) and calls autoreconf -is. I'm against autogen.sh scripts that pretend to be smart instead of just calling autoreconf, but in this case I see no other way around it.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;At last, I've modified Makefile.am to add an extra rule to generate itself based on the M4 version. This, of course, also uses generate-makefile.sh.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;We'll see how this scales, but I'm so far happy with the results.&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-5706562320936440325?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Extending sudo credentials</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-190748834219167977</guid>
	<link>http://blog.julipedia.org/2009/09/extending-sudo-credentials.html</link>
	<description>If you use sudo for, e.g. pkgsrc's just-in-time su, you may have often bitten by the problem that some compilations are slow and the build process stops right in the middle to ask you for a root password.  If you go away while the system compiles, you'll be frustrated when you come back, as the process may still well be at the very beginning.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;This happens because, unless disabled by the system administrator, your sudo credentials last for 5 minutes. If you hadn't used sudo for those 5 minutes, it will ask you for your password again. A simple workaround for the problem is to automatically renew your credentials, say, every 2 minutes. You can do this by running the following command (from the same console you are using later on!) right before starting a pkgsrc build:&amp;amp;lt;pre&amp;amp;gt;$ ( while :; do sudo -v; sleep 120; done ) &amp;amp;amp;&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-190748834219167977?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Best config setting ever</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1338186479268297089</guid>
	<link>http://blog.julipedia.org/2009/08/best-config-setting-ever.html</link>
	<description>&amp;amp;lt;pre&amp;amp;gt;echo 'set editing-mode vi' &amp;amp;gt;&amp;amp;gt;~/.inputrc&amp;amp;lt;/pre&amp;amp;gt;This will enable vi-editing mode for all commands that use the GNU readline library (e.g. bash, python, bc, etc.), not only the shell.  For the shell only (including non-bash shells), add 'set -o vi' to your shrc file.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;I don't know why I didn't do this before given that I'm a pretty hard vi user.  Still, for some reason, I kept using emacs-like key bindings for command-line editing.  Not any more!  However, be careful: if you are used to vim's visual editing mode, you'll keep hitting 'v' in the command line and getting super annoyed.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Enjoy!&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-1338186479268297089?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): 1000 revisions for ATF</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-681908603179050098</guid>
	<link>http://blog.julipedia.org/2009/08/1000-revisions-for-atf.html</link>
	<description>Mmm!  Revision &amp;amp;lt;a href=&quot;http://mtn-host.prjek.net/viewmtn/atf/revision/info/7ca234b9aceabcfe9a8a1340baa07d6fdc9e3d33&quot;&amp;amp;gt;7ca234b9aceabcfe9a8a1340baa07d6fdc9e3d33&amp;amp;lt;/a&amp;amp;gt;, committed about an hour ago, marks the 1000th revision in the ATF repository.  Thanks for staying with me if you are following the project :)&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-681908603179050098?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Books by Joel Spolsky</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-9020484380911179497</guid>
	<link>http://blog.julipedia.org/2009/08/books-by-joel-spolsky.html</link>
	<description>I just finished reading the third book in a row from Joel Spolsky, titled Joel on Software. Before this one, I read More Joel on Software and The Best Software Writing 1, all in a bit over a month. Note: I hadn't read any book cover-to-cover for a loooong while. Very interesting and entertaining books; highly recommended.&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;Oh, and his writing style is really enjoyable. We, crappy blog writers, can learn a lot from him!&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-9020484380911179497?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Rearchitecting ATF</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4743147252783979430</guid>
	<link>http://blog.julipedia.org/2009/07/rearchitecting-atf.html</link>
	<description>During the last few weeks, I've been doing some ATF coding and, well... I'm not happy. At all. I keep implementing features but I feel, more and more, that ATF is growing out of control and that it is way too sluggish. It oughtn't be so slow. About 6 minutes to run the whole test suite in a Mac G3 I just got? HA! I bet I can do much, much, much better than that. Come on, we are targeting NetBSD, so we should support all those niche platforms rather well, and speed matters.&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;The thing is, the current code base grew out of a prototype that didn't have that much of a design. Well, it had a design but, in my opinion, it has turned to be a bad design. I couldn't imagine that we could hit the bottlenecks (speed) and user-interface issues (for example, the huge difficulties that involve debugging a failing test case) that we are hitting.  So...&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;i&amp;amp;gt;IT IS TIME FOR A CHANGE!!!&amp;amp;lt;/i&amp;amp;gt;&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;I'm currently working on a written specification of what ATF will look like, hopefully, in the not-so-distant future. It will take a while to get there, but with enough effort, we soon will. And life will be better. And no, I'm not talking about a from-scratch rewrite; that'd only hurt the project. I plan to take incremental and safe steps, keeping the code base running all the time, but I will do a major face-lift of everything. (I wish I could say &quot;we&quot; instead of &quot;I&quot; here.  But not there yet.)&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;Why am I writing a specification, you ask? Well, because that forces me (or ANY developer) to think how I want the thing to look like and to decide, exactly, on what the design will be, which technologies will be used, which languages will be involved and in what components, etc. And no, I'm not talking of a class model design; I'm just talking about the main design of the whole picture, which is quite hard by itself. Plus having a spec will allow me to show it to you before I start coding and you will say &quot;oh, wonderful, this new design sucks so much that I'm not going to bother with the new version&quot;. Or maybe hell will freeze and you will think, &quot;mmm, this looks interesting, maybe it will solve these issues I'm having as regards speed, ease of debugging and ease of use&quot;.&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;Anyway, I hope to have a draft &quot;soon&quot; and to hear any of the two possible comments as a result!&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;b&amp;amp;gt;Edit (July 29th)&amp;amp;lt;/b&amp;amp;gt;: Alright, I have uploaded an &amp;amp;lt;a href=&quot;http://www.netbsd.org/~jmmv/rearchitecting-atf/spec.html&quot;&amp;amp;gt;extremely preliminary copy of the specification&amp;amp;lt;/a&amp;amp;gt; just so that you can see where my current ideas are headed. Expect many more changes to this document, so don't pay too much attention to the tiny details (most of which aren't there anyway yet).&amp;amp;lt;/div&amp;amp;gt;&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-4743147252783979430?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): The mess of ATF's code</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-8981481737885658422</guid>
	<link>http://blog.julipedia.org/2009/07/mess-of-atfs-code.html</link>
	<description>Yes. ATF's code is a &quot;bit&quot; messy, to put it bluntly. I'm quite happy with some of the newest bits but there are some huge parts in it that stink. The main reason for this is that the &quot;ugly&quot; parts were the ones that were written first, and they were basically a prototype; we didn't know all the requirements for the code at that point... and we still don't know them, but we know we can do much better. Even though I'm writing in plural... I'm afraid we = I at the moment :-P&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;So, is it time for the big-rewrite-from-scratch? NO! Joel Spolsky wrote about why &amp;amp;lt;a href=&quot;http://www.joelonsoftware.com/articles/fog0000000348.html&quot;&amp;amp;gt;this is a bad idea&amp;amp;lt;/a&amp;amp;gt; and I have to agree with him. Yeah, I'm basically the only developer of the code so everything is in my head, and I'd do a rewrite with a fresh mind, but... I'd lose tons of work and, specially, I'd lose tons of code that deals with tricky corner-cases that are hard to remember.&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;Sure, I want to clean things up but they'll happen incrementally. And preferably concurrently with feature additions. These two things could definitely happen at the same time if only I had infinite spare time...&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;Anyway, the major point of this post is to describe what I don't like about the current code base and how I'd like to see it changing:&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;A completely revamped C++ API for test cases. The current one sucks. It is not consistent with the C API. It lacks important functionality. It uses exceptions for test-case status reporting (yuck!). And it's ugly.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Clear separation of &quot;internal/helper&quot; APIs from the test APIs. You'll agree that the &quot;fs&quot; module, which provides path abstraction and other file system management routines, is something that cannot be part of ATF's API. ATF is about testing. Period. Either that fs module should be in a separate library or should be completely hidden from the public. Otherwise, it'll suffer from abuse and, what scares me, will have to become part of ATF's API. And likewise, most &amp;amp;amp;mdash; really &amp;amp;amp;mdash; most of the modules in the current code are internal.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Less dependencies from the C++ API to the C API. Most of the current C++ modules are wrappers of their corresponding C counterparts. This is nice for code reuse but makes the code extremely fragile. In C++, things like RAII can provide really robust code with minimum effort, but intermixing such C++ code with C makes things ugly really quickly. I'd like to find a way to keep the two libraries separate from each other (and thus keep the C++ binding &quot;pure&quot;), but at the same time I don't want to duplicate code... an interesting problem.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Split the tarball into smaller pieces. People writing test cases for C applications don't want to pull in a huge package that depends on C++ and whatnot. And ATF is huge. It takes forever to compile. And this is a serious issue for broad adoption. Note: whether the tools are written in C++ or not is a separate issue, because these are not a dependency for anything!&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;The shell binding is slow. Really slow compared to the other ones. Optimizations would be nice, but those do not address the root of the problem: it's costly to query information from shell-based tests at run time. I.e. it takes a long time to get the full list of test cases available in a test suite because you have to run every single test program with the -l flag. Keeping a separate file with test-case metadata alongside the binary could resolve this and allow more flexibility at run time.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;And some other things.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;Those are the major things I'd like to see addressed soon, but they involve tons of work. Of course, I'd like to be able to work on some features expected by other developers: easier debugging, DOCUMENTATION!...&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;So, helpers welcome :-)&amp;amp;lt;/div&amp;amp;gt;&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-8981481737885658422?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Technicians and schedules</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-2459937406467822931</guid>
	<link>http://blog.julipedia.org/2009/06/technicians-and-schedules.html</link>
	<description>Here I am, on the afternoon of a work day, sitting at home waiting for an eircom technician to come set it up my phone line. How nice. The story goes like this:&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;Two weeks ago, I placed an online order to request a phone line, explicitly specifying that the physical installation is already done (even though I don't know if it works or not, but that should be fairly easy for them to check). A few days later, the technician called me saying that he'd come today (two weeks after), anytime from 12.00 to 15.00, but that I'd call the company the same day to get a more accurate schedule.&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;Fine, I'll wait until the 23rd to do that call. But you know what happened, right? I called them this morning and they said that, effectively, the technician was coming today, from 12.30 &amp;amp;lt;i&amp;amp;gt;onwards&amp;amp;lt;/i&amp;amp;gt; but they were unable to provide me any more specific information because the technicians have &amp;amp;lt;i&amp;amp;gt;multiple appointments&amp;amp;lt;/i&amp;amp;gt;. What? Again, WHAT? At this age of technology, can't we implement a system to track technicians and their schedules? Can't we make some approximations of how long each visit will take? I bet it's trivial if you put in just some common sense.&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;People have jobs, and they can't leave anytime for unknown periods of time; granted, I have some more freedom at Google, but that is absolutely not the case for most other companies. If you have to be at home at 12.30 sharp, and the appointment will last 30 minutes approximately, that is one thing, but having to be at home from 12.30 for an unexpected period of time, that is a very different thing.&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;Just wondering... couldn't they just make the technician call you about 20-30 minutes before arrival so that you could make the same arrangements as him and be there at the same time? It doesn't seem such an insane request.&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-2459937406467822931?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Child-process management in C for ATF</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1880013018173418859</guid>
	<link>http://blog.julipedia.org/2009/06/child-process-management-in-c-for-atf.html</link>
	<description>Let's face it: spawning child processes in Unix is a &quot;mess&quot;. Yes, the interfaces involved (fork, wait, pipe) are really elegant and easy to understand, but every single time you need to spawn a new child process to, later on, execute a random command, you have to write quite a bunch of error-prone code to cope with it. If you have ever used any other programming language with higher-level abstraction layers — just check Python's subprocess.Popen — you surely understand what I mean.&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;The current code in ATF has many places were child processes have to be spawned. I recently had to add yet another case of this, and... enough was enough. Since then, I've been working on a C API to spawn child processes from within ATF's internals and just pushed it to the repository. It's still fairly incomplete, but with minor tweaks, it'll keep all the dirty details of process management contained in a single, one-day-to-be-portable module.&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;The interface tries to mimic the one that was designed on my Boost.Process Summer of Code project, but in C, which is quite painful. The main idea is to have a fork function to which you pass the subroutine you want to run on the child, the behavior you want for the stdout stream and the behavior you want for the stderr steam. These behaviors can be any of capture (aka create pipes for IPC communcations), silence (aka redirect to /dev/null), redirect to file descriptor and redirect to file. For simplicity, I've omitted stdin. With all this information, the fork function returns you an opaque structure representing the child, from which you can obtain the IPC channels if you requested them and on which you can wait for finalization.&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;Here is a little example, with tons of details such as error handling or resource finalization removed for simplicity. The code below would spawn &quot;/bin/ls&quot; and store its output in two files named ls.out and ls.err:&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;static&amp;amp;lt;br /&amp;amp;gt;atf_error_t&amp;amp;lt;br /&amp;amp;gt;run_ls(const void *v)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt; system(&quot;/bin/ls&quot;);&amp;amp;lt;br /&amp;amp;gt; return atf_no_error();&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;static&amp;amp;lt;br /&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;some_function(...)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt; atf_process_stream_t outsb, errsb;&amp;amp;lt;br /&amp;amp;gt; atf_process_child_t child;&amp;amp;lt;br /&amp;amp;gt; atf_process_status_t status;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt; atf_process_status_init_redirect_path(&amp;amp;amp;amp;outsb, &quot;ls.out&quot;);&amp;amp;lt;br /&amp;amp;gt; atf_process_status_init_redirect_path(&amp;amp;amp;amp;errsb, &quot;ls.err&quot;);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt; atf_process_fork(&amp;amp;amp;amp;child, run_ls, &amp;amp;amp;amp;outsb, &amp;amp;amp;amp;errsb, NULL);&amp;amp;lt;br /&amp;amp;gt; ... yeah, here comes the concurrency! ...&amp;amp;lt;br /&amp;amp;gt; atf_process_child_wait(&amp;amp;amp;amp;child, &amp;amp;amp;amp;status);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt; if (atf_process_status_exited(&amp;amp;amp;amp;status))&amp;amp;lt;br /&amp;amp;gt;     printf(&quot;Exit: %d\n&quot;, atf_process_status_exitstatus(&amp;amp;amp;amp;status));&amp;amp;lt;br /&amp;amp;gt; else&amp;amp;lt;br /&amp;amp;gt;     printf(&quot;Error!&quot;);&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;Yeah, quite verbose, huh? Well, it's the price to pay to simulate namespaces and similar other things in C. I'm not too happy with the interface yet, though, because I've already encountered a few gotchas when trying to convert some of the existing old fork calls to the new module. But, should you want to check the whole mess, &amp;amp;lt;a href=&quot;http://mtn-host.prjek.net/viewmtn/atf/revision/info/3ba2af4ab1cad67108c3fb1aea15e8e0168667ff&quot;&amp;amp;gt;check out the corresponding revision&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&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-1880013018173418859?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): How to find an apartment in Dublin</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-6501743084580398314</guid>
	<link>http://blog.julipedia.org/2009/06/how-to-find-apartment-in-dublin.html</link>
	<description>It has been three weeks since I moved to Dublin, Ireland, and I finally have settled into my new apartment. It has taken me two weeks (I was pretty busy during the first one) to go through ads, visits and offers to finally get a place that is cozy, nicely decorated and decently located, all at a quite reasonable price. I could have gotten nicer places for a bit more money, but I'm happy with this one so far.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;If you are looking forward to finding a place to stay in Dublin, this post contains some suggestions based on my experience:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;First of all, keep in mind that Dublin is outrageously expensive. The prices for housing here are insane at the moment (OK, not as expensive as NYC or SF, but really expensive anyway). Be prepared to spend around 1K EUR for a nice 1 bedroom apartment, and 1.5K EUR for a nice 2 bedroom apartment. Things may improve in the next months, as they just did for the first quarter of the year.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;With that said, your first point of reference should be &amp;amp;lt;a href=&quot;http://daft.ie/&quot;&amp;amp;gt;daft&amp;amp;lt;/a&amp;amp;gt;. This is the place where all landlords and agencies put their ads, and the place where everyone is looking for apartments. To get started, you need to know where you want to live. Get a rough idea and then locate that place in one of the &amp;amp;lt;a href=&quot;http://en.wikipedia.org/wiki/Dublin_postal_districts&quot;&amp;amp;gt;Dublin postal districts&amp;amp;lt;/a&amp;amp;gt; and the ones surrounding it. Given that public transportation is... well... suboptimal, you don't want to live too far from your workplace. Then, hunt for places within your budget... and a budget a bit higher: you can always &amp;amp;lt;i&amp;amp;gt;try to&amp;amp;lt;/i&amp;amp;gt; negotiate the rent down and get a nicer apartment than you would otherwise, still staying within your initial budget.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Once you have selected some of the apartments you want to check, call the landlords or agents and ask for an appointment as soon as possible. And, during the visit, check a few basic stuff:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Whether the house is old or new: if it's new, it'll probably be in nicer condition overall.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Water pressure: old houses have poor water pressure.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Electric shower: this is really scary to me, but it is what most old houses have to deal with poor water pressure.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Carpet: nice, but a horrible mess to clean up.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Garbage collection service: if the building does not do this for you, you'll have to pay for garbage collection separately. I just bought 3 bin tags and those were almost 9 EUR. Yes: 9 EUR to pay for the collection of THREE garbage bags.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Location of supermarkets: Dublin is basically a big town, so most roads don't have shops. Make sure that you have a supermarket nearby where you can walk to to get basic stuff.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Availability of cable/phone: you'll need this for Internet.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Furniture: most apartments in Dublin are provided fully-furnished, so make sure to pick one with furniture that you like. Ask if you are allowed to replace some. Pay special attention to the mattress and couches!!&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Cutlery: OK, this is part of the furniture, but check what you have. Your landlord may provide you additional stuff for free upon request.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Washer and &amp;amp;lt;i&amp;amp;gt;dryer&amp;amp;lt;/i&amp;amp;gt;: you want to have a dryer, as most lease contracts state you cannot hung clothes on public places.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Heating and double-windows: you'll need this during the winter.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;And, at last, don't hurry! The housing market has improved during the last months, so if you see a place that you like, you'll &amp;amp;lt;i&amp;amp;gt;most likely&amp;amp;lt;/i&amp;amp;gt; have a few days to decide whether you want it or not (in the past, you had to decide during viewing time, or otherwise it'd be gone afterwards). Think well about your decision and negotiate; don't show yourself as impatient or you'd get worse deals!&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;I think that's all for know. If there is anything else, the post will be updated :)&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-6501743084580398314?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Trying AdSense</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-7459230551314143568</guid>
	<link>http://blog.julipedia.org/2009/06/trying-adsense.html</link>
	<description>I've just decided to enable AdSense on this blog and see what the results are.  If they are not worth it (what I'm expecting), I'll disable ads after a while.  But who knows, maybe I get a nice surprise!&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-7459230551314143568?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Paella in NYC</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4620782319169725789</guid>
	<link>http://blog.julipedia.org/2009/05/paella-in-nyc.html</link>
	<description>These days, I'm starting to cook by myself (aka learning) and yesterday I made paella for 6 people while staying in NYC (leaving on Sunday...).  This is the third time in two weeks that I cook this Spanish dish, but I think the results were pretty good despite the lack of ingredients.  After all, cooking is not as hard as I originally thought!  And it's pretty fun too!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Just blogging this because the results look nice:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;div style='text-align:center;margin:0px auto 10px;'&amp;amp;gt;&amp;amp;lt;a href='http://2.bp.blogspot.com/_xLbGV919cEE/SgxglPObEeI/AAAAAAAAC5Q/na0_iEsVnAY/s1600-h/IMG_1329.JPG'&amp;amp;gt;&amp;amp;lt;img src='http://2.bp.blogspot.com/_xLbGV919cEE/SgxglPObEeI/AAAAAAAAC5Q/na0_iEsVnAY/s400/IMG_1329.JPG' border='0' alt='' /&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;P.S. I'm now eating the leftovers from yesterday. Yummm! :-)&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-4620782319169725789?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Mailing lists for commit notifications</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4782427967638867417</guid>
	<link>http://blog.julipedia.org/2009/05/mailing-lists-for-commit-notifications.html</link>
	<description>The project I'm currently working on at university uses Subversion as its version control system. Unfortunately, the project itself has no mailing list to receive notifications on every commit, and the managers refuse to set this up. They do not see the value of such a list and they are scared of it because they probably assume that &amp;amp;lt;i&amp;amp;gt;everyone&amp;amp;lt;/i&amp;amp;gt; ought to be subscribed to it.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Having worked on projects that have a commit notification mailing list available, I strongly advise to have such a list anytime you have more than one developer working on a project[1]. Bonus points if every commit message comes with a bundled copy of the change's diff (in unified form!). This list &amp;amp;lt;i&amp;amp;gt;must be independent from the regular development mailing list&amp;amp;lt;/i&amp;amp;gt; and it &amp;amp;lt;i&amp;amp;gt;must be opt-in&amp;amp;lt;/i&amp;amp;gt;: i.e. never subscribe anyone by default, let themselves subscribe if they want to! Not everyone will need to receive this information, but it comes very useful... and it's extremely valuable for the project managers themselves!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Why is this useful? Being subscribed to the commit notification mailing list, it is extremely easy to know what is going on on the project[2]. It is also really easy to review the code submissions as soon as they are made which, with proper reviews by other developers, &amp;amp;lt;i&amp;amp;gt;trains the authors&amp;amp;lt;/i&amp;amp;gt; and improves their skills. And if the revision diff is inlined, it is trivial to pinpoint mistakes in it (be them style errors, subtle bugs, or serious design problems) by replying to the email.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;So, to my current project managers: if you read me, here is a wish-list item.  And, for everyone else, if you need to set up a new project, consider creating this mailing list as soon as possible.  Maybe few developers will subscribe to it, but those that do will pay attention and will provide very valuable feedback in the form of replies.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;1: Shame on me for not having such a mailing list for ATF. Haven't investigated how to do so with Monotone.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;2: Of course, the developers must be conscious to commit early and often, and to provide well-formed changesets: i.e. self-contained and with descriptive logs.&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-4782427967638867417?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): DEBUG.EXE dropped in Windows 7</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-446058185749523279</guid>
	<link>http://blog.julipedia.org/2009/05/debugexe-dropped-in-windows-7.html</link>
	<description>Wow. &amp;amp;lt;a href=&quot;http://tech.slashdot.org/article.pl?sid=09/05/08/169226&amp;amp;amp;from=rss&quot;&amp;amp;gt;DEBUG.EXE is being finally phased out in Windows 7&amp;amp;lt;/a&amp;amp;gt;.  I can't believe it was still there.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;This brings me back two different memories.  I had used this program in the past (a long while ago!) and it caused me both pain and joy.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Regarding pain: I had an MS-DOS 5.x book that spent a whole section on DEBUG.EXE, and one of the examples in it contained a command that caused the program in memory to be written to some specific sectors of the floppy disk.  Guess what I tried?   I executed that same command but told it to use my hard disk instead of the floppy drive.  Result: a corrupted file system.  Had to run scandisk (remember it?), which marked some sectors as faulty and I thought I had ruined my precious 125MB WD Caviar hard disk.  It wasn't until much, much, much later that I learnt that such a thing was not possible, and that really formatting the disk with a tool that had no memory of &quot;bad&quot; sectors (aka, Linux's newfs) could revert the disk to a clean state.  (Actually, I kept that hard disk until very recently.)&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Regarding joy: On a boring weekend away from home, I used DEBUG.EXE on an old portable machine without internet connection to hack a version of PacMan.  I disassembled the code until I found where it kept track of the player's lives and tweaked the counter to be infinite (or extra large, can't remember).  &amp;amp;lt;i&amp;amp;gt;That&amp;amp;lt;/i&amp;amp;gt; was fun.  I could get to levels me and my father (who used to be an avid player) had never seen before!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;It's a pity this tool is going, but it must go.  It is way too outdated compared to current debuggers.  I wonder if anyone is still using it.&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-446058185749523279?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Using C++ templates to optimize code</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4155033642151738049</guid>
	<link>http://blog.julipedia.org/2009/05/using-c-templates-to-optimize-code.html</link>
	<description>As part of the project I'm currently involved in at university, I started (re)writing a &amp;amp;lt;a href=&quot;http://www.pintool.org/&quot;&amp;amp;gt;Pin&amp;amp;lt;/a&amp;amp;gt; tool to gather run-time traces of applications parallelized with OpenMP. This tool has to support two modes: one to generate a single trace for the whole application and one to generate one trace per parallel region of the application.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;In the initial versions of my rewrite, I followed the idea of the previous version of the tool: have a &amp;amp;lt;tt&amp;amp;gt;-split&amp;amp;lt;/tt&amp;amp;gt; flag in the frontend that enables or disables the behavior described above.  This flag was backed by an abstract class, &amp;amp;lt;tt&amp;amp;gt;Tracer&amp;amp;lt;/tt&amp;amp;gt;, and two implementations: &amp;amp;lt;tt&amp;amp;gt;PlainTracer&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;SplittedTracer&amp;amp;lt;/tt&amp;amp;gt;.  The thread-initialization callback of the tool then allocated one of these objects for every new thread and the &amp;amp;lt;i&amp;amp;gt;per-instruction injected code&amp;amp;lt;/i&amp;amp;gt; used a pointer to the interface to call the appropriate specialized instrumentation routine.  This pretty much looked like this:&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;thread_start_callback(int tid, ...)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    if (splitting)&amp;amp;lt;br /&amp;amp;gt;        tracers[tid] = new SplittedTracer();&amp;amp;lt;br /&amp;amp;gt;    else&amp;amp;lt;br /&amp;amp;gt;        tracers[tid] = new PlainTracer();&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;per_instruction_callback(...)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    Tracer* t = tracers[PIN_ThreadId()];&amp;amp;lt;br /&amp;amp;gt;    t-&amp;amp;gt;instruction_callback(...);&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;I knew from the very beginning that such an implementation was going to be inefficient due to the pointer dereference at each instruction and the vtable lookup for the correct virtual method implementation.  However, it was a very quick way to move forward because I could reuse some small parts of the old implementation.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;There were two ways to optimize this: the first one involved writing different versions of &amp;amp;lt;tt&amp;amp;gt;per_instruction_callback&amp;amp;lt;/tt&amp;amp;gt;, one for plain tracing and the other for splitted tracing, and then deciding which one to insert depending on the flag.  The other way was to use template metaprogramming.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;As you can imagine, this being C++, I opted to use template metaprogramming to heavily abstract the code in the Pin tool.  Now, I have an abstract core parametrized on the Tracer type.  When instantiated, I provide the correct Tracer class and the compiler does all the magic for me.  With this design, there is no need to have a parent Tracer class &amp;amp;amp;mdash; though I'd welcome having C++0x concepts available &amp;amp;amp;mdash;, and the callbacks can be easily inlined because there is no run-time vtable lookup.  It looks something like this:&amp;amp;lt;pre&amp;amp;gt;template&amp;amp;lt; class Tracer &amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;class BasicTool {&amp;amp;lt;br /&amp;amp;gt;    Tracer* tracers[MAX_THREADS];&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    Tracer* allocate_tracer(void) const = 0;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;public:&amp;amp;lt;br /&amp;amp;gt;    Tracer*&amp;amp;lt;br /&amp;amp;gt;    get_tracer(int tid)&amp;amp;lt;br /&amp;amp;gt;    {&amp;amp;lt;br /&amp;amp;gt;        return tracers[tid];&amp;amp;lt;br /&amp;amp;gt;    }&amp;amp;lt;br /&amp;amp;gt;};&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;class PlainTool : public BasicTool&amp;amp;lt; PlainTracer &amp;amp;gt; {&amp;amp;lt;br /&amp;amp;gt;    PlainTracer*&amp;amp;lt;br /&amp;amp;gt;    allocate_tracer(void) const&amp;amp;lt;br /&amp;amp;gt;    {&amp;amp;lt;br /&amp;amp;gt;        return new PlainTracer();&amp;amp;lt;br /&amp;amp;gt;    }&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;public:&amp;amp;lt;br /&amp;amp;gt;    ...&amp;amp;lt;br /&amp;amp;gt;} the_plain_tool;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;// This is tool-specific, non-templated yet.&amp;amp;lt;br /&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;per_instruction_callback(...)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    the_plain_tool.get_tracer(PIN_ThreadId()).instruction_callback(...);&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;What this design also does is force me to have two different Pin tools: one for plain tracing and another one for splitted tracing.  Of course, I chose it to be this way because I'm not a fan of run-time options (the &amp;amp;lt;tt&amp;amp;gt;-split&amp;amp;lt;/tt&amp;amp;gt; flag).  Having two separate tools with well-defined, non-optional features makes testing much, much easier and... follows the Unix philosophy of having each tool do exactly one thing, but doing it right!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Result: around a 15% speedup.  And C++ was supposed to be slow? ;-)  You just need to know what the language provides you and choose wisely.  (Read: my initial, naive prototype had a run-time of 10 minutes to trace part of a small benchmark; after several rounds of optimizations, it's down to 1 minute and 50 seconds to trace the &amp;amp;lt;i&amp;amp;gt;whole&amp;amp;lt;/i&amp;amp;gt; benchmark!)&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Disclaimer: The code above is an oversimplification of what the tool contains.  It is completely fictitious and obviates many details.  I will admit, though, that the real code is too complex at the moment.  I'm looking for ways to simplify it.&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-4155033642151738049?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Numeric limits in C++</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-8028620398342481804</guid>
	<link>http://blog.julipedia.org/2009/05/numeric-limits-in-c.html</link>
	<description>By pure chance when trying to understand a build error of some C++ code I'm working on, I came across the correct C++ way of checking for numeric limits. Here is how.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;In C, when you need to check for the limits of native numeric types, such as &amp;amp;lt;tt&amp;amp;gt;int&amp;amp;lt;/tt&amp;amp;gt; or &amp;amp;lt;tt&amp;amp;gt;unsigned long&amp;amp;lt;/tt&amp;amp;gt;, you include the &amp;amp;lt;tt&amp;amp;gt;limits.h&amp;amp;lt;/tt&amp;amp;gt; header file and then use the &amp;amp;lt;tt&amp;amp;gt;INT_MIN&amp;amp;lt;/tt&amp;amp;gt;/&amp;amp;lt;tt&amp;amp;gt;INT_MAX&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;ULONG_MAX&amp;amp;lt;/tt&amp;amp;gt; macros respectively.  In the C++ world, there is a corresponding &amp;amp;lt;tt&amp;amp;gt;climits&amp;amp;lt;/tt&amp;amp;gt; header file to get the definition of these macros, so I always thought this was the way to follow.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;However, it turns out that the C++ standard defines a &amp;amp;lt;tt&amp;amp;gt;limits&amp;amp;lt;/tt&amp;amp;gt; header file too, which provides the &amp;amp;lt;tt&amp;amp;gt;numeric_limits&amp;amp;amp;lt;T&amp;amp;amp;gt;&amp;amp;lt;/tt&amp;amp;gt; template. This template class is specialized in &amp;amp;lt;lt&amp;amp;gt;T&amp;amp;lt;/lt&amp;amp;gt; for every numeric type and provides a set of static methods to query properties about the corresponding type.  The simplest ones are &amp;amp;lt;tt&amp;amp;gt;min()&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;max()&amp;amp;lt;/tt&amp;amp;gt;, which are what we need to replace the old-style &amp;amp;lt;tt&amp;amp;gt;*_MIN&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;*_MAX&amp;amp;lt;/tt&amp;amp;gt; macros.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;As an example, this C code:&amp;amp;lt;pre&amp;amp;gt;#include &amp;amp;amp;lt;limits.h&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;int&amp;amp;lt;br /&amp;amp;gt;main(void)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    printf(&quot;Integer range: %d to %d\n&quot;, INT_MIN, INT_MAX);&amp;amp;lt;br /&amp;amp;gt;    return EXIT_SUCCESS;&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;becomes the following in C++:&amp;amp;lt;pre&amp;amp;gt;#include &amp;amp;amp;lt;cstdlib&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;#include &amp;amp;amp;lt;limits&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;int&amp;amp;lt;br /&amp;amp;gt;main(void)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    std::cout &amp;amp;amp;lt;&amp;amp;amp;lt; &quot;Integer range: &quot;&amp;amp;lt;br /&amp;amp;gt;              &amp;amp;amp;lt;&amp;amp;amp;lt; std::numeric_limits&amp;amp;amp;lt; int &amp;amp;amp;gt::min()&amp;amp;lt;br /&amp;amp;gt;              &amp;amp;amp;lt;&amp;amp;amp;lt; &quot; to &quot;&amp;amp;lt;br /&amp;amp;gt;              &amp;amp;amp;lt;&amp;amp;amp;lt; std::numeric_limits&amp;amp;amp;lt; int &amp;amp;amp;gt::max()&amp;amp;lt;br /&amp;amp;gt;              &amp;amp;amp;lt;&amp;amp;amp;lt; &quot;\n&quot;;&amp;amp;lt;br /&amp;amp;gt;    return EXIT_SUCCESS;&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;Check out the &amp;amp;lt;a href=&quot;http://www.cplusplus.com/reference/std/limits/numeric_limits/&quot;&amp;amp;gt;documentation&amp;amp;lt;/a&amp;amp;gt; for more details on additional methods!&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-8028620398342481804?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): The NetBSD Blog</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5467658448048251016</guid>
	<link>http://blog.julipedia.org/2009/05/netbsd-blog.html</link>
	<description>The NetBSD Project recently launched a new &amp;amp;lt;a href=&quot;http://blog.netbsd.org/&quot;&amp;amp;gt;official blog for NetBSD&amp;amp;lt;/a&amp;amp;gt;. From here, I'd like to invite you to visit it and &amp;amp;lt;a href=&quot;http://blog.netbsd.org/tnf/feed/entries/atom&quot;&amp;amp;gt;subscribe to it&amp;amp;lt;/a&amp;amp;gt;. It's only with your support (through reading and, specially, &amp;amp;lt;i&amp;amp;gt;commenting&amp;amp;lt;/i&amp;amp;gt;) that developers will post more entries!  Enjoy :-)&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-5467658448048251016?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): NetBSD-SoC needs your application!</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4081034348232814307</guid>
	<link>http://blog.julipedia.org/2009/04/netbsd-soc-needs-your-application.html</link>
	<description>The Google Summer of Code 2009 application deadline for students is tomorrow and NetBSD has got very few applications so far. If you have the interest in working on a cool operating system project, where almost any project idea can fit, take the time to read &amp;amp;lt;a href=&quot;http://www.netbsd.org/contrib/soc-projects.html&quot;&amp;amp;gt;our proposals&amp;amp;lt;/a&amp;amp;gt; and apply!  New, original ideas not listed there will also be considered.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;It'd be a pity if the number of assigned slots to NetBSD was small due to the low number of applications!  We did much better past year.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Note that there are a couple of &amp;amp;lt;a href=&quot;http://www.NetBSD.org/~jmmv/atf/&quot;&amp;amp;gt;ATF&amp;amp;lt;/a&amp;amp;gt;-related proposals in there. Help will be certainly welcome (by me ;-) in those areas!&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-4081034348232814307?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Returning to Google</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-898144593109126185</guid>
	<link>http://blog.julipedia.org/2009/04/returning-to-google.html</link>
	<description>I've been holding back this announcement until all affected parties knew in advance.  They do know now, so I'm happy to announce that I'll be joining Google Dublin on May 25th as a Google.com Software Engineer!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Thanks to everyone who made that possible.&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-898144593109126185?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Comments for old posts now moderated</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5724407113147228616</guid>
	<link>http://blog.julipedia.org/2009/03/comments-for-old-posts-now-moderated.html</link>
	<description>After waking up today and finding 80+ spam comments all around old posts in this blog, I have decided to set all new comments for posts older than 14 days old to be moderated.  Took half an hour to clean them all.  Thank you, spammers.&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-5724407113147228616?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): What are unnamed namespaces for in C++?</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4053902384158212165</guid>
	<link>http://blog.julipedia.org/2009/03/what-are-unnamed-namespaces-for-in-c.html</link>
	<description>In the past, I had come by some C++ code that used unnamed namespaces everywhere as the following code shows, and I didn't really know what the meaning of it was:&amp;amp;lt;pre&amp;amp;gt;namespace {&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;class something {&amp;amp;lt;br /&amp;amp;gt;...&amp;amp;lt;br /&amp;amp;gt;};&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;} // namespace&amp;amp;lt;/pre&amp;amp;gt;Until now.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Not using unnamed namespaces in my own code bit me with name clash errors. How? Take ATF. Some of its files declare classes in .cpp files (not headers).  I just copy/pasted some ATF code in another project and linked the libraries produced by each project together.  Boom!  Link error because of duplicate symbols.  And the linker is quite right in saying so!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;For some reason, I always assumed that classes declared in the .cpp files would be private to the module.  But if you just think a little bit about it, just a little, this cannot ever be the case: how could the compiler tell the difference between a class definition in a header file and a class definition in a source file?  The compiler sees preprocessed sources, not what the programmer wrote, so all class definitions look the same!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;So how do you resolve this problem?  Can you have a static class, pretty much like you can have a static variable or function?  No, you cannot.  Then, how do you declare implementation-specific classes private to a module?  Put them in an unnamed namespace as the code above shows and you are all set.  Every translation unit has its own unnamed namespace and everything you put in it will not conflict with any other translation unit.&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-4053902384158212165?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Nov 2009 15:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Scratching the Linux Itch, pt. II</title>
	<guid>http://linux.amazingdev.com/blog/archives/000936.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000936.html</link>
	<description>Finally, we get started building the system in Chapter 5. As mentioned in the last important point here, for every package done in Chapter 5, you need to do the following commands, as the 'lfs' user: $ cd $LFS/sources lfs:/mnt/lfs/sources$ tar xjvf binutils-2.20.tar.bz2 lfs:/mnt/lfs/sources$ cd binutils-2.20 If the downloaded package...</description>
	<pubDate>Fri, 13 Nov 2009 15:41:33 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Scratching the Linux Itch, pt. I</title>
	<guid>http://linux.amazingdev.com/blog/archives/000935.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000935.html</link>
	<description>So I'm going to try a Linux From Scratch build and installation, just because I need another pointless project to write about :) Here is the result of my version-check.sh script on my openSUSE 11.0 system: bash, version 3.2.39(1)-release /bin/sh -&gt; /bin/bash Binutils: (GNU Binutils; openSUSE 11.0) 2.18.50.20080409-11.1 bison (GNU...</description>
	<pubDate>Thu, 12 Nov 2009 15:36:15 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Linux Format 125</title>
	<guid>http://linux.amazingdev.com/blog/archives/000934.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000934.html</link>
	<description>My favorite Linux magazine, by far, is Linux Format, a UK based magazine that is just chock-a-block full of great Linux info. They also run the informative Tux Radar blog. So I thought I would just give a rundown each month of the highlights from the most recent issue....</description>
	<pubDate>Tue, 10 Nov 2009 15:53:59 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: TeX Live 2009 - including NetBSD binaries</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091109_2329.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091109_2329.html</link>
	<description>Today, &lt;a href=&quot;http://tug.org/texlive/doc/texlive-en/texlive-en.html&quot;&gt;TeX Live 2009 was released&lt;/a&gt;. After teTeX is no longer maintained,
TeX Live is *the* Unix (and other) TeX distribution.
And with the binary release come binaries for NetBSD:
``&lt;i&gt;Executables for the cygwin and i386-netbsd platforms are now included, while the other BSD distributions have been dropped; we were advised that OpenBSD and FreeBSD users get TEX through their package systems, plus there were difficulties in making binaries that have a chance of working on more than one version. &lt;/i&gt;''.
&lt;p&gt;

The NetBSD binaries were provided by Jukka Salmi. Mmm, community involvement.
Thanks Jukka!</description>
	<pubDate>Mon, 09 Nov 2009 23:32:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: NetBSD vs. Microkernels - From Kernel to Userspace and Abroad</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091107_0013.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091107_0013.html</link>
	<description>&lt;a href=&quot;http://www.feyrer.de/NetBSD/blog.html/nb_20090922_2256.html&quot;&gt;A few weeks ago&lt;/a&gt;
I made a comment about NetBSD not being a &quot;microkernel&quot; despite
it's move to kernel modules. Antti Kantee wrote back to me (Hi Antti!)
reminding me of his work on RUMP, PUFFS and the like, which I think
does definitely deserve mentioning in that context:
&lt;p&gt;

With RUMP, PUFFS and the like, Antti is set on a mission to define
interfaces between kernel components, and move those kernel
components from inside the kernel to the userland. As a result,
the (once) kernel-code is now running as 
&quot;simple&quot; userland
processes that have all the benefits like memory protection
and not taking down the whole system in case of an error.
Examples that Antti has been bashing on started with 
&lt;a href=&quot;http://www.netbsd.org/docs/puffs/&quot;&gt;moving file systems to the userland&lt;/a&gt;, which resulted in PUFFS and
ReFUSE, an implementation of the Linux inferface of
File systems in USErland (FUSE). Not stopping at file systems
(which are traditionally used for accessing data on storage media,
like e.g. for ntfs-3g), Antti went further and moved into 
&lt;a href=&quot;http://blog.netbsd.org/tnf/entry/bsd_magazine_netbsd_sshfs&quot;&gt;getting network services like SSHFS going - in userland&lt;/a&gt;,
based on FUSE.
&lt;p&gt;

Not stopping there, more recent works include:

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/10/14/msg006269.html&quot;&gt;USB device driver support&lt;/a&gt;, to run NetBSD's USB stack in userland - 
     and with it a bunch of USB device drivers as well, e.g. storage (umass) and wireless adapters.
	&lt;p&gt;

&lt;li&gt; 
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/10/16/msg006276.html&quot;&gt;Running NFS in userspace, and with it the underlying TCP/IP stack&lt;/a&gt;? Well, we've had nfsd(8)
	for quite some time, but this time it's the same code
	running in userland as in kernel.
	The thread also answers questions on
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/10/16/msg006287.html&quot;&gt;why we want to virtualize nfsd+networking with a process&lt;/a&gt;
	and
	&lt;a href=&quot;http://mail-index.netbsd.org/tech-kern/2009/10/16/msg006287.html&quot;&gt;why do we want to do that by reusing kernel code&lt;/a&gt;.
	&lt;p&gt;
&lt;/ul&gt;

Remember when NetBSD got (re)FUSE? All of a sudden we got a 
	&lt;a href=&quot;http://www.NetBSD.org/packages/filesystems/&quot;&gt;bazillion of filesystems&lt;/a&gt; back then. So why not turn this development around, and
	make RUMP available as an interface for all sort of drivers
	to other operating systems. That way, they can get our
	file systems, usb stack and drivers, etc., and run them
	in userspace as well. Developing a driver on one operating
	system, and using it on many - a wet dream would come true!
	&lt;p&gt;

	Sounds impossible? Ye fear not, it's been done!
	Arnaud 'stacktic' Ysmal already has ported RUMP to FreeBSD and Linux,
	the work is available via
	&lt;a href=&quot;http://www.NetBSD.org/packages/misc/rump&quot;&gt;pkgsrc/misc/rump&lt;/a&gt;,
	and there is also
	Arnaud's page on
	&lt;a href=&quot;http://www.netbsd.org/~stacktic/rumpabroad.html&quot;&gt;Rump on non-NetBSD Operating Systems&lt;/a&gt; for more information.
	&lt;p&gt;

Whew... lots of research and development going on in this area,
and - getting back to the initial topic - we may well see an
operating system in the future that moves from the monolithic
to a microkernel approach, and it may or may not be called NetBSD.
Fact is, that a lot of research is going on in that area, on NetBSD,
here and now. Hats off, Antti!</description>
	<pubDate>Sat, 07 Nov 2009 00:59:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: On the difference between "data" and "information"</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091107_0009.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091107_0009.html</link>
	<description>&lt;a href=&quot;http://xkcd.com/659/&quot;&gt;&lt;img src=&quot;http://imgs.xkcd.com/comics/lego.png&quot;&gt;&lt;/a&gt;
&lt;p&gt;

Thanks &lt;a href=&quot;http://www.xkcd.com/&quot;&gt;xkcd&lt;/a&gt;, from 
&lt;a href=&quot;http://www.feyrer.de/Texts/Own/infophil-slides.pdf&quot;&gt;the information scientist inside me&lt;/a&gt;!</description>
	<pubDate>Sat, 07 Nov 2009 00:11:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Harddisk image cloning for Unix - g4u 2.4 released</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091025_2303.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091025_2303.html</link>
	<description>g4u (&quot;ghosting for unix&quot;) version 2.4 has been released. g4u is a
NetBSD-based bootfloppy/CD-ROM that allows easy cloning of PC harddisks to
deploy a common set up on a number of PCs using FTP. The floppy/CD offers
two functions. The first is to upload the compressed image of a local
harddisk to a FTP server, the other is to restore that image via FTP,
uncompress it and write it back to disk. Network configuration is fetched
via DHCP. As the harddisk is processed as an image, any filesystem and
operating system can be deployed using g4u. Easy cloning of local disks
as well as partitions is also supported.
&lt;p&gt;

Three years of time have passed since the last full release of g4u.
Here's a list of what's new / changes in g4u 2.4:
&lt;p&gt;

&lt;ul&gt;
 &lt;li&gt; Major new supported device types include bluetooth keyboards and SD/MMC
   cards - feedback highly appreciated!
 &lt;li&gt; Lots of new drivers. Too many to list, please see the g4u section
   of my blog at http://www.feyrer.de/NetBSD/blog.html?-tags=g4u
   for details.
 &lt;li&gt; Based on the NetBSD development version from Sep 2009
 &lt;li&gt; Source builds native and without root privileges on NetBSD 5.0 and
   crossbuilds also without root privileges from Mac OS X (tested) and
   probably others (untested; expected: Solaris, Linux).
&lt;/ul&gt;

The g4u 2.4 release is available on the g4u homeage at
&lt;p&gt;

&lt;center&gt;
        &lt;a href=&quot;http://www.feyrer.de/g4u/&quot;&gt;http://www.feyrer.de/g4u/&lt;/a&gt;
&lt;/center&gt;</description>
	<pubDate>Sun, 25 Oct 2009 23:05:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Fun around daylight saving time (DST) and Unix timezone handling in general</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20091024_1418.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20091024_1418.html</link>
	<description>It's that time of the year again when I and my friends never 
know when daylight saving time is switched from summer-
to winter time. Do you know? And if you've heared in the
news today... do you know when the next change is?
&lt;p&gt;

There's an easy way to find out, using the 
&lt;a href=&quot;http://netbsd.gw.com/cgi-bin/man-cgi?zdump++NetBSD-current&quot;&gt;zdump(8)&lt;/a&gt;
utility that comes with about every Unix machine (at least
with NetBSD and Mac OS X - is there anything else relevant? :),
and the timezone information stored in the /usr/share/zoneinfo
directory. 
&lt;p&gt;

To find out when DST is switched on/off, run the following command:

&lt;pre&gt;
% &lt;b&gt;zdump -v /etc/localtime&lt;/b&gt;
...
/etc/localtime  Sun Mar 29 00:59:59 2009 UTC = Sun Mar 29 01:59:59 2009 CET isdst=0
/etc/localtime  Sun Mar 29 01:00:00 2009 UTC = Sun Mar 29 03:00:00 2009 CEST isdst=1
/etc/localtime  Sun Oct 25 00:59:59 2009 UTC = Sun Oct 25 02:59:59 2009 CEST isdst=1
/etc/localtime  Sun Oct 25 01:00:00 2009 UTC = Sun Oct 25 02:00:00 2009 CET isdst=0
/etc/localtime  Sun Mar 28 00:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 CET isdst=0
/etc/localtime  Sun Mar 28 01:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 CEST isdst=1
/etc/localtime  Sun Oct 31 00:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 CEST isdst=1
/etc/localtime  Sun Oct 31 01:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 CET isdst=0
/etc/localtime  Sun Mar 27 00:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 CET isdst=0
/etc/localtime  Sun Mar 27 01:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 CEST isdst=1
/etc/localtime  Sun Oct 30 00:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 CEST isdst=1
/etc/localtime  Sun Oct 30 01:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 CET isdst=0
...  &lt;/pre&gt;

The data is given relative to Universal Time Coordinated, which
you can determine on a NetBSD system by running &quot;date -u&quot;:

&lt;pre&gt;
% &lt;b&gt;date&lt;/b&gt;
Sat 24 Oct 14:30:24 CEST 2009
% &lt;b&gt;date -u&lt;/b&gt;
Sat 24 Oct 12:30:26 UTC 2009&lt;/pre&gt;

And if you wonder what timezone you're actually in, you probably knokw that /etc/localtime is a 
symbolic link to a file that fits to your exact
timezone, with all related information:

&lt;pre&gt;
% &lt;b&gt;ls -la /etc/localtime &lt;/b&gt;
lrwxr-xr-x  1 root  wheel  33 May 26  2007 /etc/localtime -&gt; /usr/share/zoneinfo/Europe/Berlin
&lt;/pre&gt;

If you always wanted to know what timezones there are, have a look
at /usr/share/zoneinfo:

&lt;pre&gt;
% &lt;b&gt;ls /usr/share/zoneinfo/&lt;/b&gt;
Africa       Chile        GB-Eire      Israel       NZ-CHAT      UCT
America      Cuba         GMT          Jamaica      Navajo       US
Antarctica   EET          GMT+0        Japan        PRC          UTC
Arctic       EST          GMT-0        Kwajalein    PST8PDT      Universal
Asia         EST5EDT      GMT0         Libya        Pacific      W-SU
Atlantic     Egypt        Greenwich    MET          Poland       WET
Australia    Eire         HST          MST          Portugal     Zulu
Brazil       Etc          Hongkong     MST7MDT      ROC          iso3166.tab
CET          Europe       Iceland      Mexico       ROK          posixrules
CST6CDT      Factory      Indian       Mideast      Singapore    zone.tab
Canada       GB           Iran         NZ           Turkey
% &lt;b&gt;ls /usr/share/zoneinfo/Europe/&lt;/b&gt;
Amsterdam    Chisinau     Kiev         Moscow       Sarajevo     Vatican
Andorra      Copenhagen   Lisbon       Nicosia      Simferopol   Vienna
Athens       Dublin       Ljubljana    Oslo         Skopje       Vilnius
Belfast      Gibraltar    London       Paris        Sofia        Volgograd
Belgrade     Guernsey     Luxembourg   Podgorica    Stockholm    Warsaw
Berlin       Helsinki     Madrid       Prague       Tallinn      Zagreb
Bratislava   Isle_of_Man  Malta        Riga         Tirane       Zaporozhye
Brussels     Istanbul     Mariehamn    Rome         Tiraspol     Zurich
Bucharest    Jersey       Minsk        Samara       Uzhgorod
Budapest     Kaliningrad  Monaco       San_Marino   Vaduz &lt;/pre&gt;

So now that we all that, here's a last cutie: suppose you want
to log into a machine on the other end of the world, and still
run an application that should use your local timezone, not
that that the machine is in. Changing /etc/localtime is not
an option, but you can do it on a per-process base by setting
the &quot;TZ&quot; environment variable:

&lt;pre&gt;
% &lt;b&gt;date&lt;/b&gt;
Sat Oct 24 14:35:06 CEST 2009
% &lt;b&gt;ssh remote.example.org date&lt;/b&gt;
Sat Oct 24 12:35:45 UTC 2009
% &lt;b&gt;ssh remote.example.org env TZ=Europe/Berlin date&lt;/b&gt;
Sat Oct 24 14:35:58 CEST 2009 &lt;/pre&gt;

Enjoy!</description>
	<pubDate>Sat, 24 Oct 2009 14:42:00 +0000</pubDate>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Mysterious Icewind Port</title>
	<guid>http://linux.amazingdev.com/blog/archives/000933.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000933.html</link>
	<description>This doesn't really have anything to do with Linux, but I needed to put this down somewhere so maybe it would help someone else. My friend and I like to play &quot;hardcore&quot; computer RPG games, cooperative style, across the Internet. We have a weekly session, playing for a couple of...</description>
	<pubDate>Thu, 23 Jul 2009 23:13:48 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Creator and emacsclient</title>
	<guid>http://linux.amazingdev.com/blog/archives/000932.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000932.html</link>
	<description>Some notes on using emacsclient on KDE, as I'm trying to integrate it with Qt Creator, because Qt Creator doesn't have Emacs key bindings (so far, my biggest gripe). There's an albeit painful keystroke to pass the current file off to an external editor, so I'm trying to get it...</description>
	<pubDate>Thu, 02 Jul 2009 16:56:31 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>
<item>
	<title>Daemon Dancing in the Dark [FreeBSD Blog]: Information Please</title>
	<guid>http://linux.amazingdev.com/blog/archives/000931.html</guid>
	<link>http://linux.amazingdev.com/blog/archives/000931.html</link>
	<description>An article on Lifehacker featured an interesting utility called iotop, which gives a birds eye view of what your hard drive is up to. The commentors mentioned a couple of other interesting tools, although many seemed to be confused as to what iotop is measuring as opposed to some of...</description>
	<pubDate>Tue, 23 Jun 2009 15:01:14 +0000</pubDate>
	<dc:creator>jdarnold</dc:creator>
</item>

</channel>
</rss>
