Friday, January 26, 2007


The timetable for Apachecon EU 07 has been posted.
I'm speaking on Wednesday at 5:30 (note to self, stay sober to boost that speaker competence score!) Title; Apache James - The Complete Email Application Platform don't miss it. :-)

Thursday, January 25, 2007

The past is another country; but you can see it from here on a clear day

I took this picture, of what Americans might call a "Vacant Lot", today. It is a few streets from our office in what is variously known as "Anderston", "Glasgow's International Financial Services District" or "Glasgow's notorious red-light district" depending on the context.
I was amazed at the number of layers of history that you can see imprinted on these two walls, from the gable of the cottage apparently embedded in the newer wall on the left, through at least one layer of sandstone and two layers of brick. The brick isn't one age, if you look carefully you can see that it too has been extended upwards as this part of the city evolved. At the bottom of this page is a photograph of Anderston Village in the 1860's.
The "vacant lot" is down in the far right hand corner of this map near to the junction of West College Street and Brown Street, on the right of Brown Street.
Looking on Google maps today you can clearly see the space on the right of Brown Street north of the junction, but West College Street is now Crimea Street, and the MOD's Kentigern House sits across the top half of Carrick Street.

Thursday, January 18, 2007

Criteria for judging proposed "solutions" to the problem of spam


You will find a document which outlines an idea I've had for a while.

The thrust of the document is that while we don't know what the silver
bullet solution for spam is we do know some of the characteristics
which we expect it to exhibit.

We also know that very many ideas are presented on the list which
fail to meet one or more of those criteria, this draft is intended to
provide a reference which describes those criteria, and could be used
as a partial statement of requirements for a technique to solve the
problem of spam.

Obviously this is just my own 2c at the moment, so let me know, preferably on the asrg list) what
your opinions are and I'll modify, abandon or replace this as

FYI the abstract reads:

"The Internet Research Task Force Anti-Spam Research Group (ASRG) is
frequently presented with proposals for techniques for managing spam
from authors who wish to elicit an expert critique of their
proposals. In many cases proposals fall foul of issues and risks
which are well known and understood by members of the ASRG. This
Internet Draft is intended to enumerate and explain a number of the
more important of the criteria which tend to be applied. This
document will then serve as a normative checklist for anyone wishing
to present a technique to the ASRG."

Is spam going to kill SMTP?

I read this post about the scale of the spam problem today. Its pretty chilling, but I guess it was meant to be. As far as I can tell the question it poses is, are we're really looking at a doomsday scenario and if so should we now be considering the unthinkable and pull the plug on SMTP?
I'm assuming that we all agree that the problem of spam is a direct result of SMTP being designed without any of the controls necessary to protect the network from this abuse.
Can SMTP be revised or does it need a flag day? I don't want the character of email to change, but I'm fed up with trying to explain why the problem of spam is so intractable, perhaps its time to get some traction and stop flogging a dead horse. WDYT?

jSPF passes all the tests

James developers are currently voting to release jSPF-0.9b4. This release passes all the tests at

If you want to try it out before its released the rc is here Remember to let us know what you think of it.

Wednesday, January 17, 2007

Mailet API getting some independance

In the past the Mailet API has been managed within the Apache James Server project. You could always get the api separately but it was managed in the James Server lifecycle.

Today the votes were counted and the API will soon be taking its rightful place as a James subproject.

We'll start small, by releasing the current version, and move on to look at the enhancements we've been discussing over on

Eventually I hope we'll add things like a Reference implementation independent of James Server and suitable for embedding, an SDK, and possibly a TCK.

If you want to get involved subscribe to and speak up.

123 - I love you

"I'm an English teacher. I'm fat and bald. I'm a firecracker in the sack. That's all you need to know." read his blog.

Consumer hell

Ask Bjoern Hansen posts a story of insane customer services, shame is I like Netgear kit for the same reason he does.


Monday, January 15, 2007

labels and post by email

I just applied labels to all my posts, thinking that I could use them to select what is syndicated on planetapache, then I realised that posts from emails won't get any label, so I'll have to log-in and apply labels if I want that to work.

blogger, please can we have default labels for email/mobile posts?

USB Turntable

I didn't make it up ... buy it here

.. and finally ... how I got it all together (or why is it all so hard?)

The previous post was made from my phone, including picture. Cool huh?
It was way not as easy as it should've been :-(
Step one, send a mail to from my gmail account and claim my blog.
Step two, send a mail from my phone to go@blogger
look for an smtp server to use, o2 or gmail? o2 doesn't seem to work.
what connection to use? try several pre-programmed ones, settle
on the one that actually finds the smtp server.
error "TLS/SSL can't recognize certificate"
Solution, install root certificates in phone. What! This is
getting a bit too far from the path of straighforwardness we should
expect in the 21st century, surely? Anyway, root certs duly found and
cable attached. Cable can;t be used because the certs are just copied
into the removable memory. Good job I have a blue tooth dongle,
bluetooth them across. It works. Try gmail. OMGWTF it works, I receive
a mail and send a mail.
New problem though, too much crap comes into my gmail account I
want to use a quiet account from my phone. So I try setting up mail
for with my google apps which I set up the other day.
It gave me a whole "cyber presence" in minutes (well an hour or so)
which is great because I no longer bother to host my own domain and I
was wondering why I bothered to pay for it, anyway back to the story,
the thing I hadn't done was to create MX records for
pointing at gmail's servers, so I tried that last night and...
easyspace wouldn't accept the gmail mx hostname, I know about the
trailing dot but that didn't work either so I raised a trouble ticket.
Woke up this morning to find that they'd done it by hand for me.
Now I just have to mail to go@blogger and claim it for my blog.
Thats what this post is.

Summary, repect to:

blogger - for
google - for gmail smtp & google apps
sony ericsson - for the k750i having support for TLS in smtp & SSL in POP

Name and shame
sony ericsson - for not pre-installing root certs
02 for not setting their customers up with all this automatically.

Sunday, January 14, 2007

Demolition III

Since they knocked down the building next door it has let us get a great view of the nice building.

... From my phone, at last!

Well here we go, straight from phone to blog ...

Saturday, January 13, 2007

blog by mail from my mobile

First step make sure I can blog by mail

- update - I guess that worked, now to try to send mail from my phone

Friday, January 12, 2007

New address same old nonsense

I just found out that blogger now lets us use CNAME's to point to our blogs.
The sharp eyed geek amongst the fools who read this - yes john that *is* you ;-) - will have spotted that the URL is now Next step see if I can get google apps to let me map to a google pages page. You'll know it worked when the link no longer redirects you to my apache homepage

One small step for man, one giant leap for a neater life, and all that.

Tuesday, January 09, 2007

Mailet Annotations - Proof of concept.

Well I did it at last, got my hands wet with annotations.

Work being work we're still well stuck in the j2sdk1.4 era because of the stuff we don't have the balls to upgrade too quickly :-)

James being James we tend to stick like glue to the oldest JDK we can until we have a justification for requiring an upgrade, as opposed to just a half-arsed reason for it, which is what we usually manage.

So yesterday, after a few weeks of debate on the mailet-api@james list about how we would deal with satisfying mailets' dependance on arbitrary services, I had a go with annotations.

We'd originally toyed with the idea of the service location pattern using JNDI. I built a POC for that out of the Apache Directory naming stuff, which is pretty comprehensively top-notch in both the "it works" and "its easy" categories. But that really seemed to be a cop-out since James has long espoused IoC. So the feeling on the list which incidentally includes some non-james people interested in the API, was that dependance injection should be specified where possible in the API, and Annotations used to let the container know what the Mailet is expecting.

Working on a sandbox fork of James, which I'm doing so I can get away with this stuff *and* let other people see it before I accidentally delete it, I created a custom annotation type and annotated a mutator ("setter").
The idea being that, in this case, the annotation would contain a String name parameter of a pre-configured datasource (javax.sql.Datasource) and on finding the annotation James' mailet loader would lookup the service (in this case in the JNDI context as it happens) and inject it into the mailet by calling the annotated method.
Although I did it with DataSource's which aren't quite the same as Services will be, it was relatively easy to programme James to sort this stuff out, and extremely nice and easy to annotate the method.

Whats more, and this is the big selling point for me, it worked first time.
I know it counts for nothing but it output this reassuring message to the console...

ToRepository Mailet requires datasource maildb
maildb is org.apache.james.util.dbcp.JdbcDataSource@652552
mailet got datasource :-) org.apache.james.util.dbcp.JdbcDataSource@652552

So now, having proven it, I guess I have to get to grips with the niceties of Annotations and design the annotations we want to use.

Monday, January 08, 2007

VERP, Mailet, and James

I just stumbled on this blog entry by Aaron Johnson from last Summer which demonstrates quite nicely a lot of the Big Good Thing (flexibility and plug-in architecture) about James and the Mailet API and VERP

More Uninformative Exceptions
(in the sense of more of them as opposed to less informative)

Since my last post I found this bug which has been open since 2001.

Its the comment from webrejin which I liked... "why does a FileNotFoundException not tell which file was not found?"

If you can think of any others let me know, or add them to that bug, or just vote for it.

I want a phoney Phd

I wish they'd sell degrees from phoney/dodgy colleges for a few quid online instead of a couple of hundred.
I'd buy them for people for christmas and birthdays. I suppose I could print my own, but that wouldn't be quite the same, would it?

ClassCastException - why so coy?

Well it seems that 23% of the people who read this blog read it because they searched for the term "classcastexception".

If you are reading this because you are having trouble with a ClassCastException I suggest you try searching for "troubleshooting classcastexception" or something like that instead, it might also be a good idea to add the name of the class or product which is causing your pain. You could also read some of my other posts on the subject here.

But I'm going to say this again anyway...

Why doesn't ClassCastException have a constructor takes two objects and outputs the message "Can't cast xx.xx.xx to yy.yy.yy at" so that we can find out what couldn't be cast to what simply by applying our reading skills to the message and not having to
a) read the stack trace and
b) attach a debugger just to find out what the wrong type was.

I see this bug registered with Sun, so obviously someone else cares too, but not that much because it has been in-progress since june 2004.

The last time I blogged about CCE I got a comment, but it wasn't wholly supportive it just said "Get any Desired College Degree, In less then 2 weeks.!"

Friday, January 05, 2007

Did I ever do that? How about searchable commit messages..

While trying out google's blog search, in typical vain vein by searching for myself, I came across a post on Stefan Bodewig's blog in which he says I agreed to modify James' build.xml for Gump.
Erm, I remember the conversation but I didn't remember doing anything about it, don't you just *hate* that, or are you all too organised and too good at remembering stuff?
So of course I checked the svn logs and I had done it, I think I can remember doing it while I was still at Apachecon.
But I had reluctantly reverted to svn only after trying Google code search and discovering that although it is crawling svn repositories it apparently isn't indexing the commit messages, I suppose they'd just have to crawl the output of whetever the svn log command is as well as a GET (assuming they're using WebDAV to crawl svn) so it probably isn't a big deal.

So if you're listening Herr Google, can you add commit messages to the code search?

(P.S. Perhaps they do do that and perhaps our repo has a robots.txt which is stopping them, I never thought of that.)

Thursday, January 04, 2007

Apache James at Apachecon EU 2007 ?

Flushed with the sucess of my first ApacheCon presentation in Dublin last year, Happy New Year by the way, which the Dublin audience [pictured below] liked everything about apart from my competence (I'll practice for next time I promise!) which was below average but NOT "poor"!, I just proposed two James related papers for ApacheCon EU 07 , one on James as an application server and the other on the Mailet API as distinct from James.

Hopefully at least one of them will be accepted, IMO it is high time the James community started to make up for the woeful lack of James related activities outside of the project itself.
So if you're involved in the review of the submissions I'm shamelessly asking you to give James its 15 minutes (well 2 x 60 minutes in fact) in the spotlight this year...

I know nothing, I'm not a fortune teller, and you'd be insane to think that I am. This disclaimer was cribbed from an email footer I once received. It is so ridiculous I had to have it for myself.

Statements in this blog that are not purely historical are forward-looking statements including, without limitation, statements regarding my expectations, objectives, anticipations, plans, hopes, beliefs, intentions or strategies regarding the future. Factors that could cause actual results to differ materially from the forward looking statements include risks and uncertainties such as any unforeseen event or any unforeseen system failures, and other risks. It is important to note that actual outcomes could differ materially from those in such forward-looking statements.

Danny Angus Copyright © 2006-2013 (OMG that's seven years of this nonsense)