Why Image Hosting Sites Are Shit

There are actually a whole bunch of reasons why image hosting sites are shit. For one thing, you get cunt sites like instagram which deliberately encourage users to fuck their pictures up with stupid crappy "filters", and brainwash them into thinking that this is somehow "trendy/cool/arty" or some other crappy buzzword, when in reality it is just plain shit. Then there is the problem that a lot of them don't allow glamour photos at all, while those that do allow them are all run by stupid Americans who don't know the difference between glamour and porn and think that once you go as far as showing nipples you might as well have pics of some woman with two donkeys' dicks up her arse on the same bloody page. Note to any American image hosting providers who happen to read this: In the UK we have a clear distinction between glamour and porn. Stop trying to impose your cultural values on the rest of the world.

However, that particular reason does not apply in the case of the majority of photos... The following one, however, does, because every image hosting site does the same fucking thing. The specific URLs may vary, but the principle is a general one. Let's take twitpic as an example, though they're all as bad as each other...

Displaying an image in the browser is very simple. All you need to do is retrieve one image file, and that's all. Like this:

GET http://d3j5vwomefv46c.cloudfront.net/photos/large/631993430.jpg

You absolutely DO NOT need all this fucking shit which twitpic blurges at you. All the delay involved in making lots of connections to a whole bunch of different servers which then do slow scripty things, when all you need is ONE connection to ONE server to retrieve ONE file with NO scripting involved. All the pissing about because the cunting thing makes you wait until it has loaded, rendered and executed every single bit of bullshit code before it renders the bit you're actually interested in, ie. the pic itself. Not one bit of this fucking shit does anything useful, all any of it does is slow things down, get in the way, and make the image hosting site a cunt.

GET http://twitpic.com/ag9t92
GET http://platform.twitter.com/widgets.js
GET http://d3j5vwomefv46c.cloudfront.net/photos/mini/631181368.jpg?key=959719&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=XP5kZxafL~9ngH7c~ZX-aQylqb9eQ9Tv3HJ35Z0tMJgSXSqT05Py872vwxAwuD6-qPUfcL~NBKn-nZaRtU~5ZHtrt2uOVvgLkaZ07GLVH0judfHBVVITK1UdwbFtZx0S3RsAOl9bYOe8HiEPXYKAgcRS5Z15pzD-LQkQgwXGtGg_
GET http://d3j5vwomefv46c.cloudfront.net/photos/mini/631239548.jpg?key=32642448&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=cwWuDnllIvPxJkWF8qF3eJ8yxTiD7As-VPb7XWhJAfUBXntIzGr6FD~SWlglMkYlhY5j4cLyf4r5ok1ufaCuUta1ox7tDn8Py-HObrh9JoWrggVn-dYTyUCpif0ecKFw7nJ~o5sTgeoCKmXp6NSS9LOrMzqXuY6qhScszFUcB6I_
GET http://d3j5vwomefv46c.cloudfront.net/photos/mini/631180396.jpg?key=959719&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=pJfOiJPQUqagn5xeH~PNvmaaqX5Szdy3hRkqKk~xFmAhrDaySmZjm4mwdMncimVBQpLbpSVVIjr2OzcwSGxCNMgRPDBtpxzoH43xPbUjo-3OP6-taVrW34rBeyfLtI35uHMni1Jc93clJWtnZS6wYnIYHgtdgk~XL0ZnEF3MH7A_
GET http://d3j5vwomefv46c.cloudfront.net/photos/large/631993430.jpg?key=892640&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=jVB95wfsUMRurULEB9dHyTulagdVz3jOHJhaGGu3B8i9n1Od1u1VfrbhIt~A2NQ-TgAZI5t8DF6NpFCz6SEj2NRM7IfIsnSwq65Frmyxj8uzEVztUUyNwM-KR-SpErgL22kNrDF1W47AsQXA8BiKDuEyPpckSGO1LyFHatEMoz4_
GET http://connect.facebook.net/en_US/all.js#xfbml=1&appId=331538683530736
GET http://ct5.addthis.com/static/r07/core027.js
GET http://adexcite.com/ads/video/controller.php?eid=10598
GET http://ct5.addthis.com/static/r07/widget090.css
GET http://pixel.quantserve.com/pixel;r=407675715;a=p-28dQY-2rVKMYI;fpan=0;fpa=P0-1738161154-1310245389469;ns=0;ce=1;je=0;sr=1024x768x24;enc=n;dst=1;et=1344378605491;tzo=-60;ref=http%3A%2F%2Ft.co%2FxkzkmKo3;url=http%3A%2F%2Ftwitpic.com%2Fag9t92;ogl=title.A%20photo%20from%20%40almacdN1%2Ctype.twitpicfbapp%3Aphoto%2Curl.http%3A%2F%2Ftwitpic%252Ecom%2Fag9t92%2Cimage.http%3A%2F%2Ftwitpic%252Ecom%2Fshow%2Fthumb%2Fag9t92%2Csite_name.TwitPic
GET http://rc.rlcdn.com/332971.html
GET http://www.facebook.com/dialog/oauth?api_key=331538683530736&app_id=331538683530736&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df30662e9e4ee1a%26origin%3Dhttp%253A%252F%252Ftwitpic.com%252Ff39106595a65184%26domain%3Dtwitpic.com%26relation%3Dparent.parent&client_id=331538683530736&display=none&domain=twitpic.com&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df1e67d58cf030cc%26origin%3Dhttp%253A%252F%252Ftwitpic.com%252Ff39106595a65184%26domain%3Dtwitpic.com%26relation%3Dparent%26frame%3Df2b4cce0da17a16&response_type=token%2Csigned_request%2Ccode&sdk=joey
GET http://twitpic.com/js/swfupload/swfupload.swf?preventswfcaching=1344378605996
GET http://www.facebook.com/plugins/like.php?api_key=331538683530736&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df391b51fa5396fa%26origin%3Dhttp%253A%252F%252Ftwitpic.com%252Ff39106595a65184%26domain%3Dtwitpic.com%26relation%3Dparent.parent&extended_social_context=false&href=http%3A%2F%2Ftwitpic.com%2Fag9t92&layout=box_count&locale=en_US&node_type=link&sdk=joey&send=false&show_faces=false&width=60
GET http://rc.rlcdn.com/332971.html?redirect=1&rl=815e976a1799d4dd
GET http://anywhere.platform.twitter.com/1.2.0/javascripts/client.js
GET http://p.twitter.com/t.gif?_=1344378606332&count=vertical&id=twitter-widget-0&lang=en&original_referer=http%3A%2F%2Ftwitpic.com%2Fag9t92&related=TwitPic&size=m&text=Twitpic%20-%20Share%20photos%20and%20videos%20on%20Twitter&url=http%3A%2F%2Ftwitpic.com%2Fag9t92&via=TwitPic&type=share&twttr_referrer=http%3A%2F%2Ftwitpic.com%2Fag9t92&twttr_widget=1&twttr_hask=1&twttr_li=1&twttr_pid=
GET http://cdn.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Ftwitpic.com%2Fag9t92&callback=twttr.receiveCount
GET http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?1shttp%3A%2F%2Ftwitpic.com%2Fag9t92&5e1&callback=_xdc_._4jfeup&token=57431
GET http://www.facebook.com/login/plugin_roadblock.php?target_url=http%3A%2F%2Fwww.facebook.com%2Fplugins%2Flike.php%3Fapi_key%3D331538683530736%26channel_url%3Dhttp%253A%252F%252Fstatic.ak.facebook.com%252Fconnect%252Fxd_arbiter.php%253Fversion%253D9%2523cb%253Df391b51fa5396fa%2526origin%253Dhttp%25253A%25252F%25252Ftwitpic.com%25252Ff39106595a65184%2526domain%253Dtwitpic.com%2526relation%253Dparent.parent%26extended_social_context%3Dfalse%26href%3Dhttp%253A%252F%252Ftwitpic.com%252Fag9t92%26layout%3Dbox_count%26locale%3Den_US%26node_type%3Dlink%26sdk%3Djoey%26send%3Dfalse%26show_faces%3Dfalse%26width%3D60
GET http://anywhere.platform.twitter.com/1.2.0/javascripts/api.bundle.js
GET http://a.triggit.com/px?fast=true&u=87adb0aafa8a35f9&tpuid=6563761e7340a218b11184c06b201f715fa382846bfe0c6458c769af296f9af5f13ab606102286c1
GET http://d.turn.com/r/dd/id/L2NzaWQvMS9jaWQvMTk1NjkwMzUvdC8y/dpuid/355ccda579011fd1314d21c9f384b3e1e7094f1828375fa28eb3f986a3caeef93528d9f17d145da0
GET http://sync.mathtag.com/sync/img?mt_exid=10017&redir=http%3A%2F%2Fidsync.rlcdn.com%2F47154.gif%3Fpartner_uid%3D%5BMM_UUID%5D
GET http://idsync.rlcdn.com/47154.gif?partner_uid=500b0f7b-be5e-0df3-91f7-4df5fee3fd05
GET https://api.twitter.com/xd_receiver.html
GET http://idsync.rlcdn.com/47154.gif?redirect=1&rl=72b6c94279fc9863620d70c8456cc76f5e40f19429360807316b370a1cecf74265609dc67207c765284e978b3ea763ce815e976a1799d4dd
GET http://www.facebook.com/common/scribe_endpoint.php?c=si_detect_broken_proxy_cache&m=c_user%20476534673627963%20840740760604876&asyncSignal=7467&__user=84065063406341&__a=1&fb_dtsg=AQD9Oojr
GET http://twitpic.com/comments/show.json?media_id=ag9t92&first_seen=1
GET http://ct5.addthis.com/static/r07/sh095.html#
GET http://ct5.addthis.com/static/r07/counter002.css
GET http://anywhere.platform.twitter.com/1.2.0/javascripts/hovercards.bundle.js
GET https://twitter.com/scribe?log=%7B%22url%22%3A%22http%3A%2F%2Ftwitpic.com%2Fag9t92%22%2C%22token%22%3A%22%22%2C%22client_id%22%3A%22FeB4w6iaI2ICGtL1ZE0jQ%22%2C%22version%22%3A%221.2.0%22%2C%22event_name%22%3A%22initialize%22%7D&category=anywhere&ts=1344378617118
GET http://ct5.addthis.com/static/r07/counter002.js
GET http://m.addthisedge.com/live/t00/300lo.gif?1genptq&uid=4e18c20f3c28f7cf&pub=twitpic&rev=115627&jsl=12417&si=502196ee198174b4&lc=MDAwMDBFVUdCRU4yMzE1MTgwMTAwMDAwMDBEVg%3D%3D&ln=en&pc=men&dp=twitpic.com&dr=t.co&of=0&uf=0&nt=cs;305,ce;1053,dc;2811,dclee;2806,dcles;2799,di;2740,dl;2545,dle;2,dls;2,fs;6,lee;u,les;2811,ns;0,rs;862,rspe;2542,rsps;1676,scs;u&irt=1&md=0&ct=1&tct=0&abt=0&lt=3077&cdn=5&tl=c%3D4537%2Cm%3D14414%2Ci%3D14452%2Cxm%3D17306%2Cxp%3D17526&pi=1&fp=ag9t92
GET http://api-public.addthis.com/url/shares.json?url=http%3A%2F%2Ftwitpic.com%2Fag9t92&callback=_ate.cbs.sc_httptwitpiccomag9t920

All that FUCKING BOLLOCKS when all that you need is just one line of it... and not the whole of the line at that. Look at this...

GET http://d3j5vwomefv46c.cloudfront.net/photos/large/631993430.jpg?key=892640&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=jVB95wfsUMRurULEB9dHyTulagdVz3jOHJhaGGu3B8i9n1Od1u1VfrbhIt~A2NQ-TgAZI5t8DF6NpFCz6SEj2NRM7IfIsnSwq65Frmyxj8uzEVztUUyNwM-KR-SpErgL22kNrDF1W47AsQXA8BiKDuEyPpckSGO1LyFHatEMoz4_

All we are doing here is retrieving a picture, right? One simple image, posted in public on a public site where anyone can see it. All you need to achieve such a simple aim is this...

GET http://d3j5vwomefv46c.cloudfront.net/photos/large/631993430.jpg

So what the juddering fuck is all this twatwanking shite in aid of?

?key=892640&Expires=1344379599&Key-Pair-Id=APKAIYVGSUJFNRFZBBTA&Signature=jVB95wfsUMRurULEB9dHyTulagdVz3jOHJhaGGu3B8i9n1Od1u1VfrbhIt~A2NQ-TgAZI5t8DF6NpFCz6SEj2NRM7IfIsnSwq65Frmyxj8uzEVztUUyNwM-KR-SpErgL22kNrDF1W47AsQXA8BiKDuEyPpckSGO1LyFHatEMoz4_

FUCKSAKE!!! Key? Expires? Key pair ID? Signature??? And look at the fucking length of it too! To achieve what? Fuck all, that's what. It's a fucking picture. Just fucking serve the cunting thing. Fuck this stupid pissing about "signing" the HTTP request with enough bits to secure a financial transaction to the value of the combined GDP of several intergalactic civilisations. What the pissing fuck are they playing at?

What does it actually do? In short, it makes it so that after 15 minutes the fucking link will stop working, and you can't get one that does work without opening twitpic itself so your browser can execute all that bullshit code again and generate a fresh signature. And no, just chopping the shit off altogether doesn't work...

Which means that if you try and post a link to the picture on a different website, you'll think it's worked, but after 15 minutes it'll pack up and nobody else will be able to see it. You can post a link to the page which loads all the fuckarsed bullshit code before it shows you the picture, but you can't post a link to the picture itself.

Why have they done this? Because they are FUCKING CUNTS. They know bloody well that people are only interested in the picture and don't want all the other fucking shite. So instead of doing the right thing and making sure that the picture is all people get, as they would if they were decent human beings, they do the opposite, and implement measures to ensure that people get all the fucking shite shoved down their throats whether they want it or not... They respond to people not wanting something by making sure that they can't avoid what they don't want. Because they are not decent human beings, they are shitheaded arsefelching wankers.

That huge bunch of GET requests contains plenty else to complain about, as well, such as the numerous pieces of tracking shite and the fucking ad servers, but the one that I consider particularly worth commenting on is another which is specific to image hosting sites:

GET http://twitpic.com/js/swfupload/swfupload.swf?preventswfcaching=1344378605996

A flash applet for uploading images. You cunts.

What the fuck is this fucking shite of making people use flash applets to upload stuff? You can do it natively in the browser. You've been able to do it natively in the browser for fucking I don't know how long, probably forever. All it needs is an HTML INPUT tag of type "file". You DON'T FUCKING NEED flash at all. All it does is be fucking annoying by providing another means for things to not work. Those sites whose failure to recognise this goes as far as not even bothering to provide an INPUT tag as fallback need their fucking arses kicked from here to Thursday. Fucking cunts.

(Weirdly, on returning to this page over 2 years later I find that now the raw link with the shit chopped off does work. Whether that means the server has been reprogrammed by people who are not cunts, or just that the expiry cuntery itself expires, I don't know, but there are so many fucking sites that do this shit that the example is still a valid illustration of the principle even if this specific instance isn't like that any more.)




Back to Crap Stuff


Back to Pigeon's Nest


Be kind to pigeons




Valid HTML 4.01!