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

Wednesday, 30 September 2020

Allbirds CEO Joey Zwillinger on the startup’s $100 million round, profitability, and SPAC mania

As people spend less time out in the world and more time daydreaming about when a vaccine will arrive, lifestyle shoes are only gaining traction.

One obvious beneficiary is Allbirds, the San Francisco-based maker of comfortable, sustainable kicks that launched in 2016 and quickly became a favorite in Silicon Valley circles before taking off elsewhere.

Though the company saw its business slow this year because of the pandemic, its products are now available to purchase in 35 countries and its 20 brick-and-mortar stores are sprinkled throughout the U.S. and Europe, with another outpost in Tokyo and several shops in China.

Investors clearly see room for more growth. Allbirds just closed on $100 million in Series E funding at roughly the same $1.6 billion valuation it was assigned after closing on $27 million in Series D funding earlier this year, and blank-check companies have been calling, says cofounder and CEO Joey Zwillinger. He talked with us earlier this week in a chat that has been edited for length and clarity.

TC: Your shoes are sold worldwide. What are your biggest markets?

JZ: The biggest market by far is the U.S., and the same day that we started here in 2016, we also launched in New Zealand, so that’s been very good to us over the last four years, too. But we’ve seen growth in Japan and Korea and China and Canada and Australia. We have a network of warehouses globally that lets us reach 2.5 billion people [who], if they were so inclined, could get their product in three days. We’re proud of the infrastructure we’ve set up.

TC: We’ve all worn shoes a lot less than we might have expected in 2020. How has that impacted your business?

JZ: We’re growing but definitely not at the same pace we would be had the pandemic not occurred. We’re predominantly digital in terms of how we reach people, but stores are important for us. And we had to switch [those] off completely and lost a portion of our sales for a long time.

TC: Did you have to lay off your retail employees?

JZ: A large portion of our retail force was unable to work, but we were luckily able to keep them fully paid for four months, plus [some received] government benefits if they got that. And now all of our 20 stores are up and running again in a way that’s totally safe and everyone feels really comfortable.

We also donated shoes to frontline workers — 10,000 pairs or around a million dollars’ worth.

TC: What does Allbirds have up its sleeve, in terms of new offerings?

JZ: We just launched our native mobile app, and through it we’re able to give our more loyal fans exclusives. It’s a really cool experience that blends technology with fashion. You can try on shoes in a virtual mirror; you’re given information [about different looks] that you wouldn’t have otherwise.

We also launched wool-based weather-proofed running shoes in April that have blown away our expectations but [were fast discovered by] people who haven’t really been running for 10 to 15 years and are running again [because of gym closures]. It’s a super high-stakes category and one that’s hard to break into because people buy on repeat. But we spent two years making it. It’s not like we launched it because of the pandemic. It’s a shoe for 5K to 10K distances — it’s not a marathon shoe or a trail shoe — and that we’ve been able to clearly articulate that speaks to its success, I think.

TC: What about clothing?

We launched underwear and socks last year in a small launch. We developed a textile that hasn’t been used before — it’s a blend of tree fiber and merino wool because our view is that nature can unlock magic. Underwear is typically synthetic — it’s made from plastics — or cotton, which isn’t a great material for a whole bunch of reasons. [Meanwhile] ours is phenomenal for temperature control; it also feels like cashmere.

TC: Patagonia really advertises its social and environmental values. Do you see Allbirds evolving in a similar way, with a growing spate of offerings?

JZ: I’m incredibly humbled by [the comparison]. Given their environmental stewardship of the retail sector, we hope we’re compared to them. But they are much more of an outdoor brand — not a competitor so to speak. And we’d love to share more of the retail world with them so we can do our environmental thing together.

TC: You just raised funding. Are you profitable and, if not, is profitability in sight?

JZ: We’ve been profitable for most of our existence. Having some discipline as we grow is good. We’re not close to the profitability that we’ll eventually have, but we’re still a small company in investment mode. After we emerge from the pandemic, we’ll enter a ramping-up phase.

TC: Everyone and their brother is raising money for a blank-check company, or SPAC, which can make it a lot faster for a private company to go public. Have you been approached, and might this option interest you?

JZ: Yes and no. Yes we’ve been approached, and no, we’re [not interested]. We want to build a great company and being public might be something that helps enable that for a whole bunch of reasons. But we want to do it at the right time, in a way that helps the business grow in the most durable and sustainable fashion. Just jumping at the opportunity of a SPAC without doing the rigorous prep the way we want to, we’re not super focused on that



from TechCrunch https://ift.tt/36koNIO
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support