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

Sunday, 28 March 2021

To improve accountability, Norrsken VC ties partner compensation to its portfolio’s sustainable successes

With the close of its latest investment fund, Norrsken VC is is taking an unprecedented step in tying the compensation of its partners to the positive changes the firm’s portfolio companies have on the world — and not just their financial returns.

The firm, which released its impact assessment for 2020 last week, has invested in companies that address seven of the United Nations’ seventeen sustainable development goals, and is benchmarking its performance on goals that range from the tightly monitored to the slightly tautological.

In some instances, the goals are simply customer metrics (with the assumption that the more customers on a product, the better they’re doing). To be fair, these are in areas like education and healthcare where the true impact of a company’s services are harder to measure.

The firm’s portfolio has much more tangible progress in the climate change mitigation and sustainability space. Here, emissions avoided or increases in energy efficiency can be measured quite easily.  And those energy efficiency gains and emissions reductions, along with lower waste associated with the firm’s food and agtech businesses are where the firm has seen its best performance.

When they exit, this performance will matter a great deal to the partners at Norrsken, because their compensation is directly affected by it.

“For each investment that we make, we set targets pre-investment for what we want to see in terms of impact,” said Tove Larsson, a general partner with Norrsken VC. “We do that together with some of our key LPs in the fund. We need to get the advisory committee’s approval of the targets. We set thsoe targets for an individual year and then on an annual basis.”

When the fund reaches the end of its cycle, the firm will look at the aggregated outcome of all of the impact KPIs and will weight the results of each company’s impact based o the amount we invested in each company. Based on that, the firm decides whether the team gets any carried interest or not.

If the portfolio companies hit sixty percent of the impact targets that have been set by the firm and its advisory board members, then they receive half of the carried interest, with the rest donated to charity. “There’s a linear escalation up to 100 percent. And if we don’t achieve that then the carried interest will be paid out to a charity organization or an NGO,” said Larsson.

Image Credit: Norrsken VC

The partners at Norrsken see their novel compensation structure as a point of differentiation, especially as the number of firms focused on themes related to the UN’s sustainable development goals continues to increase dramatically.

“We we started to invest, we were one of the first — four years ago. Then the market evolved so quickly where we got questions around how do you stand out and how do you know whether you’re truly an impact player,” said Agate Freimane, a general partner at the firm.

“This is a core part of the DNA. We need to do better and show that we can walk the talk,” Freimane said. So the firm took a page from the European Investment Fund, whose operations impose similar restrictions on compensation, she said. “When we heard about this way of doing it, we said tis make 100 percent sense, and why doesn’t everyone do it?”

So far, the team hasn’t had any problems hitting the target it had set. “We’re at 119 percent of the 2020 targets,” Freimane said. Still that’s only 12 percent of the long term targets. “At the moment, we’v e done one tenth of what we need to do over the lifetime of the fund.”

Even if some of the targets may be… imprecise… the steps that the firm’s portfolio companies have taken to reduce greenhouse gas emissions and food waste, and improving energy efficiency are having a real, measurable imapct. Whether that’s the reduction of data center energy demand by 10 Gigawatt hours thanks to the deployment of Submer technologies; reducing 11,000 tons of food waste through operations at Karma, Whywaste, Matsmart or Olio; saving 4 million liters of water from carwashes using Woshapp; or the development of 38 megawatts of solar projects thanks to the work of Alight.

Image Credit: Norrsken VC

“What we’re most proud of is that we’re actually doing this now,” said Larsson. “It’s not perfect, what we have delivered now, But we really think we need to start somewhere and it is key that the industry needs to become more transparent. The first thing we mentioned is that we think it is an achievement that we are tracking it and making it public.”



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support