Building notes, projects, and ocasional rants


last update:


I've switched providers of OpenID. I was using ClaimID, but now I'm using MyOpenID. The anti-pishing features are great, specially the personal icon feature. It basically sets a cookie on your browser, with a picture URL, and shows you that picture on the login page. If you don't see the picture, then the site didn't get the cookie, and the URL is probably fake. Simple and effective. I've also gained OpenID 2.

Last year, I was amazed with the power of Cappuccino when they showed off a clone written entirely with JavaScript. The 280 North gang released version 0.7 this week, and inside there is a new tool that made my jaw drop. The nib2cib tool allows you to design your application with the gorgeous Apple Interface Builder, and then translate the resulting nib/xib into a cib that your JavaScript app can use directly.

Marcus started it, Tim teased me. I was bitten so many times by this that I had to take a stab at it. Following Tim's leads, I checked that the pod2man was producing proper nroff, with a \- for each -. It was. I tried to understand the groff tmac files, but I think we have here the first real proof that there are aliens out there, and they speak wonderful languages.

Love/Hate and package managers

I have a long standing love/hate relationship with package managers. On one side, you have access to most of the software out there already compiled (presumably by someone who knows and uses the software and therefore is able to choose the proper, most useful, configuration options) and with all the administrative bits (startup scripts, example configuration files) in the "right" place (usually dictated by some standard like the LSB). On the other all the package managers that I know of (and this is really a cry for help, please tell me of exceptions to this rule) have a Highlander-fetish with regards with package versions: there can be only one.

Fast DNS queries with Perl

For some jobs, you need to quickly resolve large amounts of DNS queries. The AnyEvent::DNS module allows you to resolve DNS queries fast and in parallel. To test this, I wrote a simple command line tool to check XMPP SRV records of a list of domains. Both server-to-server and client-to-server records will be checked and results printed out. All queries will be made in parallel. The code is at my Ironman repository.

Third time is the charm

I stop following a bunch of people on Twitter, and I've stopped using any kind of real-time Twitter client. Its an amazing waste of time. My new relation with Twitter can be summed up like this: I'll post links that I find interesting;I've subscribed the feed of mentions of @pedromelo: this allows me to read responses or comments about such links in my RSS reader, when I feel like it;I've created a feed with all the twits from my friends that contain a link: allows me to catch any links they find relevant.

My usual projects involve event-driven asynchronous servers, and as a general guideline I try to make them as a set of loosely coupled components, running on the same process space. To tie them together, I create a set of extension hooks on each component. Those hooks can be used for notification, or for delegation of responsibilities. For example, in a XMPP component, the Roster controller usually has two hooks, new_buddy, and accept_as_budy.

Walk like an iron man

Matt Trout and friends came up with an idea of a small game to start people blogging about Perl. The rules are simple: blog once per week;every week.The definition of week is a bit lax, allowing you have at most 10 days between posts. Mine will appear under the Perl category, and if you want to follow just those, you can subscribe to the Perl category feed.

Merging two unrelated repositories

I keep a repository for operations-style stuff. Server configurations, Puppet recipes, old CFEngine stuff, the works. But for some idiotic reason long lost in time, my DNS setup was in a totally unrelated repository. This didn't make that much sense. Even more stupid: other stuff, unrelated to DNS, was also stored in there. So I had: a oss/ repo with the good and clean stuff to configure all the servers I manage;a dns/ repo with all the DNS configuration stuff, and a bunch of other unrelated configurations.


The server where this site was hosted is dying a slow death. I'm moving my personal stuff to a slice in the next few days, so expect some disturbance. One of the road-blocks after email is DNS. My .com, .org and .net domains are hosted at Joker, and so far I'm happy with the service. But I also have other domains in the .pt, .im, .as, and .tv top level domains, and for those, Joker is not a solution.