Digital SLR

I recently got a digital SLR. I decided to pay more for the most recent consumer model over the earlier generation. Lots of places recommended the Nikon D40. But most sites recommended Canon system over Nikon in general. The XSi also had some features like live view, bigger LCD, and better kit lens that I liked.

I also got two lenses in addition to the included [18-55mm IS](http://photo.net/equipment/canon/efs18-55/) kit lens. I got the [Canon EF-S 55-250mm IS](http://photo.net/equipment/canon/efs_55-250IS/) telephoto zoom that matches the kit lens. I also got the [Canon EF 50mm f/1.8](http://photo.net/equipment/canon/50-1.8) which was supposed to be cheap, fast prime.

I got some pictures with it on my recent trip that I wouldn’t have been able to get with my old camera. The quick response allowed taking some series of photos of moving subjects. I got some great photos with the telephoto. The image stabilization was very handy when zoomed all the way out. I got a couple of pictures with the prime lens in low light that probably wouldn’t have turned out otherwise. I took a few workable pictures inside the aquarium without a flash. The flash fill improved a couple of pictures of people taken in sunlight.

Mini-ITX Home Server

A few months ago, I got a new home server. I wanted to replace the old desktop with something quiet and low-power that could be left on all day. This led toward an mini-ITX motherboard. A fanless processor was better since I didn’t need the performance for video or anything heavy. I also wanted something upgradable to four SATA hard drives and with Gigabit Ethernet. All of it needed to cost less than $500 without drives.

The only case mini-ITX case with space for four hard drives I found was the [Chenbro ES34069](http://www.chenbro.com/corporatesite/products_detail.php?serno=100). It was a little expensive but turned out to be nicely designed and well made. The hard drives go in caddies which plug into a SATA backplane. It also has space for a 2.5″ hard drive, thin CD drive, and memory card reader. I decided to get a CompactFlash card in an IDE adapter for the system drive. I skipped the CD drive and reader.

For the motherboard, I wanted to balance having 4 SATA ports, Gigabit Ethernet, and fanless processor. The VIA EPIA SN10000EG would have worked well with 4 SATA ports and fanless processor but was too expensive. I chose to get the [Jetway J7F4K1G2E](http://jetwaycomputer.com/VIA3.html) which has a fanless VIA C7 processor, Gigabit Ethernet, and only 2 SATA ports. When I made the decision, the Intel Atom motherboard, the D945GCLF, had just been released. Unfortunately, it did not have Gigabit and the chipset uses more power than the processor. There are now more Atom motherboards with Gigabit and even 4 SATA ports that would work better.

The first problem with the install was forgetting the adapter cable from 40-pin IDE on motherboard to 44-pin notebook IDE connector on the drive. The second problem was the lack of mounting holes in the right place for the non-standard position of the 2.5″ drive. I was able to wedge it in place. The CompactFlash card was nice because I could put in the memory card reader on my desktop to write the root filesystem. When I do decide to go to 4 drives, I will need get a special riser card to use a PCI SATA adapter. That will be a tight fit in an already tight case. The case has a place for everything put it requires putting together in the correct order to get it all to fit.

Flickr: Oregon Coast 2008

[flickr album=72157608156607294 num=10 size=Thumbnail]

My Poor Car

I got my car back from the shop on Tuesday. The saga started two weeks ago when I went to drive home. The clutch went straight down and didn’t pop back up. I had it towed to the Audi dealer service center, which is close to work, the next day. The problem turned out to be a leak in the slave cylinder. Then, they took the clutch apart to find and replace parts that had been damaged by the leak. Luckily, the whole thing was covered by the factory warranty which transfered to me when I bought it new.

They also gave me a loaner in the middle of last week. I was getting tired of walking to the grocery store. And taking the bus and train to work. It was an Audi A4 Avant S-line, a much nicer car than my A3. I like my A3 more. It handles better and accelerates faster and is nice enough for me.

I had noticed that the clutch was feeling different. In fact, I forgot to ask them about it when I took it in for regular maintenance the week before it failed. I am little worried that it failed after only 34,000 miles. Hopefully, it won’t be in the shop any time soon. This was the third, and longest, time in a month. A month ago, I had the lower front bumper cover replaced after I scraped it on a crub and the side ripped out.

Maemo SDK on Fedora 9

I got the [Maemo](http://maemo.org) [SDK](http://maemo.org/development/sdks/maemo-4-1-diablo-sdk/)
installed on Fedora 9. The instructions are pretty complete.

First, Scratchbox needs the compat VDSO mode enabled. This is done by
`echo 0 > /proc/sys/vm/vdso_enabled`. Also, Qemu requires
`mmap_min_addr` set to 4096. These can be set permanently by adding
the following lines to `/etc/sysctl.conf`.

# scratchbox support
vm.vdso_enabled = 0
vm.mmap_min_addr = 4096

On my desktop, which is x86_64, compat VDSO can only be set with the
`vdso32=0` kernel command-line option. Also, the scratchbox installer
script checks for i386 architecture. It needs to faked out like this:
`setarch i386 ./maemo-scratchbox-install_4.1.sh`.

VIA padlock support in OpenSSL

The VIA C7 processor also has padlock encryption acceleration support.
[Linux support](http://www.logix.cz/michal/doc/article.xp/padlock-en)
was added a while ago.

First, the automatically load the `padlock` module, add the `/etc/sysconfig/modules/via-padlock.modules` file.

#!/bin/sh
for i in padlock; do
modprobe $i >/dev/null 2>&1
done

Second, to use it for internal kernel encryption, add to `/etc/modprobe.conf`.

alias aes padlock

Third, OpenSSL can be configured to use padlock. To see if your
OpenSSL was compiled with padlock support, do `openssl engine
padlock`. You can see the speed difference by comparing `openssl
speed -evp aes-128-cbc` to `openssl speed -evp aes-128-cbc -engine
padlock`. To use padlock engine by default, add the following lines
to the top of `/etc/pki/tls/openssl.cnf.

#enable padlock engine by default:
openssl_conf = openssl_def

[openssl_def]
engines = openssl_engines

[openssl_engines]
padlock = padlock_engine

[padlock_engine]
default_algorithms = ALL

Unfortunately, the version of openssh in Centos 5 does not use the
padlock engine. Engine support was added to openssh in 4.9p1
([bug 1437](https://bugzilla.mindrot.org/show_bug.cgi?id=1437)). It looks
like there is a
[bug](http://rt.openssl.org/Ticket/Display.html?id=1668) with engine
support which is fixed in OpenSSL 0.9.7h. It looks like Ubuntu Hardy
[has patched its
packages](https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/119295).

VIA RNG on Centos

The [J7F4 mini-ITX
motherboard](http://www.jetwaycomputer.com/VIA3.html) that I got for
my home server has a VIA C7 processor. One of the feature of the
processor is the [PadLock Security
Engine](http://www.via.com.tw/en/initiatives/padlock/hardware.jsp)
with hardware RNG. This is especially useful on a server since they
are limited in entropy sources. Linux kernel has support for the VIA
hardware RNG in the `via_rng` module.

Next, install the `rng-utils` package with the rngd daemon. It
reads entropy from the hardware RNG, `/dev/hwrng`, and feeds it to the
kernel entropy pool for `/dev/random`.

Unfortunately, the package is missing an init.d script to start the
service (see [redhat bug
215371](https://bugzilla.redhat.com/show_bug.cgi?id=215371). The
`/etc/rc.d/rc.sysinit` actually has a commented-out line to start
rngd. Download the script from the bug and put it in
/etc/init.d/rngd. Add the service, `chkconfig –add rngd`, and start it, `service rngd start`.

Oregon Brewers Festival

After OSCON ended, I went to the [Oregon Brewers Festival](http://www.oregonbrewfest.com/) on Friday afternoon. This is the first time I have gone after living in Portland for five years and loving beer. I rode my bike downtown; they had guarded bike parking. The cost was $4 for the mug, $1 for tokens which give a taste (or 4 give a full glass). When I went, the tents were fairly crowded but there weren’t long lines for the beer or the restrooms.

First, I had a full glass of [Flying Fish](http://flyingfish.com) Bourbon Barrel Abbey Dubbel which is a delicious Belgian-style Dubbel. Then, I had tastes of [Rogue Ales](http://rogue.com/) Imperial Porter, [Boulder Beer](http://boulderbeer.com/) Sweaty Betty Blonde, [Green Flash](http://greenflashbrew.com/) West Coast IPA, and [Laurelwood](http://laurelwoodbrewpub.com/) PNW Pils. I deliberately tried to get beers from non-locals breweries since I seen many of the local beers in bars or stores.

OSCON: Friday

On Friday, I made it to the morning keynotes. None of them were really informative but were entertaining and funny.

I attended [ZFS: Bringing Terabytes Under Control](http://conferences.oreillynet.com/cs/os2007/view/e_sess/12312) by Jay Edwards. He mainly talked about using ZFS on Solaris for large storage systems. The biggest advantage of ZFS is the nice management tools for creating pools and filesystems. RAIDZ, which is RAID5 with tracking of which blocks need to be rebuilt, sounded neat. The copy-on-write behavior which makes snapshots and clones easy sounded very useful. He mentioned some of the problems between the impedance mismatch between smart ZFS and smart hardware. ZFS assumes that the hardware is dumb and lies which causes performance problems with smart drive arrays.

Next, I went to [Running Your Programming Language on Parrot](http://conferences.oreillynet.com/cs/os2007/view/e_sess/12967) by chromiat and Patrick Michaud. They talked about how to write parsers and compilers for Parrot using the Parrot Compiler Tools. The tools make it easy to write a Parrot compiler for a language by doing a parse grammar and AST grammar to transform the source into an AST; the tools can produce PIR from the AST. It sounded like the new tools are being used for more languages and should improve the progress in getting languages implemented on Parrot.

OSCON: Thursday

After staying up late on Wednesday night, I slept late on Thursday and missed the keynotes. I went to Matt Tucker’s talk on [Jingle: Cutting Edge Open Source VoIP](http://conferences.oreillynet.com/cs/os2007/view/e_sess/13134) describing the Jingle extension to Jabber that allows voice chat and other multimedia. Jingle is the standardization of the Google Talk protocol for voice chat. One thing that sounds good about Jingle is that it reuses the ICE, STUN, and RTP standards for making the connections through firewalls and NAT. Jingle replaces SIP and SDP for the session setup with much nicer XML language. It sounds like Jingle isn’t meant to replace SIP for making phone calls with hardware but instead to provide standard multimedia chat for instant messaging.

I skipped the next session talk and worked on my computer instead. After lunch, I went to [Next Generation Version Control Systems](http://conferences.oreillynet.com/cs/os2007/view/e_sess/12961) by Sam Villian. He talked about [bzr](http://bazaar-vcs.org/), [Mercurial](http://www.selenic.com/mercurial/wiki/), and [git](http://git.or.cz/), the three modern distributed version control systems. He talked about why distributed version control is better than centralized ones like Subversion. I liked is distributed systems are more transactional with commits not relying on a server. Also, these distributed systems are more descriptive and keep track of the DAG of the history instead of having to be told about merges and renames. He also talked about how the distributed systems allow the stable development model with each change getting a branch that is merged into an always-stable branch when ready. In comparing the systems, the main thing is that bzr is slow and doesn’t scale as well to large repositories. git is harder to use and impossible to install on Windows. It is really fast and produces compact repositories. Mercurial sounded nice with a speed comparable to git while being easier to install and use.

Next, I went to Jesse Vincent’s talk on [Building Domain Specific Languages in Perl](http://conferences.oreillynet.com/cs/os2007/view/e_sess/12963). He was talking about so-called internal DSLs where an easy-o=use dialect of Perl is used for a specific domain. He mentioned a couple of tricks to persuade the Perl parser to support a simplified syntax including installing helper functions, using prototypes, and returning closures. He mentioned a couple of DSLs that they had invented for [Jifty](http://jifty.org/): Jifty::DBI, Object::Declare, Template::Declare, and Jifty::Dispatcher. Template::Declare was interesting since it is a templating system that instead of embedding code in text or using a special language just uses special Perl code with functions for HTML elements. This allows refactoring and modularizing the templates like code.

Finally, I went to the [Perl Lightning Talks](http://conferences.oreillynet.com/cs/os2007/view/e_sess/14166), a bunch of five minute long talks. They are just long enough to advertise a project, perform a rant, give a brief summary of a longer talk, or sing a song. I remember some of the same talks from last year. Some of the projects I bookmarked where [Yahoo UI Library](http://developer.yahoo.com/yui/), [qpsmptd](http://smtpd.develooper.com/), [Move My Data](http://movemydata.org/), [DashProfiler](http://search.cpan.org/dist/DashProfiler/), DBD::Grofer, and [Perl 5 Wiki](http://perlfoundation.org/perl5/).