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

Saturday, 27 March 2021

How I Podcast: Science Vs’s Rose Rimler

The beauty of podcasting is that anyone can do it. It’s a rare medium that’s nearly as easy to make as it is to consume. And as such, no two people do it exactly the same way. There are a wealth of hardware and software solutions open to potential podcasters, so setups run the gamut from NPR studios to USB Skype rigs (the latter of which has become a kind of default during the current pandemic).

We’ve asked some of our favorite podcast hosts and producers to highlight their workflows — the equipment and software they use to get the job done. The list so far includes:

Election Profit Makers’ David Rees
Welcome to Your Fantasy’s Eleanor Kagan
Articles of Interest’s Avery Trufelman
First Draft and Track Changes’ Sarah Enni
RiYL remote podcasting edition
Family Ghosts’ Sam Dingman
I’m Listening’s Anita Flores
Broken Record’s Justin Richmond
Criminal/This Is Love’s Lauren Spohrer
Jeffrey Cranor of Welcome to Night Vale
Jesse Thorn of Bullseye
Ben Lindbergh of Effectively Wild
My own podcast, RiYL

Science! It’s a thing you should trust! At least that’s what people keep telling me on Twitter. But how do you know which science to trust? Thankfully, Science Vs. from Spotify/Gimlet exists to answer the difficult questions. The show wades into scientific fads and conspiracies, ranging from 5G to vaping in order to sift out the science fiction from science fact. This week, producer Rose Rimler joins us to detail how the show has evolved during the pandemic. 

Image Credits: Rose Rimler

Before COVID, we worked out of an office in Brooklyn that had 10+ recording studios and a number of small, glass-walled meeting rooms set up for the table reads we call “edits.” We spent much of the day wandering around the office looking for one another in these offices and studios, which I guess is how I racked up an average of 6,700 steps a day in 2019 without really trying. Anyway, during the pandemic, we switched to recording ourselves and our interviews at home on portable recorders, which Gimlet provided.

We all use Zoom recorders and directional/shotgun mics. My recorder is a Zoom H6 and my mic is a Sennheiser MKE600. I think this is a very good quality mic because I don’t find a need to go into a closet or under a blanket to record myself. I just sit in my room, hold the mic to my chin and hit record. It seems to turn out fine, although maybe the audio engineers are secretly furious with me for this. The only way to know for sure is to repeatedly tweet @petaplaysbass demanding answers.

Image Credits: Rose Rimler

It’s a different story when it comes to the audio we get from our guests. The most basic way to just grab audio from someone is to record their phone call, or Zoom/Skype/Google Hangout session. I do this with a cord that plugs in from the Zoom recorder into my laptop, or (via adaptor) into my phone. The problem with this method is that the “phone tape” audio is kind of hard to hear. I know this from personal experience because when I listen to podcasts that use phone tape off my iPhone, without headphones, I can barely hear what the person is saying. So, I think getting better audio quality from guests really does matter for the audience. How to do that? The best way we’ve come up with is to ask them to conduct the interview over a computer app while using their smartphone as a recording device.

The iPhone comes with an app called “voice memo” that most people can use, and the phone’s mic is surprisingly good quality. They record their end of the conversation and send the file to us. If I’m feeling particularly confident in my ability to direct people, I might also ask them to pick a quiet, well-furnished room, put their phone into airplane mode, and hold it in front of them as they talk so the mic isn’t too far away (or place it on a stack of books near them).

Image Credits: Rose Rimler

We’ve always been a really collaborative show, which hasn’t changed since the pandemic. While the lead producer writes the first few drafts of the script, they collaborate with the host and editor to do re-writes the last week or so before we publish. That’s why we were always huddled in various offices before the pandemic, writing through the script together. The difference now is we huddle over Google Hangout.

Also, I get many, many fewer steps.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support