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, 28 August 2021

Want to be a more holistic healthcare company? Add some Ginger 

When Headspace merged with on-demand mental healthcare platform Ginger, I was surprised. After all, Ginger raised $100 million in Series E funding just a few months ago — and last time I spoke to CEO Russell Glass, he stressed the importance of integrating into employer-paid health plans. To me, Headspace’s meditation app is about as direct to consumer as one could go, so what business did Ginger have to get into literal business with it? Fragmentation, much?

Turns out, there’s precedent, and, per a slew of health tech investors and techies, there is more consolidation and commodification to come in behavioral health. I love learning things!

As we discussed during a Twitter Spaces about the merger, Headspace has been pursuing clinical validation for mindfulness for quite a while. That validation could help it pitch its somewhat-fresh employee benefit program and compete with its closest rival, Calm. By merging with an on-demand mental healthcare platform such as Ginger, Headspace can now offer a more holistic approach to mental health. Ginger, for those who don’t know, specializes in helping people access care when they need it, ranging from text-based support to escalation to trainers in real time.

But beyond the news, what does this mean? There are a few main takeaways I had after the Spaces. First, in the best-case scenario, Headspace and Ginger’s merger could show us what a holistic and integrative approach to mental health could look like. As Omers Ventures’ Chrissy Farr said, some patients could use a combination of approaches that vary over time. The industry is evolving so that users have more options when it comes to mental health care; from meditation to texts to Zoom therapy sessions. Second, and this came up throughout the chat, parts of behavioral health are going to get commoditized as the sector grows. Now, it’s no longer enough to just connect a user to a specialist. How do platforms more thoughtfully connect nuanced patients to nuanced options? It’s more than holistic, it’s integrative, says Lux Capital’s Deena Shakir.

Finally, 2021 is all about consolidation — and that includes digital health. 7WireVenture’s Alyssa Jaffe noted that 80% of the cost and complexity in mental health is with severe mental illnesses, but 80% of startups begin with lower acuity care. The new combined entity could become more acquisitive in what it aspires to address, now, beyond non-acute conditions.

In the rest of the newsletter, we’ll get into fintech’s friendly foes, edtech turning into SaaS and a must-read LatAm deep dive. As always, you can support me by following me on Twitter @nmasc_, where I post all my work throughout the week.

For the love of fintech

Image of a businessman blowing up a green balloon with a dollar sign on it to represent investment.

Image Credits: Malte Mueller (opens in a new window) / Getty Images

On Equity this week, we spoke about how fintech startups Ramp and Brex are growing into their massive valuations. The conversation bubbled up because Ramp raised money at a $3.9 billion valuation, while Brex announced the launch of a $150 million debt venture business within days of each other.

Here’s what to know: Ryan Lawler and Alex Wilhelm dug into Brex and Ramp’s diverging M&A strategies for deeper insight on how to differentiate in the corporate management space.

From the story:

While Ramp seems primarily interested in providing customers a detailed view into company finances with an eye toward cost control, many of Brex’s big announcements and initiatives lately have focused on helping provide small businesses — particularly e-commerce sellers — faster access to cash flows through instant payouts.

Personal finance for startups: 

 Hiring is (still) hard 

Image Credits: alashi (opens in a new window) / Getty Images (Image has been modified)

I wrote two stories this week that underscore two realities about the hiring landscape today. First, I reported that tech bootcamp Flockjay cut at least half of its workforce as it pivoted away from its original job placement focus. Second, Workstream raised $48 million for its text-based recruitment platform for hourly workers.

Here’s what to know: Flockjay’s entire premise was helping non-tech workers break into tech through sales jobs. Its recent pivot to a B2B SaaS tool tells us how hard of a business job placement may be, even in high-demand roles such as sales operations. A day later, Workstream raised money for its recruitment software for the hourly worker. The $48 million Series B is a note on how employers facing high turnover are willing to spend money on recruitment tools that meet candidates where they are, which may be their cell phones.

While one story tells us hiring is a hard business to do at scale, another shows that existing gaps still need focused attention.

Dear Seedlings, take note: 

Around TC

TechCrunch Disrupt is less than a month away. And I’m shook.

Use “Mascarenhas20” for a sweet, sweet discount code when you buy your ticket. It’s a stacked line up of candid speakers and no-BS questions. But, in case you need more convincing on why it’s worth attending, check this out:

Newsroom top picks

Favorites from TechCrunch

Favorites from Extra Crunch

To end, a friendly reminder that it’s still hard for most people to raise capital these days. The boom, my friends, is uneven.

Till next week,

N



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support