Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/comment-template.php on line 1739

Deprecated: wp_getimagesize(): Implicitly marking parameter $image_info as nullable is deprecated, the explicit nullable type must be used instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/media.php on line 5006

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: Jetpack::setup_xmlrpc_handlers(): Implicitly marking parameter $xmlrpc_server as nullable is deprecated, the explicit nullable type must be used instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/class.jetpack.php on line 939

Deprecated: Automattic\Jetpack\Connection\Manager::setup_xmlrpc_handlers(): Implicitly marking parameter $xmlrpc_server as nullable is deprecated, the explicit nullable type must be used instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 110

Deprecated: Creation of dynamic property Automattic\Jetpack\Connection\Manager::$error_handler is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-manager.php on line 80

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Instagram_Gallery::$is_wpcom is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-instagram-gallery.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Mailchimp::$wpcom_is_wpcom_only_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-mailchimp.php on line 17

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$wpcom_is_wpcom_only_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 21

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Tweetstorm_Gather::$is_wpcom is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php on line 22

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Gutenberg_Available_Extensions::$wpcom_is_site_specific_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/gutenberg-available-extensions.php on line 20

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_wpcom_only_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 23

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Memberships::$wpcom_is_site_specific_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/memberships.php on line 24

Deprecated: Creation of dynamic property WPCOM_REST_API_V2_Endpoint_Subscribers::$wpcom_is_wpcom_only_endpoint is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/_inc/lib/core-api/wpcom-endpoints/subscribers.php on line 15

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/extensions/blocks/podcast-player/podcast-player.php on line 157

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/extensions/blocks/podcast-player/podcast-player.php on line 157

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Sync\Queue::$random_int is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-queue.php on line 38

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/widgets/migrate-to-core/image-widget.php on line 195

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/widgets/migrate-to-core/gallery-widget.php on line 56

Deprecated: Creation of dynamic property Publicize_UI::$in_jetpack is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/publicize.php on line 53

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 128

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 129

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 133

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 134

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/calypsoify/class-jetpack-calypsoify.php on line 135

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 219

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 220

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 227

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 229

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 231

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 248

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 249

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 267

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 268

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 270

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 271

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 273

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/simple-payments/simple-payments.php on line 275

Deprecated: Creation of dynamic property WPCOM_Widget_Goodreads::$shelves is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/widgets/goodreads.php on line 33

Deprecated: DateTime::__construct(): Passing null to parameter #1 ($datetime) of type string is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/script-loader.php on line 348

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property WP_Block_Type::$plan_check is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/class-wp-block-type.php on line 333

Deprecated: Creation of dynamic property Jetpack_Shortcode_Unavailable::$shortcodes is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-content/plugins/jetpack/modules/shortcodes/unavailable.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php on line 3030

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648

Warning: Cannot modify header information - headers already sent by (output started at /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/wp-db.php:668) in /homepages/34/d43362328/htdocs/ydontu/blog/wp-includes/rest-api/class-wp-rest-server.php on line 1648
{"id":1778,"date":"2008-08-28T21:36:03","date_gmt":"2008-08-28T20:36:03","guid":{"rendered":"http:\/\/www.whydontyou.org.uk\/blog\/?p=1778"},"modified":"2008-08-28T21:42:39","modified_gmt":"2008-08-28T20:42:39","slug":"captcha","status":"publish","type":"post","link":"http:\/\/www.whydontyou.org.uk\/blog\/2008\/08\/28\/captcha\/","title":{"rendered":"Captcha"},"content":{"rendered":"

“Captcha is the bane of the internet,” says Matt Mullenweg, who runs the massively popular blogging site WordPress.com. “I can’t figure them out myself half the time!” (from the Guardian technology page <\/a>today<\/em>)<\/p><\/blockquote>\n

This is from a Guardian piece discussiing how captchas are welll and truly broken – by algorithms and by cheap human labour -thus increasing the volume of blog comment spam. The writer suggests Akismet or the type of non-machine readable questions that you find on ApathySketchpad<\/a> as viable alternatives.<\/p>\n

I’m comment-impaired at the best of times. I’ll try and comment on a blog and find that my comment just disappears. Granted, this suggests the universe has an innate capacity for mercy. But, just occasionally, the words that disappear into the net’s black hole were comments that I really wanted to make. So, I’ll try and rewrite it, in a half-hearted fashion. It will disappear again. I’ll have a final stab at writing. And sending. But by this time, it’s incoherent garbage, sent only to show the comment-eating demon who’s boss.<\/p>\n

And then the captcha is there mocking you. Matt Mullenweg is so right, except, on his own proud boast, at least he gets them right half of the time. Falling foul of captcha is a daily occurrence here at WhyDontYou Towers. And a score of 50% correct is just a fond dream.<\/p>\n

The idea is that only humans can read the things. A reverse Turing test. This whole concept falls down on the point that any shapes that are too unlike characters to be read by a souped up OCR-style algorithm are much too unlike letters or numbers for human beings to interpret them. <\/p>\n

Even when you can distinguish those shapes that are meant to be characters from the deliberately inserted wavy lines, you face something like:<\/p>\n

oo9I0g<\/p><\/blockquote>\n

There is no way to reliably distinguish between 9<\/strong> and g<\/strong>, 0<\/strong> and O<\/strong>, 1<\/strong> and l<\/strong> and I<\/strong>. <\/p>\n

So you type in zero zero nine one zero g, on the offchance. It rejects you. You don’t get another shot at the ambiguous letters. <\/p>\n

Oh no. A fresh bleeding captcha. This time you find you have to choose between identifying a letter as either a very thin letter j or the letter i with a slight curve at the bottom. Failed again.<\/p>\n

Next time it’s either an l with a slight curve at the top or an anorexic letter c. Ok, got the c right but then you thought that oddly shaped capital A was a 4, didn’t you? Robotic fool.<\/p>\n

By this time, the human-detector software has often decided you are a bot cos you couldn’t even guess one out of 3. So your comment is bounced anyway.<\/p>\n

If you’ve ever thought that you might as well go for the disabled option, don’t bother. That’s not worth it either. Captchas that claim to be for the disabled are actually even harder to use than their able-bodied comrades. Different experiences you can have with the accessibility captcha include:<\/p>\n