An update on IPv6 - <AUTHOR> http://www.potaroo.net/ispcol/2015-06/ipv6.html <comment><USER2> The article engages in a little bit of hyperbole with statements like this: "Not only is this a protracted calamity for the Internet".

I work in a lot of regions in the world, (Mexico, UAE), where they've been used to the reality that they won't be assigned _any_ IPv4 addresses. I'm talking about large $Billion+ organizations that made it abundantly clear to me, that the applications we were deploying ($100million plus network deployments) - would have to operate with PAT, or we would not be able to deploy them.

And so we worked around the requirements that we deploy everything on PAT, and our network deployments (sometimes with thousands of IPV4 network elements) would have to operate purely within RFC1918 address space.

Speaking as someone who has worked on million+ IPv6 node deployments, (So I clearly don't have a bias _against_ IPv6) I can say with some certainty that the only "calamity" we are going to see is increased use of PAT on clients, and somewhat more expensive IPv4 addresses for those who need to act as a server. Everyone else will be fine. (Have been fine for years in places where public IPv4 addresses ceased to be available).

The reality is that this lack of pressure to transfer to IPv6 means that we're going to see an extended period of time in which we migrate. It will happen eventually (IPv6 has a lot of awesome features, particularly around self- addressing, and lord is it wonderful not to have to play CIDR addressing games, everything is a ::/64) - but it's going to be a lot longer than most IPv6 advocates would prefer.

<comment><USER3> > lord is it wonderful not to have to play CIDR addressing games, everything > is a ::/64

/64 is the smallest network, but there are certainly larger aggregates with smaller prefixes.

<comment><USER2> Yes - you're absolutely right. There are administrative collections of /32s, /48s, /56s - but when it comes time to lighting up a network interface - it's a /64\. Even if I only have two devices on a network segment, (two routers that can perform ND with each other), a place that would have used a /30 in the IPv4 space, I'll light up a /64 and burn the other (2^64)-2 addresses. With the possible exception of some security scenarios in which a /127 might be desirable, there is no "address conservation" requirement to use blocks smaller than a /64.

For those IPv4 network engineers who have a decade+ of jugglings /25s, /26s, /27s, /28s and /29s, and trying to preserve IP space (particularly globally routable), this is nice change of affairs.

<comment><USER3> Okay, sure, on hosts you're only going to see /64s, but unless I'm seriously misunderstanding something, anyone dealing with route aggregation is going to have to deal with smaller prefixes.

And even just talking about "this is global unicast space", "this is 6to4 space" and "this is link local space" involves small prefixes. So, for example, you still need to do the same mental juggling to know that 2000::/3 is 2000... to 3fff....

<comment><USER2> Agreed. You can't get away from network blocks at the administrative routing level. But, at least life is a bit easier by making more common use of /48s and /32s - I.E. 2001:1868::/32 being 2001:1868:0000:0000::/64 -> 2001:1868:FFFF:FFFF::/64.

Thankfully, the 100x more common task of configuring an interface, will always be a /64.

</comment></comment></comment></comment></comment><comment><USER4> What I think will really start the network effect is the fact that apple requires APPs for the new iOS to work in a IPv6 only environment. That means if Twitter wants to use the latest and greatest features they will have to make their service available via IPv6.

So IPv6 only connections will start to become a vialbe end-user product. These will be cheaper than dual-stack installations, so the ISPs will push them.

<comment><USER5> > That means if Twitter wants to use the latest and greatest features they > will have to make their service available via IPv6.

This isn't really necessarily the case. The full details on the requirements for Apple's required "support" for IPv6 are sparse still, but there's no reason that this can't be done with NAT64.

</comment></comment><comment><USER6> The article briefly touches on this, but I'm mainly interested in IPv6 adoption for the possibilities it opens up in peer-to-peer communications by removing the need for NAT. Imagine the possibilities if WebRTC didn't require the use of STUN/TURN/ICE servers to work properly and browsers could simply talk directly to one another.

<comment><USER7> I think that is (tin foil hat) perhaps one of the reasons for the hold up. IPv6 makes true p2p possible and will open up a lot of pirating possibilities.

</comment></comment><comment><USER8> I know this idea has long missed the boat, but why wasn't IPv4 address space extended by adding an IPv4 Option header that could carry extra address bits?

You could even have made IPv4 addresses variable length this way, from 32 up to a very large number of bits, and hierarchical. And it's relatively easy to make such a scheme backwards compatible, because you can have (say) a webserver sitting on 220.127.116.11 answering queries for older clients that don't know how to form a 220.127.116.11.5.6 address packet.

<comment><USER9> > I know this idea has long missed the boat, but why wasn't IPv4 address space > extended by adding an IPv4 Option header that could carry extra address > bits?

Because that wouldn't be compatible with existing IPv4 deployments and would cause a reliability havoc when a node not configured to deal with it mangled packets transparently somewhere in between your source and destination end- points.

I don't get the resistance against IPv6. It works. It's a fresh take. Yes it requires some new stuff to be deployed and configured here and there, maybe even requires you to learn something new, but if you thought extending IPv4 would have been any other way you are deluding yourself.

If you're going to do a significant change to something as big as the internet (and introducing a new address scheme is that, no matter how you implement it), you might as well step back and think it all through instead of applying yet another hack.

So tell me. Why are you opposed to IPv6? Why do you want to hang on to this old IPv4-thing which is already at the bursting point, at the edge of what it can take?

<comment><USER10> > So tell me. Why are you opposed to IPv6?

I'm very concerned about implications for anonymity. If every device has a unique IPv6 address, then just one leak can compromise all other anonymized connections.

<comment><USER11> Check out RFC 4941, "Privacy Extensions". It's probably already implemented on the computer you're using right now.

<comment><USER12> You can still track the prefix though. In a standard /64 deployment only the suffix will change so there is still some information leaking if you have a static prefix (obviously, as in static IPv4). However, my ISP defaults to dynamic /64 prefix unless you opt in for static prefix. I believe most ISPs should probably do the same.

<comment><USER13> If you have a dynamic prefix then you can't (easily) run servers; you'd need some sort of dynamic DNS as well. And if you have dynamic DNS and dynamic reverse-resolution…there goes anonymity anyway.

IP isn't anonymous; it wasn't designed to be, and probably (given the problems it's trying to solve) shouldn't be. Anonymity should be an overlay.

<comment><USER12> If you run a server you pretty much need to expose your IP one way or another anyway, even in IPv4. Well, I suppose you can use something like dynamic dns but still...

I totally agree, though, anonymity is not part of IP. I was not implying that, just that there are still ways for home users to somehow shuffle their IPs within the IPv6 framework.

<comment><USER10> If I need to run a server, I anonymously lease hosted VPS or whatever, and SSH via Tor. My concern is keeping my personal Internet connectivity anonymous. I use nested VPN chains, generally using pfSense VMs as VPN clients, and Tor.

I get that the Tor Project is working on IPv6. But I also want IPv6 NAT, in pfSense or whatever. That's to keep my local device IPv6 addresses (hosts and VMs) private, even from Tor entry guards. I guess that it's time to learn how to ensure that.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> What I don't understand is what is the cost to an ISP of switching. Whether it is network devices or users devices, unless they are more than 10yo, I would expect them to be all IPv6 compatible. So yes it will involve some reconfiguration, training engineers and support, but it looks like a relatively small investment to me. The switch to optic fibre is a way bigger investment.

<comment><USER2> Financial cost, even in training, isn't high. It's mostly two things - Inertia, and ROI. All of the network engineers know IPv4 ins and out really, really well, and have a mindset of not messing with stuff that's working. And ROI - what financial incentives does an ISP have to switch to IPv6, either in increased revenue or reduced costs?

<comment><USER15> There's also considerable cost in being an early bird. You get to find all the chinks in the protocol, all the bodgy firmware issues... all for no substantial change to the income stream.

</comment></comment></comment><comment><USER16> IPv4+NAT still works well, because the internet is more and more centralized. Sadly.

<comment><USER17> No, NAT doesn't work well at all. Everybody that says this isn't taking into account the massive amount of software that wasn't even started in the first place because it wouldn't work behind a NAT.

In fact, I would suggest that NAT is responsible for a lot of that centralization, as the workaround for not being able to listen(2) for your friend you want to communicate with is a centralized service to manage that connection.

One of the original benefits of TCP/IP networking was that every peer was equally client and server in the eyes of the protocol. The damage done by NAT has been the _de facto_ removal of that benefit. Even now when reasonably- reliable (but INCREDIBLY complicated) NAT-traversal protocols exist, a centralized service is still required, nullifying the benefit of being able to _publish without the permission[1] of a central authority_.

[1] [https://www.fourmilab.ch/documents/digital- imprimatur/](https://www.fourmilab.ch/documents/digital-imprimatur/)

<comment><USER18> _> In fact, I would suggest that NAT is responsible for a lot of that centralization, as the workaround for not being able to listen(2) for your friend you want to communicate with is a centralized service to manage that connection._

IMHO, IPv6 won't fix this problem for many cases. Consumer routers still won't allow inbound connections, so there will still be the need for some kind of way to allow the client to tell the router to forward traffic on a specific port (likely [https://en.wikipedia.org/wiki/Port_Control_Protocol](https://en.wikipedia.org/wiki/Port_Control_Protocol)).

Which is exactly the same as we get these days with NAP-PMP or UPnP.

Maybe once listening on all local interfaces will not listen on temporary addresses, we can move to a one-address-per-service model at which point it becomes more feasible to forego the central firewall dropping all incoming connections as port-scanning the machine you just got a connection from will involve scanning 65536 * 2^64 ports

As it stands now, I'm not willing to expose all open ports of my internal machines over IPv6. Instead I still have specific port opening rules on my central firewall.

While I have no issue exposing, say, Skype on some port, I _certainly_ don't want to expose, say, my local NTP port of my Mac, or, worse some local port mapper needed for NFS mounts.

Yes. I could use a local firewall, but these by default only allow a per- application setup. "Do you want to allow NTP to be reachable?" \- To my local network? Yeah. Maybe. To the internet? Hell no.

Current simple built-in firewalls don't allow this kind of answer - at least on the mac.

<comment><USER17> I never claimed anything about IPv6, though it _would_ fix most of the NAT problem. Most of what you're talking about is based on how the current NAT infrastructure works... which was sort of my point: NAT badly limits the scope of how we think about software, because so many designs rely on being being able to even _name_ hosts uniquely. Designing software for the NAT "party- line" suddenly requires inventing things like remapping ports to make anything work.

A particularly bad misconception that ubiquitous NAT has encouraged is the conflating of the address-translation step (NAT) with the _firewall_ , when the two concepts are not related at all. You can run either independently of the other[1].

All that is needed for a home router is a simple firewall, and a way to open holes in the router's firewall from the internal hosts. The fact that this software isn't already available on most OS/home-routers is simple lack of demand... and the fact that it would be totally useless for current NATed home networks. You don't need all of UPNP or NAT-PMP; there are no ports that need to be mapped. The difficulty in introducing something to allow certain types of packets through a firewall is trivial compared to the complexity of working around NAT.

Concerns about port scanning and "expose all open ports" are just nonsense, and has nothing to do with NAT. This all-or-nothing approach you seem to be assuming misses the entire point of having an external firewall (such as on an home router). You get to pick which packets you let through.

[1] This is why NAT doesn't provide security on it's own. Static NAT, for example, is just substituting the address; _all_ packets to the public address are forwarded to the translated address.

</comment></comment></comment></comment><comment><USER19> If I'm not mistaken, I think the MTU for IPv6 is at least 1280? But possibly also going to end up as no more than that because IPv6 does not necessarily require people to support more than that?

If so, then that could mean that packet sizes are going to be constant over the next 20 years, all the while that protocols and pipes get many times faster and bigger. If I'm not mistaken, those smaller and smaller packet sizes (relative to faster and faster networks) are going to mean tremendous packet switching overhead (routing, encryption) especially in protocols such as QUIC which try to align encryption with packets.

Sort of like a plane having to stop at every red light in a traffic grid designed for cars.

<comment><USER20> [https://tools.ietf.org/html/rfc1981](https://tools.ietf.org/html/rfc1981) : path MTU discovery SHOULD be implemented in IPv6.

<comment><USER19> Thanks, that is my concern. I think the "SHOULD" should have been a "MUST" (or should still be changed to a "MUST") to ensure a forward upgrade path for larger MTU in future. Otherwise, the network is going to be limited by the lowest common denominator, namely those clients which do not implement any path MTU discovery because it's not a MUST, and only support an MTU of at least 1280 (but no more).

<comment><USER21> You have to realize that RFCs are not a cudgel to bludgeon people into acting how you would like them to, that never ever works out in reality (at one point IPSEC was a mandatory MUST for ipv6 deployments) because people are free to just ignore them if it makes their life too difficult, and trust me they can and will, no matter what any standard says.

RFCs should, and at least with the popular ones, generally do, reflect the status of how things actually work on the internet, not how we might wish they did. If your standards ignore reality, they in turn will be ignored.

Rightly or wrongly a LOT of networks block ICMP wholesale, and thus block pmtud, it does not matter if some word in a text document changes somewhere, this will continue to be a reality, so you better be aware of it and be able to cope with it.

Rough consensus and running code.

<comment><USER19> I doubt that "how things actually work on the internet" is "generally" reflected by RFCs. The history of the internet is people trying to work around and fix RFCs actually ("at least with the popular ones"). If you're going to say "SHOULD" you may as well leave it out because people won't follow it.

<comment><USER21> You are still taking a way too strongly legalistic view of things, standards are not laws (usually). Its not a "everybody conforms to the spec 100% or its worthless" situation in the vast majority of cases.

SHOULDs exist precisely because of situations like pmtud, you cannot gaurentee it will be supported, but when it is supported it is helpful and useful.

<comment><USER19> Frankly, the original concern is that fixed packet sizes relative to increasing capabilities are not a good idea for future hardware and software performance (think silly window syndrome or allocating a million 1-byte buffers). It's a technical problem that needs a technical solution (preferably through clearer language describing the issue or else we need to rethink things). I guess most people are simply not writing protocols that will be influenced by these decisions, so they fail to see the impact.

Furthermore, no one said this was about "cudgels" and "bludgeons" or being "too strongly legalistic" or writing "laws". Those are your words, not mine.

<comment><USER21> the implied goal of changing a SHOULD to a MUST is to force people to comply, im simply trying to communicate that its really not that simple.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> I am looking forward to the day when global IPv4 gets turned off.

They should do it on a World IPv6 Day, how about 6/6/16?

<comment><AUTHOR> Might take a bit longer.

Looking at [http://www.google.com/intl/en/ipv6/statistics.html](http://www.google.com/intl/en/ipv6/statistics.html) it's doubling every year. So it's going to take another four to reach everywhere.

Maybe 6/6/2020 :-)

(And there are plenty of IPv4-only devices out there, like printers, Consoles, etc. So I suspect another five years after that before there's so little left that the address space starts clearing up again.)

</comment></comment><comment><USER23> This are the video/slides of the talk that Geoff Huston (author of the post) gave at the last RIPE70: [https://ripe70.ripe.net/archives/video/118/](https://ripe70.ripe.net/archives/video/118/)

Very interesting point of view imho ("bring IPv6 to the rich first, the others will follow").

</comment><comment><USER24> Wall of text.

I still don't know how to use IPV6. Maybe it is just too complicated and they should come up with something simpler?

<comment><USER25> IPv6 is not complicated.

128 bits of address space. Everyone gets a /64's (128-64=>64 bits of address space). Larger entities get /48's (128-48=>80 bits of address space). So everyone (you, your device, your network) has plenty of addresses to spare.

Addresses are written in hex, in the form 0011:2233:4455:6677:8899:aabb:ccdd:eeff (that's 8 groups of 16 bits -> 128 bits). If there are zeroes in an address on, you can omit them (ie. 1122:3344:5566:0000:0000:0000:0000:1234 => 1122:3344:5566::1234).

Some protocols (ARP, kinda DHCP, ICMP) are merged into a single procotol called NDP (neighbor discovery protocol).

When you're a home user, your router/gateway/CPE would get a /64 from your ISP, for example 2001:1234:4567:89ab::0/64\. to use for your local devices. For example, in your LAN, your router would probably be 2001:1234:4567:89ab::1, while your devices would probably be addressed between 2001:1234:4567:89ab::2 and 2001:1234:4567:89ab:ffff:ffff:ffff:ffff.

If your router is not using DHCPv6, but instead only NDP, it would simply respond with a "we're using 2001:1234:4567:89ab::0/64 here, I'm your gateway" to every device coming into the LAN, and the device would choose an address based on it's NIC MAC and some other facts. If your router would be using DHCPv6, the exchange would be just like in ordinary DHCP (dhcp request -> dhcp reply with IPv6 address to use).

There is some extra (standarized) link-local magic with IPv6 - if you seen an fe80::0/16 address on your link, then it means that there was no IPv6 router/DHCP server on there and the devices in the LAN are establishing connection independently - but of course, without any access to the rest of the IPv6 Internet. This is also done via NDP, IIRC.

And that's basically it. No NAT. The devices in your LAN are directly routable to devices in your friend's LAN, or to Facebook's server

<comment><USER26> Stupid question time.

Is there anything in all this that can make my machine behind the router get the same address all the time? Do I manually assign it locally as with IPv4 and hope no one else in the building assigns the same IP?

Is there anything to assign IP-to-Hostname at least on the local (behind the gateway) level. Or is this handled via some other service I need to run (maybe some server that runs dns and allows machines to push their desired hostname to it).

<comment><USER27> It's done automatically by your router and your OS. By default you won't need to do anything--you plug it in and it just works.

On the machine I'm writing this reply on, when I boot it up (with either FreeBSD, Linux or Windows) it gets a router advertisement from the router (which is routing both IPv4 and IPv6). It gets a standard NATed DHCP lease for IPv4. For IPv6, it combines the /64 network prefix assigned by my ISP with the NIC MAC address to compute a unique (and stable) address.

There are of course alternatives. I can assign it statically, I can use privacy extensions to periodically change the address (seems to be the default on Windows for me) or I can use DHCPv6 to use DHCP-allocated addresses (my router doesn't support this though I have done it in the past with BIND).

</comment></comment></comment></comment><comment><USER28> 2002 explanation by Dan Bernstein of why IPv6 will never happen. [http://cr.yp.to/djbdns/ipv6mess.html](http://cr.yp.to/djbdns/ipv6mess.html)

<comment><USER29> DJB was not arguing that IPv6 would never happen. He was arguing that there are some significant barriers that need to be overcome before meaningful adoption will occur.

I'd argue that many, if not all of the issues with v6 back in 2002 have been resolved, and that v6 adoption is accelerating, both on eyeball networks as well as on public-facing internet services.

</comment></comment><comment><USER30> Figures 3, 4, 5, and 6 are all showing the thumbnail for Figure 6.

</comment><comment><USER31> Have to say I'm fairly unimpressed by how bad the UK looks in these rankings. The government ought to be incentivising take-up if they don't want the country to be a technology backwater.</comment>


Where Is The Fold [News.YCombinator.com] - <AUTHOR> http://whereisthefold.com/news.ycombinator.com <comment><USER2> Makes me wonder why there are 30 articles per page. I guess pg has a really big screen.

<comment><USER3> Either that or prefers scrolling to waiting for another page of articles to load. Also he probably knows that most if not everyone that reads this site can point to the scroll wheel (or equivalent) on their computer.

<comment><USER2> I love the scroll wheel function, but scanning the article titles is easier if I don't have to scroll. Scrolling requires additional work to refind your place in the scrolled view. If I can avoid scrolling I can keep my mouse over the More link and scan multiple pages more quickly.

</comment></comment></comment><comment><USER4> They should add a 1024x600 line to show the fold for most of today's netbooks.

<comment><USER5> I'll consider that, but I don't think netbooks generate enough traffic to be truly relevant yet.</comment></comment>


Introducing Framer for iOS - <AUTHOR> http://blog.framerjs.com/posts/framer-preview-for-ios.html <comment><USER2> This is great! Super excited to see prototyping tools get up-leveled with preview ability like this. Congrats to the Framer team.

Vote it up on Product Hunt: [https://www.producthunt.com/tech/framer- preview](https://www.producthunt.com/tech/framer-preview).

</comment><comment><USER3> $10 to pay for an app that only previews animations of an app that you pay $100 for? This is highway robbery! Origami & preview is free</comment>


Show HN: Introducing Go Serverless Functions with OpenFaaS - <AUTHOR> https://blog.alexellis.io/serverless-golang-with-openfaas/ <comment><USER2> This was posted 4 times in the past 48 hours by the same user.

<comment><USER3> Some things are going to be seen several times by a keen eye... I usually upvote if it is a valuable learning

</comment></comment><comment><USER4> It was a quiet weekend and we were hoping for some feedback on the work :)</comment>


Cloudstrike: Chaos Engineering for Security and Resiliency in Cloud Infra - Bella-Xiang https://www.techrxiv.org/articles/Cloudstrike_Chaos_Engineering_for_Security_and_Resiliency_in_Cloud_Infrastructure/12456299 <comment><AUTHOR> Reading the paper, I couldn't help to ask the same question over and over again: isn't this just another form of automated pentesting?</comment>


Fuck Silicon Roundabout and fuck your startup - <AUTHOR> http://m.thedrum.com/opinion/2014/03/13/fuck-silicon-roundabout-and-fuck-your-start

<comment><USER2> I used to work right on Old Street roundabout in the BT building on the NW corner, back in the late 90s. This was about the time that some of the old buildings nearby were just being converted into loft apartments. I guess the writing was on the wall even then, although the area was a backwater languishing in geographical obscurity. The pubs were unbelievably seedy dives (or worse). There was one bright spot, though, which was the street market in Whitecross Street. I don't think that exists any more. Oh well, that's what passes for progress, I suppose.</comment>


Dragonfly Mini – 2000km mission - <AUTHOR> https://blog.stratiteq.com/dragonfly-mini-2000km-mission <comment><USER2> Seems this is a good show case and should have a github for the source etc. It is not just they can do it it Titan or Mars but we can use the same, as they said, on humble earth for puffin or others we care about.

It is not NASA moon. We can have drone iphone azure etc. As regards to Nvidia item, not sure how it works but really I want to read github so not waste time to appreciate what others did that. Hacker site here. Maker we are. Not national geographic reader ...

<comment><AUTHOR> hey ngcc_hk, thanks for the comment! we'll follow up with series of technical on blogposts explaining how we built it (with code examples etc.), this first blogpost was to showcase the project, I'm happy you liked it!

last month Microsoft had July IoT month and published a lot of tutorials on topic how to build similar things, I suggest you check out following link if you want to learn more: [https://techcommunity.microsoft.com/t5/internet-of- things/ju...](https://techcommunity.microsoft.com/t5/internet-of- things/julyot-a-month-of-learning-focused-on-azure-iot- solutions/ba-p/1497040?WT.mc_id=julyot-iottechcommunity-cxa) there are examples like "Intelligent home security with Nvidia Jetson Nano" that uses similar concepts. cheers!

</comment></comment><comment><USER3> It feels like the article and the video is missing something.</comment>


Nice try, kid ... - <AUTHOR> http://www.flickr.com/photos/14821473@N03/2230350117/

<comment><USER2> I actually did something similar when I was in middle school. The teacher wanted everyone in the class to write something like that 500 times and turn it in the next day.

I went home and ran the following program on my Apple IIe:

      10 FOR X = 1 TO 500
      20 ?"I will behave myself in class"
      30 NEXT X

      PR# 2
      RUN

With the printer plugged into slot 2 on the machine, this sent the output of the program to the printer.

Needless to say the teacher was not impressed the next day, when I handed in several sheets of linefeed printer paper. I was impressed however.

He made me write it by hand about 100 times instead of 500.

<comment><USER3> In retrospect I wonder why we did what the teachers told us. Mostly.

<comment><USER4> We were trained to obey with the eventual consequences of insubordination being suspension or expulsion.

<comment><USER5> I have a friend who was suspended from high-school for (indirectly) refusing to do a word puzzle. His stated reason is that he doesn't like word puzzles. When he was asked to leave the room for failing to follow instructions, he refused. The punishments escalated and he refused each one on the basis that it was overblown punishment for refusing to do a word puzzle. Eventually he reluctantly agreed to a week's suspension because the only worse punishment available was expulsion.

He still carps on about being suspended for a week for refusing to do a word puzzle.

<comment><USER6> What is so bad about suspension? He would have more time to do something that is fun when he is not in school.

<comment><USER4> College applications ask if you were ever suspended from school.

</comment></comment></comment></comment></comment></comment><comment><USER7> Not as high-tech, but I once got caught writing a column of "I"s, a column of "will"s, a column of "not"s, etc.

</comment><comment><USER8> I find it funny that many of these comments are on ways the code could be improved. We are a strange bunch of people indeed. Still, I laughed when I saw this image.

<comment><USER9> First sentence should have been:

"Funny how much commenting about improving code."

Second sentence should have been:

"We are strange."

Third sentence should have been:

"I laughed anyway."

50.6% as much text.

<comment><USER8> ha(x4) good one! I could have written it in some form of Chinese and used 7 characters.

</comment></comment></comment><comment><USER10> Should have wrote it in Python to save a few lines :)

for x in range(500): print 'I will not throw paper airplanes in class.'

Or perhaps Arc!

<comment><USER11> (for i 1 500 (prn "I will not throw paper airplanes in class."))

Although, I assume the kid forgot the \n in his printf.

<comment><USER12> "prn"? Ick. Looks like 'porn'! Why not print, or put, or puts or out or just "p"?

<comment><USER11> pr = print

prn = print followed by newline

</comment></comment></comment></comment><comment><USER13> Now all he has to do is compile, link, and load!

</comment><comment><USER14> Cute, bizarre, clever. Good.</comment>


More money than anyone imagined: an explanation for why the bubble never burst - <AUTHOR> https://www.theatlantic.com/ideas/archive/2019/07/whatever-happened-tech-bubble/594856/ <comment><USER3> This so called bubble isn't tech at all. This is the everything bubble caused by excessively low interest rates, held down by the government for inappropriately long periods of times. Sure, 0% may have been justified in the wake of the 2008 crash, for maybe a year or two, but not 10+ years!!

People shouldn't be surprised that SOOO much money is sloshing around looking for increasingly risky returns when interest rates have been 0 for so long. And here we are, at barely 2.5% (far below where it should be) and the fed is already considering rate cuts even though we're in the biggest bull market. This article is doing the world a great disservice by trying to blame the tech industry without even once mentioning the real reason: excessively low interest rates forced on us by the Fed. And it's not just the Fed, other 1st world countries are doing the same thing. They're all following the call of Keynesian economics: Keep the party drunk as long as you can by refilling the punch bowl. By creating every incentive in the world to separate people from their money as quickly as possible in a hopeless attempt to spur money flow, ultimately resulting in increasingly risky investments.

<comment><USER4> The Fed doesn't have a target interest rate, they have a target inflation rate -- and the current policy has not been causing inflation -- so by all measures they've been successful at doing exactly what they're supposed to be doing: helping the economy grow without creating high inflation.

I notice that goldbugs in particular get very upset about low interest rates -- as if there is something "natural" or "normal" about 7% vs 3%. But there is no magical number -- if you can create wealth without inflation, you should _obviously_ continue to create wealth.

Also, the government doesn't owe you a risk-free return of 7%. In theory, the risk-free return should be equal to the rate of inflation -- nothing ventured nothing gained.

<comment><USER5> Yes, if you measure inflation as a basket of consumer goods, you can pat yourself on the back doubly for having an asset bubble at the same time as "low" inflation. Nice that the population can still afford bread and eggs, not so nice that the prices of property, artwork and the like disappear into the stratosphere far beyond their reach.

<comment><USER4> Housing nationwide isn't actually that expensive:

[https://fred.stlouisfed.org/series/USSTHPI](https://fred.stlouisfed.org/series/USSTHPI)

Remember: the Fed governs the entire US economy, not just San Francisco and Seattle like HN would prefer.

<comment><USER6> The vast majority of people live in, and the vast majority of economic activity takes place in, major urban areas. So yeah, housing inflation is very relevant.

<comment><USER4> And all of those sales are included in the link I provided, which shows that housing has gone up 13% nationwide since the peak twelve years ago.

<comment><USER7> considering the fact that in all metro areas housing prices have almost doubled, I'm curious in which parts of the country the housing prices decreased by half to reach the 13% average increase

<comment><USER8> Washington DC has for one not doubled. I'm not sure you're statement is accurate.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> A key constituent of almost every "bubble" (massively overused term) is a long period where everyone laughs at the doubters.

Contrary to popular understanding, almost every major bubble has been reported as such before the fact. When Bitcoin was running up, everyone said it was a bubble. Read issues of the Economist from 04/05, they even had a cover story on the housing bubble. Before 2001, we had "irrational exuberance" (and the Fed choosing to cut rates into a boom). Before inflation in the 1970s, read minutes from the Fed...literally three or four years before multiple board members said: "There is going to be significant inflation". Before multiple currency crises in Britain through the 1960/70s, again BoE was telling govt: "If you continue you will cause inflation and devalue" (amazingly, one prime minister was actually responsible for both devaluations in this period). Go back even further, I read a paper about the Bicycle Bubble in Britain in the 1870s...again, lots of press about how it was a bubble.

It isn't hard. These aren't "black swans". This is human nature, it never changes. Because something is not happening now, does not mean it can never happened (incidentally, when these things do pop...you usually have a year plus to get out...humans are slow).

The amount of self-important puffery going on in tech is somewhat unique (the people involved are unusually insufferable) but it will burst. No path to profitability for most tech companies, most will go to zero. This has happened with every innovation, every capital cycle since the early 19th century. Again: not hard.

Also: it isn't just tech. It is technology innovation plus the most short- sighted practice of monetary policy in history. What is happening in Europe and Japan is staggeringly dumb (I am glad I will live to see the fallout from this group of self-appointed "experts" using all this massive intellect to drive the economy off a cliff).

<comment><USER10> Eh. This is only true because there's an absolutely staggering amount of financial commentary, and some % of it is negative- and then after a recession you can always go back and use confirmation bias to find the negative comments that 'predicted' it. Recessions & crashes are normal parts of markets and will never go away. Fringey characters like Roubini or Grant's Interest Rate Observer just call for a recession every single year (really! Roubini has predicted a recession every single year since 2008!) Then when it happens pundits can say he 'predicted' it, because they ignore all the times he was wrong.

Anyone can easily go through past financial commentary and find quotes saying that good times & growth periods won't work out, it's a bubble, it'll crash soon etc. No one ever points out all the times negative commentary is simply wrong, mostly because being contrarian & negative is fun.

Modern Internet companies are fundamentally changing the world similar to the Industrial Revolution. And lumping Facebook/Google/Amazon in with Juicero or whatever is just lazy, handwavey analysis. Yes, some tech companies won't make it out of the next recession- but some are huge, immensely profitable players that are here to stay

<comment><USER11> On the one hand, yes. On the other hand, the 2008 recession [0] saw unemployment 1 person in 20 lose their jobs. If 1 person in 20 is doing something that is not value-adding there would _have to be_ massive and obvious evidence of that beforehand.

Recessions and crashes aren't necessarily evidence of anything in particular. But there is a tendency for people to assume that economic outcomes are mysterious and unexplainable. Many of them are obviously not; things happen for reasons. Exactly what those reasons are is a very political question, but it is obvious that a lot of people do clearly see these things coming a mile away and we just don't have a method of distinguishing them from the broken clocks.

[0] [https://en.wikipedia.org/wiki/File:US_employment_1995-2012.p...](https://en.wikipedia.org/wiki/File:US_employment_1995-2012.png)

<comment><USER12> > If 1 person in 20 is doing something that is not value-adding there would > have to be massive and obvious evidence of that beforehand.

There was "massive and obvious evidence of that beforehand" which was the central banks had to keep interest rates below what the market would have priced them without interference...it's just that this isn't seen as evidence but "just the way things are".

</comment></comment></comment></comment><comment><USER13> The scope of the article is too small to see the real cause. Look around, there's a bubble in everything.

There's literally trillions of dollars of debt yielding below zero. There's entire currency yield curves that are under zero. That's right, not just the short terms like a year or two. But decades out.

Tech firms may be doing well but valuations are still quite high for a lot of things by traditional measures.

And there's the influence of cental bank purchases that we don't know when will end or restart.

<comment><USER14> >There's literally trillions of dollars of debt yielding below zero. There's entire currency yield curves that are under zero. That's right, not just the short terms like a year or two. But decades out.

Can you provide a citation or a more detailed explanation?

<comment><USER15> Euro bond rates are below 0 nominal for maturities up to 15 years:

[https://www.ecb.europa.eu/stats/financial_markets_and_intere...](https://www.ecb.europa.eu/stats/financial_markets_and_interest_rates/euro_area_yield_curves/html/index.en.html)

I don't have data on the quantities of these bonds outstanding, but trillions is almost certain.

There are many other bonds that are still above 0 yield nominal, but which are below 0 real yield due to inflation.

<comment><USER16> Barclays Global Agg bond index includes $13T USD of negative yield bonds. And Swiss bonds have negative yields out to 50 years.

</comment></comment></comment></comment><comment><USER17> > All that capital from institutional investors, sovereign wealth funds, and > the like has enabled start-ups to remain private for far longer than they > previously did, raising bigger and bigger rounds.

This misses the forest for the trees. These investors have so much money because the global economy has exploded over the past 20 years. Saudi Arabia has money to spend because it's selling oil like crazy--oil revenues began to explode after 2000. See [https://tradingeconomics.com/saudi-arabia/government- revenue...](https://tradingeconomics.com/saudi-arabia/government-revenues) I didn't even _know_ about Saudi Arabia's increased revenue, but I knew I could find data like that as it's a consequence of the monumental revolution in global wealth. It's not just China. The economies of Africa and Latin America have exploded over the past twenty years. Similarly, since 2000 most Asian economies began following the trajectory of the so-called Asian Tigers before them.

I've posted it elsewhere, but some reports from a few years ago projected over $300 trillion (trillion!) in global assets floating around, _exclusive_ of real estate and capital equipment valuations (though some of that wealth shows up as securities). That dwarfs interventions like QE that everybody loves to bring up, which even if you account for the inflationary effect still only amounts to a small fraction of global assets.

If you don't appreciate the _fundamentals_ for this explosion in cash then you'll be waiting forever for the other shoe to drop. Keep in mind that the global economy has been depressed since 2008-2010. Indeed, that's one reason there's so much cash parked in the U.S. But when the global economy picks up there'll be even more cash, so even if countries begin reallocating cash elsewhere, that doesn't necessarily mean a substantial drop in absolute terms in the U.S.

The U.S. has a significantly diminished position in global trade, relatively speaking. We may be the biggest trading partner for most countries, but most countries are also trading globally, so being the "biggest" partner for each country doesn't mean we dominate the global economy in the way we once did. Similarly, the complex global supply chain means the emphasis on bilateral accounting fails to appreciate how the underlying flows work and thus how the fundamental global economic engine operates.

The only "bubble" is in the U.S., and while we may see a correction any day now, it's not going to be cataclysmic. Not unless we make it so.

<comment><USER18> > These investors have so much money

Saudi Arabia is running out of money - they have huge budget deficits and are steadily draining reserves. They're so desperate they considered selling parts of ARAMCO but couldn't get the over-inflated valuation they wanted

The reason Saudi Arabia is spending money in foreign investment is because it's part of a last-ditch effort to diversify a dying and unsustainable economy

<comment><USER17> > The reason Saudi Arabia is spending money in foreign investment is because > it's part of a last-ditch effort to diversify a dying and unsustainable > economy

It's not a last ditch effort. It's been their strategy for like 50 years. It's just that it was always doomed to fail from the beginning. What changed is that they now have a lot more money to throw around and more places to throw it.

I want to disagree with your characterization of their budget problems, but it's all beside the point. My point was that Saudi Arabia has ridiculous amounts of cash--much more than ever before--because the global economy has exploded. Saudi Arabia isn't printing funny money to invest in the U.S. They don't give oil away, and countries don't buy it with IOUs. The cash they're burning reflects actual, global economic growth. Likewise for SoftBank. Even if Saudi Arabia and SoftBank implode tomorrow, over the coming decades we're going to see these types of cash-rich investors multiply many fold. They're not anomalous; they're representative of changing fundamentals. The article author _almost_ comes to this realization, but not completely.

The world grew up while Europeans were navel gazing, Americans were shooting terrorists, and the Japanese were doing whatever the Japanese do (secretly bankrolling SE Asian growth?). We still act as-if the industrialization of the rest of the world is in the future. Spoiler alert: it already happened. Not happening. _Happened_. It may not look like what we expected, but the future never does.

Like, 5 billion people doubled, tripled, quadrupled, and more their wealth. Global GDP more than doubled, much of which happened on the backs of people we assumed (and continue to assume) still didn't have two stones to rub together. That's where this surfeit of cash is coming from. It doesn't matter that most of these places still seem (and are) ridiculously poor from our perspective, or that in absolute terms the cash surfeit they're generating isn't that huge relative to our own GDP. The world is overflowing with cash, and whatever the _magnitude_ it still represents a fundamental, qualitative change in the global economy.

Even if global growth rates fall, from _our_ perspective the avalanche of money might still continue and even accelerate. Fast or slow, for the next 50+ years things will only get crazier and weirder.

</comment></comment></comment><comment><USER19> What the article fails to mention is just how much tech has changed people's lives in the past decade. People spend more time staring at their smartphones, order more through Amazon, are more likely to take an Uber or rent an Airbnb, etc. With tech companies being a much bigger part of people's lives, it's only natural that the industry will be more valuable.

My only real fear right now is what happens when funding contracts, and how much of the growth in the sector is a synergistic circle jerk? Is Amazon only worth a lot because of AWS, and only because AWS makes a big chunk of its revenue off startups?

<comment><USER20> That's how I feel about Google ads. Half of money might come from small and medium size businesses.

In most cases, it's wasted money. As soon as those businesses realize it is wasted money,they will stop using Google ads. Leaving behind only the big guys (cops, IBM etc)

<comment><USER21> "In most cases, it's wasted money."

Of course it is!! In a business, it's pretty normal that almost everyone you tell your offer to (advertising) will decline most of the time.

Expecting an advertising impression to turn into a sale 100% of the time is delusional. Even just 10% can be easily considered a remarkably good campaign.

Google ads are not that different from putting an ad in the newspaper back in the day, as in almost everyone who sees it wont care.

<comment><USER22> What on earth... hopefully no one was expecting 100% of ad impressions to turn into sales. Putting ads in the newspaper was fairly effective at driving interest. It still is in some cases, and so is online advertising. You price out your cost per click or cost per thousand impressions and then you see if it changed your sales numbers enough to stand out from the noise and more than paid for itself.

<comment><USER21> Absolutely. If your market is geographically concentrated, a newspaper - <USER2> the people you're targeting in your geography read that newspaper - can be a great channel.

</comment></comment></comment></comment></comment><comment><USER23> Some of it may just be the general economy. We've had a very long expansion that has been surprisingly general. It was considered slow growth, and the Fed is still talking about cutting rates as if a recession were in the offing, following very reasonable indicators. The S&P's P/E ratio (a decent measure of it's over-priced-ness) is around 20, a bit high but not ridiculous.

The tech-heavy NASDAQ, however, is at 45. For comparison it was at 29 before the last big crash.

The NASDAQ P/E is always speculative. People often bid up companies with low current earnings but expecting future earnings. That got very silly during the 90s tech bubble, where it would require profits of the entire world economy to justify some of those prices. But 45 suggests that we're due for a market crash.

It's textbook irrational exuberance, and the whole economy is in a weird place. All signs point to a pending crash, and at least some of the companies that the article is talking about will fail. But we've been talking about that pending crash for half a decade now, and it's still not here.

<comment><USER3> We keep waiting and waiting for these companies to finally start making a profit. And those companies keep making up new narratives about how those profits are coming soon.

Are we in a new age? Is there a chance investors will keep waiting forever? In a age where interest rates are near permanently 0 and people invest in bitcoin ( a currency that has no real value other than the faith people have in it ~ as a store of value), perhaps people will keep investing tesla, uber, etc even if profits never really come.

<comment><USER24> > a currency that has no real value other than the faith people have in it

this is how all currencies work

<comment><USER23> Some currencies require less faith than others. Like when a large organization with an enormous infrastructure insists on paying in that currency and demands payments in that currency. And when that large organization is in control of the land you live on -- including depending on that organization to defend that land in case of invasion.

There's a whole lot more behind those currencies than with Canadian Tire Money or Flooz. When you live in the place you're committed in a way that you just aren't with any other currency. Losing faith in that currency is bad for you in a way that goes far, far beyond the exchange value of a token.

</comment></comment></comment></comment><comment><USER25> Misinformed article. The reason the tech bubble never burst is that

1) The largest tech businesses are actually hugely profitable. The only way they could burst is getting regulated or disrupted out of existence

2) Relative to other industries, bay area tech employees in the right employers are getting paid huge amounts leading to the largest creation of wealth perhaps of all time. This only looks like a bubble to people outside the industry because they don't understand how much this large group of people is making.

3) Yes there is still a lot of venture capital (some foreign, and most of that being biased towards only recent years) chasing large returns in a low interest rate economy, but that is only because of people chasing more #1s. And new hugely profitable businesses are still being made, like Square or Shopify or the yet-to-IPO Airbnb

It's not the acquihires. That only affects a small (relatively) number of people compared to the hundreds of thousands of very well compensated engineers at FAANG and smaller companies.

</comment><comment><USER26> This article cites foreigners and big techs as the source of money without much to back it up.

We know that in its institutional panic the US Fed pumped trillions of dollars into the economy in the form of QE 1-3:

[https://www.federalreserve.gov/monetarypolicy/bst_recenttren...](https://www.federalreserve.gov/monetarypolicy/bst_recenttrends.htm)

Central banks around the world have followed the US lead in a coordinated effort to pump up the volume and avoid currency appreciation against the dollar.

The Fed for its part is now done with its feeble attempts to draw down its balance sheet. The only reasonable conclusion is that more QE will be on tap at the first hint of either deflation or economic weakness.

This created the everything bubble we now face. Prices have become so distorted that it's impossible to value anything or even rationally discuss the end of the cycle.

The entire episode is without precedent and will probably end in an unprecedented way.

</comment><comment><USER27> > _If there was a bubble and it were to burst, kitchen-table investors might > scarcely notice, unlike in the late 1990s._

When bubbles burst the average person doesn't lose because the market plunges. The average person has little money in the market.

They lose because themselves, friends, family and neighbors lose their jobs.

<comment><USER28> It depends, the dot com bust didn't have a widespread affect for most people - not even tech people who were working for profitable companies.

<comment><USER29> The dot com bust had a massive effect, and still represents the historical peak of black wealth in the US. It was mitigated for some people by an immediate bubble in housing, but that bubble only benefited people who owned houses when it started, meaning none of the people who were wiped out by dot com. Black wealth steadily decreased during the entire housing bubble.

Black wealth is interesting in and of itself, but it's also interesting as an isolated population who we know had virtually no family wealth 100 years ago. If you want to know if an economy is only benefiting the already wealthy, look at black people.

<comment><USER30> > If you want to know if an economy is only benefiting the already wealthy, > look at black people.

Why not look at hispanic households?

The vast majority of the current US hispanic population didn't exist in the US just 30-40 years ago. Their wealth started from almost nothing. Most hispanic immigration to the US has been low skill labor, from extremely poor nations. In four decades, hispanics have become the second largest demographic and have become richer than black households.

From 2013 to 2016, the median hispanic household net wealth soared 45%, versus 18% for white households, and 30% for black households. As the larger demographic, I'd argue hispanic households are a better representation of if the economy is only benefiting the already wealthy. Hispanics (75% under 54 years old) are also a far younger demographic than whites (majority over 55 years old), and a moderately younger demographic than blacks. As a far younger demographic hispanics are less likely to have age-accumulated wealth. So that also gives you an excellent indicator on new wealth creation.

Finally, hispanics are far less likely to have a high school level education. 36% of hispanics in the US do not, versus 17% for blacks and 8% for whites. That's another item in favor of hispanic households being a stronger indicator to watch for your premise.

<comment><USER31> Those are compelling reasons to take a larger look. I found charts tracking median household income by race, skip to part 3:

[https://apps.urban.org/features/wealth-inequality- charts/](https://apps.urban.org/features/wealth-inequality-charts/)

Seems hispanic and black families are both experiencing below average gains.

<comment><USER28> That's in large part because of the housing crisis. While home values have for the most part recovered, they haven't recovered in majority minority neighborhoods - even accounting for size, school quality, etc.

</comment></comment></comment></comment></comment></comment><comment><USER32> Wiley Coyote can run across a gap if he just refuses to look down.

There's probably a game theory explanation for what's going on. Nobody wants to be the first to look down... If the train is running you want to stay aboard. On the other hand, you certainly don't want to be left holding the bag.

</comment><comment><USER33> One of the interesting phenomena is that this boom is more specific to US and if you go in rest of the world people will often tell you how their economy sucks and things are in in down trend. In US, the stock prices have indeed grown in same order as earnings which is surprising because how are all these companies magically show such huge growth for almost a decade now but elsewhere this is not the case. One possibility is that lots of US growth come from winning market share abroad.

</comment><comment><USER34> This reads eerily like the articles about endless money right before the massive dot com crash

</comment><comment><USER35> _> More broadly, the tech dura-bubble has coincided with a continued boom in corporate profits that has lifted valuations and increased the sums spent on mergers and acquisitions throughout the whole economy._

How much of this is because of tax changes? In other words, how much of this essentially represents a wholesale migration of wealth to corporations and the rich at the expense of reduced services for the poor?

</comment><comment><USER36> I'd like to hear everyone's thoughts on this...

Over the last 10 years there has been a massive increase in the money supply and a huge inflation in financial assets, but not much inflation in the sorts of goods and services that average people spend their money on.

So, riffing on these results, what if the treasury printed enough money to wipe away the debt of every US citizen, either paying off loans on people's behalf or just giving money to people and encouraging them to pay off their loans?

Because loans are quoted in nominal dollar amounts this would eliminate everyone's loan balances. The money used to pay off the loans would then be invested, because creditors are generally institutions and institutions tend to invest in financial assets.

The net result would be an elimination of the debt of all citizens, inflation in financial assets, but steady consumer goods and services prices.

The downside of this is that income inequality increases, with institutions and holders of financial assets getting a massive transfer of wealth, but the upside is that we get rid of everyone's debt.

What am I missing?

<comment><USER37> It would set up incredible moral hazard. Folks would take on enormous debts and then lobby for another round of that debt repayment. Having set the precedent and given how incredibly popular it would be politically, it would likely happen again.

The net effect would be a spiral of inflation.

</comment></comment><comment><USER38> Be afraid. Be very afraid. When you see articles like this, it's time to worry.

"Stock prices have reached what looks like a permanently high plateau," - Prof. Irving Fisher, economist at Yale, October 16, 1929.

"The Federal Reserve is not currently forecasting a recession." \- Ben Bernanke, Federal Reserve chair, Jan. 10, 2008.

<comment><USER39> Fwiw I don't think the fed chairman should ever say "we're about to enter a massive recession," do you?

<comment><USER38> The job of the Federal Reserve, is "to take away the punch bowl just as the party gets going." \- William Martin, head of the Fed in the 1960s.

</comment></comment></comment><comment><USER40> Will this article be remembered like the book Dow 36,000[0]? Only time will tell, but I would be nervous about suggesting a bubble had "disappeared" rather than the media losing focus on it.

[0] [https://en.wikipedia.org/wiki/Dow_36,000](https://en.wikipedia.org/wiki/Dow_36,000)

</comment><comment><USER41> I wonder if being aware of the bubble also led to changes. From what I understand, it's just not normal today for companies to get funding without any real proof of a market. The juicero's, and magic leap's of the world aren't the norm, they're true unicorns of their own. The average tech company today needs to show real users, and revenue before they can reasonably expect investment. That's not even to mention that startups seem different today then they did in 2010. Back then it seemed like people would say "what if we took this new tech, and combined it with this existing industry". All those combinatrics have been tried, so I think a very large number of new businesses are not necessary "new" but rather "better". Which is kind of easier to do since the market already exists. It narrows the number of unknown unknowns.

<comment><USER42> Look at Zume Pizza. Their fund raising seems insane.

<comment><USER43> Softbank seems to be just throwing money away lately.

[https://www.crunchbase.com/organization/zume- pizza#section-f...](https://www.crunchbase.com/organization/zume- pizza#section-funding-rounds)

According to reviews the pizza isn't even that great.

<comment><USER44> I tried it. Slightly better than frozen. Also, while I was excited to hear about their new, eco-friendly pizza box, my pizza arrived inside a single-use, large mylar bubble wrap sleeve. It would take a lot for me to try them again.

</comment></comment></comment></comment><comment><USER33> One insight in the article is the financial sources that keep the startup scene in sillicon valley going. These are investors from China, sovereign funds and massive entities like SoftBank In addition big tech with their growing war chest have ever more reasons to buy startups. All these financial sources have prevented bubble burst like in 2000 when revenues were expected post IPOs. Now you can just keep going with ever higher valuations for years.

It occurs to me that these financial sources are also why it's so hard to duplicate SV elsewhere: this massive niagras of funding don't exist in Paris or Austin or even London at the scale they do in SV.

</comment><comment><USER45> "Being a giant sponge for salable personal information makes for good business, it turns out."

That's the real backstory here; anonymity, tor, silkroad, and the darkweb, were thus widely demonized 'cos they're explicitly bad for mass-harvesting of people's private information for advertisers and other nefarious causes. Bulk info that proved very profitable in the wrong hands. A huge tech-bubble built upon enforced transparency of people's real identities, private interests, and personal activity.

</comment><comment><USER46> With both the Fed and ECB considering interest rate cuts due to slowing economy indicators it seems an odd time to declare that bubble is ok.

</comment><comment><USER47> OK, when there are articles like that, it's finally time to sell. :)

<comment><USER44> I exited most of my US ETFs and mutual funds about 3 weeks ago. Bad timing, I think...

</comment></comment><comment><USER48> The digital economy is predicated on actual users and actual ad impressions --- the growth and effectiveness of both have proven to be grossly misrepresented.

That's the bubble which is in imminent danger of popping, and at some point, it will.

</comment><comment><USER49> There's still plenty of time for a burst, but it'll reach far beyond tech. Super low interest rates have created a ton of speculation globally in virtually all asset markets.

This time is probably not different.

</comment><comment><USER50> It won't burst unless there is an Extraordinary cascading event that triggers a waves and waves of selling. Like lots and lots of nasty financial news

</comment><comment><USER51> I don't understand the argument that the tech industry is becoming mature and is just being propped up by foreign investment. Right now 3 of the 5 biggest tech companies are basically: high school yearbooks, blockbuster, and taxis.

Do we really think these are the most valuable industries in the world, and not just the things that happened to be easy to make with the tech that existed 10 - 20 years ago?

<comment><USER52> "High school yearbooks" is really "social engagement", "blockbuster" is really "film and television distribution", and "taxis" is really "personal transportation". Each of those industries is absolutely massive, so the dominant player in each industry, regardless of technology or decade, is going to be a financial juggernaut.

</comment></comment><comment><USER53> Something is a bubble if its future discounted cash flows cannot cover its current valuation. Can the author please make a rigorous case by looking at actual numbers (e.g. her predicted valuation 5-10 years ago vs now.. or analyze a few companies today). Or can she please refrain from writing such general, alarmist and meaningless articles?

</comment><comment><USER54> The fed is holding down inflation rates because wages have stagnated. Can you imagine what would happen in this country if there was inflation in the face of the corporate abuse we are suffering with wages that are effectively the same as 1970?

</comment><comment><USER55> > Facebook spent $20 billion on WhatsApp and Instagram; Microsoft spent $26 > billion on LinkedIn and $7.5 billion on GitHub. Deals such as these were > possible only because those acquiring companies were themselves so very > profitable.

Instagram had $0 revenue when acquired. WhatsApp had some revenue, but was not profitable IIRC.

EDIT: misread the line, above comment rescinded.

<comment><USER56> "acquiring companies" not "acquired companies"

<comment><USER55> Oops, misread the line.</comment></comment></comment>


Go: Severe memory problems on 32bit Linux - <AUTHOR> http://groups.google.com/group/golang-nuts/browse_thread/thread/ab1971bb9459025d# <comment><USER2> Wow. That third message, with suggestions for avoiding the bug, reads like a twisted joke. Highlights:

"avoid struct types which contain both integer and pointer fields"

"avoid data structures which form densely interconnected graphs at run-time"

"avoid integer values which may alias at run-time to an address; make sure most integer values are fairly low (such as: below 10000)"

I understand that this isn't a completely brain-dead garbage collector, but warnings like that really scream "I'm just a toy language". It doesn't seem wise to call such a fragile programming tool production-ready or 1.0; the 32-bit implementation should be tagged as experimental, if only to lessen the damage to Go's reputation.

<comment><USER3> Go 1 defines and the backwards-compatibility guarantees one can expect as the language matures. It's more a statement about the language specification than it is about the implementations.

I know from experience that the gc 64-bit version is production ready. It's unfortunate that the limitations of the 32-bit version are not called out clearly on the website.

<comment><USER4> _> I know from experience that the gc 64-bit version is production ready._

Is it really production ready though, or is it the same half-arsed implementation as the 32-bit one, just taking advantage of the larger availability of virtual memory on a 64 bit system?

<comment><USER5> On 32-bit systems, the problem is that there's a very high chance of non- pointer data looking like pointers to existing data, which, in turn might have its own pointer-like data. This means that you can end up keeping an excessive amount of unreferenced data.

However, a 64-bit address space is so much larger that you can't really suffer the same issue. Unlike on 32-bit systems, neither high entropy data nor text will look like valid pointers.

Therefore, the technique can be validly described as production-ready for 64-bit systems.

<comment><USER6> Can someone help me out here with a TL;DR? This is my first exposure ever to any technical aspect of Go, and this discussion makes it sound from this discussion like it doesn't use any tag bits in its pointers, but has its garbage collector run heuristics on the data it examines to see whether it "looks like text" to decide whether to collect it? I know that can't possibly be correct.

<comment><USER7> It's much simpler than that, it's called a conservative collector, It looks at every bit of data, at just pretends it is a pointer, if anything points to a valid allocated address, that address is retained. Otherwise, just like every collection when there are no references, the object is collected.

</comment></comment></comment></comment></comment></comment><comment><USER8> _However, it does not address the base issue, which is that Go uses a conservative garbage collector, and more values look like pointers in a 32-bit world.

The only real fix would be to improve the garbage collector's understanding of which values are pointers and which are something else (e.g., floating point numbers that happen to look like pointers). And that is not an easy fix._

How does this GC work? Is it literally just marching through the heap looking for pointer-sized values in the range that has been mapped to the process?

<comment><USER9> Yep, that's basically it.

It sounds crazy (and it is!) - but it often works reasonably well in practice. SBCL (one of the most performant Common Lisp implementations) has an 'imprecise gc' that works the same way - and I've seen reasonably heavily stressed processes with uptimes in the weeks/months.

Remember, even a few years ago (before fastthread, etc) a reasonably loaded Ruby on Rails app couldn't stay up for more than ~10 minutes w/o memory leaks forcing a restart (DHH said 37Signals as doing ~400 restarts/day per process, IIRC) because the runtime was such a piece of crap. Yet, _many_ people still used it to solve real problems and make real money.

At least Go's memory leaks are much slower than Ruby's ;-)

<comment><USER10> Would that gc scheme potentially cause the following (pseudo) code to break?

      x = malloc(1); // allocates block 'a' in memory
      int i = (int) x;
      x = 0;
      i = i - 1;
      // gc runs here and frees 'a'
      *( (int*)(i + 1) ) = 123; // failure

<comment><USER11> When Go gets a precise collector, simple implementations of this will work. Doing this kind of thing in Go requires importing the "unsafe" package, and any memory allocations done by code importing "unsafe" could be marked as possibly a pointer.

However, it would probably be possible to write code involving two packages, one of which does not import "unsafe", to lead to dangling pointers and eventual crashes. That is why you should be careful about code that imports "unsafe".

<comment><USER12> Actually, the code sample in the grandparent comment obfuscates the memory address by subtracting 1. Even a conservative GC will be confused in this case...

<comment><USER11> Ah, yes, missed that. Nothing a GC can do about code like that. At least it remains true that this can only happen in Go if you explicitly import "unsafe".

</comment></comment></comment></comment></comment></comment><comment><USER13> This is the relevant bug: <http://code.google.com/p/go/issues/detail?id=909>

As the discussion there and in the thread says, the root problem is that Go uses a conservative garbage collector, and on 32-bit a lot more values look like pointers than on 64-bit, so many more things don't get freed in long- running processes. Seems not to be easy to fix.

<comment><USER14> Can anyone knowledgeable about compilers/GCs say why GO went with a conservative garbage collector? From any GO source code its trivial to pick out pointers from values. Is this information hard to preserve at runtime?

<comment><USER15> I recall reading something along the lines of it being hard to use a precise GC due to the the "unsafe" package, but I am not knowledgeable at all.

<comment><USER13> Here's an early LtU thread where someone predicted it'd probably have to use a conservative GC due to some of the addressing features: <http://lambda-the- ultimate.org/node/3676#comment-52560>

</comment></comment></comment></comment><comment><USER16> I suspect the issue exists on 64-bit platforms as well, it's just that it doesn't impact as easily. In theory it is possible/common to have 64-bit machine with less than a ton of physical memory (VPS) and running 64-bit Go program which triggers this bug would result in similar impact as the 32-bit version.

Why yes - Issue #909 essentially confirms this - running 64-bit doesn't fundamentally change anything - it just buys more time for impact because of larger address space and hope of more physical memory. Which is sad on many levels - just mind blowing that the language designers did not think of this upfront! (Oh and Go's built in packages trigger this problem too - per #909 commenting Unicode package makes the program run!)

<comment><USER17> Physical memory does not have anything to do with it, the virtual address space is all that matters.

It might be useful to consider that 2^64 is 2^32 * 2^32. This means the problem becomes important on 64 bit only if an application will use _10 orders of magnitude_ more memory. By considering the historic growth in memory capacity and usage, this will only happen around 2060.

<comment><USER16> Check out <http://code.google.com/p/go/issues/detail?id=909#c32> and the following comment that agrees with it.

This isn't just a address space leak - it is a real memory leak. On 64-bit the GC may not be so easily fooled as on 32-bit but it can still be fooled and that is a fundamental problem that will result in memory leaks - if I have 2GB RAM VPS - it doesn't help to have 2^64 bits of address space (actually it is more like 2^48 ([http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_de...](http://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details) ) - if the GC leaks memory sooner or later my process will be killed by the OS.

<comment><USER17> Again, this has nothing to do with physical memory. It only has to do with the virtual address space.

Of course if you bump into this, it's a real leak, who said otherwise? And yes, it's possible to artificially generate the collision on 64 bit as it's the same mechanism as with 32 bit. It's about whether it happens frequent enough under normal usage patterns to be a concern. Youtube, and everybody who tried Go in production say it isn't, and that's because of reasons outlined in my first reply to you.

<comment><USER16> Care to explain why? You keep insisting without explaining. Have you checked #C32 and how it clearly says it is a memory leak on both 32 and 64 bit platforms?

What is your explanation as to why this is not a memory leak and only a address space leak?

[EDIT POST YOUR UPDATE] Ok - so we are on the same page. I wasn't arguing about the likelihood at all - just the fact that it is possible troubled me as a bad GC design. Sure people use lots of crappy software on servers - doesn't mean it's a sound idea :)

<comment><USER17> But it is a real leak, it's just an artificially created leak. These might be interesting to investigate for DOS potential, but they don't happen under regular usage because you are searching a needle in a haystack.

[edit after your update]

Each GC strategy has its drawbacks, for example the one used by Go has the least overhead in extra memory usage, and it's also simple to understand and implement. Mono got its precise GC only last year, it survived 8 years with a conservative GC. Go is only two years old.

</comment></comment></comment></comment></comment></comment><comment><USER18> gccgo is better on 32bit systems: [https://groups.google.com/d/msg/golang- nuts/qxlxu5RZAl0/NS71...](https://groups.google.com/d/msg/golang- nuts/qxlxu5RZAl0/NS718AK297cJ)

Note that work on the garbage collector is ongoing post-Go1, a faster parallel GC is in process being merged: <http://codereview.appspot.com/5279048/>

But ultimately 32bit systems don't seem to be a big issue for Google or anyone else using Go in production (and there are quite a few big organizations using it: <http://go-lang.cat-v.org/organizations-using-go> ).

Most people moved to 64bits a while ago so the amount of attention the 32bit port gets will never be the same.

<comment><USER19> You know, that kind of sucks ... there are many machines around that are still on 32 bits.

I keep my own Ubuntu laptop (dual-boots to Windows) on 32-bit builds (both Linux and Windows), simply because I have less problems that way (mostly with hardware drivers, but also with software). I keep the Amazon EC2 instances I maintain on 32-bit images, simply because they are cheaper. My Android phone is also 32-bit and will be so for a long time. My other phone, an older iPhone 3GS, is also 32-bit. My servers, prior to Amazon EC2, built with ARM processors, were also 32-bit.

And when I was playing with MongoDB, do you know what I did when I discovered that the 32-bit build was basically unusable? I ditched it and never looked back.

<comment><USER17> I've been exclusively using 64 bit computers and operating systems, both Windows and Linux, for about 7 years now, never had the reported driver problems, well, never had any issue, really.

For me at least, 32 bit is only important for ARM. On the other hand the issue is very much blown out of proportion, most people haven't seen it, even if they run 32 bit servers. Most usual servers written in Go, like web servers, use very little memory. I process 4k requests per second using 7MB of resident memory. There are many memory intensive applications, but you usually don't run those on 32 bit.

<comment><USER20> I do wish the desktop world would just move wholesale to 64 bit, but do note that Ubuntu still marks the 32 bit install the "recommended" one, so I would guess there must be some sort of problems that are lingering in the 64 bit versions. Maybe just flash support or something like that?

<comment><USER21> I don't think there are problems with 64 bit versions, but many computers are still 32 bits. The PC I use right now is 32 bits and I don't feel the urge to buy a new one. So I suppose 32 bit machines will stay around for another decade or so.

</comment></comment></comment></comment></comment><comment><USER22> The problem itself seems quite serious and I would seriously reconsider using Go if I was interested in it in the first place, but after seeing the way this is treated by the Go "community", I am pretty sure I will never ever even think about using Go for anything.

<comment><USER23> _the way this is treated by the Go "community"_

What do you mean?

<comment><USER22> Well, since the people behind Go did not up front say anything about the language/compiler being specifically targeted at 64-bit platforms, I would expect someone more mature from the Go team to step up and say something like "We are sorry, we didn't foresee the consequences of some design decisions and hence screwed it up." and either "We will fix it ASAP" or "We cannot fix it because XYZ". They might not take money for their work directly from the users, but there is still some moral obligation if you create something, release it to the world, praise its virtues and persuade people to use it. As it can be seen in the thread, lots of people already invested lots of time into building things with Go and now they're in serious trouble. Instead, many people in this thread try to somehow downplay the problem, advocate changing hardware (that's something quite new in the programming language world) or following some pretty absurd guidelines. This might or might not be representative of the whole community around Go, but it surely leaves a bad taste, hence the slight irony.

<comment><USER23> There is an "official" response: the post references a bug # where Russ Cox said "the rest of the issue will have to wait until after Go 1".

Note that Go 1 is a "language freeze", not the implementation freeze.

Now that it's known there's a bug that will be worked on later, people proposed possible workarounds, the easiest of which is to switch to 64-bit platform. I agree that downplaying the issue is wrong, but only one person did that.

There is occasional rudeness, mostly caused by strong opinions, but overall I think Go community is pretty good.

<comment><USER22> The very next sentence in this response from Russ Cox is: "Or maybe all the 32-bit systems will be replaced by 64-bit ones.". So, they do not admit this is a serious problem that needs attention, it is not clear whether they will fix it, when they are going to fix and whether anyone cares about fixing it at all.

I couldn't find the adequate words to express this so far, but the reason I at all find this situation worth commenting on is that is reassembles to me a very common pattern of denial I observe among many professionals in various professions in cases where a problem appears that is very hard to tackle or even to analyse in the first place. Often a doctor who has troubles identifying a disease will tell you it's probably just something in your head, a programmer who has trouble reproducing a difficult bug will tell you it's you who probably did something wrong at some time, even a guy who I called to repair my washing machine that was stopping the washing at random told me to "keep it under observation" when he wasn't able to tell what's wrong. Many people simply do not want to put in the work needed to solve an unexpected and difficult problem, and thus, perhaps even subconsciously, try to handle it by pretending it doesn't exist. If you want to be a real professional and a leader in what you do, you can not behave like that, you can not repress a problem when someone reports one to you, you have to have the patience to examine the issue, the experience necessary to know when you can be certain that you have the complete picture of it, then sometimes the courage to admit there really is a problem and then finally you have to solve it, or people will not respect you.

<comment><USER24> I don't think Russ denied it was a problem, so I don't think this is a "pattern of denial". I think you're incorrectly interpreting that statement as his "fix" for this bug.

The fix is well-known (a precise GC), just implementing it hasn't happened yet.

</comment></comment></comment></comment></comment></comment><comment><USER25> Funnily enough, I understood why they went the conservative GC route. It has to do with the overall Go philosophy, which is that they really do not want features to affect data representation. This has meant no boxing (and no easy polymorphism), and a decision like that has logical consequences for GC too.

Here's to hoping they find a cool solution! It's been a problem for GC's since forever, and if they find a general way of handling the problem I'm sure it will be picked up by many other runtimes.

<comment><USER12> In Rust we're working on a solution for this problem. Essentially, the plan is to have RTTI on garbage-collected data (this is already completed and is used in the cycle collector) and precise stack information for every root on the stack. The latter is in a fork of LLVM: <https://github.com/pcwalton/llvm>

But aside from the shameless plug, C# and D (I believe), have had precise garbage collectors for quite a while now, and they have similar memory management to Go. It's well-known how to implement it (but that doesn't make it any less hard — I can totally understand why Google opted for conservative GC in the first version).

<comment><USER25> I know how to do precise GC if you allow me to add a (pointer-size) header to all data living in the heap; i.e. to maintain the RTTI. I don't know how you do that if you're not allowed a header. Do C# and D have headers?

<comment><USER12> I'm sure they do. There are a few things to note here:

(1) In order for malloc to work, you need a header anyway (at least, unless your allocation fits in one of the fixed-size bins).

(2) You can get around the header to some extent by sorting the fields of your objects so that pointers come first, and then all you need to do is to store the number of pointers (or a sentinel value). This is what Haskell does. Of course, this prevents low-level control over data representation.

(3) You can tag (or NaN box) all your values. This is what most MLs do, as well as JS, many Lisps, etc.

(4) You can use a map on the side from pointer to type info to avoid a header. This is what Rust in its early days did. It's worse than a header for memory consumption though, so it doesn't really buy much.

<comment><USER25> So, the thing that always gets Haskell folks when dealing with an implementation (2) is that you can't get uniform data representation when dealing with things like arrays. It means you have to unbox things. Arguably, the situation is not much better in malloc land; if you malloc a large multiple of your object size, you're explicitly saying, "I want this to be unboxed", but by this point you've wandered into generics land.

(3) is annoying. Who likes 31-bit integers? Not I!

<comment><USER12> Yeah, I hate 31-bit integers too. It's not the only tagging scheme though; I prefer NaN boxing (used in SpiderMonkey among others). NaN boxing allows unboxed doubles and 32-bit ints, at the cost of increased register pressure and memory usage on 32-bit systems.

</comment></comment></comment></comment></comment></comment><comment><USER26> Interesting piece of information below in the thread: in reply to "Go being advertised as a systems PL", David Symonds replies with: "It's not. It used to be, but it's not any more."

<comment><USER21> What is the definition of a system PL ?

<comment><USER26> The ability to access the raw memory underlying any object.

</comment></comment></comment><comment><USER27> After switching to 64 bit, we haven't had a single crash. So I would describe the 64 bit version as production ready. But the problems on 32 bit systems should have been documented in the release notes.

Beside this hiccup (and a week without sleep with the website on life support), Go has been a real joy to work with.

</comment><comment><USER28> Are most Androids 32-bit? Doesn't this issue impact the GO Android SDK adoption?

<comment><USER29> > Are most Androids 32-bit?

By virtue of there being no AArch64 implementation announced so far, _all_ androids are 32-bit because there is no 64b ARM core.

> Doesn't this issue impact the GO Android SDK adoption?

Any Go application should be able to run into this issue if it has a similar usage pattern.

</comment></comment><comment><USER30> It's amazing how nonchalant they are about this 'oh sure we'll fix it in a year or so' when the garbage collector is basically all there needs to be in a Google Go runtime

Some comments were asking why early Java's GC wasn't this bad even though it was conservative. The reason is that Java can't take references to fields of an object, so the data mistaken as a pointer has to actually point to an object header. In Google Go you can take a reference to a field, locking the whole object, so the faux pointer can point to any field as well (or in this probably any location in the object). Not exactly the wisest choice in semantics, as they are seeing now that it complicates the GC.

<comment><USER17> It's not _Google_ Go, it's simply Go, there's not a single Google reference on the web page and that's intentional. Looking at your previous posts here and on Reddit I see you are a notorious anti-Google troll that adds "Google" to "Go" so that your negative posts will be associated with both Google and Go.

It's absurd to call it _Google_ Go when there's a first class GNU implementation that has been in development from the beginning, there's at least a closed source implementation and another distinct BSD license implementation in its infancy.

It makes even less sense than saying _Apple_ LLVM, _Juniper_ FreeBSD, or _AT &T_ C.

<comment><USER10> Any recommendation on how we should google for Go related pages?

<comment><USER17> Golang or Go programming works fine. If searching for Google Go produces meaningful results, by all means, use it. I was merely complaining about referring to the project as such.

There's also this: <http://go-lang.cat-v.org/go-search>

</comment></comment></comment></comment><comment><USER31> to go back to 32 bit hardware, you will be running very old machines that you can buy off ebay for <200$ and the power cost offset the new hardware cost in several months.

<comment><USER2> Running a 32-bit operating system on 64-bit hardware is still pretty common. And this problem afflicts ARM as well.

<comment><USER32> This is really disappointing. I was hoping to do some stuff with Go on ARM, but it looks like they are not too concerned about this bug.</comment></comment></comment>