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, 23 March 2021

Y Combinator widens its bet in edtech in latest batch

Y Combinator is slowly growing its stake in education companies, as the sector balloons with newfound demand from remote learners. In its latest batch, the famed accelerator had its highest number of edtech startups yet: 14 companies from around the world, working on everything from teacher monetization to homework apps to ways to train software engineers in an affordable fashion.

While Y Combinator isn’t the definitive source on what success in early-stage startups looks like — it quite literally has a post-mortem dinner after Demo Day to celebrate failure — it does serve well in providing an illustrative glance of how entrepreneurs are thinking about certain sectors in a given moment in time. Managing director Michael Seibel said that the number of startups in each sector isn’t a Y Combinator choice, but is in line with the concentration of applicants in each sector. In other words, YC is backing more edtech companies because more edtech companies are applying to the accelerator.

One dynamic worth pointing out here is that, of the 14 edtech startups in this batch, only two have a woman founder, UPchieve and Degrees of Freedom. Y Combinator provided aggregate batch diversity, stating that 19% of companies in W21 include a woman founder, and 10% of founders in the entire batch are women. It’s a slight uptick from the last batch, but not an immense jump.

With this context, I will use the current edtech cohort within the batch to sketch out one version of the future of education in the eyes of this specific demographic of early-stage founders.

Internationalization is a factor

The current YC batch has 50% of its startups based outside of the United States, a first for the accelerator. The growing internationalization of Y Combinator might help partially explain the uptick in edtech companies. The growth of companies like India’s Byju’s, one of the most valuable edtech companies in the world, shows how consumer spending in education companies internationally is impressive, and it’s clear that early-stage edtech startups are taking note.

Only two of Y Combinator’s 14 edtech investments are from the United States, with the highest concentrations in South America and India.

  • Manara: A marketplace to connect Middle East talent to tech jobs.
  • Prendea: Peru-based startup that offers live, online after-school classes for Spanish-speaking kids.
  • Avion School: The education startup teaches Filipino students to be remote software engineers around the world.
  • Poliglota: A language school for Latin America.

The future is consumer over B2B

The vast majority of startups in the current edtech batch charge consumers, instead of institutions or enterprises, for services. In some ways, edtech startups going for consumers instead of institutions isn’t new: it’s always been easier to convince a parent instead of a public school to pay for a service simply due to red tape. Consumers are an easier way to reach a venture-demanded scale, and that’s always been a truth of edtech.

  • Kidato: Targeting the middle class of Africa, Kidato is an online school for K-12 students. The startup has a focus on quality and affordability.
  • Codingal: An afterschool program for Indian kids to learn coding.

Still, it’s noteworthy that we’re not seeing too much experimentation in business model here, despite the pandemic and that some schools have begun to invest more in edtech services.

A potential hurdle that these companies might face is access. If it costs to use your service, you can only educate so many people from specific income groups. As a result, income share agreements, or ISAs, were especially present in this batch, a set-up that allows a student to hold off on paying for an education until they are employed. Upon employment, said student has to give a percentage of their income to the company until their debt is paid. While the model is controversial, it was popularized by YC graduate Lambda School and continues to be one way to make the upfront cost of school more popular.

  • Pragmatic Leaders: The startup wants to build a more cost-effective MBA, which is free until the student is hired post-grad.
  • Awari: The São Paulo-based startup uses income share agreements to help students in Brazil afford a tech education. Courses range from data analytics to product UX and growth marketing.

Acadpal, mentioned later, is an outlier here selling to schools in India. Before I move on to our next section, I do want to shout out two startups that I think embody the most ambitious bets in business model:

Zoom University lives on

Despite the struggles of “Zoom University,” this batch of edtech founders clearly believe that the future of instruction is through online courses. This was perhaps the most overwhelming thread tying together all the companies in the sector: a bet on one of these companies is a bet that remote education will become status quo.

As previous sections show, a number of startups are offering online coding platforms for specific demographics. Now, I always have my inbox filled with different “Lambda School for X” startups, so seeing a variety of these startups pop up yet again isn’t exactly exciting. However, the pandemic did show how much community and network enhances a school experience. If these online schools can pull off strong partnerships with employers and alumni, I think there’s a huge opportunity here.

  • Turing College: The Lithuania-based online data science school uses income-share agreements to bring affordability to education.
  • Coderhouse: An Argentina-based startup that wants to build a live, online tech education for the Spanish-speaking populations of the world.

That said, where there’s big opportunity there’s always a lot of competition. These startups will have to find a way to differentiate themselves, like the one below:

  • Unschool: The startup wants to tie higher education to employment outcomes, so it’s building a platform to increase completion rates in India with a guarantee of internships.

There were bets on the infrastructure of how courses get done online, from course creation to completion.

  • Pensil: A platform that helps YouTube teachers in India monetize their courses.
  • Acadpal: A learning app for teachers in India to create and share homework, and for students to complete and discuss assignments.
  • CreatorOS – Questbook: This company wants to make it easier for teachers to teach online courses. It gives professionals the tools they need to launch a course within minutes, with a focus on a bite-sized end-product.

In conclusion

To end, the edtech startups in the current YC batch are more complementary to each other than competitive. For a homework platform like Acadpal to succeed, it would be good news for a company like Codingal, which helps bring afterschool learning online, to get funding as well. For Unschool, which ties higher-ed to employment, a company like Degrees of Freedom could be a key partner or integration for students from a low-income background.

Edtech is growing — and fast — so the fragmentation of different plays is somewhat expected. And while this batch’s hard work starts now, it’s illuminating to understand where the earliest entrepreneurs out there are seeing promise.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support