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

Thursday, 31 January 2019

Foxconn is killing a second $9B factory

Foxconn is even more aggressively cutting back its growth ambitions around the world than we previously thought. In addition to the news yesterday that Foxconn intends to scale back its plans for a $10 billion factory in Wisconsin, leaving that state in something of a lurch, we have now learned that the Taiwanese company intends to scale back a $9 billion factory in Guangzhou, according to the Nikkei Asian Review citing internal documents. It lists trade war fears and a macro slowdown as the cause.

We talked about the lessons for economic development yesterday, but there is another angle around manufacturing flexibility that is critical to understanding this news.

A few weeks ago, I interviewed Dave Evans, who is building a startup called Fictiv, which is a “a contract manufacturer that doesn’t own any machines.” He thinks about manufacturing “more like cloud computing” where you can “scale up and down production as you would with AWS or a load-balancing server.”

In a world filled with fast-moving political eddies and fickle consumer demand, Evans ardently advocates for manufacturing flexibility. “No one is talking about how to build a supply chain that is agile enough to deal with different geopolitical climates,” he said. In today’s world, “supply chain planning is years or sometimes decades out” and yet, “if I look at policy or governments, or nascent trade agreements, that tends to be on quarters.”

Flexibility is ultimately about resilience. Faster adaptation allows companies to increase profits and reliability. “If you are going to build a robust business that lasts, then you need to have robust supply chains,” Evans said. You “don’t want to be a company that is a ping-pong based on the mood of Trump’s tweets.”

A huge part of what Fictiv is attempting to do as a startup is to offer that flexibility as a service. According to its website, the company has produced more than 3 million parts and can have turnaround times in some cases as short as a day. As I pointed out yesterday, it is these part ecosystems that often prove the biggest barrier to (re)launching manufacturing back in the United States.

Manufacturing flexibility is something that Chinese factories have prioritized for years. As an email correspondent with knowledge of these supply chains for large consumer companies discussed with me, China’s biggest strength may not be the ecosystem that has developed around Shenzhen and in Guangzhou, but actually the ability to scale up and down manufacturing by tens of thousands of workers in a week.

Foxconn, perhaps more than any manufacturer, has learned the importance of that skill. Its very survival is predicated on its ability to quickly adjust — at a scale of hundreds of millions of units — to the changing needs of its partners. When the economics of its plants don’t make sense, they shut them down, immediately. That may not be a positive for Wisconsin, but it is the competitive edge that America has lost over the years against much more flexible international competitors.

How can you compete and also invest long-term?

Tokyo’s Shibuya station is both a major rail hub and a huge commercial center, owned by the Tokyu Corporation, a private rail company.

Competition is a key value of capitalism. The more competitors there are, the more that prices can drop and the more surplus value that consumers can pick up. That’s why why we try to avoid giving any one company too much sway over its market.

The challenge though is that competition also forces companies to fight each other for small wins, rather than carefully placing investments for the long term. If survival or even just profitability depends on precise revenues this quarter, then dollars will flow to marketing to juice sales rather than to R&D to invest in the future.

This is the great irony of competition. Too much of it and you get stagnation, while monopolies can counter-intuitively offer huge incentives for innovation. There is a reason that Google and Microsoft today, Xerox a generation ago, and Bell Labs even further back produced some of the most fundamental research in technology in the past century — durable, monopolistic revenue and a long-term view all cascade together.

So it was interesting reading through this Financial Times long read about the success and failures of privatizing different train systems around the world. The basic line is that Japan has managed to privatize its rail while maintaining great customer satisfaction, while the UK has stagnated with ever higher fares and diminished service since it sold off public rail. Switzerland in contrast has robust service and a completely nationalized rail.

Why the difference?

There are a couple of keys to Switzerland’s and Japan’s success. First, they think in systems, which means they understand that even as rail companies, they are not just limited to “rail.” For instance, Japan’s rail companies are also major real estate developers and landlords. The more people who choose rail, the more consumers who might shop at the malls erected around large train stations. There is a unity here that comes from ownership.

But monopolies are still monopolies — why not just cut service and bleed profits out of the system? The answer is that Japan’s rail companies own the underlying tracks themselves, and thus are ultimately dependent on the long-term vitality of specific routes. From the article:

“Our railway has relatively attractive residential areas along it. We want to make sure it’s a good place for young people to keep choosing it as a place to live,” says Fumiaki Shiroishi, director of the railway division at Tokyu, which serves some of Tokyo’s most popular western suburbs. “Even if we can’t expect an increase in overall population there will be winners and losers among the railways. People gather where it’s convenient. There are places where the population will increase 30 per cent and places where it will decline 70 per cent.”

There is indeed competition, but of a more long-term variety. These companies understand that their ultimate worth isn’t just having a reliable timetable, but having such quality service over many years that people make permanent life decisions based on that performance. It’s also key that the rail companies will eventually recoup their investments due to the stability of their business environment.

To me, these debates over long-term investment are central to the challenges facing many startups today. Competition is keen. You build a scooter company, and suddenly there are a whole crop of challengers in the blink of an eye. Capturing value is the key to building a startup, but how do you capture value if you don’t even know you will exist in six months?

Particularly as Silicon Valley enters industries such as health care, education, construction and others, where huge investments in product development and research will be critical to success, taming the downsides to competition will be necessary for returns to multiply.

TechCrunch is experimenting with new content forms. This is a rough draft of something new – provide your feedback directly to the author (Danny at danny@techcrunch.com) if you like or hate something here.

Share your feedback on your startup’s attorney

My colleague Eric Eldon and I are reaching out to startup founders and execs about their experiences with their attorneys. Our goal is to identify the leading lights of the industry and help spark discussions around best practices. If you have an attorney you thought did a fantastic job for your startup, let us know using this short Google Forms survey and also spread the word. We will share the results and more in the coming weeks.

What’s Next

  • More work on societal resilience
  • I’m reading a Korean novel called The Human Jungle by Cho Chongnae that places a multi-national cast of characters in China’s economy. It’s been a great read a quarter of the way in.

This newsletter is written with the assistance of Arman Tabatabai from New York



from TechCrunch https://tcrn.ch/2RZpDFc
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support