TechBlog
leaflet
#js1k entry finally complete - AsciiBrot1K:http://urlm.in/flii - from T-SQL to JavaScript and then down to just 1KB of hand-compressed code

Cisco.com's lost a letter...

Posted on 25 September, 2008 by maximinus in Web design, Web development
And by a letter, I don't mean a single character - I mean all instances of the lower-case letter "t" in the HTML source of the site.  This includes all HTML tags and their attributes (names and values) - leaving the site without styles and javascript:

Here's the top of the page:

Update: Cisco seem to have fixed the issue - whatever it was.

No comments have been posted on this entry. Click here to post a comment.

CAPTCHA'd

Posted on 23 May, 2008 by maximinus in Web design, Rant, Web development, Interface design
I'm sure you're all familiar with CAPTCHAs - those annoying things which require you to type in a bunch of letters and numbers from an image which tries to make it difficult for computers to read said characters.  I've seen several different varieties - ranging from fairly basic text (which doesn't do much to hamper OCR efforts), through ones which use really curly fonts, lines through the text, shapes intermingled with the characters, ones which have a picture of a cat or a dog on each letter, asking you to enter all those with a cat or all those with a dog.

The original idea behind CAPTCHA systems was good; I agree with it in principle.  However, spammers have found ways around many of them, including "data entry business opportunities" - which they send spam about, luring people to fill in CAPTCHAs for them, for use in submitting spam to websites - or, alternatively, simply getting them to post the spam.  Unfortunately, the trend seems to be to make the CAPTCHAs harder to read, which doesn't cut down on this as much as it would if the spammers were simply using OCR to attempt to decipher them.  All it does is make it more of a nuisance for legitimate users of the system.

My latest struggle with such a system involved an attempt to sign up for a forum account - which took me three goes.  Each attempt involved attempting to decipher a CAPTCHA image, which was so poorly done that 5 and S were utterly indistinguishable (perhaps they would have been, had I seen both at once; however I only ever saw one - (it looked like) the same one, in each of the three instances... I can't remember which it turned out to be).  Not only that, but I had to enter my desired password twice on each attempt, and answer a (fairly straightforward, although sometimes slightly ambiguous) question, which, like the CAPTCHA, changed each time.  I was so frustrated with this that I was going to completely give up on registering if it had failed me one more time.

The biggest problem with this was not even that the CAPTCHA was unclear - it was the fact that I had to attempt not only a new CAPTCHA, but a new human verification question each time (despite having passed the first and second), and re-enter my password a further two times per attempt.  Some systems also offer an audio alternative to the image; this option was also missing from this particular system.  Without this audio alternative, even if I could decipher all the other characters in a given CAPTCHA, if it had an S or a 5 in it, I had a 50% chance of failing it.

I wonder just how many people give up on posting a comment, registering an account or performing some other action on a website, simply because they can't decipher a CAPTCHA image?

EDIT:
Oh, one more thing - Sam Ruby raises a good point, which is highly related to my recent experience - when you've verified that somebody's a human, remember it!  Sure, expiry is probably a good thing - re-check periodically.  But presenting three different questions as well as three different CAPTCHAs and requiring me to type (and thus send via unencrypted HTTP) my password six times in order to register, simply because one of the two forms of human verification is poorly designed?  That's just overkill.

UPDATE FOR TAGGED.COM USERS:
Several people have posted comments stating that they are having problems with a "captcha fail limit exceeded" error on tagged.com.  I have removed all these comments as nobody was getting anywhere.
Tagged.com's help section states that the problem has been fixed - click here for more details.
If you are still experiencing this problem, you'll have to try contacting Tagged's support - click here.  I cannot provide any further help or information, as I am not a user of Tagged.com or in any way associated with it.
No comments have been posted on this entry. Click here to post a comment.

Moonwalk

Posted on 19 February, 2008 by maximinus in JavaScript, Web design, Web development
It's not all fun and games in web development.  Sometimes, clients request odd things, such as redirecting the domain name for a defunct Japanese site of theirs to another Japanese website.  We were given the URL to redirect to; upon clicking through to the site, we discovered that it was an equally dated site; not only are some of the links broken on certain pages, but there's an animated GIF of a kiwi in the corner of the site.

One of my colleagues pointed out that it looked as if the kiwi was moonwalking on the spot.  This gave me an idea to liven up the site - make the kiwi actually moonwalk across the page header.

Of course, not being one of our sites, we don't have access to the files, so I can't make it permanently happen.  What I can do, though, is use a javascript: address in the address bar to play around with the page once it's loaded.  622B 577B 477B 494B of JavaScript later, I have a moonwalking kiwi:
  1. Visit the site, and wait for it to finish loading.
  2. Grab the moonwalk JavaScript, paste it into your address bar (making sure it's all on one line) and hit enter.
  3. Enjoy.
You may have noticed that there are two three crossed-out sizes; I decided to do a bit of optimisation and refactoring, bringing it down to 577B, then thought that while I was at it, I may as well tackle the IE issue.  This is where I discovered something odd:
Internet Explorer 6 will only allow 501 characters in the address bar before it fails.  It fails silently if you exceed this limit.  As a result of this, I started shrinking the code as much as possible, which involved a bit of code golf with a few guys in an IRC channel - we decided to call this "JavaScript Hack Minigolf."  The end result was a lean 477 characters.  I also worked out what was happening in Opera - the version I've got installed (9.02) appears to, at least by default on Windows, stop the script running after a set period and return things to their initial status.  It's apparently fine in 9.24 on Linux, though.  I've now discovered that IE wasn't aligning the inserted div properly, and the fix has now brought it back up to 494 characters - thankfully still within IE6's limit.  I've also found that IE7 doesn't have the 501-character limit (I haven't checked if there's a higher limit or no limit).

Thanks to Arachnid for playing a round of JSH Minigolf with me, and to Pic, silentcoder, langly and warfreak2 for their moral support.
Currently feeling: Devious
Currently listening to: Roads - Roadrunner United
No comments have been posted on this entry. Click here to post a comment.

ColdFusion 8 AJAX

Posted on 22 October, 2007 by maximinus in Web design, Web development, Interface design
I've lately been playing around a bit with the new ColdFusion 8 AJAX and related stuff.  There are a few different things I'd like to touch on here:
cfajaxproxy
This one's a really great idea - basically, with one tag, CF8 will automatically create a JavaScript class which mirrors the CFC you name.  It acts as an interface for the CFC - you create an instance of it in your JavaScript, and then call the (public, remote-access) methods from the CFC as if from ColdFusion.  It returns whatever the CFC's method would return.

I'm using this to easily turn a static calendar (based on Randy Drisgill's Simple ColdFusion Calendar - I fixed the year bug (my way, see comment on Randy's blog post), converted it to a method in a CFC, changed it to use DIVs instead of tables and generally tidied things up, rewriting some chunks of it.  I then made it so that it doesn't require reloading the page, but instead uses JavaScript to swap out the calendar for a whole new one.  I've yet to make it also display information in the day DIVs, but that will be coming soon.

More at CF8 Livedocs.


cfwindow
This one's also kind of neat; it allows you to easily create a draggable, closable 'window' on the page.  You can either have it show on page load, or use JavaScript to trigger it to pop up whenever and however you want.  You can either specify content within the cfwindow tags, or specify a source file - if you specify a source file, it'll load that page using AJAX and shove its contents into the 'window' - no, not using an iframe, but actually using AJAX.

I do have a couple of gripes with it, though:
  • It's not the easiest thing in the world to style, and the default styles are a bit crappy - especially with some colours behind it, which can make some of the outer lines 'disappear' and thus make the box look a bit odd; and
  • It doesn't have a 'minimise' button.  It's based on Ext JS - which does have a 'minimise' button, which shrinks the 'window' to its titlebar.
I'm really not sure why there is no way to add the minimise button in the cfwindow tag; it'd be rather handy.  I'll have to have a play and see if I can add it by gaining access to the underlying Ext JS window object.

More at CF8 Livedocs.


cflayout / cflayoutarea
Okay, so I've only actually used the tab layout so far.  But even so, I've discovered a few cool things and a few annoying things.  First off, it's really easy to use these tags; just nest a new cflayoutarea within the cflayout tag to add a new tab.  Just like cfwindow, you can either specify the contents of each tab between the cflayoutarea tags, or use the 'source' attribute to specify a file which will be loaded in using AJAX.  With both cfwindow and tabs, you can also use refreshOnActivate (refreshOnShow for cfwindow) to tell it to fetch a new copy of the contents (when using 'source') when opening the window / showing the tab.

Issues I have with the tabbed layout are:
  • The tabs are rather poorly styled by default; the top left corner of each tab in particular looks odd / broken.  Thankfully, FireBug showed me that it's relatively easily to restyle the tabs - I've made mine quite plain and simple at the moment;
  • The 'align' attribute of the cflayout tag relates to the tab content, not the tabs themselves - surely if I wanted to change the alignment of the content, I'd do it at the content level - or perhaps there could be an 'align' attribute on the cflayoutarea tag?  Tabs are stuck at the left hand side, unless you manually shift them with CSS as I have done; and
  • There appears to be some weirdness with regards to the height of the content area when it contains absolutely positioned elements.  I'll need to investigate this a bit further.
More at CF8 Livedocs - cflayout and cflayoutarea


There may be more later, but right now I can't think of anything to add.
No comments have been posted on this entry. Click here to post a comment.

Xtraordinary Complexity

Posted on 23 August, 2007 by maximinus in Web design, Rant, Web development, Interface design
Last weekend, Xtra performed an email system "upgrade" which resulted in their customers' mail being inaccessible for 24 hours.  This in itself is not necessarily bad - they did give warning that it was going to happen, and it's understandable that such things need to be done from time to time.  The problems begin with the length of the outage - a full 24 hours, with some customers having no access for longer than this.

The main problems, however, relate to the consequences of this "upgrade" - and begin with those who use a mail client (i.e. not webmail) to access their email.  As part of the upgrade, Xtra changed their SMTP server address - and added mandatory SSL.  They do inform you (oddly enough, when you're trying to get to the "upgraded" webmail - but also over the phone if you lie and tell them that it's not to do with the mail server "upgrade" and thus can get through to a person rather than pre-recorded messages) that the address has changed - but never make mention of SSL.  They list the new port (465) and address (send.xtra.co.nz) but completely fail to mention that SSL is now mandatory.

This is a problem for those users - like my aunt, who has been unable to send email for several days until I was able to visit and sort it out - who do not know a lot about computers, the Internet or email, who perhaps, like my aunt, have had their computer set up by family or friends and know how to use it but not how to configure it.  In the case of my aunt, she managed to work out where to change the settings - with some help - and changed the address and port.  However, since there had been no mention of it at all, she did not enable SSL - and so still could not send email.  Although I know a bit about mail servers etc, and in fact run my own mail server, I didn't immediately recognise port 465 as being the standard SMTP over SSL port.  How anyone else is supposed to work it out, I don't know - a bit of deft googling managed to turn up this article on the Xtra site which eventually mentions that you need to enable SSL.


The next problem, which is probably even worse than that one, relates to the web mail system.  It used to be a relatively simple process to get to and use their webmail system - but no longer.  Especially if you haven't used the new system yet.

First off, you need to use a modern browser.  If your browser isn't supported, it doesn't tell you - it just sticks you in a loop of signing in, clicking through to continue a couple of times, and then being returned to the login page.  Once you find a browser in which it works, you have to go through several steps of pointless nonsense, including downloading and installing a few bits and pieces relating to their new "bubbles" - this took a few minutes on my aunt's ADSL connection; I shudder to think how long that would take on dialup.

Once you've finally managed to register for the new system, you log in and end up on an overcomplicated, customisable start page.  When you eventually locate the "Mail" link, and you move your mouse over it, a new box "slides" out from under it to reveal a summary listing new messages - just how good this is, I'm not sure, as my aunt had no new messages, so there was a large box with a small amount of text swimming in it to that effect.  Clicking on the Mail link took us to the new webmail interface - which I didn't have a good look at, but didn't look terribly easy to use or particularly good.  I think it might be using the current Yahoo! mail system, but, not having a Yahoo! account myself, I can't verify this.


Then there's the entire concept of a social networking site.  I would imagine that their users would fall into two broad categories:
  • Those who, like my aunt, are not at all interested in this crap; and
  • Those who are interested in a social networking site, and, as a result, are already signed up to at least one of the plethora of other free social networking sites out there
Also - I haven't investigated, so don't know if this is entirely accurate - surely using this system would be somewhat pointless, as I'd assume that only Xtra customers can get a "bubble page" or whatever it is they're calling them.  Even if other people can sign up for them, will anybody who's not an Xtra customer do so?  I would suggest that the answer is almost certainly "no" - at best, a few people might sign up out of morbid curiosity.  This means that you're essentially restricted to networking with other Xtra users - whereas if you use any of the other social networking sites out there, you can network with anybody with access to the Internet.


I'll admit that their old webmail system was old and was begging to be upgraded or replaced; but this is not the way they should have done it.  What they've done is alienate a lot of users, confuse many more and just brass off the rest.  That's just those of their customers who actually use their Xtra mail, of course - the rest of their customers won't even care in the slightest.

I think I heard that Xtra were saying that "Bubble" was going to provide "an exciting range of new services that will change the way you use the internet" - I'd say that the only way it has changed the way that some people use the Internet is which provider they use it through.
No comments have been posted on this entry. Click here to post a comment.

New ShrinkThisLink Site Live!

Posted on 15 July, 2007 by maximinus in PHP, JavaScript, Web design, Web development
Finally, after months of on-and-off work, the new ShrinkThisLink site has gone live.  It features a new design, AJAX shrinking of links, instant link conversion using Javascript, an improved My ShrunkLinks feature (including link deletion) and more.  Hope you like it - your feedback is appreciated, either via comments on this blog post or by email (use the Contact link on ShrinkThisLink).
Currently feeling: Relieved
No comments have been posted on this entry. Click here to post a comment.

Web Design Woes

Posted on 30 December, 2005 by maximinus in JavaScript, Web design, Rant
So, I'm sitting here working on the long-overdue next version of BLISS, the blogging engine which powers Rant of the Day, and I am, as per usual, battling to try to make things cross-browser compatible.

This time, however, through a cruel twist of fate, it's not IE which is 'misbehaving' as such - this time, it's the only browser which supports CSS which lets me do what I want. This is because MS have extended CSS to do these things - but they either haven't reccomended them for inclusion in the official CSS spec (thus allowing for cross-browser support) or they have, but too late to make a current CSS spec.

I can't even seem to find any nifty JavaScript snippets or anything that'll do the job instead. It seems that truncation other than at a set number of characters is just one of those things which is near-impossible.
No comments have been posted on this entry. Click here to post a comment.