While posting the first article in the redesign series I realised I was in the middle of a spam attack. I got quite a few spam comments on my own blog, and more than a few on both Claires and Captain Ds blogs.
I spent quite a while last night deleting them from my main blog, and most of this morning deleting them from my supporting blogs (like my link blog) and from all the other blogs I host for my friends from this install. Inconveniences like these will make you understand that spammers are, to put it mildly, scum.
While I was deleting them from my blog, I grabbed the IP address of each spammer, so that I could block them with a .htaccess file. I found that there was a low ratio of comments to IP addresses. These things were coming from everywhere.
I implemented the Comment Spam Quick Fix from over at Burningbird, but I thought it could be improved.
I've renamed mt-comments.cgi to zombocom.cgi, and updated my templates accordingly. Anything that hits mt-comments.cgi automatically gets their IP added to the blacklist. This is the first honey trap.
The second honey trap is in the new comments script. Anything that fails the Comment Spam Quick Fix test also gets added to the black list.
I don't have a clue if this will work with version 3 of MovableType, but I suspect it won't. All I'm certain of is that it works with my copy of MovableType 2.661, which is otherwise unhacked. It may be possible to adapt it to MT3. Use this at your own risk.
Put this in a file called “.htaccess”:
Order Allow,DenyAllow from all# Automatically addedDownload this code (1.txt), or download my most recent htaccess file.
You've already renamed the file, now you need to let MovableType know about it. Open up mt.cfg, and replace the line that reads:
# CommentScript mt-comments.pl
With:
CommentScript zombocom.cgi
Save your changes.
Take this code and save it as mt-comments.cgi
#!/usr/bin/perl -wuse strict;# Tasty honeyopen(DENY, ">>.htaccess") or die "Tried to add host (" . $ENV{REMOTE_ADDR} . ") to deny list, but failed to open file\nError: " . $!;flock(DENY, 2); # <-- Lock the fileprint DENY "Deny from " . $ENV{REMOTE_ADDR} . "\n";
close(DENY) or die "Tried to close deny list but failed (Host: " . $ENV{REMOTE_ADDR} . ")\nError: " . $!;Download this code (2.txt).
Update your templates as per the Comment Spam Quick Fix, but instead of their edit of mt-comments.cgi use the following code in the same place in zombocom.cgi:
use CGI qw(:standard);if ($ENV{'REQUEST_METHOD'} eq "POST") { my $data = param('snoop'); unless ($data) { # Tasty honey open(DENY, ">>.htaccess") or die "Tried to add host (" . $ENV{REMOTE_ADDR} . ") to deny list, but failed to open file\nError: " . $!; flock(DENY, 2); # <-- Lock the file print DENY "Deny from " . $ENV{REMOTE_ADDR} . "\n"; close(DENY) or die "Tried to close deny list but failed (Host: " . $ENV{REMOTE_ADDR} . ")\nError: " . $!; die; } }Download this code (3.txt).
Hopefully this is of some use to you. It seems to be working for me... I've already caught a few bots while writing this article. If anyone has any suggestions or bugfixes, please leave a comment.
The first part of the redesign series.
So now, a site must be designed, and work has to be done. But what will this work be? How do we decide how we are going to accomplish our goals?
The very first task is to decide what these goals are. This may seem obvious, but it's not as obvious as you may first think.
Often, a client will state their goals for a site, and it will read like a list of features. A client may say something along the lines of “Well obviously we need a home page, a product catalogue, and a contact page”. They may very well need all of these, but you should dig deeper than this. Be sure to ask them why they think they need these features.
If they've put any thought into it, they should be able to give you their reasons. If not, they've probably just assumed it needs to be there. Such assumptions are dangerous. You don't want to be locked into providing a feature on the site that you know shouldn't be there.
Let's take a look at the example of the product catalogue. Ask them if they plan on selling their products over the web. If they say yes, make it clear to them that the product catalogue will only be the public face of this; there is a lot more to an online store than what a customer sees.
If not, then what are the consequences? Can you imagine Amazon without the buy button? Depending on the products your client sells, a full product catalogue could do little more than annoy their customers.
If they are not going to sell their products over the web, why do they want a catalogue? If they want to use their website to increase their sales, there are better ways to do this.
In neither case is their actual goal to simply have a product catalogue. The client sees the product catalogue as a means to achieve their true goals. Discovering and clarifying these goals is one of the most important parts of making a website.
You may be wondering why I'm mentioning this, as I'm designing my own site. But my client is myself, and in many ways I am the worst client possible. I may assume I need a certain feature on site, and push it through without making certain that it is necessary. It's easy to make such assumptions when working on personal projects.
O, and I'm paying myself terribly.
Why, for example, do I need a blog on my site? The answer is that I don't, unless it helps achieve a goal that I have set.
The goal of the new site is, first and foremost, to earn me more money. Goals like this need to be clarified. How do I intend to achieve this?
One of the things I'm working on is a product that will be very useful to a lot of web designers. To help me sell this product, I want to attract web designers to my site. A good way of attracting web designers is to become a solid resource to them. One way of doing this is by writing content that is of interest to designers, such as a running case study of a redesign.
I also offer web design and development services myself. I want people to hire me, so I must display my competence.
The site goals are:
Remember this: design is, at its most basic, problem solving. By setting clear goals, you can understand the problem well enough to solve it.
My brother nearly burnt the house down today. Good work, Richard. That's enough excitement for one day. The start has been postponed until tomorrow.
In the meantime, check out this picture.
I'll be working on redesigning this site, as the design doesn't fit the new direction I have in mind. I've decided to open the design process up, so that people can see what I did to create the new site.
I'm not going to say that this is the one and only way to design websites, but I know that a real-world example would be very useful for people to study, particularly those who are just starting to learn.
Plus, as an added bonus to me, having to document my work in detail will help me to think a lot more about what I'm doing.
First update on Monday.
I've made a Christmas wish list. Looking for last minute gift ideas for the most sex-obsessed evangelical Christian ever? Look no further.
Purchase of at least one gift from this list is required for continued friendship.
Continue reading "Christmas Wish List"I did some work for Transware PLC recently, and I'm happy to announce that the site has been launched. I was involved with the visual design, template creation, and asset creation. This site was built using web standards.

As I do not have any client meetings until the new year, and have no pressing need to look dashingly handsome - having no particular fair lady to impress - a strange opportunity arose... to grow a beard. I had also blunted my last razor-blade... a new one would require half an hour of travel (and a solid short-term memory). The beard is therefore a combination of experimentation, laziness, and clear hilarity.
Like most people, I have hang-ups about sex. I worry if I'll ever be good enough in bed, and I worry if I'll ever get over my performance anxiety enough to actually enjoy myself. I'm a virgin, and I know that after my first time I'll probably be a bit ashamed at myself for my obvious lack of finesse. Well congratulations, dipshit; you're bound to be crap the first time. Don't expect to be some kind of sexual virtuoso on the first attempt.
But, I've got a bigger problem. Because I believe what I believe, I can't have sex before I get married. Now, I'm sure this is for the best in the long run, but it is (to put it both mildly and bluntly) a right pain in the sack.
But that's not my real problem. My real problem is this. When do I say to a woman who I've met and that I'm interested in, that I can't have sex with her unless we end up getting married?
It certainly can't be the first thing I say. The following isn't a great way of starting a conversation:
Hey there.
Well hello!
My name's Dave. You won't be getting none of this ass.
But similarly, I can't say let the situation progress to here:
Well good morning, sleepy-head!
I have something to tell you. You won't be getting none of this ass. Er... again.
So, how do I deal with this? I know from experience that it's not necessarily the kind of thing a woman wants to hear. How do I bring this subject up?
Usually, I have to be told to shut up. Never did I expect that doing so voluntarily would result in angry messages being sent my way. So I'll make a deal with all those whiners: I'll write, and you won't complain about the quality.
And send me a medal. Thanks.

Most vocal about all of this has been Claire. Every time I talk to her, it's been Why aren't you writing?
this, Why aren't you writing?
that, and When someone gives you a compliment, say “thank you”; not “I know”
. I'm getting a bit tired of it.
I tried my best to find an angry picture of Claire, but I couldn't; you'll have to make do with Grimlock. Although both lead packs of dinosaur-like robots, that's where the similarity ends. I've tried to make the picture look more like Claire by adding in some curly black hair and lasers shooting from his eyes.
So, what's been really bothering me about Claire lately? Take a guess. It's her fucking laser beam eyes. For quite some time now, I've been trying to cut a deal with the Man upstairs for the ability of flight. So far, nothing. But I've told Him that, if it is not His will that I can fly unaided, then I will settle for being able to shoot lasers from my eyes.
And what do I see on Sunday? Claire, shooting lasers from her eyes. Then I find out that Kevin has some weird ability to deal with crazy people, a skill I could obviously do with. Obviously.
Bastards. The lot of them. The contempt I feel for them right now, sitting on my clearly non-flight-capable ass, is beyond measure. Bastards.
Less vocal have been Des and Aidan. Alright, that may be a bit of a stretch... Des has been mainly saying things like What the fuck is with those pictures
, and Aidan has been complaining that my RSS feeds don't output full posts. But I need some sort of segue into the following events.
Aidan is living over in England with his fiance Lori, but was over here for two weeks recently. On the first Tuesday, at 11 O'Clock, Des decided we were going into town. After a quick drop home for a change of clothes and food (and to drop my laptop home), I caught up with them both at the Q-Bar. Aidan was drunkingly playing drums with the table, to a beat that had nothing to do with what we were hearing. We left soon after that, and headed down to the the Viperoom. It's hard to put things in order, but what I do remember is:
We dropped into Zaytoons for a kebab, then got a cab back to Des' house. I was woken up in the morning by Des, then after falling asleep again, by Des' great sister. She did not impress me at all when she called me Rory.
We headed out again the following Wednesday; again, a last minute decision. We met in Doyles, then popped into the Plu+bar (Renards, basically). The barmaid seemed intent on proving to everyone that yes, she had large breasts; and yes, she made it very obvious. Another thing that was very obvious was the sky-high price of a pint. Five euro for a pint of Carlsberg! (Photo of receipt on its way).
Aidan was pissed off that the place was full of “poshos”, and that his semi-formal attire would probably get him kicked out by snobs. He complained that if you dressed up nicely, or were a hot woman, you'd get in. Me, I thought this was a great deal: dress up nicely, and get into a place full of hot women.
And damn it, it was. I noticed two damn fine women checking me out. I didn't do anything about the first woman; I'd just arrived. But I noticed the second woman later on in the night, we caught each other's eyes across the crowded bar. I look at her and smiled, then tried to beckon her over with hand signals. I'm such a lazy bastard when drunk (and in general); there was no way I was going to walk through all those people who were in the way. Suffice to say, she didn't seem to appreciate that.
Claire, this is what I was talking about when I mentioned my “hilariously shit technique”. I'd be a bit disappointed in any woman that responded favourably to that.
I stayed with the group, then went again to Zaytoons... best kebab shop in the city.
What's the best thing about this entry? Although not all of the websites linked here are crap, a lot are. It's the highest number of crap websites that I'll ever link to in an entry. I hope.
I'm working on a project, that at the moment is very hush-hush. Those in the know, keep it under your hat. More on this as soon as is appropriate.
You are browsing through entries from the month of December 2004.