Adrian's Journal Adrian's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:15:03+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 Adrian's Journal Thank you Linpro Thanks to <a href="">Linpro</a> for sponsoring my attendance of the Oslo QA Hackathon 2008. Adrian 2008-03-03T14:29:11+00:00 journal How not to write a job advert. <p>Aristotle <a href=";cid=55100">recently suggested</a> that an old <a href="">perlmonks rant</a> on how not to write a job advert deserved a wider audience.... so here it is.</p><p>My usual rant on recruitment goes something like this.</p><p>You're dealing with four groups of people:</p><ol> <li>Qualified: the people who have the skills you need and would want to work for you</li><li>Unqualified: honest folk who either don't have the skills or don't want to work for you</li><li>Deluded: people who think they can do the job despite the fact their computing experience consists of knowing somebody whose cousin owns a Playstation</li><li>Liars: people who know they can't do the job and will lie to get it anyway</li></ol><p>So you want to: </p><ol> <li>convince that first group that you have a wonderful job working for a competent company that's just right for them</li><li>convince the others that they shouldn't waste everybody's time</li></ol><p>Two big problems:</p><ol> <li>Almost by definition the Qualified are in work. Why wouldn't they be? So you need to make sure that you're going to make something attractive enough for people to consider jumping ship for.</li><li>It's a complete bugger to get rid of the Liars and the Deluded because... well... they're liars and deluded<nobr> <wbr></nobr>:-)</li></ol><p>The good news is that the Unqualified are happy to exclude themselves if they're given enough info. They don't want to waste their own time applying to stuff they they know they're not going to get.</p><p>So - how do you find somebody decent?</p><p>Best way is personal recommendation. Network away and see if anybody you know and trust knows somebody who would be interested. Assuming you have vaguely sane friends this is almost guaranteed to exclude the Deluded and the Liars. Huzzah.</p><p>Second best way is to use a good recruiter. Unfortunately, in my experience anyway, good agents are rarer than gold dust in the IT industry. Unless you have a personal recommendation from somebody I'd steer clear.</p><p>The absolutely worst way to find somebody is a job advert - but sometimes we have no choice<nobr> <wbr></nobr>;-)</p><p>So - how do you know if you have a decent job advert?</p><p>You know the sort of person you're looking for. Pretend you're that person sitting in a fairly comfortable job, with a reasonable salary, but feeling slightly bored with your current work. Remember you know nothing at all about your company and the work you do. Read your job advert. Do you want to apply?</p><p>If not you may want to consider my Patent Pending list of how not to write a job advert<nobr> <wbr></nobr>:-)</p><ol> <li>Lie. Nothing attracts that ideal recruit more than showing up at the job interview to discover that the salary is ten grand less than was advertised and that they can't telecommute like the agent told them.</li><li>Bad spelling and grammar. Would you trust a company that cannot even check the spelling on their job adverts?</li><li>Bad technical terms. The Qualified are not going to apply for a position as a "PERL programmer with Central Gate Interface experience"<nobr> <wbr></nobr>:-)</li><li>No company info. Put your company name and URL on the advert. Good candidates will want to google you and find out whether they want to work for you. Let them. That way you'll let the Unqualified filter themselves out. Does googling your company results in stuff that would make the brave run away screaming? If so fix that first<nobr> <wbr></nobr>:-)</li><li>Bad job title. Treat the job title like the subject line of an e-mail. It should be informative. It should be an abstract of the job. It should not be "Programmer" or, even worse, "GREAT POSITION IN TOP COMPANY!!!". Something like "Perl/mod_perl e-commerce developer". The Qualified are only skimming the job ads to keep a weather eye on what's happening. Don't give them an excuse to skip over the ad. Being specific also makes it harder for the deluded to remain so.</li><li>No salary. At the very least quote a range. The Qualified are probably working and need to know whether it's worth their while to jump ship. It's also a good indicator of what kind of role it is. This will let the Unqualified filter themselves out and reduce your pile of useless CVs. </li><li>Over general terms. Don't say "Perl programmer" say "Perl programmer. Must have experience writing OO modules and unit/acceptance testing of web based applications". Make it easy for the Unqualified to filter themselves out. Make it harder for the Deluded to delude themselves.</li><li>Not knowing the difference between a job requirement and "it would be nice if...". Make the difference obvious in your advert. Far too many ads are a shopping list of every possible thing that might be vaguely useful. Are you really going to reject the perfect candidate because they only have four rather than five years experience? Are the Qualified going to spend the time figuring out what the job actually involves? Nope - they have lives.</li><li>Hiding the job requirements. By the time they've got to the third paragraph of market speak about how wonderful the company is the Qualified's eyes are glazing over. Job requirements should be front and centre. </li><li>Not saying what the job is. For god's sake mention what they'll be developing. It's one of the things that attract the Qualified. At the very least mention the domain.</li><li>Not mentioning the work environment. If you have a small agile development team using TDD then you don't want somebody who uses RUP in a group of forty, or somebody who will only telecommute. So let them filter themselves out by saying so.</li><li>No location. People want to know where they'll be working.</li></ol><p>Remember - you want the best person for the job, not the most desperate. The best people are going to be comfortable and happy to skip things. The desperate are going to read everything.</p><p>So, get the attractive stuff that will capture the best up front where they'll read it.</p> Adrian 2007-05-17T07:03:24+00:00 journal Inconsistant metadata: Yet Another Reason to Hate MySQL <p>Compare and contrast:</p><blockquote><div><p> <tt>-- schema A<br>CREATE TABLE products (<br>&nbsp; &nbsp; id&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br>&nbsp; &nbsp; vendor_id&nbsp; &nbsp;INT UNSIGNED REFERENCES vendors (id),<br>&nbsp; &nbsp; name&nbsp; &nbsp; &nbsp; &nbsp; VARCHAR(255),<br>&nbsp; &nbsp; UNIQUE&nbsp; &nbsp; &nbsp; ( name ),<br>&nbsp; &nbsp; INDEX&nbsp; &nbsp; &nbsp; &nbsp;( vendor_id )<br>) TYPE = InnoDB;</tt></p></div> </blockquote><blockquote><div><p> <tt>-- schema B<br>CREATE TABLE products (<br>&nbsp; &nbsp; id&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br>&nbsp; &nbsp; vendor_id&nbsp; &nbsp;INT UNSIGNED,<br>&nbsp; &nbsp; name&nbsp; &nbsp; &nbsp; &nbsp; VARCHAR(255),<br>&nbsp; &nbsp; UNIQUE&nbsp; &nbsp; &nbsp; ( name ),<br>&nbsp; &nbsp; INDEX&nbsp; &nbsp; &nbsp; &nbsp;( vendor_id ),<br>&nbsp; &nbsp; FOREIGN KEY ( vendor_id ) REFERENCES vendors ( id )<br>) TYPE = InnoDB;</tt></p></div> </blockquote><p>Schema B sets up the meta-data that Rose::DB::Object::Loader uses to figure out the relationships between tables automatically. Schema A does not.</p><p>Six.... fardling... hours.... wasted.</p><p>Many thanks to John Siracusa for pointing me to <a href="">the solution</a>.</p><p>You can almost <em>see</em> the bit of code that needs to be refactored.</p> Adrian 2007-03-29T10:44:26+00:00 journal Death threats... I know I should no longer be surprised at the number of asshats in the world, but the abuse that <a href="">Kathy Sierra</a> has been recieving... yuk... Adrian 2007-03-27T03:32:03+00:00 journal 0000-00-00 vs NULL: Yet Another Reason to Hate MySQL <p>Just to join <a href="">Ovid</a> in his recent rants...</p><p>My co-worker and I have just spent the last forty five minutes with a bug that boils down to this "interesting" behaviour...</p><blockquote><div><p> <tt>create temporary table the_dates (d date not null default '0000-00-00');<br>insert into the_dates values ('0000-00-00');</tt></p></div> </blockquote><p>So far so normal.... but:</p><blockquote><div><p> <tt>mysql&gt; select count(*) from the_dates where d is null;<br>+----------+<br>| count(*) |<br>+----------+<br>|&nbsp; &nbsp; &nbsp; &nbsp; 1 |<br>+----------+<br>1 row in set (0.00 sec)<br> <br>mysql&gt; select count(*) from the_dates where d is not null;<br>+----------+<br>| count(*) |<br>+----------+<br>|&nbsp; &nbsp; &nbsp; &nbsp; 1 |<br>+----------+<br>1 row in set (0.00 sec)</tt></p></div> </blockquote><p>.... sigh....</p> Adrian 2007-03-09T12:17:58+00:00 journal Resume tips&#160;#1 Do not misspell "design" three times in a row and then tell me you have attention to detail. Adrian 2007-03-07T13:20:27+00:00 journal Somebody is actually using Test::Block! <p>I've just noticed on <a href="">CPANTS</a> that somebody (NKH) is actually using Test::Block in real code.</p><p>Good lord. Never expected that! </p> Adrian 2007-02-23T13:10:21+00:00 journal Playing with LinkedIn <p>If you vaguely know and are on LinkedIn I'm at <a href=""></a>.</p><p>(Note: I keep contacts to people I vaguely know / exchange e-mails with. So please don't bother if I've never heard of you<nobr> <wbr></nobr>:-) </p> Adrian 2007-02-20T09:41:16+00:00 journal Alien conspiracy! Am I the only one who read <a href="">this headline</a> and was immediately in X-Files territory? Adrian 2007-02-19T12:47:10+00:00 journal Making agile development and design work <p>(a comment on <a href=""></a> whose overactive spam protection won't let me post<nobr> <wbr></nobr>:-)</p><p> There seems to be some confusion agile methods are purely a developmental process. That really doesn't gel with my experiences. For example I've found the Planning Game in XP is a very rich environment for doing exploratory design work. </p><p> For me agile is just as much about design as it is about implementation. Go read the agile manifesto again . Replace "software" by "product" and see how it reads. </p><p> It's true that if you don't have people with design skills involved in the team then you're less likely to get a decent product out the other end - but this is true of any process. </p><p> Agile development doesn't devastate design any more than any other process. In fact, I'd say that you're slightly more likely to get things right even without input from Design (in the UX/IxD sense) folk, because you're getting feedback far more frequently and can spot problem areas. </p><p> When the developers aren't separated from the stakeholders and users by N layers of management Chinese whispers it becomes a lot easier for them to do a good job. </p><p> As for agile only working 2-4 people - there are a<nobr> <wbr></nobr>/whole/ bunch of people who seem to be doing pretty darn well with considerably more than that<nobr> <wbr></nobr>:-) It's certainly easier to get a small team up and running in an agile manner. That doesn't mean that you can't get larger projects working that way. </p> Adrian 2007-02-07T21:57:32+00:00 journal In Oxford? Interested in Agile? <p>While I was working near Oxford I attended the <a href="">Oxtremists</a> meetings. They do a monthly meetings to discuss vaguely agile related books and drink beer.</p><p>Of course I only write about it here after I leave<nobr> <wbr></nobr>:-) However, if you're near Oxford next Wednesday why not consider attending? They're nice folk, the conversation's interesting and the beer's none to shabby.</p><p>Although I guess not having the next meeting on Feb 14th might have been a clever idea<nobr> <wbr></nobr>:-)</p> Adrian 2007-02-07T21:29:47+00:00 journal Twittering I'm playing with Twitter at the moment. <a href=""></a> if anybody cares. Adrian 2007-02-06T15:38:20+00:00 journal Five things you don't know about me <p>Since Ovid has <a href="">sort of tagged me</a> here are five things you probably don't know about me:</p><ol> <li>I've got a new job! After nearly a year and a half at <a href=""></a> I'm moving to <a href="">Intunet</a> from next Monday. The latter has the major advantage of being about fifteen miles from home rather than over one hundred. No more Virgin Trains! I get to see my partner every day and live somewhere pretty! Yay!</li><li>Despite living in the UK almost all of my life I've never been to mainland Europe. No reason, just never got around to it. There are too many pretty places in the UK I've not been to yet<nobr> <wbr></nobr>:-)</li><li>I've not driven a car since 1993. I can drive but I don't feel safe doing so. My brain works mostly in "oh look - a pretty flower" mode - which isn't a good attitude to have when in control of several tons of death machine. So, rather than kill somebody, I stopped driving. Since moving back from the US I've never felt the lack.</li><li>Until my mid-twenties I was always writing fiction in my spare time. Never sold anything for the excellent reason it wasn't very good - but I had to write it down to get the damn stories out of my head. Haven't felt that <em>need</em> to write for about ten years now. I feel sort of sad about that since it means I'm not a writer.</li><li>Slimy things (slugs, worms, etc.) really freak me out. Fine with spiders though.</li></ol><p>Now I get to tag <a href="">Phil Jones</a>, <a href="">Jeff Patton</a>, <a href="">Chris Rimmer</a>, <a href="">Chris Laco</a> and <a href="">David Wheeler</a>. </p> Adrian 2007-01-18T17:15:02+00:00 journal Off to YAPC::EU <p>Off to catch the train to Brum in a couple of hours. Made more interesting by trashing my hard drive early this morning. Thank goodness for backups!</p><p>Say hi if you're there. I'm the big fat bloke with the sideburns and the pony tail<nobr> <wbr></nobr>:-)</p> Adrian 2006-08-29T11:21:14+00:00 journal Going to YAPC::EU? Interested in TAP? Anybody interested in playing with TAPx::Parser and going to YAPC::EU might want to stick their name down on <a href="">TapHackathon</a> Adrian 2006-08-22T10:10:51+00:00 journal Bulldog Award <p>On this <a href="">rather nice site</a> on internationalisation and localisation I discovered the existence of the <a href="">The Bulldog Award</a>.</p><p>What's the Bulldog Award I hear you cry? It's an occasional award for "outstanding personal contributions to the philosophy and dissemination of the Unicode Standard".</p><p>There's a really geeky part of me that <em>loves</em> the fact that this has been awarded 13 times since 1997.</p> Adrian 2005-10-25T12:55:55+00:00 journal Dependency Injection rocks! <p>Since there aren't comments on his blog I'm gonna take a mild poke at Artistotle's recent <a href="">Dependency Injection</a> post here<nobr> <wbr></nobr>:-)</p><p>He asks, in relation to Fowler's <a href="">DI article</a>:</p><blockquote><div><p> <em>Why do the design patterns people come up with such ridiculously elaborate conceptualisations of perfectly trivial ideas? </em></p></div> </blockquote><p>First off, I'd disagree that these ideas are trivial. If it's trivial why do I see so much code with tightly coupled external dependencies? Why am I so often faced with applications where I have to mock up half the fardling world before I can test a single module?</p><p>The DI pattern might not be difficult to understand or apply - but the problems it can help solve are not trivial.</p><p>Now, I do agree that Fowler's exposition isn't an example of his best writing. It's a bit of a mish-mash article which is trying to cover at least four different things (what DI is, why it's useful to separate it from inversion of control, why it can be better than things like service locators, how this relates to the J2EE complexity backlash, etc.)</p><p>However it did do one hugely useful thing. It named Dependency Injection and separated it out from the more general Inversion Of Control.</p><blockquote><div><p> <em>I read and reread the definition, examined the flimsy code snippets carefully, stared at the nearly tautologic diagrams for roughly 10 minutes, trying to grasp the deeply profound idea but failing. It finally dawned on me, after investing much effort, that it was right there &#8211; only banal enough that it was obscured by the heaps of pontification. It turns out the concept is so trite I've used it more times than I can remember, without ever having thought of it as any kind of dinstinct idea.</em></p></div> </blockquote><p>That last sentence is a doosy.</p><p>The whole <em>point</em> of patterns is to describe and name common design strategies - and thank god for that.</p><p>If you don't have DI in your head as a distinct concept - something you can name and describe - then it becomes really hard to communicate that idea. Judging from the code I regularly encounter it's an idea that could do with a bit more communication<nobr> <wbr></nobr>:-)</p><p>Now Fowler has done the work of naming DI and separating it out from the more general inversion of control pattern I've been given the gift of a beautiful new communication tool.</p><p>My coding partner can say things to me like "Hmm... the fact that this code is pulling all it's configuration information out of these singletons is making testing a pain in the arse, maybe refactor it so it uses dependency injection?"</p><p>Think about how much information is in that question. Try communicating that intent without naming the design patterns "singleton" and "dependency injection" and see how long it takes.</p><p>I do think that part of the reason the descriptions of DI seem so clumsy to us Perl folk, is that it's a harder concept to put into code with languages like Java.</p><p>DI is pretty darn easy in dynamic languages like Perl, Ruby and Lisp. We can also do really neat things at runtime that mean we can solve the problems that DI solves with considerably less effort than Java folk. </p><p>Jim Weirich's nice OSCON presentation <a href="">Dependency Injection: Vitally Important or Completely Irrelevant?</a> does a nice job of highlighting this (and does a better job of describing DI too.)</p> Adrian 2005-10-17T10:59:53+00:00 journal Depressing news... <blockquote><div><p> <tt>% find . -name \*.pm | xargs wc -l | tail -1<br>&nbsp; &nbsp;20554 total<br> <br>% find . -name \*.t | xargs wc -l | tail -1<br>&nbsp; &nbsp; &nbsp;187 total</tt></p></div> </blockquote><p>Sigh.</p> Adrian 2005-10-12T13:51:50+00:00 journal CVS - how I hate thee Good news! I'm now in full time work again. Nice people, nice working environment, open source friendly, a Mac on my desktop, etc. All good stuff.<br><br>Only one bit of bad news. Currently we use CVS. Having spent the past couple of years as a happy subversion user this seemed only mildly annoying.<br><br>"It's not going to be that bad", I thought, "Just dig our my old copy of the cederqvist and I'll soon be back in business".<br><br>Oh how wrong I was. Two years of everything just working has somewhat spoiled me.<br><br>&lt;rant&gt;<br><br>Can't remove a bloody directory? Surely it wasn't that bad? Oh yes - you have to add -P to update and checkout in your<nobr> <wbr></nobr>.cvsrc so it prunes empty directories. So obvious. Which kind of works - until you actually want an empty directory that is.<br><br>Hit Ctrl-C in the middle of a commit and suddenly remember that this isn't going to abort the dumb ass thing I just did because commits are no longer atomic.<br><br>Moving stuff! How could anybody create a version control system without support for moving and renaming!<br><br>Having to tell CVS what are binary files.<br><br>The slow horror of things like magic branches are beginning to rise to the surface of my memory again. Lord how did I put up with CVS for so many years.<br><br>&lt;/rant&gt;<br><br>Of course the mere fact that we have a source control system puts us leagues ahead of many places I've worked - but shifting from CVS to a vaguely decent system has become.... more of a priority<nobr> <wbr></nobr>:-) Adrian 2005-09-19T10:05:52+00:00 journal Bad job adverts - #4 in an ongoing series <p>This one hit my inbox yesterday.</p><blockquote><div><p> <em>Our client is a leading engineering technology provider, undertaking research, design, development and strategic services to the world's automotive manufacturers. THE ROLE: To work in Tokyo for 3 - 6 months to assist on a website design project The work is 5 days per week but 50+ hours per week, so dedication and flexibility are vital.</em></p></div> </blockquote><p>Does anybody else think that the sort of organisation that <em>starts</em> with a plan involving 3-6 months of 50+ hour weeks is going to end up with something considerably worse?</p><p>Can anybody else say <a href="">Death March</a>?</p><p>(Incidentally I just noticed today that I've not watched any television for about three weeks. Zip. Nada. Not through any virtuousness on my part - there has just been nothing on that I've wanted to watch.)</p> Adrian 2005-09-06T09:56:21+00:00 journal My new favourite word: fomites <p> <a href="">A.Word.A.Day</a> supplied this wonderful word recently.</p><dl> <dt>fomites (FOM-i-teez) plural noun</dt><dd>Any inanimate object, such as a book, money, carpet, etc. that can transmit germs from one person to another.</dd></dl><p>A term ripe for application to flash drives, iPods, etc.</p> Adrian 2005-09-04T02:08:08+00:00 journal Can't find developers? <p>If your organisation can't find decent developers in the current job market it will almost certainly be due to one or more of the following:</p><ul> <li>You are not paying enough</li><li>You are doing boring work</li></ul><p>Pay more. Be less boring. Profit.</p><p>(the blunt version of a conversation I had yesterday<nobr> <wbr></nobr>:-)</p> Adrian 2005-08-28T12:23:42+00:00 journal Interviews, smoking and mobile phones <p>Had a job interview with some nice folk near Oxford today, which meant that I had the joys of Virgin trains for part of my journey.</p><p>Amid all the usual announcements about not leaving your bag around, and the excuse-of-the-day for being late, was a gem I've not come across before. Apparently they "offer a non smoking policy".</p><p>They "offer" one?</p><p>"Would sir like a non-smoking policy?"<br>"Not today I'm trying to give them up."</p><p>Hell - I don't smoke and this pissed me off. God knows how the smokers feel.</p><p>Also - if you're in the mobile free carriage and see a bit fat bloke tapping away at his powerbook please don't be tempted to make a phone call. Because I'll move next to you. And sing. Badly.</p><p>News flash for those who don't realise...</p><p>People sitting in the mobile free carriage do so to avoid <em>listening to your fucking puerile conversations</em>. Even if it's "just for a minute". Even if "I have to sit here because there isn't a table in the other carriage". Tough luck.</p><p>Phone off or fat bloke next to you singing. Your choice.</p><p>We now return you to your regular broadcast.</p> Adrian 2005-08-26T21:48:23+00:00 journal Bad job adverts - #3 in an ongoing series <p>Some companies/agents seem to re-post their adverts on a daily basis. Whether this is an option they buy with the site in question, a bot, or a very bored human I don't know. However, when the job includes the line:</p><blockquote><div><p> <em>Applications to be received by 8 August</em></p></div> </blockquote><p>and it's now the 21st - there really doesn't seem much point...</p> Adrian 2005-08-21T11:03:16+00:00 journal Bad job adverts - #2 in an ongoing series <blockquote><div><p> <em>Process consultants urgently needed. To work in London. Excellent oppertunity. Must have Prior experience. UNIX, Perl, NT Architecture, Leadership experience. This role comes with an excellent salary and excellent bennefits package. Only apply if you genuinely believe you have what is required. NO CHANCERS PLEASE.</em></p></div> </blockquote><p>It's that last sentence that cracks me up. Because, y'know, nothing deters shoplifters more than a "no shoplifters" sign. Really!</p><p>They could, of course, put enough information down the job so that it's harder for people to go "yeah, I can bullshit that". But that would require actual effort wouldn't it.</p><p>Feh.</p> Adrian 2005-08-19T12:40:26+00:00 journal Joel misses the point <p>When Joel Spolsky's <a href="">latest rant</a> includes things like:</p><blockquote><div><p> <em>I have consistently saved time and made better products by using BDUF and I&#8217;m proud to use it, no matter what the XP fanatics claim. They&#8217;re just wrong on this point and I can&#8217;t be any clearer than that.</em></p></div> </blockquote><p>and then goes on to describe exactly the sort of changes that you would find in an agile process I don't know whether to laugh or cry.</p><p>Hell, you could cut up his spec document, stick them on cards and you'd have a typical XP release plan!</p><p>Just like the dreadful eXtreme Programming Refactored book he creates a straw man version of what he <em>thinks</em> XP is like, and demolishes it.</p><p>I can't be bothered to argue with this sort of thing anymore. I'll just carry on making great software with methods and practices that do work, whatever Joel says<nobr> <wbr></nobr>:-)</p> Adrian 2005-08-19T10:21:16+00:00 journal Bad job adverts - #1 in an ongoing series <p>I'm ambling around looking for a new job at the moment. This means, amongst other things, I'm looking at the job advertisements.</p><p>I'm continually amazed at how bad they can be. Like <a href="">Ovid</a> I have <a href="">ranted</a> about them in the past.</p><p>Here's my favourite for today. You don't need to see anything apart from the title:</p><blockquote><div><p> TOP WEB DEVELOPERS NEEDED - SURREY - &#163;25,000 - &#163;50,000</p></div> </blockquote><p>Apart from the ALL CAPS SHOUTING - a 25k salary range. Yup. They <em>really</em> know what they want. Bin.</p> Adrian 2005-08-16T11:27:39+00:00 journal C::DBI fallout <p>Just a note of agreement with <a href="">Ovid</a> and <a href="">Schwern</a>'s comments that <a href="">sebastian</a>'s presentation of the recent C::DBI debacle is a tad one sided.</p> Adrian 2005-07-29T09:59:55+00:00 journal First come, first served II <p>More GMail invites have just arrived. As before if you want one just mail me at <a href=""></a>. First come first served until the invite(s) run out.</p><p>(note: I rarely look at my GMail mail more than once a day so don't expect a rapid response.)</p><p> <strong>Update:</strong> All gone. Please stop mailing me<nobr> <wbr></nobr>:-)</p> Adrian 2004-06-16T09:20:03+00:00 journal First come first served. <p>Since I got a GMail account through a <a href=";cid=30792">pathetic whinge</a> I might as well return the favour. </p><p>Mail me at <a href=""></a> if you want a GMail invite. First come first served until the invite(s) run out.</p><p>(note: I rarely look at my GMail mail more than once a day so don't expect a rapid response.)</p><p> <strong>Update:</strong> All gone. Please stop mailing me<nobr> <wbr></nobr>:-)</p> Adrian 2004-06-15T13:54:48+00:00 journal