July 2013 Archives
Many database students rejoiced when a paper was published showing a shortcut to fifth normal form (pdf). From the abstract:
A key is simple if it consists of a single attribute. It is shown that if a relation schema is in third normal form and every key is simple, then it is in projection-join normal form (sometimes called fifth normal form), the ultimate normal form with respect to projections and joins.
What the hell is fifth normal form and why do we want it? Well, it deals with cases where we can avoid redundancy when information can be reconstructed from smaller bits of information and ... and ... and ...
OK, so that's not helping. In fact, the vast majority of explanations on the Web aren't helping, so I'll explain how to fake database normalization. I'll even avoid big words.
In the first part of the "Perl Startups" intermittent series of blog posts, I interviewed JT Smith about the Lacuna Expanse. For the next post, I was very interested in Lokku/Nestoria. Many of you probably don't know much about them, but I learned about them when I was living in London and found them to be a great company and nice people. Recently I interviewed Alex Balhatchet (CPAN account, the CTO of Lokku/Nestoria and his company's love of Perl and the Perl community.
As many of you know, the Moose module has a metaobject protocol, but it's not something that many casual hackers use. Truth be told, I don't use it a lot either, but when I do, it saves me a lot of hassle. I've been writing an extremely complicated data importer and at the end, I didn't so much need a summary of the data, but a summary of what the importer did. That's when Moose metadata made my life so much easier and my code more maintainable.
Lately while there's been discussions of various new (for varying definitions of 'new') companies who have chosen Perl, there's not been a huge amount of discussion about how they use Perl. I contacted JT Smith of Plain Black Corporation and he graciously agreed to talk about The Lacuna Expanse, a MMORPG with a Perl backend.
From time to time I find myself needing to explain what OO programming is. I've written that Objects are Experts, but as usual, there's a deeper lesson to be learned here.
Imagine that you've hired a new barista (espresso bartender) and you're teaching him how to make a latté. You explain
- how to pull the grounds and start the espresso brewing
- how to steam the milk and get a good foam
- pouring the milk into a cup
- pouring the espresso through the milk (and maybe making a nifty pattern on top)
You explain this over and over. That's procedural programming. Finally, one day you can walk in and just ask for latté. You don't have to tell your new barista how to do it, you just ask. Congratulations: your barista is now an object.
Because we take confidentiality very seriously, all of the names (except mine and my wife's) have been changed, along with the countries. Also, my wife handles most of the recruiting side. I'm a freelance consultant/trainer, so no, I'm not giving up programming.
Nisar (not his real name) lives in Unknownistan (not his real country) and was extremely concerned about the climate in the country he was seeking work in. We were confused. He was willing to accept just about any programming job for any pay rate. With his desperation to get out of his third-world country, why would he really care about the weather?
The answer, it turns out, was rather simple, though surprising to Western ears: if Nisar couldn't find a place to live with heating, he was worried about being able to handle the winter.
To someone living in Europe or the US (or most countries reading this, for that matter), having someone worried about whether or not they can find a flat with heating, particularly on a programmer's salary, sounds bizarre, but the candidates we're speaking with are truly from all around the world and the comforts that most Westerners take for granted aren't universal.
Sadly, while Nisar had some skills as a developer, he didn't have enough. Unknownistan simply didn't have reliable enough Internet access or electricity for him to be able to seek remote full time employment, much less develop his skills in a manner that a Western company would expect. And as you might imagine, Unknownistan doesn't have a rich technology job market. We were able to arrange a Skype interview with him, but the connection was very poor and at the end of the day, it turned out that his English was also poor.
Welcome to the sometimes heartbreaking world of international IT recruiting.