News for May 2012

Introducing File::Symlink::Atomic

In Tips & tricks from my 4 months at Pythian, I showed how to give a symlink a new target atomically. I wasn't aware of any module to encapsulate that, so I quickly put together File::Symlink::Atomic.

This module is useful because it eliminates the need to know how to do this safely - simply

use File::Symlink::Atomic

and you get a drop-in replacement for CORE::symlink. It creates a temporary symlink (using File::Temp to get a unique pathname) pointing to your new target, then moves it into place with a rename call. On POSIX systems, the rename system call guarantees atomicity.

I put it on PrePAN to get some advice. I have no clue what that'll do on any non-POSIX systems that have symlinks (if the OS doesn't do symlinks, I can't help you). Is a rename call universally atomic? If not, how can I detect those platforms, and provide that atomic guarantee some other way?

I didn't get any feedback, so I chose to simply release the module. It's now on CPAN. Enjoy!

WordPress theme for hashbang.ca

In the past month, a number of people have asked about the theme for this blog. I was particularly flattered that someone even asked where I bought it.

It is just a customized version of Joey Robinson's Minimalist theme. My aim was to keep the same design principles - fast-loading, minimalism, readability - but update it to have a more modern look. One major goal was to have a truly great font via [ccie]@font-face[/ccie] on modern browsers, so I used the Junction font from The League of Movable Type. They're an awesome group of free font designers - you should check out their other fonts too!

I also rewrote the javascript with jQuery, because mootools is ugh.

The new theme is called, unsurprisingly, "Hashbang" - and is now available on Github. Enjoy!

Tips & tricks from my 4 months at Pythian

After working with Yanick Champoux on a few little Perl projects here and there, we finally met face-to-face at YAPC::NA last summer. A few months later, when I was looking for a co-op position, I immediately thought of Pythian. (more…)