Tuesday, February 15, 2005

I'll take care of squirting, you do the bouncing!

The subject line is an actual quote from the new Pooh movie, and really made me chuckle. Valentine's Day consisted of Osaka's, the Pooh movie, driving around a bit, and having fun. I enjoyed myself.


Today is shaping up to be stressful. A client's database server had a drive go out, but not so thoroughly that Windows doesn't sit there trying to rebuild the mirror set. All data appears to be intact, but getting them up and running quickly is proving to be a chore (partly because I'm not doing it - so committee mode seems to have set in, I hate that).


I'm tired. :-(
Mood: tired
Music: None

Thursday, February 10, 2005

I'm famous!

Well, not really, but I have gained a bit more of a profile than I'm used to. I release Persist.NET on Sourceforge (here), and announced it on Freshmeat - and suddenly I have hundreds of visitors (over 900 by 1pm) to Persist's pages on C# Ninja, including people from BMW, a hit from Microsoft, and connections from literally all over the world. Pretty cool!
Mood: accomplished
Music: Nirvana - The Man Who Sold The World

Tuesday, February 8, 2005

Spam Wars

Today is one of those days in which I'm at war with the world's spammers. A few of our clients started whining that the amount of spam getting through had increased noticeably (in one case it went from 0 to 1, and that merited a whine!), so I figured it was time to update our armour, as it were.


The first step was to update SpamAssasin on both our mailservers. On Sulu (FreeBSD 5.3), this was really easy - we were already running 3.0, so updating to 3.1 was a simple matter of "portupgrade p5-Mail-SpamAssassin" and waiting. Bing, it worked. There are some new heuristics in the latest version, and it gained a bit more accuracy almost immediately. Our backup system was still running SpamAssassin 2.6 (Charizard runs FreeBSD 4.11), and hadn't been updated because of Perl version issues. So, I set out to fix it. Upgrading to Perl 5.8 was painless and fast, but really underlined why moving Perl out of the base distribution was such a good idea in 5.x. Portupgrade then barfed on some dependencies (the package database has been running for years now, and needed some love) but "pkgdb -u" and a manual "make reinstall FORCE_PKG_OVERWRITE=1" of p5-Net-DNS fixed that in no time - and portupgrade did its magic. Adding in SPF took another 2 minutes. And bingo - two updated servers running well.


Detection rates have gone right up, and false positive rates seem to have gone down. SPF (Sender Policy Framework) is helping a lot more than I thought it would.


Finally, I made sure that all our inbound mail servers are performing RBL checks and denying known-spammers. Good thing I checked, I'd missed one when I set it up. The result? A significant drop in spam. :-)


I'm seriously considering switching all inbound SMTP (not from relayed clients, just MX records) to a separate mail installation running Sendmail with ClamAV, SpamAssassin, SPF and RBL milters (and possibly greylisting) - and bouncing anything that IS a virus or has high spam scores at source, rather than inline. That would greatly reduce the number of double bounces in our queues, but would risk legitimate mail being bounced. I'd only block very high (10+) SpamAssasin scores (everything else would be flagged by our normal systems), but I worry about false positives. Hmmm.
Mood: tired
Music: Dio - Along Comes A Spider

Monday, February 7, 2005

Fun with stats

I have an AWStats page showing visits to this site, and I have to wonder - why on Earth did a Google search for "one by one, the penguins steal my sack" find me?????
Mood: tired
Music: None

Friday, February 4, 2005

CSharpNinja.com

I just updated C# Ninja with a tutorial on URL rewriting, and updated the "C# for Beginners" articles. The site has an improved template and Google adverts, too!
Mood: accomplished
Music: Bowie - Ziggy Stardust

Thursday, February 3, 2005

Enterprise

So, it's official. Star Trek: Enterprise is cancelled. Enterprise got off to a rocky start, but was just developing into a really cool show - so I'm bummed. Bakula is out of work again!
Mood: sad
Music:

Wednesday, February 2, 2005

Update time

I've not updated in a while, because I've not really felt like it. I've been incredibly busy, kinda broke, and in a snow coma.


My generally busy state is a result of the annual zero1tek/TSG financial crunch in January (tax time, and many of our clients roll over their financial year - so we have to work extra hard to get ANY money in), and a new project. The new project is 99% finalized now, so I can talk about it. I'm a 50% partner in Thoth Data Systems, LLC, a software development company specializing in n-tier line-of-business apps. Our first clients are in the mental health industry (Horizons), but the system is flexible enough that it could apply to almost any client document tracking and billing system. I've been doing a lot of the back-end programming in my own time, so as to minimize what we have to pay once the company is final, and minimize time-to-product for our clients. Currently, I have a system that:


  • Runs under Linux (with Mono) on the server, using MaxDB (formerly SAPDB) for the database.
  • Uses my Persist.NET (which may have to change name, someone released a product with that name before I could get mine out) library for abstract database access, straight into business objects. One-To-One, One-To-Many, Many-To-Many, Hashtable/Dictionary/SortedList collections, optimistic locking, and thread safety are all working properly now. It'll be on Sourceforge and CSharpNinja.com as LGPL, very soon.
  • A remoting sink system provides transparent syncrhronous Rijaendel (spelling?) encryption between client and server with rotating keys, and asynchronous encrypted key exchange.
  • A generic "Business Process Objects" system lets us write modules for a generic server that can be loaded, unloaded and replaced in realtime without stopping clients - and without changing client code.
  • A generic scheduling system lets business processes run on a schedule at the server if required, rather than at a client's request.
  • A two-part validation engine that performs strict validation at the server, and loose validation at the client before saving anything. Basic validation rules are stored in an XML file, generated from Persist's configuration.
  • A generic GUI system that loads/displays components based upon a client's access rights.
  • (Incomplete) a LaTeX-based reporting system that spits out clean PDF files.

So, as you can see, I've been really busy! I'm working with Steve (partner in Thoth) to see about open sourcing as much of our base technologies as possible, and documenting what I've created in howto-guides on csharpninja.com. We don't have any huge secrets here (we mainly sell expertise customizing software, implementing specific processes, and consulting), so we're an ideal candidate for an open-source friendly company.


Snow coma is my term for what happens when it snows: I sleep.


I picked up Knights of the Old Republic for $20. I'm about 8 hours into it, and so far - it's the best RPG I've played since Deus Ex. Very well executed (even if it is Baldur's Gate in Space), engagingly written - I like it. I've also been playing Temple of Elemental Evil - I think I run it better, but it's a lot of fun. With the latest patchset, it's even stable!
Mood: happy
Music: None