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

African talent recruitment company TalentQL joins Techstars to further global ambition

African-focused talent recruitment and outsourcing company TalentQL today announced that it has been accepted into Techstars Toronto.

The company will join nine other startups in the accelerator’s class of 2021. This comes two weeks after Nigerian bus-booking platform Plentywaka announced its participation in the program as well.

TalentQL was launched last November by serial entrepreneurs Adewale Yusuf, Opeyemi Awoyemi and Akintunde Sultan. Before TalentQL, Yusuf co-founded Nigeria-based tech media publication Techpoint Africa; Awoyemi co-founded online recruitment site Jobberman; and Sultan founded nonprofit tech accelerator DevCareer.

The company has a “talent pool” developers join before passing through different assessments. Once the engineers pass the assessments, they can join the company’s “talent network” to access opportunities.  

The pandemic accelerated the need for international companies to seek cheaper and remote talent around the world. TalentQL is hoping to tap into what it thinks is a gold mine. According to CEO Yusuf, the company, which is also U.S.-based, wants to decentralize access and democratize opportunity for Africa’s top tech talents. 

For most of its local clients, TalentQL mainly assists with recruitment. The other model entails hiring vetted engineers for international companies, managing them, and providing tax and health insurance services.

“We’re coming to the market to support the talent with health insurance, some tools to work with and a community to be part of. These are some of the offerings I think sets us apart from other companies,” Yusuf said to TechCrunch over a phone call.

But despite that, the company has faced the same challenge that has plagued the space — the lack of senior engineering talent. When most engineers reach that level of expertise, they tend to leave the country to the U.S. and Europe for better opportunities or, better still, launch their own startups. It’s a problem Andela faced in the past, resulting in the layoff of 400 junior developers “due to market demand for more senior engineering talent.”

Yusuf says this is why the company is pursuing a Pan-African and diasporan play (Africans in the U.S. and Europe), hoping to fill in the gap with senior talent from these places. And to further consolidate its Pan-African ambitions, it is planning to open an office in Kenya in the coming months.

Although TalentQL is fully remote, Yusuf says this has to happen to establish the right kind of understanding between on-the-ground recruiters and the engineers.

“We want a situation where when we’re recruiting from other countries, our technical recruiters are from those countries. We want them to be able to speak the language of these engineers and understand the culture of their countries,” the CEO added.

TalentQL currently has over 100 tech skills available with more than 2,000 developers on its platform. These developers cater to clients from the U.S., Europe, Nigeria and Kenya. The CEO says the company is also in talks with some Fortune 500 companies to execute placements for their African expansion

In addition to the $300,000 pre-seed secured last year, the 6-month-old company will receive a $120,000 investment from Techstars. But besides the funding, Techstars’ backing will be crucial in two ways, according to Yusuf. First is how it operates going forward in a crowded tech talent marketplace with the likes of Ethiopia’s Gebeya and Nigeria’s Decagon and Semicolon. The other would be helping the company to be a global company, not just an African one.

For Sunil Sharma, the managing director of Techstars Toronto and an investor in five Nigerian startups, Techstars’ investment in TalentQL gives the accelerator a chance to participate in the burgeoning tech talent space. 

“The rise of Nigeria is more widely appreciated now in terms of technology sectors like finance, mobility and e-commerce, where talented Nigerians are not only bringing innovation and disruption but are doing so rapidly and at scale. Equally as intriguing is the opportunity relating to talent itself as Nigerians and Africans across the continent are contributing more to supporting tech companies across the world, and we think this is just the start.”



from TechCrunch https://ift.tt/31yFZGQ
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support