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, 25 February 2020

Investors bet millions on Microverse, a Lambda School for the developing world

The student loan crisis in the U.S. has left venture capitalists searching for novel approaches to financing higher education, but can the same systems designed for helping coders in Silicon Valley get jobs at Google help underserved students in developing countries become part of a global work force?

Similar to the buzzy San Francisco startup Lambda School, Microverse is a coding school that utilizes ISAs, or Income Share Agreements, as a means of allowing students to learn now and pay later with a fixed percentage of their future salary. Microverse isn’t aiming to compete heavily with Lambda School for U.S. students, however, they are looking more heavily at courting students in developing countries. The startup currently has students in 96 countries with Mexico, Brazil, Kenya, Nigeria, Cameroon and India among their most represented, CEO Ariel Camus tells TechCrunch.

The pitch of bringing the ISA model worldwide has attracted investor interest. The startup tells TechCrunch it has just closed $3.2 million in seed funding from venture capitalists including General Catalyst and Y Combinator.

Lambda School and its ilk have excited plenty of investors. There has also been plenty of scrutiny and some questions on whether quickly scaling to venture-sized returns or building revenue by selling off securitized ISAs ends up pushing these startups towards cutting corners.

Microverse, for its part, is already built quite lean. The program has no full-time instructors. The entire curriculum is a self-guided English-only lesson plan that relies on students that are just months ahead in the program serving as “mentors.” Students are expected to spend eight hours per day pushing through the curriculum with assigned study partners and peer groups, graduating in about eight months on average, Camus says.

“The average starting salary for us — it’s of course lower and that’s expected,” said Camus. “The only way we can offer as good or better learning experience as Lambda or any other campus-based education in the US — with salaries that will usually be lower — is if our costs are lower, and that’s why we have designed the entire system to allow us to scale faster. We don’t have to hire teachers, we don’t have to create content and that allows us to adjust to changes in the market and new technologies much much faster.”

While Lambda School’s ISA terms require students to pay 17% of their monthly salary for 24 months once they begin earning above $50,000 annually — up to a maximum of $30,000, Microverse requires that graduates pay 15% of their salary once they begin making more than just $1,000 per month, though there is no cap on time so students continue payments until they have repaid $15,000 in full. In both startup’s cases, students only repay if they are employed in a field related to what they studied, but with Microverse, ISAs never expire so if you ever enter a job adjacent to your area of study, you are on the hook for repayments. Lambda School’s ISA taps out after five years of deferred repayments.

Without much of the nuance in how Lambda School or Holberton School have structured their ISA terms, Microverse structure seems less amenable, but Camus defends the terms as a necessary means to getting around under-reporting.

“When you use a cap, you’re using using a perverse incentive for under-reporting,” Camus says. “In the U.S. where you can enforce tax reviews, there’s no need to worry about that and I think it’s better if you can cap it, but in most of the developing countries where there is not a strong tax system, it isn’t a possibility.”

For students that qualify terms for repaying this ISA, they are, again, on the hook for $15,000. Charging such a hefty fee for an online course without full-time instructors geared towards students in developing countries could be controversial for a venture-backed startup, but it will also put a heavy burden on the school to keep their students satisfied and help them find employment via its network of career counselors.

The CEO acknowledges the high price of Microverse’s instruction, “It is huge,” but says that the premium is necessary to build a business around getting students in developing countries careers in the global workforce. Microverse is keeping its total number of admitted students small early on so that it can ensure it’s meeting their needs, Camus says, noting that Microverse accepts just 1% of applicants, adding 70-80 students to the program per month.

“This conversation around the ISA in the U.S. that is so hot, you have to frame it in such a different way when you’re talking about students in developing and emerging countries. Like, there are no alternatives,” Camus says. “…if you can find a value proposition that aligns with their goals and gives them some international and professional exposure, that gives them a world-class education… that’s a very compelling proposition.”



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support