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();

Wednesday, 24 March 2021

Gillmor Gang: Grifters Paradise

The other day, I attended a celebration of one of the pioneers of collaboration technology, Ray Ozzie. The father of Lotus Notes, Ozzie left Lotus and his startup firm Iris after a hostile takeover by IBM, and eventually joined Microsoft when that company acquired his next startup, Groove. By “attended” I mean a virtual event put on by the Computer History Museum in Silicon Valley. Ray’s peers and partners gathered in a Zoom chat, with a tour of Ray’s early days including amazing hardware like a touchscreen based enterprise chat system called Plato, and these strange things called floppy disks with the earliest source code for DOS and other prehistoric things called operating systems.

At Microsoft, Ray soon became one of several CTOs, and eventually took the role of Chief Software Architect as he helped midwife the company’s move toward the Web and away from its dominant Office suite. Politically, he faced the twin power centers in Redmond: Office and Windows, the latter of which has receded in strategic importance as mobile technologies like iOS and Android took over in the wake of Apple’s iPhone success. But there’s no doubt that Ray’s elevation allowed Bill Gates, who spoke movingly about Ray at the CHM, to pivot to focus with his wife on the philanthropy role at their Foundation. Talk about just in time, as Bill’s voice in the battle against the pandemic has often been a trusted beacon of hope and science in a sea of denial, misinformation, and well, you know the rest.

In his gracious speech, Ray mentioned Gates, Lotus founder Mitch Kapor, and a name less well known to many, Dave Winer. I’m not positive why Dave was called out, but I’m sure it had something to do with Winer’s work championing the development of blogging, RSS, and its attachment extensions that birthed podcasting. In today’s climate of media streaming, newsletters, and live conversation-casting a la Clubhouse, surviving the pandemic means marshaling our tools to work and live more deeply and richly from anywhere. Talk about just in time.

Clubhouse is under attack in the Twitterverse, with some suggesting it’s just another outlet for the noise of social media, or a business idea destined for landfill in the wake of the next shiny object. Clubhouse counterattacked with another overflow megasession from Facebook’s Zuckerberg and the CEOs of Spotify and Shopify. The messaging app Telegram pushed a voice chat 2.0 release with tools for inviting speakers, listeners, raising your hand to speak, and recording built in. The stampede continues, but to what end? Like NFTs, a grifters’ paradise?

Perhaps we’re experiencing a massive multiplayer game where collaborative innovations are being combined and redefined on the fly. One Clubhouse session materialized with one of the big thinkers in mobile, Benedict Evans. After several years as an analyst at Andreessen Horowitz (A16Z) , he’s moved back to London and gone paid newsletter with some of his 150,000 plus subscribers to his weekly free version. Struggling as I am with rising subscription costs, I’ve been making do with waiting for some of his firewalled essays to play off in the free version. But here was a session with Benedict and another former A16Z analyst focused on NFTs and crypto, Morgan Beller.

The talk was at a torrid clip, but meta across both the upside possibilities and the context of earlier innovations that seemed heavy on the gamble but paid off. This was vintage Evans in a casual setting where he gave me a ton of signal, bouncing off an analyst I immediately followed after ten minutes or so, adding her to a notification stream the next time she joined in. At one point, the moderator pinged me to invite me to join in, but thankfully I chose the “maybe later” option so I could go back to desperately trying to keep up with the flow. Maybe later when I actually know something by learning from people who live and breathe this stuff. I can’t even be sure what fungible means so far.

It was not your average big ticket press conference; it was access to people steeped in their interests and willing to be measured against the astuteness of their observations. The social following tools ostensibly produce more effective notifications based on providing interruptions the listener is willing to accept. The size of the crowd is manageable (50 -100) and drafts off the characteristics of not just who is on stage but who’s listening and in what combinations. It’s a mixture (I hope) of follows plus percentage of successful clicks on targeted notifications.

This all feels like a mashup of collaborative platforms, menu items in a new operating system where ideas and tactics are tested transparently in the open. Remember our former president, who famously laundered the unthinkable in public as a way of commanding the conversation. The alphabet soup of NFTs and SPACs is difficult to separate from MLMs and such of previous eras, but eventually we’ll figure out what’s real. A good place to start is in the trenches with practitioners of this new arts yakking it up on the new media channels.

from the Gillmor Gang Newsletter

__________________

The Gillmor Gang — Frank Radice, Michael Markman, Keith Teare, Denis Pombriant, Brent Leary and Steve Gillmor. Recorded live Friday, March 19, 2021.

Produced and directed by Tina Chase Gillmor @tinagillmor

@fradice, @mickeleh, @denispombriant, @kteare, @brentleary, @stevegillmor, @gillmorgang

Subscribe to the new Gillmor Gang Newsletter and join the backchannel here on Telegram.

The Gillmor Gang on Facebook … and here’s our sister show G3 on Facebook.



from TechCrunch https://ift.tt/3tPx8wI
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support