Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 26 November 2019

You can take my Dad’s tweets over my dead body

Editor’s note: Drew is a geek who first worked at AOL when he was 16 years old and went on to become a senior writer at TechCrunch. He is now the VP of Communications for venture equity fund Scaleworks.

There are a few ways that people use Twitter, but for the most part the ones who have pushed the social platform into the national lexicon are regular users who like to communicate with each other using the thing. They’re the ones who use it a lot. They’re the ones who make Twitter go.

Now, mind you, I’m an extreme case. I share a lot. I’ve shared my cancer diagnoses, my stem cell treatment, new jobs, my wedding. And the loss of my father Barry.

Today, Twitter announced that it will reclaim dormant accounts. That is, if you haven’t logged into yours for a long time, it is considered inactive and will be included in the reclamation process.

At first I thought that was pretty cool. There are a ton of accounts that get squatted on, forcing new users to use crappy AOL-like names, such as Joe583822. No fun at all. And these accounts aren’t even in use! As in not active.

No big deal.

But then I saw this:

My heart sank. And I cried. You see, I didn’t think about this. It is a big deal.

My father’s Twitter account isn’t active. He passed away over four years ago. My Dad was a casual tweeter at best. He mostly used it because I, well, overused it. And it was charming. Once in a while he’d chime in with a zinger of a tweet and I’d share it humbly with the folks who kindly follow me.

He got a kick out of that, and so did I. I still do. I still read his tweets, and from time to time I still share them with you. It’s my way, odd or not, of remembering him. Keeping his spirit alive. His tweets are timestamped moments that he shared with the world.

And Twitter is sweeping them up like crumpled-up paper and junk in a dustbin.

Surely, my father isn’t the only person who has passed away and left a Twitter account unkept — or, as the company puts it, “inactive.” I can think of a few others. And I get even more upset at the thought of their thoughts disappearing. I might not remember everyone we’ve lost, but not being able to recall something they’ve said or shared in the past is depressing.

When people ask me why I use Twitter so much, it’s mostly because I see the platform as a living organism. It’s not perfect. In fact, it’s awful sometimes. Lately, a lot of times.

During events and during holidays it’s almost as if that tiny little app on my phone has a pulse. And a heart. Because of course it does: It’s full of human beings with feelings and real thoughts. That’s what makes Twitter Twitter.

And just because someone’s pulse no longer beats doesn’t mean their thoughts no longer matter.

I sincerely hope that Twitter didn’t think about this first and reverse course. Perhaps they’ll offer a way to memorialize an account. I don’t have my dad’s login. I can’t “wake up” his account to keep it safe. I am truly sad at the thought of losing some of his quirky nerdy tweets.

Especially this one:

My dad thought I was the only person on the damn site and I never corrected him or schooled him on Twitter. He used it the way he wanted to, and that reminds me of the person he was. If you take that away from me, then what is Twitter anyway?

Facebook allows you to memorialize someone’s page and that’s pretty great. Unfortunately, my father’s page was deactivated and deleted without my having been consulted. By the time I realized it was gone, Facebook told me there was nothing it could do. It was really traumatizing for me and my other family members. So many interactions there, thoughts, smiles. A timeline. No, a time capsule.

Just gone. Like my dad.

Big tech companies are good at a lot of things, but what they seem to lack is collective empathy and heart. When humans use the things you build and you stop treating them like humans, but rather like bits and bytes and revenue dollars, you’ve given your soul away. And maybe it’s just me getting older, but I’ve had about enough of it.

To quote the late great Barry Olanoff:

Think about it, Twitter. Do better. Because every time you make me question your humanity, I’m one step closer to not being that whale of a user that helped get you here in the first place.



from TechCrunch https://ift.tt/2DlcKvg
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support