Antisocial Networking


For some background to the Twitter-related brouhaha that led to this post, read Jack of Kent’s The Integrity and Honesty of @gillianmckeith.

So, @gillianmckeith tweets that @bengoldacre‘s Bad Science contains lies, and Mr Goldacre promptly calls her (if it was her…) on it. @gillianmckeith then appears to remove the offending tweets and tries to suggest that that account isn’t necessarily the Gillian McKeith’s account; but unfortunately it’s linked to from her own site (to which I am not granting any google linkjuice, by the way).

When this is pointed out, the link is removed from her site by somebody. Unfortunately, it’s only removed in the sense of being commented out, and is still clearly visible in the source. Also, as David Naylor points out, it’s still present on places like her YouTube channel, which is linked to from the same “social networking” section of her site.

Time to bring out the big guns: now, the entire “social networking” section is removed.

You guessed it:


<!--
<div id="gillianssocialnetwork">
 <a href="http://twitter.com/gillianmckeith" target="_blank" title="Follow Gillian on Twitter">
  <img src="i/twitter.jpg" alt="Twitter" width="39" height="44" border="0" class="networkicon" />
 </a>
 <a href="http://www.facebook.com/GillianMcKeithOFFICIAL" target="_blank" title="Gillian's facebook Page">
  <img src="i/facebook.jpg" alt="Facebook" width="39" height="44" border="0" class="networkicon" />
 </a>
 <a href="http://www.youtube.com/user/gillianmckeithTV" target="_blank" title="Gillian's YouTube Channel">
  <img src="i/youtube.jpg" alt="Gillian's YouTube Channel" width="39" height="44" border="0" class="networkicon" />
 </a>
 <a href="http://uk.linkedin.com/in/gillianmckeith" target="_blank" title="Gillian on LinkdIn">
  <img src="i/linkdin.jpg" alt="Gillian on LinkdIn" width="39" height="44" border="0" class="networkicon" />
 </a>
</div>
<div class="rightcolitems">
 Do you social network? So does Gillian! Follow her on the links above
</div><br />
-->

All I can really say is: #viewsourceftw.

UPDATE, 2010-07-15T01:00: Actually, that isn’t the only Twitter-related content that has been commented out on that page. It also has the following:

<!--    <div id="twitterboxheader"><a href="http://twitter.com/gillianmckeith" target="_blank"><img src="i/gillianmckeith_on_twitter.jpg" alt="Follow Gillian on Twitter" border="0" title="Follow Gillian on Twitter"/></a>
    </div>
<div id="twitterboxmain">
<div id="twitter_div">
<ul id="twitter_update_list"></ul>
<br /><br />

</div>
<a href="http://twitter.com/gillianmckeith" id="twitter-link" style="display:block;text-align:right; font-size:1.2em;" target="_blank">follow me on Twitter*lt;/a>
</div>
<div id="twitterboxend"><img src="i/twitterboxbase.jpg" /></div><br /><br />-->

which is code to display the latest tweet from @gillianmckeith, and towards the end of the source code is some HTML loading some JavaScript:

<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/gillianmckeith.json?callback=twitterCallback2&count=1"></script>

which actually updates that box with the most recent tweet.

You will notice that the JavaScript section hasn't been commented out. This would suggest that the data is still being loaded from that Twitter account by that page, whenever it is viewed. And indeed, a check with the wonderful Charles HTTP debugging proxy, a tool which allows one to examine the low-level nuts and bolts of one's computer's communications with the web, shows that this is the case. When I load the page at gillianmckeith.info into my browser, the second script shown above sends the following additional HTTP request to Twitter from my browser:

GET /statuses/user_timeline/gillianmckeith.json?callback=twitterCallback2&count=1 HTTP/1.1
Host: twitter.com
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
Accept: */*
Referer: http://www.gillianmckeith.info/
Cache-Control: no-cache
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: <removed for security reasons>
Connection: keep-alive

which sends the response (formatted for clarity):

HTTP/1.1 200 OK
Date: Wed, 14 Jul 2010 23:38:55 GMT
Server: hi
Status: 200 OK
X-Transaction: 1279150735-24110-17319
X-RateLimit-Limit: 150
ETag: "fcf22c639f08a8ca540302c7c569266e"-gzip
Last-Modified: Wed, 14 Jul 2010 23:38:55 GMT
X-RateLimit-Remaining: 143
X-Runtime: 0.00977
Content-Type: application/json; charset=utf-8
Pragma: no-cache
X-RateLimit-Class: api
X-Revision: DEV
Expires: Tue, 31 Mar 1981 05:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
X-RateLimit-Reset: 1279153007
Set-Cookie: lang=en; path=/
Set-Cookie: <removed for security reasons>
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 630
Connection: close

twitterCallback2(
[
    {
        "contributors":null,
        "source":"web",
        "created_at":"Wed Jul 14 13:06:40 +0000 2010",
        "coordinates":null,
        "truncated":false,
        "in_reply_to_status_id":null,
        "user": {
            "profile_link_color":"ff0073",
            "description":".",
            "location":"Earth",
            "profile_background_image_url":
            "http://a3.twimg.com/profile_background_images/111501429/Picture_145.png",
            "profile_image_url":
            "http://a0.twimg.com/profile_images/813972928/gillian1_normal.jpg",
            "profile_sidebar_fill_color":"e07ecc",
            "profile_background_tile":false,
            "screen_name":"gillianmckeith",
            "lang":"en",
            "statuses_count":1344,
            "created_at":"Tue Jul 08 15:26:42 +0000 2008",
            "profile_sidebar_border_color":"000000",
            "profile_use_background_image":true,
            "followers_count":2570,
            "contributors_enabled":false,
            "friends_count":16,
            "following":false,
            "geo_enabled":false,
            "profile_background_color":"ffffff",
            "protected":false,
            "favourites_count":1,
            "name":"Gillian McKeith",
            "verified":false,
            "profile_text_color":"000000",
            "url":"http://www.gillianmckeith.com",
            "id":15354299,
            "follow_request_sent":false,
            "notifications":false,
            "time_zone":"London",
            "utc_offset":0
        },
        "place":null,
        "geo":null,
        "in_reply_to_screen_name":null,
        "favorited":false,
        "id":18517738649,
        "in_reply_to_user_id":null,
        "text":"The moral of the story:  Love your neighbour and your enemies too."
    }
]);

That is data from the Twitter API, containing the public information about the @gillianmckeith account together with the most recent tweet from that account, in a standard data format called JSON. You can get the same info from this link, just to show that there's nothing special going on here. In fact, here's the same info but for my Twitter account.

So, whatever the reason might be that some person has removed the visible evidence of that Twitter account being related to Ms McKeith, the fact is that, at the time of writing, her web site is causing data from that Twitter account to be loaded into every JavaScript-enabled web browser that visits her home page; it just doesn't cause them to display the information once they've received it.


2 responses to “Antisocial Networking”

  1. It does smack of someone being told to remove the content, but not being told why they need to remove the content: you tell your webadmin “get rid of the link to Twitter”, and he’ll comment it out knowing that you’ll be wanting it back in a couple of days once you change your mind again. It’s what I’d do unless the customer explicitly said “get rid of all links and pretend they were never there” (or something similar).