Category Archives: Technology

Drupal Doesn’t Stop Spam

I run Drupal for this site, as well as some others hosted here. My complaint about it is that the spam solutions in Drupal are ineffective and poorly-designed. The situation seems to have actually gotten a bit worse in the most recent versions of Drupal. Here are my complaints:

  • No working support for captchas. (I had lots of problems with captcha.module)
  • Spam filter is not very effective, despite being properly trained on huge volumes of spam. I get dozens, if not hundreds, of uncaught spam comments per day.
  • The “mark as spam” button has no effect on some very large spams.
  • There is no feedback to users whose comments have been marked as spam, indicating to them that the comment will be manually approved.
  • There is no auto-expiry of spam comments; they sit in the database forever unless manual action is taken.
  • Deleting spam comments — which seems to be the way that people are encouraged to use the spam module — requires: checking one checkbox per message, then selecting “delete”, and repeating this for each page of the spam comment listings (it only puts a few dozen per page; I get about 15 pages worth in a slow day.) Even with some Mozilla toolbar help, this is a slow and cumbersome process.
  • No “auto-delete” feature for spams referencing certain URLs.
  • Poor recognition of &-sequences in HTML
  • Nobody really maintains the spam filter
  • Does nothing at all to stop trackback spam

So, my question is: what blogging software has good anti-spam capabilities?

Back when I used WordPress, I used the Captcha module for it, which worked well. (Its normal anti-spam capabilities didn’t.) Drupal doesn’t have a working Captcha module, and everything else is hugely labor-intensive.

Is there something better out there for Drupal anywhere?

I often get the impression that the authors of the spam module in Drupal get less than a dozen spams per day on their blogs. It simply doesn’t scale to places that get hundreds of spams per day.

(Update: Drupal also isn’t very responsive at addressing bugs…)

Linux, Bluetooth and Mobile Phones

I got my first Bluetooth-enabled mobile phone this week, a Motorola v551. I’ve been playing with the Linux utilities for working with mobile phones and have assembled some links. Most of the pages out there seem focused on SMS features of a mobile, or using a mobile phone for Internet access for a Linux box. I’m interested in neither, and care more about phone book syncing and transferring files back and forth between the phone itself and a PC.

There seems to be quite a community built around hacking Motorola phones as well. The Hofo Guide is the authoritative resource.

HowardForums.Com is also a great site.

Albatron *Really* Sucks

So I have some complaints about the lack of support from Albatron. Here’s a fun little e-mail from them:

From: RMA Support <tan@albatronusa.com>
Date: Fri, 24 Jun 2005 17:30:52 -0700
To: John Goerzen <jgoerzen@complete.org>
Subject: RE: Status?

Dear Customer,

Thank you for contacting AlbatronUSA/Monivision Support.

At the moment, we do not have any record of the invoice. Please resubmit
with your name.
[snip]

Reaaaallly…. Let me just check my /var/log/exim4 directory…

2005-06-20 22:31:17 1DkZTh-0006Nv-JB => rma@albatronusa.com R=dnslookup 
T=remote_smtp S=21076 H=mail.albatronusa.com [66.15.159.40] C="250 2.6.0 
<20050621033048.GA8520@fritz.complete.org> Queued mail for delivery" 
QT=8s DT=1s

Ahh yes, thought so. Sent to you 4 days ago, even. 21K. Gee, perhaps it INCLUDES A PDF OF MY INVOICE, COMPLETE WITH MY FULL NAME ON IT AND IN THE HEADERS?

So here’s my dilemma. My system has one free slot. I popped a spare Ethernet card in it to restore network connectivity to my MythTV box (the problem that started all of this is that the on-board Ethernet on this Albatron motherboard went dead.) To do that, though, I had to remove the little plate that provides the S/PDIF optical audio output. I’m not using it yet, but had hoped to.

So…. do I risk sending my motherboard to a company who, in all likelihood, will lose it once it arrives (or take months to return it to me), or just deal with not being able to get audio output? (The new Stargate season starts in a few weeks, and I don’t want to miss it!)

Right now, I’m leaning towards giving up on the digital audio output and just telling anybody that reads this blog about how ALBATRON SUCKS.

There were a lot of helpful suggestions regarding their slogan “Spirit of the albatross” I mentioned in my last post. I suggested they should be “spirit of the weasel.” Some others pointed out how “Spirit of the albatross” was strangely appropriate. Here, Albatron, are some more suggestions for you:

  • “Spirit of Richard Nixon”
  • “Spirit of Digestive Biproducts”
  • “Spirit of Windows ME”
  • “Spirit of That Guy Selling Fake Rolexes In The Alley”
  • “Spirit of Blog Spammers”
  • “Spirit of Outlook”
  • “Spirit of Online Poker Sites”
  • “Spirit of Spyware”
  • “Spirit of That Crappy Paperclip In MS Office”
  • “Spirit of Microsoft Exchange”

(Yeah, that last one was really hitting below the belt, but they deserve it…)

Why I Love Haskell In One Simple Example

I recently implemented some new Haskell numeric types that, instead of performing calculations, can generate a rendering of the requested calculation or store units with it.

Here you see a transcript of my session with a Haskell interpreter. The mathematical statements I am entering after the “>” are standard Haskell expressions, and, as I demonstrate, normally evaluate to a single result.

Once I get a more powerful simplifier, I will probably write a LaTeX exporting function as well.

The entire implementation of this, BTW, is less than 200 lines.

NumTest> 5 + 1 * 3
8
NumTest> prettyShow $ 5 + 1 * 3
"5+(1*3)"
NumTest> rpnShow $ 5 + 1 * 3
"5 1 3 * +"
NumTest> prettyShow $ 5 + 1 * 3
"5+(1*3)"
NumTest> prettyShow $ simplify $ 5 + 1 * 3
"5+3"
NumTest> prettyShow $ 5 * (Symbol "x") + 3
"(5*x)+3"
NumTest> 5 / 2
2.5
NumTest> (units 5 "m") / (units 2 "s")
2.5_m/s
NumTest> (units 5 "m") / 2
2.5_m
NumTest> 10 * (units 5 "m") / (units 2 "s")
25.0_m/s
NumTest> sin (pi/2)
1.0
NumTest> sin (units (pi/2) "rad")
1.0_1.0
NumTest> sin (units 90 "deg")
1.0_1.0
NumTest> (units 50 "m") * sin (units 90 "deg")
50.0_m
NumTest> ((units 50 "m") * sin (units 90 "deg")) :: Units (SymbolicManip Double)
50.0*sin(((2.0*pi)*90.0)/360.0)_m
NumTest> rpnShow $ dropUnits $ ((units 50 "m") * sin (units 90 "deg"))
"50.0 2.0 pi * 90.0 * 360.0 / sin *"
NumTest> (units (Symbol "x") "m") * sin (units 90 "deg")
x*sin(((2.0*pi)*90.0)/360.0)_m

Also, I defined this in my source file:

test :: forall a. (Num a) => a
test = 2 * 5 + 3

Now, it can be used:

NumTest> test
13
NumTest> rpnShow test
"2 5 * 3 +"
NumTest> prettyShow test
"(2*5)+3"
NumTest> test + 5
18
NumTest> prettyShow (test + 5)
"((2*5)+3)+5"
NumTest> rpnShow $ test + 5
"2 5 * 3 + 5 +"

You can grab the very early experimental code with darcs get http://darcs.complete.org/num.

Haskell has no built-in support for numeric types with units, arbitrary symbols carried through computations, etc. But it was trivial to add it. This kind of extensibility is a key part of why Haskell is so amazing.

Don’t Buy Albatron

My MythTV box has an Albatron KM18GPro motherboard in it. Last week, the Ethernet port on it went dead. I can plug in a known good cable, and don’t even get LED activity on the port. Plug the same cable into any number of other machines, and it works fine. (This is repeatable across different cables and switches, too.)

So I submitted an online RMA request to Albatron. Despite their claim of “instant confirmation” when an e-mail address is supplied, after submitting the form, it says to call them if there’s no response after 48 hours. I also submitted the proof of purchase as they requested.

Since there wasn’t, I called them and got a voice mail box. Left a voice mail. It was never returned. I also e-mailed their RMA team. No response. I’m sure this has nothing to do with the fact that my warranty expires in a few weeks.

It’s now been days since I first contacted them. This is absolutely the worst hardware support I’ve ever received from any vendor — taking days to even *respond* to a problem. I recently had a problem crop up with my Sipura SPA-841 phone, and got a replacement on its way to me within 12 hours. That’s right, a *phone* got better service than this motherboard.

I’ll never buy from Albatron again.

Their site says “Capturing the spirit of the albatross.” I think they got it wrong. It should be “capturing the spirit of the weasel.”

Brightness

I discovered by accident today that the scroll switch on the top of the unit will adjust the screen brightness in X. It doesn’t seem to work in the console, and I’ve done nothing to tell X about it, but it works. Woohoo.

Combined with that and laptop-mode and powernowd, I think I’m going to get 3 to 3.5 hours of battery life on this thing.

Unsolved Tablet Mysteries

Things I’m not sure how to do yet:

  1. Adjust the brightness of the tc1100 screen in Linux
  2. Display xvkbd (or another on-screen keyboard) when the display has been locked via xscreensaver or KDE’s screensaver
  3. Make sure the ACPI thermal settings are correct
  4. Find a journaling filesystem that behaves well with laptops

About the ACPI settings… it seems like the fan is running more than it ought to, and also that the unit is warmer than it should be at times. Out under (from memory) /proc/acpi/thermal/THRM, I can find the current temperature and also the temperatures at which different things (fans, I guess) are supposed to be turned on. Strange thing is, that file that shows the temperature zones shows different temperature zones at different times. Also, the /proc/acpi/fan area never says that any fan is on, even when I can hear them.

Odd.

On the filesystem front — back when ext2 was about as good as it got, I used to tweak the kernel cache flushing code so that writes would only be flushed to disk every 30 minutes or so. My laptop was plenty reliable, and it would always do a sync before I’d close the lid anyway, so that saved on the disk usage. But these days, I’m not so sure how to do that, with either ext3 or reiser4. Any suggestions?