wordpress

Yet Another Theme Update

YATU (Yet Another Theme Update)…

In two previous posts, I mentioned that with my new XAMPP setup, I could and would be tinkering around with WordPress themes a bit more. At the same time, I switched to the Aspire theme, which I liked (functionally), but wasn’t thrilled about in terms of color contrast.

For the past week or so, I’ve been playing with a variety of themes. Conceptually, I liked a theme template called Sandbox (it’s also linked in the footer on every page now). Basically, a theme template is one that can be used as a standalone theme, or other themes can point to it as a base template, and customize it via css in a separate theme directory.

Sandbox held a competition for theme designers to build their own themes on top of the Sandbox template. You can see on that page that the designs varied greatly (showing the strength of good semantic markup, coupled with good knowledge of css layout).

Of the designs shown on that page, SandPress was closest to the style that I am currently fond of (three column, two right sidebars). I downloaded it and started to tweak. I also downloaded a few free css editors, including a couple of more complete editors (HTML/CSS/Preview, etc.). None made me particularly happy, but they all worked.

I then received an email announcement from ActiveState announcing the open source release of Komodo Edit 4.3. ActiveState was a portfolio company of mine from 2000-2003. We sold it to Sophos, which later spun the tools part back out into a standalone company called ActiveState again.

Even though they developed Komodo IDE while they were a portfolio company of Opticality, I never possessed a copy nor even saw a demo. It was an ancillary business to the anti-Spam part of ActiveState at the time. Now that the editor portion (not the entire IDE) was open source, I decided to download it.

Bingo! It was the more interesting of the tools (for the way my brain works) and I was able to accelerate my tweaking of the SandPress theme.

There was nothing wrong with SandPress out of the box, and I could have lived with it, reasonably happily. My tweaking was motivated by two things: wanting to get my hands a little dirtier with the theme process (specifically css in this case) and wanting to slightly simplify the theme (less graphics, less whitespace, etc.).

I accomplished my goals (to my taste, but probably not to others). This theme (of course, if you’re reading this more than a week after I wrote it, perhaps I will have changed again) is the result of a tweaked SandPress/Sandbox theme. ;-)

It may last a while, it may last a day, I’m really not sure. I like it, but I haven’t exactly lived with it for any amount of time either. There is a new theme that is in alpha now (so I have not had access to it), called Vanilla, which is also based on Sandbox, but combines Sandbox with the Yahoo User Interface (YUI) library. I’m intrigued by the concept of making all of this more standards and reusable oriented, so I will likely check it out when it’s finally ready for general distribution.

Now that I feel a tad more comfortable with the theme process, I may tweak a bit more, but it probably won’t be things that will be worth blogging about directly.

Here are a few final observations/questions. If you’re a theme expert, please leave a comment so that I can learn from you!

I wanted to change the footer.php to add a link to SandPress and to add a copyright. I had to change the footer.php in the Sandbox directory, rather than to my tweaked SandPress directory. On the one hand, it seems to make sense, since Sandbox is the template, and a copyright statement might apply to all themes based on Sandbox (on my site).

On the other hand, the link to SandPress doesn’t seem to belong in the Sandbox directory at all! If I switched to another Sandbox-based theme, it should be able to easily point to that site. It would seem that a theme template should allow the easy over-ride of specific php files, and not just css. Perhaps I’m missing something. I certainly didn’t dig at all…

Lastly, I can’t decide whether I should switch the main blog page (the index.php equivalent) to be article summaries with read more links. Given the length of my posts, the front page is a honking big one. Not many people come to visit that page directly so I’m not sure it matters. If anyone has a strong opinion, with an argument to support it, please leave me a comment. My gut is now telling me to switch to a condensed front page, but I just don’t know if that makes sense or not…

Firefox DOM Inspector

Yesterday, I raved about XAMPP in this post. In there, I made the following statement:

The other major thing that I don’t like (but which I suspect is easily fixable with a CSS tweak) is that the Sociable plugin formats the icons in a list (one per line) rather than as an inline string of icons, which other themes are doing correctly…

So, today I spent quite a bit of time playing. I enjoyed it, and it was instructive as well. I was able to easily change a bunch of things that I didn’t like about my previous theme. That said, I really like a lot of the Aspire (current) theme, other than the dark image background (which I can live with) and the note above about the sociable list not being inlined.

I decided to experiment in my new sandbox with the Aspire theme. I couldn’t find an easy way to see what css was controlling what element. A quick search said that the built-in DOM Inspector in Firefox could help resolve this. It wasn’t in my Tools menu. It turns out it isn’t installed by default on Windows. I reinstalled Firefox, selected custom, and voila, I had the DOM Inspector.

Once I inspected a page, it became obvious what the problem was. The Aspire theme defines an ID main. Then, in addition to default definitions of ul and il (unordered list, and list element), it also defines #main ul and #main il (specifically, an unordered list which appears in the main block, and the same for a list element in the main block).

The DOM Inspector showed me that the sociable.css was correctly being loaded, but that the way more specific #main selector was being applied after the sociable.css was parsed. As annoying as it is/was, there’s some logic to it. If a node can be defined ultra-specifically, and there is a css definition associated with that, then perhaps, you really want that to apply.

Unfortunately, the specific definition had display: block instead of the desired display: inline.

I’ll spare you the stupid gymnastics I performed, trying to over-ride that behavior. Suffice it to say that along the way, I tried doing something like this:

#main.sociable ul

ul#main.sociable

among other utterly useless attempts to get even more specific.

I broke down and sent a message to the current maintainer of the sociable plugin. Then, two minutes after sending him the message, while browsing formal docs for css, I stumbled on something.

In some of the attributes in the sociable.css file, he added !important to the end of the definition, in others, he didn’t. In the docs, I saw that normally, !important is used to signal to the browser that this particular attribute is important, and should be respected over a defaulted value. It’s primary use is to allow users to have stylesheets which over-ride authors stylesheets.

So, I thought, let’s experiment and add !important to the few attributes that weren’t already tagged as such (specifically, the display: inline one!). Voila! Now, even though the browser sees that #main ul comes after .sociable ul, it also knows that .sociable ul said that display: inline was !important, so it retains it!

There may be a better way to solve this problem (after all, this required me to edit the author’s version of sociable.css, which would get wiped out the next time I upgrade the plugin), but, without my sandbox (courtesy of XAMPP), I wouldn’t have found this one. In addition to XAMPP, I now also need to thank the Firefox DOM Inspector. :-)

Updated Theme and XAMPP

For a while now, I’ve been both relatively happy with my theme, as well as marginally frustrated by it. I don’t need to bore you with exactly what I didn’t like, so I’ll bore you instead with what I’ve done about it. ;-)

I have never bothered in the past to dig too deeply into the inner-workings of WordPress. Also, while I understand CSS, and have played with it a while ago, I certainly haven’t looked at anything relating to how themes interact with CSS. Before you call me an idiot, I realize that the themes define selectors, and that the style.css file in the theme applies the style, but what I don’t know (because I haven’t bothered to look!) is how defined the selector names are by WordPress, or whether every theme designer just does whatever they want.

Anyway, every once in a while, I download a new theme that looks like it might meet my needs a little better. I use a plugin called User Level Themes by Double Black Design. It’s very cool. I then set the Admin User only, to see the new theme that I downloaded. I can now test the new theme, on the live site, without affecting how the normal (anonymous) reader sees the site. If I like it, I can change the theme for the anonymous user as well.

So far so good, and I’ve been pleased enough with that level of testing. Even so, I haven’t switched my theme for months (well, not totally true, as I updated to a tweaked version that another user modified from the original author of my theme). One of the reasons is that when I see a new theme that has elements that I prefer, there’s usually at least one element that I can’t stand, so switching seems silly.

The straw that broke the camel’s back for me the other day was that I downloaded a theme that hard-coded some tag cloud layout. That meant that since I am using the Simple Tags plugin by Amaury Balmer, which uses it’s own tag cloud widget, I was getting two tag clouds. It made me realize that to really test these things, I might have to make changes that would affect the anonymous user (like redefining the sidebar widgets) even though the theme didn’t change.

Ugh…

I realized that to get what I want, I will likely need to dive in a bit, and tweak the theme that comes closest to what I want. That might involve some PHP (which I can read, but have never written), some understanding of WordPress, but really hopefully not much more than CSS tweaks.

To do that properly, I really wanted a segregated playground, where I could make changes willy nilly, even breaking the site completely (I’m very much a trial and error kind of guy). That led me down a long path of thinking about the easiest ways to set that up, in a manner where I could easily tear it down and start again, etc.

That led to thoughts of a cheap hosting provider with something like cPanel, where I could just reload the environment if I wanted. Then I thought of putting up a server at home for this, and running VMWare or Xen, etc., to be able to reload an environment quickly. Then I thought of just using the VMWare Player on my laptop.

Finally, while searching for the lightest weight Linux server distro that would support that (in order to tax my laptop the least), I accidentally stumbled across XAMPP. It comes in multiple flavors, including Windows. Then I noticed that they also had a lite version, which was all I needed. Apache (recent release), MySQL (relatively recent) and PHP (recent release).

I chose the ultra-small 7-zip auto-extractor version (18MB download). It doesn’t touch the Windows Registry at all. When you’re done playing, you can just blow away the directory structure, and you’re done. They give you a controlling application (not needed, but a nice touch), to start and stop individual components. You can do it all on the command line as well, or you can set them to be true Windows Services and they will auto start with the machine.

I tar’ed up my WordPress directory, dumped my MySQL database, copied them over to the laptop, and everything almost worked on the first shot! The only problem (the manifestation was large, but the solution was trivial) was that my blog URL stored as an option in the database pointed back to opticality.com. So, when I tried to log in to the admin UI, it redirected me to the real site, which was not what I wanted.

I updated that option in the local MySQL database, and it all started working. All of my posts were here locally, and my plugins were working too. Extremely cool!

I quickly realized that I should deactivate a number of SEO oriented plugins (e.g., Google Analytics, WordPress Blog Stats, etc.).

Now I had a playground. Based upon just a few minutes, I made some decisions (which should be obvious on the live blog at the moment). Until I decide to make any changes to a theme myself, I have done the following:

  1. Changed the theme to Aspire (credits are in the footer)
  2. Removed the Advanced Search Lite plugin
  3. Added a POLL to get feedback on the theme change

I like the way Aspire lays out the post better than my last theme. I don’t like that it’s hard to read unless I keep my monitor on a bright setting (I typically lower the brightness of my monitor way down). Unfortunately, the background (which is darker) is controlled by an image, not a CSS selector, so this is one of things I don’t like about this theme. The other major thing that I don’t like (but which I suspect is easily fixable with a CSS tweak) is that the Sociable plugin formats the icons in a list (one per line) rather than as an inline string of icons, which other themes are doing correctly…

I actually like all of the choices that the Advanced Search Lite plugin provided. That said, there are a number of reasons why I removed it.

  1. It took up a lot of screen real-estate
  2. I doubt it was used much
  3. If it was used, I doubt people selected options
  4. Now that my comments are on Disqus, that feature wasn’t as interesting

Feel free to vote on the Poll. In addition, please feel free to comment here, in particular if you have had the same kind of tweaking needs/desires that I have, and have a solution/theme that you really like as a result!

To summarize, all I’ve done for now is switch the theme to Aspire. I haven’t touched it in any way. But, at my convenience, I can now play to my heart’s content on the laptop. For that, I have the folks behind the XAMPP effort to thank, so here goes:

Thanks XAMPP guys!

Theme Updated Again

OK, this is the last announcement of something as silly as a theme change. Since I specifically mentioned which theme I was using in the last post, I didn’t want anyone who visited now to think that they were viewing that theme. I think they did a very nice job, very attractive, but it didn’t work correctly with emoticons, and I prefer the sidebars on the right, etc.

I might not stick with this one long term, but for now, this is the one. ;-)

Sprucing up my WordPress Theme and Plugins a Bit

I’ve been accused in the past (by Jamie) of being a little boring with this site. That’s code for being a luddite, I’m sure. It’s also true. I have been using the default WP theme since I started blogging, and only recently added a few plugins.

Well, tada, that’s all changed now. As of a few minutes ago, I decided to install a new theme. I guess I’d prefer it if this one had the same exact look, but had the two sidebars on the right side. I don’t care enough to peek at the code (yet), and I’m not sure I’ll stick with this theme, or play with some others, etc. At least, for now, I’m not on the default theme any longer.

So, while the full credits for this new theme appear at the footer of each page, let me also credit them in this post. I found the theme on Kate’s Theme Viewer site. The specific theme I downloaded is The Gladiator. The author of the theme is feeldesign/plannetworld.com.

On to plugins. I’m now running a few of them, and even using them. ;-)

I run Akismet, which is included, and is fantastic. That said, two days ago, I installed WP-SpamFree by Scott Allen, aka WebGeek. The aim of this plugin is to stop automated comment spam from bots, not to flag human spam (which Akismet still does extremely well). To underscore the point, WP-SpamFree is meant to stop the spam, not mark it. So, I installed v1.0 and it seemed to work. Then I upgraded to 1.01, and it too seemed to work. However, I don’t get many legitimate comments, so I couldn’t be sure. Now I see he’s upgraded to 1.02 (which I’ve just installed while writing this paragraph), so we’ll see if 1.01 was blocking all comments.

I use simple-tags by Amaury Balmer for tag management.

I use google-sitemap-generator by Arne Brachhold to automatically generate Google Sitemap files.

I use Ultimate Google Analytics by Wilfred van der Deijl. This makes me laugh, because so few people read my blog (or visit the site in general), that tracking their behavior with Google Analytics is really a joke. Still, Google makes it brain-dead easy, and this plugin makes that statement even truer, so, why not? ;-)

I use FeedSmith by FeedBurner (purchased by Google) to track what types of feed readers subscribe to this site. This is as funny as the above, for the same reasons…

Finally, just today, I added a single download which installs two related plugins, called Advanced Search and Advanced Search Lite by Alex Günsche.

OK, that’s it for now. Credit where credit is due. Now that the adventure bug has hit me, I might play a bit more, but I’m at least somewhat pleased with the current iteration. :-)

So, I just previewed this post, and noticed some problems. The new theme has what I consider to be a layout bug. When I end a paragraph with a smiley or wink (an emoticon), because the graphic takes up more space than the new smaller font, it wraps, and the next paragraph starts indented. I don’t like it, and I’ll likely be doing something about it (like choosing a different theme) pretty soon…

I updated three plugins while writing this, as WP 2.3.1 informs you when a newer plugin is available (cool!) and I had to check the plugins page to report on which ones I was using. Unfortunately, the new simple-tags 1.2.2 release appears to have a bug. I want my tag cloud sorted by popularity always, and it’s now displaying randomly on each reload. Bummer…

Welcome WordPress 2.3

The only plugin that I had installed which supposedly wasn’t compatible with 2.3 was Google Sitemaps Generator. There was a newer version available, which was compatible. So, I just took the plunge and upgraded. Smooth as silk.

This is now the first post that has any tags associated with it. :-)

Welcome WordPress 2.2 :-)

Announcement went out 35 minutes ago, and I’ve already successfully upgraded. Haven’t touched anything that’s new, but here it is, waiting to be abused. :-)

New Machine

On April 23rd I announced the christening of my new server. At the time, I put the percentage of services that had been ported over at 95. It’s been at least 5 days since I’ve been at 100%, so the new machine is definitely “official”. Everything has been updated to point to the new machine, and all but one thing are running as expected.

The only problem I have is with one VoIP provider. I can’t get any audio to work between us, and the problem is definitely on my end, which is the main reason for not naming the provider. I can still connect reliably to them from my old server, from a different server that I control, and from a softphone as well, so something is broken on my new server in the config for them. That said, all other providers work, including identically configured ones, so it’s not a firewall problem, nor generically a broken Asterisk install. I’m not happy with this, because I can’t think of anything more to test. I’ve written twice to the Asterisk mailing lists, with no useful suggestions left to try. :-(

I could probably write for hours on the experience of building the new machine. Very few people would maintain interest in that, I’m sure. I also don’t need it for a cathartic release, because I took very copious notes on the whole thing in a Google Notebook.

So, I’ll try to boil the essence down here, with the hope of not losing your interest too quickly. :-)

The purpose of the change was to upgrade the OS from Red Hat 9 to CentOS 5.0. That worked well. I actually installed CentOS 5.0 Beta first, and then did an upgrade through yum, which worked fine!

My first real disappointment was attempting to build OpenPKG on the new box. The concept sounded really cool to me. The biggest reason for moving from RH9 to CentOS5 was that newer RPMs were harder and harder to find for RH9. OpenPKG held out the promise that one wouldn’t have to worry about this in the future, with the added benefit that you would never accidentally step on the operating system’s packages.

Unfortunately, I ended up wasting a ton of time on it, and it eventually failed to install itself, claiming that gcc couldn’t create executables on the system. Of course it could, as I built quite a number of packages from source… So, great concept, just not right for me at this time…

Had a minor glitch with SELinux (first time I’ve been on a system that was running it). Had to temporarily disable some of the checks to get a package installed and running, but was able to turn it back on afterwards, and haven’t had a problem since.

I have been a very happy user of Courier-IMAP for years, and felt guilty about even considering an alternative (just a loyalty thing). But, I’d read a number of nice things about Dovecot, and it just went official 1.0 a few days before, so I decided to try it. I’m really happy with it. It worked correctly the first time, and configuration was as straightforward as I was led to believe. On the other hand, it wasn’t a quick config, because there are so many things that you can (and sometimes should) set. The single config file (which I like!) is huge, because it’s so well documented, that the choices are relatively simple. You just have to read all those darn docs… ;-)

Also installed the latest Postfix 2.4.0. I’ve been really happy with Postfix for years, and had little intention of switching that.

One minor nit about Linux in general. It’s a little annoying that dependencies can get out of whack quite easily. Some system thing depends on openssl-0.9.7 (for example), and you know that 0.9.8e fixes some bugs, and perhaps some new software you’re installing wants that. So, now it needs to go in it’s own directory (’cause you can’t mess with the system one), and then every package has to be told where to find the new one, etc. It all works, but it’s still a PITA.

Installed the latest WordPress (which of course meant MySQL and PHP, etc.). This time, the email config problem that I had on the old machine just disappeared (hooray!). I didn’t config it any differently, so who knows what was wrong before…

Installed the latest Zope (2.10.3, not Zope 3), and had remarkably few problems slurping up my old Data.fs file from a Zope 2.6.x installation. Very cool.

Switched from one webmail client to another, even though I had been happy with the former for years. The latter does more, of which I’m sure I won’t partake of the additional functionality anyway. It works, so that’s all I care about. I rarely use webmail, but when it’s necessary, it’s also ultra convenient (and, as stated, necessary). ;-)

One of the bigger odysseys was the installation of a Jabber server. This should probably be its own post, but if it was, I would never condense it, so I’ll do my best not to go on too much here. On the old machine, I was running jabberd-1.4.3 for years. Jabberd2 was just out at the time that I first installed 1.4.3 (they are not the same project). I was able to get jabberd2 to work at the time, but I could not get the AIM and ICQ transports to work, so I reverted to 1.4.3.

The jabberd14 project is still alive and kicking, and I could have saved a lot of headaches if I had stuck with it. But, for a while, I wanted to try ejabberd. It is the official server of jabber.org since February 2007, which seemed impressive to me. ;-)

Ejabberd is written in Erlang, and is supposed to scale like crazy (not that I have the slightest need for scale). The concept intrigued me. I’ll spare you all of the insane problems I had getting it to work right. Suffice it to say that it was not my fault, which is rare in these situations. ;-)

When I finally got it to work stably, I installed the Python-based AIM and ICQ transports (PyICQ-t and PyAIM-t). The AIM transport worked correctly, and the ICQ one was flaky (solution later on).

Then Rob Page asked me to take a look at Openfire (previously called Wildfire). It sounded cool, and since I was having a problem with the ICQ transport, I figured I’d give it a shot. Man, it installed so easily from RPM, didn’t touch a single file on the system, could be uninstalled trivially, etc. In summary, I liked it instantly. I wasn’t crazy about running a JVM on the system full time, but the load would be negligible, so I decided to switch to it. Of course, while it worked well, and the administration was wonderful, the ICQ plugin was experimental (the AIM one is production), and it behaved like an experimental plugin, which put me where the other one did. There were a few other small annoyances in Openfire as well.

That made me decide to go back and beat my head on the ejabberd server and transports. Long story short, after investigating my setup on the old machine (prompted by Z_God in the Python Transports conference room), I noticed that I didn’t understand how transports speak to the main server. I had them both speaking on the same port (which the sample config file showed!), but on the working server, each transport spoke to the server on its own port! I switched ICQ and AIM to speak to ejabberd on separate ports, and voila, it has been rock solid ever since. I have retired Openfire, and am a very happy ejabberd and python-transports customer! :-)

That’s pretty much it (at least at a high level). I’m happy with the machine. As usual, more twists and turns than one hopes for, but also more learning experiences than I expected, and interesting ones at that, mostly ending in success. Now if I can only figure out that one SIP provider audio problem, I could get back to some serious poker playing. ;-)

Debugging Firefox and WordPress 2.1 UI issues with Firebug – SUCCESS

I’m typing this to provoke the following error:

uncaught exception: Permission denied to call method XMLHttpRequest.open

So far, not provoked, which means that I think I figured out what was killing me ever since I upgraded to WordPress 2.1.

Before I declare victory, let me try to insert a link, which is what I was having the most trouble with before. Yippee!

The part of the post from the above link that made the lightbulb go off in my head was where megatron5151 points out that links with “evolvefuel.com/blog” were different than “www.evolvefuel.com/blog” for purposes of the browser thinking that there was a cross-scripting domain issue.

I realized that I was redirecting all URLs with either wp-admin or wp-login in them to require https. That made the base URL of the site different than the administrative part of the site (only due to my redirection, not because of anything that WordPress was aware of!), and so the new AJAX niceties that were introduced in WordPress 2.1 were being turned off by Firefox (correctly!), like autosave, etc.

The simple solution (and I’m not sure whether I have compromised security here or not, so if anyone is indeed reading this, which I doubt, and you know the answer, please let me know!), is that I made only the wp-login redirect to https, and once logged in (presumably avoiding my password being transferred in the clear over the wire), I revert back to plain old http. If the rest of the authentication is done via cookies, or sessions ids, I guess/hope that I’m fine from a security point of view. If not, then I guess that Firefox will be continually sending my password in the clear in the background (unbeknownst to me), in which case I need a better long-term solution than this.

In the meantime, I am immensely relieved to have put this headache behind me. Further, it turned out to be an interesting first use of Firebug, which is clearly awesome :-)

P.S. I am very happy to have been able to link to Firebug as a result of it helping me to track down this problem ;-)

Why does most technology feel “random” so often?

I’ve been involved professionally with technology since 1980. So, you’d think that I understand it (and how it works) reasonably well by now. On some levels, sure, but on others, I feel as helpless as the proverbial mother-in-law or grandparent in the “clueless users” examples people always give…

Conceptually, I understand how “small tweaks” can lead to large unexpected results. It’s a variation on chaos theory. Practically, it’s still annoying. What is harder (for non-techies) to understand is when things break down after no changes (that they are aware of!). Of course, it’s the parenthentical comment that is the clue.

With modern operating systems, the vast majority of users have some form of automatic updates turned on. That being the case, things are chaging frequently, and possibly in very significant ways. It just so happens that the user doesn’t associate different behavior in their favorite applications with an invisble update.

The above was just generic whining to get to one or two rants that have been bugging the hell out of me lately…

The first topic is spam filtering. For many reasons (most of them rational ;-) ), I am Windows user (specifically, WinXP Pro, but that’s not important). I don’t think it’s superior, etc., but many applications that I find convenient (and in some rare cases even necessary) are always available first on Windows, and often only on Windows… C’est la vie…

So, being a comitted Windows person (no, the irony of that statement doesn’t escape me ;-) ), for many years, I was a tried and true Outlook user. In fact, I started with Outlook 97, moved to 98, then 2000, and then 2003 (no, I didn’t have the pleasure of Outlook XP).

In the early years, there was no need for spam filtering. Not only was the volume of spam low, my Internet activities were reasonably limited, so I wasn’t on many spam lists anyway. Of course, being a VC now, and having my name on many public sites, along with being subscribed to many mailing lists (public as well as publically available internal company lists), has changed that fact melodramatically.

On some days, I get well over 1000 spam messages (through the variety of means that email can wind up in my real account). Clearly, that isn’t a sustainable number of mails to have to delete by hand (even though I am ultra fast at spotting spam and hitting the Junk key).

So, a few years ago, I installed the free SpamBayes plug-in for Outlook. (This now requires a minor side-rant) :-(

<Side Rant>

Ever since I upgraded to WordPress 2.1, I can’t create any links with their “visual” tab. I wanted to link to the SpamBayes project page above, and got a blank pop-up box where the form is supposed to be. Firebug shows errors with TinyMCE, and before that, an error with an XHTPPRequest, so it’s likely Firefox config that’s causing the problem, but I have no idea whatsoever what else to try (obviously, I’ve tried a lot of things…)

</Side Rant>

So, I ran SpamBayes for a long while, and also ran a commercial derivative of it, InBoxer (should have had a link to that as well…)

It did a pretty good job. Still, it wasn’t all that satisfying, because every message needed to be downloaded to my laptop, before SpamBayes (SB) could analyze it. That meant that on a heavy spam day, if I was on a slow link (let’s say dial-up, gulp), I had to wait for all of the spam to come down to find the few gems that I was breathlessly waiting to read.

So, after doing that for quite a while, and building up a large SB db, I decided to get creative. I installed SB on the server as well (I control my own server), and regularly uploaded my local (meaning laptop) SB db to the server. Then I added a procmail rule that filtered each message using the locally trained db (but now up on the server), and then did one of three things with the result:

  1. If it was marked as “ham” (definitely not spam), it was just passed through normally.
  2. If it was marked as “unsure” (the range is user-definable), then it was moved to another account on the server, so that it didn’t auto-download on each email check (this solved the problem of slow links with lots of possible spam)
  3. If it was marked as “spam”, it was deleted right then and there on the server.

This worked very nicely for quite a while as well.

Then, I woke up, and decided to break myself of the Outlook Addiction. I’m still firmly in the Windows world, and have been ever since I decided to stop using Outlook for email (over 2 years ago now!). Even though I own a legal copy of Office 2003, I now only use Outlook for Calendar, Tasks and Notes, and that only because it syncs reliably with my Treo 700p.

I switched to Thunderbird, and have never regretted doing that. I’ll save any niggling complaints about Thunderbird for some future post when I am really bored, since for the most part, I am extremely happy with TB.

Now, the first part of the problem. TB has built-in Junk filters, which work OK (but not that great), but that puts me back to having to download everything to have it analyzed. The second part of the problem is that I can continue to use the old (static) SB db on the server to help cut down on spam, but the real beauty of SB is the B (Bayes), which continually learns. Since spammers constantly change their strategies to stay ahead of the anti-spam companies, having an outdated SB db degrades its usefulness over time.

Wow, I can’t believe how much background I just gave in order to get to the actual point…

Recently, emails that were previously being marked as “ham”, or “unsure”, were getting tagged as guaranteed “spam”, meaning SB was assigning them a spam score of 1.0! Of course, my server-side filter was dutifully tossing them to /dev/null as instructed, and I was blissfully unaware of that.

I discovered that when another phenomenon began. Any emails with large attachments were going directly to /dev/null. Since most of my procmail rules are also duplicated for Lois, she was complaining before I noticed, that people were writing tons of “follow up” emails to her, wondering why she hadn’t responded to their last email. Those follow up emails were getting through, because they didn’t have attachments. I am still not sure that this was because of the old SB db, but at least that caused me to find the other emails that were definitely being miscategorized…

In any event, I turned off the SB db, and the flood of spam started up again. About a month ago, I turned off SpamAssasin on the server side, because while it was somewhat effective, it was also one of the biggest resource hogs I had ever seen on the server, and the “reward” wasn’t worth it…

So, now, I’m spending a little too much time hand-tuning procmail rules to get the spam back down to a mangeable range. So far, so good, but with lots more effort than I would have hoped to expend, given the nice steady state I had for a reasonably long time.

Anyway, this post has turned out way longer than I expected, so I will save the other “random” events for some future post, when they bubble to the top of my frustration queue.

P.S. I am still not sure I’ve “solved” the large attachment problem. My temporary solution was to specifically whitelist those senders in procmail, which works, but begs the issue of whether others are being thrown away that I’ll never find out about, or find out about too late :-(