I’ve been running my main mail feeds through my POP3 code for several weeks now. All my email gets pulled from the POP3 servers into my home-brew email system, it runs through my hardcoded filters which split “bad” mail from mail that might be good and finally Outlook connects to my mail server and pulls the email from my system back into production quality code land…
Occasionally I see ‘interesting things’ and these either become the focus for swift retesting session or else find their way into FogBugz…
My brain has been too busy to think recently. I’ve had too many background issues going on, too many unresolved items, too much shit to deal with. I haven’t been able to think new things because I’ve been too tied up in the unfinished things, I’ve tried really hard to think but there wasn’t any space… It sucked. Today I cleared a lot of that away; I found closure on lots of items and generally would be able to think nice shiny new thoughts right now if I hadn’t relaxed with a little too much wine over dinner.
I saw this rather nice explaination for why sealed is used in so many .Net classes over on cincomsmalltalk.com as a comment to a rant about how .Net is bad for your design skills…
*Designing to be inherited is extra effort
[Shane King] April 16, 2004 20:26:54 EDT*
*
*It’s extra effort, since you have to think about not only what public interface to provide to users of the class, but also what interface to provide for people who want to inherit your class.
Well, so far I’m very pleased with MT-Blacklist. It works well at preventing comment spam and when some spam gets through it’s very easy to update the blacklist and then run the ‘despam’ option to remove all traces of the offending material. 10 out of 10!
Some thoughts on Service Oriented Architectures and how for some people the silver bullet du jour is the only tool in their toolbox… Just a bit of a rant really…
Recently, both Rocky Lhotka and Ted Neward have said plenty of interesting things about Service Oriented Architecture (SOA). I’m in complete agreement, SOA is a “good thing” and yet since it’s such an expensive option, in terms of complexity, performance and (potentially) cash, you need to make sure that you know where not to use it.
Sorry about the comment spam whilst I was away. I’ve now installed MT-Blacklist, so hopefully the only offensive rubbish and stupid sales-pitches on this site will be my own…
MT-Blacklist seems pretty good; it cleaned up the mass of spam with one click but then unfortunately failed to block a new piece of crap that was posted this afternoon. Having added one of the offending urls to the blacklist I ran the cleanup again and it removed the offensive comment and automagically added the other urls that the comment contained to the list…
Just got back from a week’s spring skiing in Megève. This is probably our last trip of the 03/04 season :(
We had a great time; skied on amazingly empty slopes; ate at a selection of wonderful restaurants and had some great guiding and ski lessons with Lucy Withall of the ESF (a great ambassador for the region, and all-round super woman ;) ).
Just holiday snaps….
Mont Blanc from Rochebrune Megève is conveniently located about an hour’s drive from Geneva and within striking distance of Chamonix, Les Contamines, Morzine, etc… We had expected to have to hire a car and head off to the surrounding resorts due to lack of skiing at Megève but there was plenty of fun to be had on the local slopes and we never found a need to leave them.
As Gavin pointed out in a comment yesterday, if you type “cure for rsi” into Google right now my hair-brained babblings about how drinking lots of water helps is top of the pile… If only I could do that with technical posts that would bring in work ;)
Today I’m doing some work for a client that involves writing some blocking sockets code to talk to one of our servers. Blocking mode fits well with the architecture of the client application they use; we’re moving the app from blocking reads on a serial port to blocking reads on a socket and jiggling the protocol it uses a bit.
Testing blocking calls is actually a bit harder than testing non blocking calls because hand cranking the mock objects so that your object under test works correctly is harder to do when your test harness is blocked in a call to read() and wont come back to you until the call times out (and the operation that you’re trying to test fails) or the read completes…
A while back I finally started on the async version of the POP3 client. It ended up as a state machine and seemed to work well. The next step was to write an async version of the mail collector that I used to pull all mail from a mailbox on a server and optionally delete it.
The synchronous version of the mail collector is a fairly simple thing. You pass it the mailbox and server details and it decides how to log in; it uses APOP if the server supports it and USER/PASS if it doesn’t.