Simple minds like simple things. I guess that's why I like basic geometric shapes like circles, triangles, and squares so much. What could be easier than assembling millions of different colored squares to create everything from works of art to the words that you're reading on your computer monitor right now? A different pixel here, a different pixel there . . . nothing much . . . child's play, really.
Another thing a child's mind delights in, for the purposes of this post, is optical illusions. I certainly remember that I liked them as a kid, and still do. Around the web you'll find many great optical illusions. One in particular that I like on that page is "A bulge". I like it because it contains nothing but squares lined up on a grid, yet manages to produce the effect of curved lines.
Needless to say, rectangular shapes are easy to produce with the box model of web layout. That's certainly the foundation of how I developed the basic Town Square spatial content system. So on a particular slow day I got around to reproducing the image using only div elements and a little CSS. Enjoy:
As an added bonus, the HTML (15984 bytes) is quite a bit smaller than the original image (59287 bytes). There are many other variations on the same theme that it would be easy enough to reproduce with the style sheet I have, or I could possibly animate the bulge using JavaScript. Let me know if you'd like to see anything else interesting done with this.
As noted in my last post about email spidering, I changed the email contact for Impossibly Stupid to be a simple mailto: link. Here it is just over 12 days later, and I'm spammed already! Quite a bit sooner than the corporate email. Let's examine the data, starting with the important email headers:
Received: from mail.kz (frontend03n.mail.kz [92.46.53.18]) by homiemail-mx7.g.dreamhost.com (Postfix) with ESMTP id 18F6CCF3EF for <info@waitingwatching.impossiblystupid.com>; Sat, 13 Feb 2010 04:54:54 -0800 (PST) Received: from [213.154.94.76] (account mrszenila3@mail.kz) by backend01n.mail.kz (CommuniGate Pro WEBUSER 5.2.13) with HTTP id 2954844; Sat, 13 Feb 2010 18:54:56 +0600 From: "mrszenila" <mrszenila3@mail.kz> Subject: I NEED YOUR ASSISTANCE TO INVEST IN YOUR COUNTRY
Reading backwards, we have this mrszenila user account that is associated with an IP 213.154.94.76 which is, surprise, located in Africa (the Dakar, Senegal area). The actual mail server IP 92.46.53.18 looks to be out of Almaty, Kazakhstan, using what is likely a free email provider.
That's all good and fine, but it doesn't directly shine any light on how they got our email. A simple mailto: doesn't log anything on the server, so we have to dig at the logs a bit to find anything relevant to the above:
213.154.94.195 - - [12/Feb/2010:21:32:16 -0800] "GET / HTTP/1.1" 200 38080 "-" "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; DTS Agent"
That's it. That's the only hit from the entire 213.154.0.0/16 since I made my previous post. No site referral, no images were loaded, no links were followed, no indication of any kind points to a human actually looking at the page. Just the index grabbed, and then the spam a few hours later.
The conclusion is that spammers are still spidering for email addresses, just not very deeply. At least this site, anyway, which is already an oddly large target for comment spammers. The results might be different if I had chosen to run this experiment on index page of the corporate site. I may still do that, but I don't suggest you do unless you use some of the same techniques I do (e.g., disposable addresses).
Since there haven't been any new notable organizations spamming the blog comments here in the last couple weeks (although there have been quite a number of repeat offenders), I'm going to pass along some observations about the good ol' fashioned email variety of spam.
I have a long history of fighting spam emails. I won't get into the details, but I was onboard with all the mainstream anti-spam efforts from the early days. Then something happened in 2005, which I also won't get into, that made me realize that a lot of the anti-spam people weren't much more than power-hungry goons who themselves were more interested in profiting from spam than eliminating it.
At the time, my main address was getting 5000+ spam/day. So I did the Impossibly Stupid thing of taking a step back from all the filtering and blacklisting and reporting and all the other machinery that has been thrown at the problem of email spam, asking myself instead what I, as a lone individual, could do to keep my inbox clean.
I now get maybe 1 spam/week. I do no filtering. I maintain no blacklists. My server only sees that one email, so there isn't much need to do anything fancy after the fact. I'm not really hiding my contact info, either. I even provide a clickable email link on web pages without a hint of JavaScript obfuscation. I did think up and use some new techniques to choke the flow, but this post isn't really about detailing them.
Instead, because my inbox was essentially cleared of spam for over a year, I decided to start an experiment. In November of 2007, I put up a web page on the corporate site that had a unique email address link in the clear. The question in my mind at the time was "Is web spidering even done to collect email addresses anymore?"
You see, the trickle of spam I was getting in my "real" email was easily traced by my new techniques. 99% of it was from Usenet posts; if I started using an invalid address there I'd essentially get no spam at all. Nothing was coming in via any web site I was on, but I wasn't certain if that was directly due to things I had done. So I put up an email address free and clear. Very retro!
Just now, 2 years and 2 months later, I saw the first spam to that email address. A couple more came in after that, and I'm going to keep an eye on whether or not the volume starts to take off. But the conclusion is pretty clear: there seems to be very little need to make people browsing your web site jump through a lot of hoops to get your email, because that doesn't appear to be how spammers are finding you these days.
Caveats abound, to be sure, but that's what I'm seeing. One obvious factor is that the web has gotten so large that it no longer makes sense to spider it all just to scrape out a new email address or two. It may be that they just hit the index page of most sites (my test email address was buried at least 3 clicks deep). I'm even going to test that out by making my main contact to the right a clear email address. Stay tuned for progress reports. If they're not even doing that small amount of spidering, you might have a long wait . . .
You've probably played games on your computer. You've maybe even played games in your browser. But have you ever played a game with your browser? This gets the Impossibly Stupid Seal of Approval:
A few months ago I added a Chaos Game implementation to the site. It was pretty slow, partly by design and partly by happenstance. When Apple recently released a new version of Safari with some impressive performance claims, I decided to revisit the code and see what I could see.
The initial version I wrote capped the drawing speed at 100 points/second. That was mainly because I didn't want it to overwhelm an OLPC, because I liked the educational aspect. Of course, that also limited the performance on machines that are very much faster, too. What I did was go in and change the code so that the update interval lengthened for slower machines.
Now if you go in and test it, it should be blazingly fast on better hardware. After you hit Stop, it'll display just how fast it was if you hover over the drawing area. On my machine, I get around 4000 points/second using Firefox 3.0.11. Using Safari 4.0, it gets around 15000 points/second; nearly the 4x benchmark that Apple lists. The OLPC comes in at a fairly pokey 300 points/second, and isn't very responsive otherwise, the poor thing!
Some work I've done on a project probably won't make it to the final version, so I'll drop it off here because it covers something I find impossibly stupid: image zoom/enlarge on the web. With high speed connections the norm, people think nothing of making larger images available, but they really should think more about how they make them available. Here are some things I find annoying about what sites commonly do (if I missed your own pet peeve, please add it to the comments).
So here is image zooming done impossibly stupid. A click swaps between a large and small picture bound to the same element. Mouse movement is followed so that the enlarged image tracks the small image proportionally. A click returns you to normal.
Using my half-beard image as an example also reminds me to remind you to vote in the beard poll! Time is running out! Only nearly four to eight years left!
Some people have a hard time grasping that disorder can yield order, or that an impossibly stupid approach can yield beautiful results. Those people have clearly never heard of the Chaos Game. I bet you knew my earlier talk of fractals would get us here eventually.
Or perhaps you have heard of the Chaos Game, but you're just disappointed by the 10 year old Java applets around the web. For your amusement, I present what looks to be the first decent JavaScript version. Click in the drawing area to set your points, pick your decimal fraction to move, and let it go! Suggestions for improvements and/or bug reports are appreciated.
Note: my code attempts to use the canvas element to draw the dots. For browsers that don't support that, the code uses 1 pixel div elements. Having thousands of elements in the document for longer plots can potentially suck up a lot of resources. If you're going to let it run for longer than around 30 seconds, you're probably best served by using a browser with canvas support.
Update: the code has been modified since original publication as explained here
Here is the first web toy/exploration of best practices for using JavaScript to do something that is very common: reducing information overload. There are many times when hiding information is just as important as showing it. There are many things that are all helpful to have on a web page, but are distracting if they're always in your face.
Being impossibly stupid, I'm just trying to find a reasonable way of adding the minimal amount of code to a page to accomplish that. For your amusement, here is my first draft. If you've found a better way, please let me know in the comments. Thanks!
A CMS is nice and all, but it can also be a bit of a pain if you want to add some content that isn't in the same style as everything else. I plan on doing a fair bit of that in this Web Playpen section, so let me start by taking the impossibly stupid path: trying out some obvious things and see what breaks.
The easiest thing to do is just jam all the special HTML/CSS/JavaScript into an iframe and be done with it. Since that does indeed appear to work with this CMS, I present you with my previous pseudo-personal site:
Recent comments
2 days 10 hours ago
2 weeks 2 days ago
2 weeks 2 days ago
3 weeks 2 days ago
3 weeks 2 days ago
4 weeks 2 days ago
5 weeks 2 days ago
5 weeks 2 days ago
6 weeks 2 days ago
6 weeks 2 days ago