Notes for "What Happened to Sharing Is Caring" (1): In the Eye of the Shitstorm

Bombay, March 23, 2018 | #Aadhar #CambridgeAnalytica #Facebook

Here in Bombay, no-one cares about the Cambridge Analytica storm. There's wind from the east, an unprecedented heatwave, the Aadhar Cyclone, and a series of savage social media shitstorms that just doesn't want to end. South Asia's largest garbage dump (Deonar), however, is currently not on fire (1), and India's most experimental nuclear reactor (at the Homi Bhabha Centre for Atomic Research), right next to it, is not generating any major headlines these days. Even the burning lakes of Bangalore are absent from the evening news. And so am I. I haven't looked at twitter or reddit for a month, and I haven't read the Guardian or the Washington Post either. It's been too hot, it's been too busy, and I couldn't sleep for weeks. A storm is blowing, but not from paradise. (2) Mitochondrial Eve (3) and Y-chromosomal Adam (4) were already facing a similar situation. It's been apocalypse now forever, for millennia. The pile of debris grows skyward. CA merely recycles it. They're fake fake news, a waste of time (5), just like Facebook, which I haven't seen in a long time. I just got really tired of it. I had joined it to make 42 posts, "Facebook Party Suicide (1)" to "Facebook Party Suicide (42)"; as far as I can remember, I made 41. What finally killed it, for me, was chat. I need another messaging client like I need a hole in my head.

 

Still, there are a few things that came to my mind:








 

So what's to be done?

Before you quit, try something like:

'''
load your activity log, scroll to the very bottom,
save as html, then run this to export your data.
this works for me; it may or may not work for you.
no copyright 2017 robert luxemburg. public domain.
'''

import datetime
import json
import os
import re

def format_text(text):
    for pair in [
        ('<br> ?', '\n'),
        ('<span class="see_more_link_inner">See More</span>', ''),
        ('<[^<]+?>', ' '),
        ('( +)', ' ')
    ]:
        text = re.sub(pair[0], pair[1], text)
    return text.strip()

dirname = 'in'
filename = os.path.join(dirname, [
    f for f in os.listdir(dirname) if f.endswith('.html')
][0])
username = filename[3:-5]

with open(filename) as f:
    html = f.read()

separator = '<table class="uiGrid '
parts = [separator + part for part in html.split(separator)[1:]]
print(len(parts), 'items')
items = []

for html in parts:
    item = {}
    x = re.split('</td><td.*?>', html)
    meta, data = x[0], x[1]
    item['meta'] = format_text(meta)
    match = re.search('{}</a> (.+?)\.? ?<'.format(username), meta)
    if match:
        item['action'] = match.group(1)
    match = re.search('>(\w{3} \d{1,2}, \d{4} \d{1,2}:\d{2}(am|pm))<', meta)
    if match:
        item['time'] = datetime.datetime.strptime(
            match.group(1), '%b %d, %Y %I:%M%p'
        ).strftime('%Y-%m-%d %H:%M')
    item['text'] = format_text(data)
    items.append(item)

with open('out/{}.json'.format(username), 'w') as f:
    f.write(json.dumps(items, indent=4, sort_keys=True))

html = (
    '<meta charset="utf-8"/>'
    '<style>div { font-family: sans-serif; font-size: 13px; line-height: 18px;'
    'margin: auto; width: 512px; } .time { margin-top: 12px; }</style>'
)
for item in items:
    for key in ['time', 'action', 'text']:
        html += '<div class={}>{}</div>\n'.format(
            key, re.sub('\n', '<br/>', item.get(key, ''))
        )

with open('out/{}.html'.format(username), 'w') as f:
    f.write(html)

 

But most importantly, quit for real:

# It's not enough to remove yourself from Facebook. You
# will have to remove Facebook from the devices you use
# to access the Internet. The following is incomplete and
# hopelessly outdated, of course, but you'll get the gist.
# 
# /etc/hosts

127.0.0.1 0-act.channel.facebook.com 
127.0.0.1 0-edge-chat.facebook.com 
127.0.0.1 1-act.channel.facebook.com 
127.0.0.1 1-edge-chat.facebook.com 
127.0.0.1 2-act.channel.facebook.com 
127.0.0.1 2-edge-chat.facebook.com 
127.0.0.1 3-act.channel.facebook.com 
127.0.0.1 3-edge-chat.facebook.com 
127.0.0.1 4-act.channel.facebook.com 
127.0.0.1 4-edge-chat.facebook.com 
127.0.0.1 5-act.channel.facebook.com 
127.0.0.1 5-edge-chat.facebook.com 
127.0.0.1 6-act.channel.facebook.com 
127.0.0.1 6-edge-chat.facebook.com 
127.0.0.1 act.channel.facebook.com 
127.0.0.1 api-read.facebook.com 
127.0.0.1 api.ak.facebook.com 
127.0.0.1 api.connect.facebook.com 
127.0.0.1 api.facebook.com 
127.0.0.1 app.facebook.com 
127.0.0.1 apps.facebook.com 
127.0.0.1 ar-ar.facebook.com 
127.0.0.1 attachment.fbsbx.com 
127.0.0.1 attachments.facebook.com 
127.0.0.1 b-api.facebook.com 
127.0.0.1 b-graph.facebook.com 
127.0.0.1 b.static.ak.facebook.com 
127.0.0.1 b.static.ak.fbcdn.net 
127.0.0.1 badge.facebook.com 
127.0.0.1 beta-chat-01-05-ash3.facebook.com 
127.0.0.1 bigzipfiles.facebook.com 
127.0.0.1 blog.facebook.com 
127.0.0.1 channel-ecmp-05-ash3.facebook.com 
127.0.0.1 channel-staging-ecmp-05-ash3.facebook.co m 
127.0.0.1 channel-testing-ecmp-05-ash3.facebook.co m 
127.0.0.1 check4.facebook.com 
127.0.0.1 check6.facebook.com 
127.0.0.1 code.facebook.com 
127.0.0.1 connect.facebook.com 
127.0.0.1 connect.facebook.net 
127.0.0.1 d.facebook.com 
127.0.0.1 de-de.facebook.com 
127.0.0.1 developers.facebook.com 
127.0.0.1 edge-chat.facebook.com 
127.0.0.1 ent-a.xx.fbcdn.net 
127.0.0.1 ent-b.xx.fbcdn.net 
127.0.0.1 ent-c.xx.fbcdn.net 
127.0.0.1 ent-d.xx.fbcdn.net 
127.0.0.1 ent-e.xx.fbcdn.net 
127.0.0.1 es-la.facebook.com 
127.0.0.1 external.ak.fbcdn.net 
127.0.0.1 facebook.com 
127.0.0.1 facebook.de
127.0.0.1 facebook.fr
127.0.0.1 fb.me
127.0.0.1 fbcdn-photos-a.akamaihd.net 
127.0.0.1 fbcdn-photos-e-a.akamaihd.net 
127.0.0.1 fbcdn-profile-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-a-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-b-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-c-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-d-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-e-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-f-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-g-a.akamaihd.net 
127.0.0.1 fbcdn-sphotos-h-a.akamaihd.net 
127.0.0.1 fbcdn-video-a-a.akamaihd.net 
127.0.0.1 fbcdn-video-b-a.akamaihd.net 
127.0.0.1 fbcdn-video-c-a.akamaihd.net 
127.0.0.1 fbcdn-video-d-a.akamaihd.net 
127.0.0.1 fbcdn-video-e-a.akamaihd.net 
127.0.0.1 fbcdn-video-f-a.akamaihd.net 
127.0.0.1 fbcdn-video-g-a.akamaihd.net 
127.0.0.1 fbcdn-video-h-a.akamaihd.net 
127.0.0.1 fbcdn-video-i-a.akamaihd.net 
127.0.0.1 fbcdn-video-j-a.akamaihd.net 
127.0.0.1 fbcdn-video-k-a.akamaihd.net 
127.0.0.1 fbcdn-video-l-a.akamaihd.net 
127.0.0.1 fbcdn-video-m-a.akamaihd.net 
127.0.0.1 fbcdn-video-n-a.akamaihd.net 
127.0.0.1 fbcdn-video-o-a.akamaihd.net 
127.0.0.1 fbcdn-video-p-a.akamaihd.net 
127.0.0.1 fbcdn-vthumb-a.akamaihd.net 
127.0.0.1 fbcdn.com 
127.0.0.1 fbcdn.net 
127.0.0.1 fbexternal-a.akamaihd.net 
127.0.0.1 fbstatic-a.akamaihd.net 
127.0.0.1 fr-fr.facebook.com 
127.0.0.1 graph.facebook.com 
127.0.0.1 hi-in.facebook.com 
127.0.0.1 inyour-slb-01-05-ash3.facebook.com 
127.0.0.1 it-it.facebook.com 
127.0.0.1 ja-jp.facebook.com 
127.0.0.1 login.facebook.com 
127.0.0.1 m.facebook.com 
127.0.0.1 messages-facebook.com 
127.0.0.1 mqtt.facebook.com 
127.0.0.1 newsroom.fb.com 
127.0.0.1 orcart.facebook.com 
127.0.0.1 origincache-ai-01-05-ash3.fbcdn.net 
127.0.0.1 origincache-starfacebook-ai-01-05-ash3.f acebook.com 
127.0.0.1 photos-a.ak.fbcdn.net 
127.0.0.1 photos-b.ak.fbcdn.net 
127.0.0.1 photos-c.ak.fbcdn.net 
127.0.0.1 photos-d.ak.fbcdn.net 
127.0.0.1 photos-e.ak.fbcdn.net 
127.0.0.1 photos-f.ak.fbcdn.net 
127.0.0.1 photos-g.ak.fbcdn.net 
127.0.0.1 photos-h.ak.fbcdn.net 
127.0.0.1 profile.ak.facebook.com 
127.0.0.1 profile.ak.fbcdn.net 
127.0.0.1 pt-br.facebook.com 
127.0.0.1 s-external.ak.fbcdn.net 
127.0.0.1 s-static.ak.facebook.com 
127.0.0.1 s-static.ak.fbcdn.net 
127.0.0.1 s-static.facebook.com 
127.0.0.1 scontent-a-lax.xx.fbcdn.net 
127.0.0.1 scontent-a-sin.xx.fbcdn.net 
127.0.0.1 scontent-a.xx.fbcdn.net 
127.0.0.1 scontent-b-lax.xx.fbcdn.net 
127.0.0.1 scontent-b-sin.xx.fbcdn.net 
127.0.0.1 scontent-b.xx.fbcdn.net 
127.0.0.1 scontent-c.xx.fbcdn.net 
127.0.0.1 scontent-d.xx.fbcdn.net 
127.0.0.1 scontent-e.xx.fbcdn.net 
127.0.0.1 scontent-mxp.xx.fbcdn.net 
127.0.0.1 scontent.xx.fbcdn.net 
127.0.0.1 secure-profile.facebook.com 
127.0.0.1 secure.facebook.com 
127.0.0.1 sphotos-a.xx.fbcdn.net 
127.0.0.1 ssl.connect.facebook.com 
127.0.0.1 ssl.facebook.com 
127.0.0.1 star.c10r.facebook.com 
127.0.0.1 star.facebook.com 
127.0.0.1 static.ak.connect.facebook.com 
127.0.0.1 static.ak.facebook.com 
127.0.0.1 static.ak.fbcdn.net 
127.0.0.1 static.thefacebook.com 
127.0.0.1 staticxx.facebook.com 
127.0.0.1 touch.facebook.com 
127.0.0.1 upload.facebook.com 
127.0.0.1 video.xx.fbcdn.net 
127.0.0.1 vpn.tfbnw.net 
127.0.0.1 vthumb.ak.fbcdn.net 
127.0.0.1 vupload.facebook.com 
127.0.0.1 vupload2.vvv.facebook.com 
127.0.0.1 www.connect.facebook.net 
127.0.0.1 www.facebook.com 
127.0.0.1 www.facebook.de 
127.0.0.1 www.facebook.fr 
127.0.0.1 www.fbcdn.com 
127.0.0.1 www.fbcdn.net 
127.0.0.1 www.login.facebook.com 
127.0.0.1 zh-cn.facebook.com 
127.0.0.1 zh-tw.facebook.com

 

Because explicit is better than implicit, simple is better than complex, and now is better than never. Although these days, it may not be obvious at first, even if you're Dutch. (6)

Facebook fa┼čizme mezar olacak!

 

(1) A few days later, it would be :/

(2) Angelus-Novus-Paul-Klee-Walter-Benjamin-Ceasefire.jpg

(3) https://en.wikipedia.org/wiki/Mitochondrial_Eve

(4) https://en.wikipedia.org/wiki/Y-chromosomal_Adam

(5) https://thegermanissue.com/texts/re_cambridge_analytica.html

(6) rolux$ python3
Python 3.6.2 (default, Aug 11 2017, 15:50:31)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters
[...]