Barry Diller: The Web Won't Be Free Forever (Video) - <AUTHOR> http://www.businessinsider.com/barry-diller-the-web-wont-be-free-forever-video-2009-9

<comment><USER2> I don't agree that "tech people" never cared about content either. They believed it should be free. You only need to look at the USENET to see that many "tech people" wanted the internet to be an open repository of knowledge and was pretty anti-commercial (where adverts were considered rude).</comment>


Venezuelan Hyperinflation Explodes, Soaring Over 440,000 Percent - <AUTHOR> https://www.bloomberg.com/news/articles/2018-01-18/venezuelan-hyperinflation-explodes-soaring-over-440-000-percent <comment><USER2> There's not much difference between an inflation rate of 440000% and 880000%, it just means that the bolivar doesn't work anymore.

Money is a purely social construct. It's only worth something when people collectively believe and trust that it's worth something.

It's a popular idea that dollars and euros derive their value because taxes are paid in that currency, or because it's backed by the state's military power.

Venezuela shows that neither of these are the source of the currency's value.

Collective belief is a pretty fragile foundation to build an economy on, hard to build and easy to destroy.

Another term for "collective belief" is "consensus". We're witnessing a disintegration of political and economic consensus not only in Venezuela, but also in the US.

What happens to the dollar when public consensus, trust and collective belief is weakened?

This is why I find the decentralized, trustless consensus of cryptocurrencies to be especially attractive at this moment in history.

<comment><USER3> I agreed with everything you wrote, until near the end where you said "but also in the US". Forget about politics, but economically the US dollar is still the strongest and most stable currency in the world. It has competitors (which is good!) but I have seen no signs of problems in the US dollar. Inflation has been low in the US for long, probably way too long.

<comment><USER2> _> until near the end where you said "but also in the US"_

I'm not talking about inflation, I'm talking about political stability.

As we see in Venezuela, runaway inflation and economic collapse is the result of political instability and a collective loss of trust in leadership, not the cause.

US influence and power has been in decline since before 9/11, and the Iraq war showed that the US is on the wrong side of the inflection point.

This chart [0] demonstrates that the G-Zero [1] trend is accelerating.

[0] Global Leadership [https://pbs.twimg.com/media/DT1e0feVoAA8Qd0.jpg:large](https://pbs.twimg.com/media/DT1e0feVoAA8Qd0.jpg:large)

[1] G-Zero World [https://www.foreignaffairs.com/articles/2011-01-31/g-zero- wo...](https://www.foreignaffairs.com/articles/2011-01-31/g-zero-world)

<comment><USER3> Thanks for the detailed response. I'm hoping that the downward trend in the Global Leadership Approval chart that started in 2016 will reverse itself after the US political situation changes this year (fingers crossed!). If not, well then yes I guess the US dollar would be going down.

Of course, all good things come to an end eventually, and the US dollar hegemony really started after WW2. Crazy to think that a Soviet spy/asset (Harry Dexter White) helped setup the Bretton Woods accord which positioned the US dollar as the strongest in the world [0].

[0] "How a Soviet spy outmaneuvered John Maynard Keynes to ensure U.S. financial dominance" [https://www.washingtonpost.com/news/wonk/wp/2013/03/14/how-a...](https://www.washingtonpost.com/news/wonk/wp/2013/03/14/how- a-soviet-spy-outmaneuvered-john-maynard-keynes-and-ensured-u-s-global- financial-dominance/?utm_term=.dc435d7ea441)

</comment></comment></comment></comment><comment><USER4> Venezuela has been defaulting on debts since November and the last junk debt traders have finally walked away. No more credit. Venezuela has apparently sold off the last of whatever national assets buyers were interested in; they worked through their gold reserves in 2016-2017 and nothing new is on the table aside from a dubious cryptocurrency scheme and some clapped out PDVSA oil rigs. Venezuelan oil production is collapsing for lack of operating capital and Venezuelan tankers are being seized in foreign ports by creditors. This is cutting off the last meaningful source of foreign currency.

At some point, probably in the next several weeks, the subsistence diet of the Venezuelan military is going to fail and the "Bolivarian revolution" in Venezuela will finally end. But only after having stunted _at least_ one full generation of children.

</comment><comment> rm_-rf_slash There was an op-ed in the WaPo yesterday[1] that was as fascinating as it was terrifying:

 _Rule No. 1 of surviving hyperinflation is simple: Get rid of your money. Given the speed with which money is shedding its value, holding on to it means you're losing out. The second you're paid you run out as fast as you can to buy something – anything – while you can still afford it. It's better to hold almost any asset than money, because assets hold their value and money doesn't.

Find a can of tuna? Buy it. Even if you hate tuna. Even if you have no intention of eating tuna. You can always trade it for something else later. Tuna holds its value. Money doesn't.

I think this is what's so hard to wrap your mind around if you've never experienced hyperinflation. It sounds like it's about prices rising fast, but it really isn't. It's about money breaking down. Under hyperinflation, money no longer works. It doesn't store value. It just stops doing the basic things people expect money to do. It stops being something you want to have and turns into something you'll do anything to avoid having: something so worthless you won't even bend down and scoop it up off the floor while you're looting._

[1] [https://www.washingtonpost.com/news/democracy- post/wp/2018/0...](https://www.washingtonpost.com/news/democracy- post/wp/2018/01/17/in-venezuela-money-has-stopped- working/?utm_term=.e6223791bb9b)

<comment><USER5> Not just money, the entire economy breaks down. Why bother working at last week's living wage won't buy a loaf of bread today?

</comment></comment><comment><USER6> Just a reminder that this is a demonstration of how government-issued fiat currencies are also "not based on physical reality" as many point out for cryptocurrencies.

<comment><USER7> I literally don't think I have ever seen someone say that the issue with cryptocurrencies is that they are "not based on physical reality".

<comment><USER8> How have you not? Its one of the top 5 arguments against.

<comment><USER9> Only from libertarian goldbugs who don't like bitcoin, of which I imagine there are three or four.

</comment></comment></comment></comment><comment><USER10> So what's left? Moving to a commodity-backed currency? Pinning it to another major currency? Bloomberg states the problem but doesn't even talk about whether Zimbabwe fixed their problem and if so how so, much less what options are available to Venezuela. I mean sure I can Google it but it's surprising for Bloomberg to publish such a weak article. It's what I'd expect from USA Today.

<comment><USER11> Brazil had an interesting take on conquering hyperinflation that might apply to Venezuela too (although their current situation is much worse):

[https://www.npr.org/sections/money/2010/10/04/130329523/how-...](https://www.npr.org/sections/money/2010/10/04/130329523/how- fake-money-saved-brazil)

<comment><USER12> That may work when inflation itself is the problem, but the country is otherwise holding together.

Venezuela has serious problems. One neat trick won't save them.

<comment><USER11> Completely agree. As I said, Venezuela is in a much worse situation. They first need to figure out a government.

</comment></comment></comment></comment><comment><USER13> Apparently World of Warcraft gold is more valuable at this point than the Venezuelan bolívar fuerte: [https://twitter.com/KalebPrime/status/952648572729724934](https://twitter.com/KalebPrime/status/952648572729724934)

<comment><USER14> Hasn't it been so for like a year now? At least half a year?

<comment><USER13> Seems like the bolivar's and wow gold's value were on par around june/july 2017 (provided that these tweets are accurate):

[https://twitter.com/KalebPrime/status/877070731942789121](https://twitter.com/KalebPrime/status/877070731942789121) [https://twitter.com/KalebPrime/status/885997066140475395](https://twitter.com/KalebPrime/status/885997066140475395)

</comment></comment></comment><comment><USER15> Borrow huge amounts of money from the banks and buy land... Unless the government is apt to expropriate, then, yeah, just buy anything that stores value.

<comment><USER8> They are very apt to expropiate. They've notoriously fucked up most industries that way.

They also encourage "invasions" of unoccupied properties.

Furthermore, credit is a joke now. The average venezuelan credit card now issues somewhere around $5 of credit. Buying real estate through credit is similarly ridiculous.

(Source: I live here)

</comment></comment><comment><USER16> So where is the new cryptocurrency they promised to issue? They absolutely should switch to cryptocurrency, a highly unstable currency is much better than a currency that is stable in its hyperbolic devaluation and can actually boost the economy. Why don't they do?

<comment><USER17> That was called the petro or something, i think it was only meant to be for oil trading and not a national currency.

<comment><USER16> It was meant to be backed by oil and to back the paper bolívars in its turn and I believe they really should start this ASAP. The only alternative is switching to Brazilian Reals, US Dollars or something like that but who is going to give those to them? A cryptocurrency done right can create worldwide- tradeable, hard-to-constrain value and liquidity immediately from nothing but the potential and I can hardly understand what are they waiting for. Is the ruling establishment there just so power-mad they won't give up the printer even in face of ultimate economic collapse?

<comment><USER18> They don't need actual dollars, just issue a currency with the exchange rate pegged to another one.

<comment><USER19> Hi from Argentina!

We tried that too almost at the same time that Brazil tried the Real. If you are lucky and it is well done, you can convince people that "1 (ARG)Peso = 1 (USA)Dollar". It worked for 10 years ... (1991-2002) [https://en.wikipedia.org/wiki/Convertibility_plan](https://en.wikipedia.org/wiki/Convertibility_plan)

The main problem is that you must reduce the government deficit (that is usually not popular) or get external credit (but you must not be angry with the international banks).

<comment><USER16> A relatively reasonable government like that of Argentina or Brazil can indeed implement a monetary policy and play with deficit and the rate for good but if it consistently fails to it ought to at least provide the people with a usable trading token so they can take care of themselves. It's hard to say what it actually is but given the news we get outside the Venezuelan government is little but useless (not completely perhaps, maybe it keeps drug cartels away or something), they should just issue a reasonably limited amount of relatively valuable currency, halt all but some essential regulations and leave the people alone. Budget deficit cuttig is not popular? I believe the result Venezuelans are getting now are even less popular.

</comment></comment></comment></comment></comment></comment><comment><USER20> Nothing new under the sun.

As a first-order approximation, all currencies in history have ultimately disappeared or stopped working as currencies, from Roman denarii to Italian Florins to Brazilian Cruzeiros to Rwandan Dollars to Venezuelan Bolivares.[a]

Currently there are 190+ countries on earth, most of which have their own currency. Only a fairly small number of those currencies are widely considered stable. The rest are probably destined for the dustbin of history.

[a] [https://en.wikipedia.org/wiki/List_of_historical_currencies](https://en.wikipedia.org/wiki/List_of_historical_currencies)

</comment><comment><USER21> Is anybody even using bolivars in Venezuela anymore? I've been assuming people are using dollars and euros as much as possible.

<comment><USER22> Capital controls make that pretty difficult. There are government set controls on whether you can purchase foreign currency and even then to how much you are allowed to buy.

I remember back in like 2011 Kirchner did this in Argentina while I was living there. There was out of control inflation and capital controls. The government also covered their ear and said "lalalalala I don't care what the world markets say, our currency is worth $x.)

If you were traveling, you could get foreign currency, but you had to apply for it, prove you were traveling, and then accept that the government would allot how much they thought you needed on your trip. I had a friend get $75 per day for their trip to the states. This creates the black market (or in Argentina, the "dolar blue") where the government said that the exchange was 5:1, but economics and the black market said 15:1 (at one point).

Moral of the story - you can not just ignore basic economic principles and dictate the value of your currency. Focus on building a strong and diverse economy and promoting a free market.

<comment><USER23> Mexico did this in the 1980's. It didn't work. It is strange that countries make the same mistakes over and over. I suspect that the Netherlands went through this centuries ago.

<comment><USER24> "Those who cannot remember the past are condemned to repeat it." -George Santayana

But I guess there's an element of "they did it wrong, we'll do it right" or "it'll work for us this time" or "this time is different because of x" and so on.

<comment><USER23> It is probably out of the desperation. Hoping for a miracle.

They don't realize until it is too late that is much, much easier to avoid Hyperinflation (by having responsible policies) than to fix it.

</comment></comment></comment></comment></comment><comment><USER25> shouldn't Venezuela be one the richest country in the world? As far as I know they have the biggest oil reserves in the world.

<comment><USER26> Venezuela is so poorly managed they were losing money at $150/barrel of crude oil.

Last year, oil has been $30 to $50 per barrel. `nuff said. Its an issue of poor governance. Venezuela was heavily dependent on high-priced oil to keep their finances together, and it all collapsed as oil prices dropped.

<comment><USER27> What were they spending their money on?

<comment><USER26> Unfortunately, I don't know. I'm an outsider from the USA. So I don't want to get much deeper into the details and pretend I know a lot about Venezuela.

But clearly, they're doing something wrong down there. They are a very oil- rich and resource-rich nation. So they should have the money to do this correctly, even as Oil Prices have dropped.

</comment></comment></comment></comment><comment><USER28> Interesting how Venezuela is being touted by both capitalists and socialists as a prime example what's wrong with the other.

<comment><USER24> Have there been socialists blaming capitalism? I've only seen socialists, who previously touted the shining beacon of socialism in Venezuela, now claiming it wasn't true socialism.

<comment><USER29> The socialism playbook is to blame capitalism "foreign economic sanctions" and "economic warfare". It's what the Russian premieres did, what Castro did, what Chavez did, and what Maduro is doing.

Also they claim that domestic capitalists are hoarding and causing the system to collapse.</comment></comment></comment>


Show HN: Pokemon Master Name Cards for all. - <AUTHOR> https://zoulor.typeform.com/to/ckxrsW

<comment><AUTHOR> I created this service in good fun of the recent Pokemon Master + Google Maps project. I want Pokemon master name cards and thought that if I want it, you will want it. Cheers and thanks for your support.</comment>


You can now buy a Unix computer for less than the C Programming Language - <AUTHOR> A paperback copy of The C Programming Language costs $52.34 on Amazon http://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1442792912&sr=8-1&keywords=the+c+programming+language<p>Amazon also sells their "Fire" tablet for $49.99, which runs a Linux-based operating system (so not strictly Unix, but close enough) http://www.amazon.com/dp/B00TSUGXKE/ref=ods_gw_d_h1_tab_frd_LG9_TagD?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-hero-kindle-A&pf_rd_r=0XVBJV6JJT07JPK2K4M3&pf_rd_t=36701&pf_rd_p=2211604862&pf_rd_i=desktop <comment><USER2> Prettier links:

[http://www.amazon.com/Programming-Language-Brian-W- Kernighan...](http://www.amazon.com/Programming-Language-Brian-W- Kernighan/dp/0131103628/)

[http://www.amazon.com/dp/B00TSUGXKE/](http://www.amazon.com/dp/B00TSUGXKE/)</comment>


A Future Where Everything Becomes a Computer Is as Creepy as You Feared - <AUTHOR> https://www.nytimes.com/2018/10/10/technology/future-internet-of-things.html <comment><USER2> Kind of reminds me how in the 50's everything was supposed to be nuclear. Cars, refrigerators, jukeboxes, etc.

I mean it wasn't a terrible idea. Couldn't an iPhone have a few thousand nuclear atoms, and it could be powered without ever charging by their natural decay? I can see why everyone thought stuff like nuclear power would be everywhere.

But obviously we became more aware of the risks and that never wound up happening.

Will this happen with computers? Will one day the computing industry be as in bad shape (and as closely regulated) as the nuclear industry?</comment>


Seeing Theory (2017) - <AUTHOR> https://seeing-theory.brown.edu/ <comment><USER2> One on a highly-used but lesser-known statistical test:

[https://www.jwilber.me/permutationtest/](https://www.jwilber.me/permutationtest/)

<comment><USER3> Thank you! I was not aware of permutation tests and this was a very accessible explanation with great visuals.

</comment></comment><comment><USER4> Does anybody know of resources like this for other mathematics topics?

<comment><USER5> Explorable Explanations: [https://explorabl.es/](https://explorabl.es/)

Interactive Machine Learning, Deep Learning and Statistics websites: [https://p.migdal.pl/interactive-machine-learning- list/](https://p.migdal.pl/interactive-machine-learning-list/)

</comment></comment><comment><USER6> If curious see also

2018 [https://news.ycombinator.com/item?id=18769099](https://news.ycombinator.com/item?id=18769099)

2017 [https://news.ycombinator.com/item?id=13760353](https://news.ycombinator.com/item?id=13760353)

2017 [https://news.ycombinator.com/item?id=13735714](https://news.ycombinator.com/item?id=13735714)

</comment><comment><USER7> 404 on the feedback page.

Typo on page 9:

A =. {first flip heads} = {HH, HT}

B =. {second flip heads} = {HT, TT}</comment>


What should I send investors? Part 2: Deck. - <AUTHOR> http://www.venturehacks.com/articles/deck <comment><USER2> This idea is definitely on the way out. It was the norm in the 90s. Much less so now. Most angel investors I know no longer expect a ppt.</comment>


What companies does Google own? - <AUTHOR> https://acquiredby.co/what-companies-does-google-own/ <comment><USER2> I think this version is more complete (at least, it includes the most recent acquisitions): [https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Alphabet)

Some other lists on Wikipedia include:

Microsoft: [https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Microsoft)

Apple: [https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Apple)

Facebook: [https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Facebook)

Amazon (no pretty table): [https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Amazon)

</comment><comment><USER3> Pro-tip: After a six month blackout period, acquisitions are eligible for awards in the Google Vulnerability Rewards Program.

[https://www.google.com/about/appsecurity/reward- program/](https://www.google.com/about/appsecurity/reward-program/)

</comment><comment><USER4> Title is misleading... the list includes companies like Boston Dynamics and Zagat that Google/Alphabet once acquired but no longer owns.

</comment><comment><USER5> I'm surprised that only two surprised me:

HTC mobile (I assumed an HTC phone is an HTC phone)

Boston dynamics (I saw this as a DoD thing)

And I think a lot of people (though maybe not here) may not know about Nest and Waze. I've heard people being surprised about it, though I don't know if they made it obvious by now because I don't use either.

<comment><USER6> They sold Boston dynamics and a HTC phone is still a HTC phone. They only bought the team that made pixel

</comment></comment><comment><USER7> > July 18, 2008 ZAO Begun

Not true, this deal never went through due to anti-monopoly regulations.

</comment><comment><USER8> Are we talking about "Google" Google or "Alphabet" Google?

</comment><comment><USER9> The google cemetery is even more interesting:

[https://gcemetery.co/](https://gcemetery.co/)

<comment><USER10> There are so many quality products there that never quite caught on.

</comment></comment><comment><USER11> Didn't know Flutter was from acquisition: [https://acquiredby.co/google- acquisitions/flutter/2724/](https://acquiredby.co/google- acquisitions/flutter/2724/)

<comment><USER12> I don't think the "UI Toolkit" Flutter you know today was from an acquisition. Eric Seidel (leading the Flutter team at Google) mentioned in a video that they needed a name for the project and they used a name from one of their acquisitions. As verifying that a name is available in most important countries is expensive and time-consuming, they just went through their internal database of available names and this is how they picked Flutter. I couldn't find a link to the video right now.

<comment><USER13> What was the main product of the original Flutter?

<comment><USER14> I found this [[https://flutterapp.com/](https://flutterapp.com/)], but I don't quite understand what the product was.

Edit: Found this [[https://flutter.en.softonic.com/mac](https://flutter.en.softonic.com/mac)]. It uses webcam to detect motion gestures.

</comment></comment></comment></comment><comment><USER15> Interesting, although not surprising to see how large powerful companies keep buying up other tech companies and possible competition early on and expand that way.

</comment><comment><USER16> I wish people were more open about their acquisition prices. An entire generation of entrepreneurs could be inspired if only they could see the potential upsides of doing a startup.

<comment><USER17> I don't think that the goal of a startup should be to get bought.

The upsides of doing a startup are many, being bought and seeing your baby/hobby being ruined outside of your control is torture.

<comment><USER18> I am sure 99% of people would sign up for the latter immediately if they were promised a good sized payout. Torture is a gross overexaggeration.

<comment><USER17> It really isn't an exaggeration and can lead to depression.

It doesn't have be bad though, but if you are in a good place and enjoying the work and are making a profit anyway, then there's perhaps not that much to gain from selling.</comment></comment></comment></comment>


Monk, a glue framework for web in Ruby - <AUTHOR> http://www.rubyinside.com/monk-a-ruby-glue-framework-for-web-development-2245.html

<comment><USER2> This looks like an app that turns Sinatra into 1/3rd of Rails. It seems like it defeats the purpose.</comment>


The npm debacle is partly your fault (and here's what you can do about it) - <AUTHOR> http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle

<comment><USER2> Hmmm. I kept npm files out of our repos. Urgh this is an annoying new step to node development

Someone should tell github the new way... [https://github.com/github/gitignore/blob/master/Node.gitigno...](https://github.com/github/gitignore/blob/master/Node.gitignore)

<comment><AUTHOR> It already says to comment that line out for deployed apps.</comment></comment>


Plenty to Watch Online, but Viewers Prefer to Pay for Cable - <AUTHOR> http://www.nytimes.com/2010/08/23/business/media/23couch.html?ref=technology <comment><USER2> I think the critical missing component here is channel surfing from the couch. If I had a set-top box that allowed me to flip through a bunch of pre-made "channels" featuring cleverly grouped internet shows, I would be much more willing to watch internet based stuff. I think even simulating the effect of entering a program already in progress would make sense too. Traditionally, that has been the way we sample content on tv, and having to start fresh at the beginning of every new show is too time consuming.</comment>


An overview of the science on function length - <AUTHOR> https://softwarebyscience.com/very-short-functions-are-a-code-smell-an-overview-of-the-science-on-function-length/ <comment><USER4> I find that a lot of junior developers tend to go overboard with creating small functions, and the motivation is largely aesthetic. They have a mental image of what "clean" code is supposed to look like, and it doesn't involve lots of indentation, curly braces, mathematical notation, etc. So they often try to bury these messy details inside a function.

They don't have a lot of experience reading and debugging other peoples' code, so they might not consider how much of a pain it can be to have to go jumping through a whole bunch of deeply nested one or two-liner functions just to see what the code actually does.

<comment><USER5> Small functions are a form of semantic annotation when used properly.

If I'm working with code that modifies an image, I'd much rather see "rotate" than a matrix multiply. Heck, if I'm dividing a number by some special value, say to normalize it, I'd prefer to see "normalize" than a mystery division. I do agree that I'd rather see x + 1 than "addOne" though, since that doesn't tell me anything the code itself didn't.

<comment><USER4> If a block of code is short (a few lines or less), and doesn't get reused in multiple places, I often prefer to add a clarifying comment rather than extracting the code out into a separate function. That way they reader doesn't need to go jumping around to see what the code does. And you can fit more information on a comment line than you can in aSuperDuperDescriptiveFunctionName.

</comment></comment></comment><comment><USER6> There are so many compounding factors here that the conclusion seems unreliable. It also reminds me a lot of the streetlight effect[1], in that defects may simply be easier to detect in smaller functions so that's where we find them.

Many of the conclusions center around density and lines of code. This is weird because if smaller functions lead to less overall code, then if you have 2 bugs in a 1,000 sloc codebase it'll measure worse than 6 bugs in a 10,000 sloc codebase that does the exact same thing.

It might be more valuable to compute the defect rate per cyclomatic or kolmogorov complexity. Or some other measure that's independent of line length and then figure out how function size impacts those complexity measures.

[1] [https://en.wikipedia.org/wiki/Streetlight_effect](https://en.wikipedia.org/wiki/Streetlight_effect)

<comment><USER7> I think you make a valuable point. If somebody writes concise, clear code with little duplication, but still has a bug, their stats might look worse simply because their code is shorter.

It's also not clear that bug rates should be the only/main thing to look at. Complexity measures can also help to indicate if the code is easy to read/extend. In my experience low cyclomatic complexity does correlate with more readable code.

<comment><USER8> > If somebody writes concise, clear code with little duplication, but still > has a bug, their stats might look worse simply because their code is > shorter.

Fortunately, the science here me to indicate the opposite: the less code you have, the fewer defects per LoC you'll have. This is also indicated in the article, which mentions that both function size and function length were found to be correlated to higher defect density, meaning that both may in fact simply be estimators of overall code length - that overall code length correlates with defect density per LoC.

> It's also not clear that bug rates should be the only/main thing to look at. > Complexity measures can also help to indicate if the code is easy to > read/extend. In my experience low cyclomatic complexity does correlate with > more readable code.

The article does actually cite some (necessarily small-scale) studies on this as well, which have also tended to find that larger functions are easier to read for debugging purposes, and that it was easier to add new functionality to the system with larger functions; but that it was easier to modify the existing functionality of the system with smaller functions. This is all in the section entitled 'Practical Effects'.

<comment><USER7> > Fortunately, the science here me to indicate the opposite: the less code you > have, the fewer defects per LoC you'll have

I judged things conditional on the fact that a bug exists. If you apply the technique of counting bugs/loc blindly you may end up favouring longer, more tangled code. Think about it this way: if your goal is low bugs/loc then when a bug shows up you will be incentivized to fix it in a way that increases loc, instead maybe of simplifying thing. This will lead to fewer bugs and lower bug density.

</comment></comment></comment></comment><comment><USER8> I think that this result is rather intuitive, even in the common paradigm of 'a function should do one thing and have a good name that describes that thing'.

Essentially, the idea that code is easier to understand with small, well- named, cohesive functions relies on the functions being bug-free themselves, and on the relevant behavioral details being perfectly caught in the name and types.

However, if small functions have bugs, it is pretty intuitive that it takes more time to explore a call graph than a linear code listing to find that bug.

Furthermore, when chaining many small functions to achieve a more complex functionality, bugs can more easily slip in the chain itself. For example, a function may modify a list you pass in and also return it, when your chain assumed it would return a copy. A sort function may be unstable when the calling code assumed it was stable. A function may move to another thread when the calling code assumes that locking is unnecessary.

All of these would be easier to catch if the code were inline, instead of abstracted behind a function signature. Of course, this has to balance somehow with not rewriting sorting procedures in every function of your code base.

I think that the answer probably lies with some idea of separating library code and application code. Library code should be composed of many small functions, well documented and well unit-tested. Application programmers should all be familiar with the library and its semantics. In contrast, application code should probably favor larger functions and avoid ad-hoc abstractions. If there is a small piece of functionality that seems re-usable, it should usually not be moved to a separate function, but to a separate library.

<comment><USER7> I'm not sure the first part of the article is based on a sound methodology. For example, we don't have the number of classes for each bucket in the plots [1] and [2]; perhaps there are only a few classes of one liners - probably not a statistically representative sample.

It's also not clear what type of code is counted. I'm not convinced boilerplate (setters, getters, simple constructors) should be taken into account. It will artificially decrease the average method length in a class. Imagine a class with 10 fields (hence 10 setters, 10 getters, maybe a few constructors) and one method of 100 lines. The average method length will be 120 (100 + 20*1 from the boilerplate) / 21 ~= 6 lines of code. If there are bugs in this class, they basically have to be in the large method; still, in statistics this would count as a class with pretty short methods overall.

I'm also surprised by what counts as a long method - in my experience code starts getting messy with lengths > 20 - 30. These methods don't even seem to be represented in the data.

> application code should probably favor larger functions and avoid ad-hoc > abstractions

Why favor large functions? Maybe allow them, but why encourage? Also, we haven't established what large is (20 lines - perfectly fine; 200 lines - <USER3> don't think this can ever be justified).

> If there is a small piece of functionality that seems re-usable, it should > usually not be moved to a separate function, but to a separate library.

This does seem excessive. Don't you think there might be code that can be locally reused? Does every little thing have to go to a library?

[1] [https://i2.wp.com/softwarebyscience.com/wp- content/uploads/2...](https://i2.wp.com/softwarebyscience.com/wp- content/uploads/2020/08/Screen- Shot-2020-08-24-at-9.13.53-PM.png?resize=768%2C564&ssl=1)

[2] [https://i1.wp.com/softwarebyscience.com/wp- content/uploads/2...](https://i1.wp.com/softwarebyscience.com/wp- content/uploads/2020/08/Screen- Shot-2020-08-24-at-9.15.45-PM.png?resize=768%2C563&ssl=1)

<comment><USER8> Your points about getters and setters are valid, and may be skewing the results for Java especially. However, I believe they should be expected to be skewing them in the direction of improving the numbers for very small methods, not harming them.

> I'm also surprised by what counts as a long method - in my experience code > starts getting messy with lengths > 20 - 30. These methods don't even seem > to be represented in the data.

This is a good point, and I believe it is the main reason the article talks about Very short functions being sub-optimal. I think almost everyone wod agree that a function in the range 1-5 lines of code is very short, while deciding if a 20-Loc method is short or long is going to be more disputed.

> Why favor large functions? Maybe allow them, but why encourage? Also, we > haven't established what large is (20 lines - perfectly fine; 200 lines - <USER3> > don't think this can ever be justified).

My idea is to favor expressing serial logic serially. That is, if you have to do A then B then C then D, prefering to write it that way, rather than A, then foo() [which does B and C] then bar() [which does D]. This implicitly favors large functions over short ones, assuming that the code is required at all, of course. Short code is still preferable to long code, but at the module level, not function level.

> This does seem excessive. Don't you think there might be code that can be > locally reused? Does every little thing have to go to a library?

There might be, of course, this is not about strict commandments. But I think that looking at many code bases, there are numerous functions called only once, which essentially act only as comments. A lot of the time, it may be worth it to refractor the code more deeply, and instead of simply extracting a piece of a larger function into a non-reused smaller function, to try to extract some common pattern into a library, and to keep the business logic in- line in the original function.

Just as an example, if you have something like

        for(int i=0; i <n1; i++) {
            for(int j=0; j <n2; j++) {
              arr3[count++] = arr1[i] + arr2[j] ;
            }
        }

As part of a large function, instead of extracting this into an 'addArr1AndArr2' function, to extract the general pattern and leave so thing like this in the original context:

        arr3 = zip(arr1, arr2).map(a1,a2=>a1+a2);

Of course, this will not always be possible, and sometimes a function can just become too long even in serial logic. But a lot of the time, the effort of reducing line count by extracting or applying library functions will be more worth it than simply reducing function line count by more simplistic refactoring.

</comment></comment></comment><comment><USER9> I am glad that somebody is trying to challenge the conventional wisdom.

This might also be relevant: [http://number- none.com/blow/john_carmack_on_inlined_code.htm...](http://number- none.com/blow/john_carmack_on_inlined_code.html)

</comment><comment><USER10> I saw this discussed elsewhere where it was pointed out that Java has a tendency to have objects with lots of small getters and setters. This might effectively be a proxy metric for objects that do too much and expose too much of their state.

</comment><comment><USER11> When there is a correlation between A and B it could be that A causes B or that B causes A or that A and B have a common cause. It could also be that the correlation is just a coincidence.

I tend to write longer functions when the thing being done is simple and shorter ones when the thing being done is complex.....

</comment><comment><USER12> It's true one huge function repeating things and excessive fragmentation into subfunctions are both less than ideal to maintain and there's a desirable middle ground. But

>> Very short functions are a code smell

that's definitely not unconditionally correct. There are many cases where dereference helpers of the form x_to_y(x), wrapping type conversions that might go through three or four levels of struct members are going to eliminate mistakes in bulk code. They may be done as preprocessor defines or as inline functions but either way they are usually a green flag, not a red flag.

<comment><USER13> You quoted the title, but the title isn't the complete conclusion, which is:

> As such, software developers should be wary of breaking their code into too > small pieces, and actively avoid introducing very short (1-3 lines) > functions when given the choice. At the very least unnecessary single-line > functions (ie. excluding getters, setters etc.) should be all but banned.

I believe a x_to_y(x) fits into the "etc." of acceptable single-line functions.

</comment></comment><comment><USER14> Does anybody do coupling and cohesion any more?

That was always the dividing line I was taught. A cohesive function you could name to increase the abstraction level and stop your brain overloading.

<comment><USER15> Something I didn't appreciate until several years into my career is that even decoupling has a cost. By adding a layer of abstraction, you're making a bet that the mental overhead of tracking that new idea is smaller than the mental overhead of tracking its implementation directly. You're introducing a _new_ concept that the programmer didn't have to think about before, in hopes that it allows them to _ignore_ a larger set of information some of the time. For tiny functions, especially if their concept isn't already familiar to the programmer, this may often not be a good tradeoff.

</comment></comment><comment><USER16> I'm unconvinced.

Two notes - first, the experimental evidence seems to involve taking people unfamiliar with the codebase and asking them to debug or investigate code with either long or short functions. I can certainly conceive of it being easier to learn and debug a single long function than multiple smaller ones if one is unfamiliar with the codebase. I'd expect that effect to go away once one is asked to debug the same code again.

Second, the article asserts more bugs are found in shorter functions. However, this is only taking lines of code into account, not functional complexity. As code lives, bugs are found and corrected; often those bugs are to do with unforeseen runtime circumstances. Joel Spolsky covered this memorably a couple decades ago [1]. Again, taken as a static snapshot, I am not surprised that short code correlates with bugs, but I don't think that tells us any meaningful information about how to code. A codebase is not a static entity.

As pointed out by several people already, the point of short functions is abstraction and comprehensibility - we want one and only one place to talk about reading a file, one and only one place to talk about handling a particular message type. Similarly, we want to know when we look at a function that it does one and only one thing, and we want to know when we look at our code that what it says it's doing is what it's actually doing.

I think this is one of those studies similar to the "judges sentence harsher before lunch"[2] study - the type of effect discussed fails under any reasonable comparison to commonly-experienced reality. Consider your own personal experience working in codebases and how this article aligns with that - phenomenological reporting can indeed be suspect, but when it contrasts starkly with experimental results it often indicates poor study design.

[1] [https://www.joelonsoftware.com/2000/04/06/things-you- should-...](https://www.joelonsoftware.com/2000/04/06/things-you-should-never- do-part-i/)

[2] [http://nautil.us/blog/impossibly-hungry- judges](http://nautil.us/blog/impossibly-hungry-judges)

(I hope I can use this level of motivated reasoning to critique the next study I agree with, too.)

<comment><USER17> > the point of short functions is abstraction and comprehensibility

If you have clean code style short functions you get nothing of that. There you split functions into more functions just for the sake of it. You end up with function names that describe the code worse than how the code describes itself, similar to comments beginner programmers make. Why is a comment "Increments i by one" for i++ not ok, while a function "incrementIByOne" is supposed to be good style?

Even if you don't make functions clean code-style ridiculous short, abstractions still come with a cost. You have to do weigh costs and benefits each time.

<comment><USER18> _"Why is a comment "Increments i by one" for i++ not ok, while a function "incrementIByOne" is supposed to be good style?"_

It isn't, but _nextOrderNumber_ could be, especially if it is used in multiple places. That function could easily evolve into _doing_ "increment i by one, atomically", "generate a random UUID", "get a new unique ID from the database", etc.

</comment></comment></comment><comment><USER19> This post describes a process of decomposing code into very simple functions: [http://www.gar1t.com/blog/solving-embarrassingly-obvious- pro...](http://www.gar1t.com/blog/solving-embarrassingly-obvious-problems-in- erlang.html)

This results in functions which are, I feel, a bit too small for comfort. On the other hand, Erlang's pattern matching on function parameters has an effect similar to Eiffel design by contract. It has the potential to reduce the number of tests that need to be written (many of which are often very short functions).

Ideomatic Erlang/Elixir code tends toward smaller functions and pattern matching on multiple function heads instead of if/then/else logic.

</comment><comment> aaron-santos Is it difficult to believe that functions can be "too small"? I've found myself in both code bases with enormous 5kloc functions as well as code bases where I had to juggle 10 1loc functions in my head in order to figure out what the hell was going on. Both are their own forms of torture.

A 5loc/function sweetspot sounds about right.

<comment><USER20> Extremes are generally suboptimal, but the prevailing wisdom seems to be to have many small functions, so I'm all for a study that pushes us back to the middle.

</comment></comment><comment> awinter-py Hmmm I wonder if test coverage is a factor here

One long function gets run every time you change any piece of it, whereas a more complex call graph can be edited without testing every permutation

(yes there can be branches in the function too)

</comment><comment><USER21> I lop Ike this author:

> Time to scare the wikipedia editors among you and do some original research. > All the code and data can be found at...

</comment><comment><USER22> By this measure, Haskell is an abomination and Combinators are a 'code smell'. Not sure I agree.

</comment><comment><USER23> The heading is sort of misleading.

> To put it plainly, if we have a long function and split it into smaller > ones, we're not removing a source of defects, but we would simply be > switching from one to another.

Of course ... But when you use short functions, you try to abstract things and make these functions usable in general cases. Who thinks, that simply splitting up a long function with zero changes fixes any bugs? Hopefully very few people. The only advantage in that case would be, that one can think in the context of that smaller function about what it is doing and that might help to find a bug _and then fix it_ by changing the logic. By then we have done already more than simply splitting up the long function though.

Long functions usually do more than one thing to achieve a more complex thing, which requires doing multiple steps. That makes them less reusable. They become too specific in what they achieve. If ones naming skills (those are very important) are not up to the task of naming long functions precisely, then perhaps one will forget, that this long function does something very specific inside to reach its goal. It will silently have lost composability. Other developers for sure will not know, unless they read all the code. I have seen atrocious 300+ loc functions, which serve exactly one purpose and interact with so many parts of the system, that I can read them 10 times and still do not get what they do in their entirety.

By not using small functions, one gives away readability as well. Every function is a chance to give a name to some short program. Short functions can be looked at separately, if written well. Of course, if you modify a lot of global state in your short function then no one can help you any longer.

> All of the studies measuring defect density found increased defect density > for smaller functions. One possible explanation was suggested by [2], who > proposed that the increase in errors was due to what they called "interface > errors" – that is, "those that were associated with structures existing > outside the module's local environment but which the module used." This > would include errors such as calling the wrong function.

Well, that happens usually, when the naming is off or difficult to remember or follow. That is why naming things is an incredibly important skill. The name of a function should, if possible, give a good picture (by convention if there is any) of what the function is doing. Do not tell me, that the 100 loc function can be described in a single verb. It is most likely doing much more than one thing.

So in general I am not convinced by how the title and intro of the article put it. If we look at the article, the title is also actually different than here. It says "Very short [...]" not "short".

They would have to limit the scope of their study a lot, to make a good point. For example:

(1) procedural code / mainstream "every noun is a class" code / functional code

(2) the kind of expertise of coding people allowed to take part (Was the code written by capable people?)

(3) the programming languages they look at

It seems that this research might be biased by what code they looked at. Some programming communities are not as well known for keeping code clean as others. They are often associated with "only learned one programming language ever, never widened their horizon to a different methodology or paradigm". Those are mainly found in languages, which are very widely used and up at the top of the programming language usage lists like TIOBE. The reason is, that being at the top of the list is used by many as a justification to not needing to learn a different tool. Many people stop learning. Here I quote the article:

> However, nowadays the vast majority of functions are under 50 lines. A quick > analysis of Eclipse, a popular open source IDE, reveals it averages about > 8.6 lines per method in its source code.

Relating to an IDE, which is mainly used for Java.

> This shift in function sizes is perhaps partially due to changes in > programming languages. In the 80s a Fortran "module" was commonly considered > a function and some variables (see eg. > [https://www.tutorialspoint.com/fortran/fortran_modules.htm](https://www.tutorialspoint.com/fortran/fortran_modules.htm)) > and function was the basic building block of software, whereas nowadays most > Java or C++ programmers would define "module" as a class consisting of > multiple functions.

They do that, because for a long time their languages were so limited, that they did not have any other means of expressing a module. This also discouraged a style which does not use objects, but only functions. Add to that, that Java (and I think neither C++) does not have TCO and you have yet another reason, why Java or C++ code is not a good argument, when talking about short functions. Java got modules now, as far as I know. Not sure developers make proper use of them.

I would like to see the same research being done on a language like Haskell or Scheme, one language at a time.

<comment><AUTHOR> >So in general I am not convinced by how the title and intro of the article put it. If we look at the article, the title is also actually different than here. It says "Very short [...]" not "short".

The "very" word was automatically stripped by hackernews. I'm guessing some system to tune down clickbait posts?

>By not using small functions, one gives away readability as well. Every function is a chance to give a name to some short program. Short functions can be looked at separately, if written well. Of course, if you modify a lot of global state in your short function then no one can help you any longer.

I disagree about readability - I think the empirical experiments show enough evidence about short functions not being more readable than long functions, that we can't take that as granted.

For reusability, you might be right, and maybe that's why short functions did seem to perform better when modifying existing functionality.

>Well, that happens usually, when the naming is off or difficult to remember or follow. That is why naming things is an incredibly important skill. The name of a function should, if possible, give a good picture (by convention if there is any) of what the function is doing. Do not tell me, that the 100 loc function can be described in a single verb. It is most likely doing much more than one thing.

Sure, but naming things well is also a difficult skill, which means not everyone can do it well. If we look at programming as a worldwide phenomenon, the vast majority of programming is done in English. However, the majority of programmers aren't native speakers, meaning they face an even steeper climb to become good at naming things. There will always be cases where programmers misname functions, or don't update the name when changing functionality, or typo, and I think the data here shows that things like that do happen.

>I would like to see the same research being done on a language like Haskell or Scheme, one language at a time.

I do agree that all the research focuses on mainstream languages, and the results might be different for functional languages. However, the point of this post is to look at science and there's simply no science there. There aren't any bug datasets focusing on functional languages either.

The point of this post is to gather what we know about function length and what we don't. I feel you've pointed at many of the areas we don't know much about - and maybe we'll get there one day. However, for now, we need to look at what we know and what kind of generalizations we can make from what we currently know.

<comment><USER24> > I think the empirical experiments show enough evidence about short functions > not being more readable than long functions, that we can't take that as > granted.

Pure anecdata on my part, my observation over the years is that developers tend to cluster on this cluster with high correlation to if they're a top down or bottom up thinker when it comes to coding in that top down devs tend towards smaller functions and bottom up devs tend towards larger functions.

If there is in any validity to my anecdata, my hypothesis has been that the top down/smaller function crowd is more likely to trust underlying implementation of sub-functions for one reason or another, while the bottom up/larger function crowd wants to be able to visually verify how things work.</comment></comment></comment>


The World in 2050 [video] - <AUTHOR> http://www.youtube.com/watch?v=Mx8qYmkV5NQ

<comment><AUTHOR> If the concept of exponentially growing technologies intrigues you, I can recommend Peter Diamandis' book _Abundance_ [1].

[1] [http://www.diamandis.com/abundance/](http://www.diamandis.com/abundance/)</comment>


Show HN: Using Spaced Repetition and LeetCode to Prepare for Interviews - <AUTHOR> https://spacedleet.imedadel.me <comment><USER2> It should have more demonstrations of the product. I've readed the text 2-3 times and still didn't get what does it do.

<comment><AUTHOR> Hi! I really appreciate the feedback :) I just updated the landing page with more examples. What do you think? ([https://spacedleet.imedadel.me](https://spacedleet.imedadel.me))

<comment><USER2> it is way better now. Good job!</comment></comment></comment>


What are your preferred news sources? - <AUTHOR> Aside from this esteemed website, what are your other sources of news? <comment><USER2> I Use Google Play Newsstand (both the site and the Android app):

[https://newsstand.google.com/](https://newsstand.google.com/)

BTW, even if you don't like Newsstand for consuming news, keep in mind that following topics and publications in Newsstand (eg. [https://newsstand.google.com/my/library](https://newsstand.google.com/my/library)) also affects the cards shown in the Google App feed (née Google Now), and the Newsstand web UI is _much_ easier to use for managing/following lots of topics.

I'm less certain as to how data about in-feed user actions ("Recommend fewer stories like this" and similar affordances) are shared between the two venues. It seems intermittent or episodic, rather than continuous.

</comment><comment><USER3> [https://www.wikitribune.com](https://www.wikitribune.com) is my hope for the best news source in the near future. It already shows quite some progress.

</comment><comment><USER4> [https://legiblenews.com/](https://legiblenews.com/)

A clean, simple, no nonsense news site.

<comment><USER5> Woah! I am adding this to my reads in the morning. Thanks for the link!

<comment><USER4> kinda late, but no problem! I forget where I found out about it.

</comment></comment></comment><comment><USER6> Local free newspapers, local broadcast news on TV at the laundromat, newspaper headlines at standa and drug stores, and Reddit.

I kinda gave up.

</comment><comment><USER7> The Economist is excellent.

<comment><USER8> I'm paying for their Espresso app and to me it's worth it. A way to keep tabs without being bombarded with a ton of unrelated news articles.

</comment></comment><comment><USER9> Reuters and BBC for day-to-day.

Local city newspaper (online).

Google news sorted by topics.

Reddit.</comment>


Become the most frequent committer on Github - <AUTHOR> https://github.com/Mamady/green-slate

<comment><USER2> There's also these:

[https://github.com/gelstudios/gitfiti](https://github.com/gelstudios/gitfiti)

[https://github.com/will](https://github.com/will)

[https://github.com/kanzure/streak](https://github.com/kanzure/streak)

</comment><comment><USER3> I was slightly confused when I opened this link. I was pretty sure I didn't click the "Here's the Most Idiotic and Brilliant App Ever " link which also was on the front page at the time.

</comment><comment><USER4> But that's cheating...

Do you want to work for a company that buys this lie and make them believe you are a code machine?

That lie WILL bite you in the back some day.

<comment><USER5> Personally I like to fuck with people who take themselves too seriously, and those companies -- companies that put "fully public, open-source contributions" at the top of their list of desirable (but not mandatory) job postings -- are certainly full of themselves.

</comment></comment><comment><USER6>
      > # make a change to file.rb

You don't need to change the file to create a commit. Just run this with appropriate range of committer dates:

      > GIT_COMMITTER_DATE=? git commit --allow-empty;

<comment><AUTHOR> nice. Learning something new every day :)

</comment></comment><comment><USER7> I like it, not because I like cheating but because I think it exemplifies how bullshit this notion that more commits == more commited is, and how it encourages people pulling shit all the time. Even Linus is mad about it xD

</comment><comment><USER8> Is there a way to tell the most frequent committer on Github? Maybe if there is Github could award a prize every month—a gift certificate to a pizza place maybe?

(in secret of course)

<comment><USER9> Not sure about the most frequent ones, but there is a list of the most "active" ones here: [http://git.io/top](http://git.io/top)

</comment></comment><comment><USER10> I actually just started a challenge to do 100 commits in 100 days, and I'm up to almost 70 (w/ a streak of 31). This seems so much easier :P

</comment><comment><USER11> And, how is this helpful you say?

<comment><USER12> By getting you that job with people who put more value on falsifiable data than on actual skill.

<comment><USER5> Public and open-source contributions aren't a measure of skill, in fact they're not a measure of anything other than public and open-source contributions.

Personally I try to keep all of my work as private as possible. There is no particular reason, I'm just a private person.

Do you really want to work for a company that measures competence based on pissing-contest and attention-whoring mentality?

<comment><USER12> "Public and open-source contributions aren't a measure of skill..."

Exactly. Because they're falsifiable. I'd personally rather work for people who value skill, not falsifiable data.

<comment><AUTHOR> right but many companies try to take a shortcut - they think the best measure of skill is github.

To be fair, it's hard to qualify "skill", so shortcuts are very tempting.

</comment></comment></comment></comment></comment><comment><USER12> How long before this kind of thing causes GitHub to feel the pressure of a[nother] DoS?

<comment><USER13> It doesn't look like this makes a number of pushes, just a number of commits.

<comment><AUTHOR> correct. I should probably add "git push" to the instructions.</comment></comment></comment>


The real HTML5 boilerplate - <AUTHOR> http://csswizardry.com/2011/01/the-real-html5-boilerplate/

<comment><USER2> His problem with the 'boilerplate' is that it's named wrong. It's more of a knowledge repository than a boilerplate.

Personally, I find it a lot easier to delete things than add them, so the mis- named boilerplate is a pretty nice place to start, if you ask me.

<comment><USER3> Yea, I was thinking the same thing. I almost googled what "boilerplate" means and where it came from but then I decided to get back to work instead.

</comment></comment><comment><USER4> Here's my HTML5 Boilerplate:

        <!DOCTYPE html>
        <title></title>

It's valid, it works in all major browsers, it doesn't assume anything about which features I want to use, it leaves me in standards mode, not quirks mode, and I can type it out from memory instead of having to have some boilerplate saved somewhere.

</comment><comment><USER5> HTML5 Boilerplate is great if you just work on a few projects, because it is easier to delete things than remember them.

If you work on new projects fairly frequently, it's better to develop your own boilerplate as a starting point. This is what I do and it saves a bunch of time.

So I understand this author's complaints. If you make web sites (not web apps) there is quite a bit in HTML5 Boilerplate that just isn't for you.

All that said, my biggest complaint is that it is good. So good that it has probably meant that other, more project-type specific HTML5 boilerplates don't seem to exist.

edit: A cool tool for HTML5 boilerplate might be a "build custom download" similar to what jQuery UI has.

<comment><USER6> Yes it is being planned, here is our list for a RC release soon: [https://github.com/paulirish/html5-boilerplate/issues/#issue...](https://github.com/paulirish/html5-boilerplate/issues/#issue/242)

<comment><USER7> Ah, if we could download it directly in haml... :)

</comment></comment></comment><comment><USER8> The tone of the article was surprising. The alternative boilerplate is far too simple to cut it as a boilerplate for people building even the most modestly sized sites. It certainly doesn't cater to the majority of professionals in the way that the HTML5 Boilerplate project tries to.

A previous article, Easy HTML5 Template <http://www.impressivewebs.com/easy- html5-template/>, also proposed an alternative boilerplate. But it clearly distinguished between what the HTML5 Boilerplate project is aiming to do, and why/when a simple boilerplate has its place.

<comment><USER9> I suspect that the author references HTML5Boilerplate in an inflammatory way in order to get us talking about it.

I view the HTML5Boilerplate as a cross-browser-reset and sensible defaults for everything else. If those defaults don't work for the author, he could fork it on github and change them.

</comment></comment><comment><USER10> 681 lines? The HTML5 Boilerplate that I grabbed from Paul Irish's website, the commented version, is 94 lines. And much of the stuff can be removed. I have my own HTML5 boilerplate as a TextMate snippet, but augment it.

One thing about the Paul Irish boilerplate: why is the doctype declaration in lowercase?

<!doctype html> as opposed to <!DOCTYPE html>. TextMate doesn't seem to like the lowercase doctype as it highlights it in red. Not sure about Vim or Emacs.

<comment><USER11> I didn't check, but I think the 681 includes the CSS and such.

The "doctype" part is case-insensitive, according to the pseudostandard on WhatWG.org: [http://www.whatwg.org/specs/web-apps/current- work/multipage/...](http://www.whatwg.org/specs/web-apps/current- work/multipage/syntax.html#the-doctype) I guess your editor was configured incorrectly; shows up fine in both forms in Vim.

</comment></comment><comment><AUTHOR> PS: Here's a really simple HTML5 template I found useful: <http://codesnipp.it/code/1513>

<comment><USER3> Just a heads up, <hgroup> takes the nodes out of the document outline.

<comment><AUTHOR> Except the highest level (h1 in this case).

<http://html5doctor.com/the-hgroup-element/>

</comment></comment></comment><comment><USER12> I never cared for the word "reset" for css resets. I always considered them "sane defaults". I take the reset and set the values to what works for me and build my site off of that.

<comment><USER13> It's called reset and not sane defaults because most CSS resets do not provide sane defaults, just a consistent base. You're supposed to override the resets yourself.

<comment><USER12> Or you alter the reset itself so you don't have to override useless values.

</comment></comment></comment><comment><USER14> Javascript? CSS? You don't need all that crap. Boilerplate is supposed to be stuff you can't do without, not a bunch of froo-froo frivolities to cater to ancient browsers. Here's all the HTML5 boilerplate you need:

      <!DOCTYPE html>
      <html lang="en">
      <head>
      	<title></title>
      </head>
      <body>
      </body>
      </html>

<comment><USER15> Did you even click the link?

[http://csswizardry.com/2011/01/the-real- html5-boilerplate/#h...](http://csswizardry.com/2011/01/the-real- html5-boilerplate/#html5-boilerplate)

It's extremely minimalist as it is. Your example is lacking of things you would want to include such as at least specifying the charset.

<comment><USER14> Yes, I clicked the link. I see no reason why so-called boilerplate includes JavaScript, <meta> tags, and a whole bunch of CSS.

If you want to display non-ASCII characters, use XHTML5 -- trying to get Unicode working portably in HTML5 isn't worth the grey hair.

<comment><USER15> It includes the reset CSS so that you can get your design working consistently across UAs. The JS was included so you could use the fancy new HTML5 in old versions of IE. Seems like a reasonable include. The reset CSS is basically mandatory either way, regardless of what version of HTML you use. I'm not sure what you mean by getting Unicode to work in HTML5. UTF-8 encoding is pretty universal at this point and not dependent on your markup version -- not to mention the existence of character entities. There's a Unicode entity on this very page and this site doesn't even use a doctype: ♥

<comment><USER16> I strongly suspect jmillikin is taking the piss and the tone may not be being transmitted with the text. It is the same argument as the article itself, reductio ad absurdum.

</comment></comment></comment></comment></comment><comment><USER17> I rather have the option to remove things, it's your duty to know which parts are html5 and which ones are not. The name may be a little off, but I consider the name just a label, like many other things on the internet, they're just labels. Paul has great intentions and I also found the cleaner "real" boilerplate useful, thanks.

</comment><comment><USER18> Call it "HTML5 Utility Belt" and the article's argument goes away.

(I was going to say it "evaporates", but it's all hot air already.)

<comment><USER19> Not a bad name. I had it previously called "frontend pro template" but didn't ♥ it. But I agree the name is contentious. It's not a real "boilerplate" by the book. _shrug_

Since it's my project Harry is critiquing, I'll republish my comment I had left there:

So indeed, the boilerplate makes assumptions. It's all based on the sort of websites I've been developing for the past four years: jQuery-based, forward thinking, but with some level of support for IE6.

And, yes, there are some opinionated choices in there; but I dropped a lot of other aspects as I decided they weren't likely to be used by 80% of users. jQuery, google analytics, and IE6 seemed like safe bets. But maybe that's changing…

Indeed much of the features (test suite/yui profiler/analytics) is predicated on the idea that it's easier to hit Backspace than it is to go and seek out those files and drop them into your project. I think people's constant requests to get javascript libraries on CDNs only proves there is a usability problem with downloading files to add to your project.

But hey, I hear ya, and I don't want this project to make developers think it's the only way to do HTML5. But it's probably the safest unless you like hitting problems that have cropped up again and again in the past 5 years of web dev.

If I could just educate users en masse on all the things they need to know to execute on a project flawlessly, I would. (And I'm also trying to do that) But distributing best practices in the form of a packaged product is also a really effective teaching tool. :)

<comment><USER20> Dont take that rant too serious, you did amazing work gathering all the stuff for the template, and i bet that for many people has been really useful.

I find painless to delete some stuff I dont want, better than start adding all the stuff I do, and I learnt some stuff from the commented version.

Thanks for the "boilerplate", I love it</comment></comment></comment>


Why You Should Learn COBOL  - <AUTHOR> http://www.readwriteweb.com/hack/2011/06/why-you-should-learn-cobol.php

<comment><USER2> _According to Gartner, 85% of the world's businesses data was still being processed in COBOL as recently as 2001_

Why would you use decade old technology statistics to prove any point?

If someone told you that an extremely large number of websites in 2001 were written in classic ASP, would you start considering it as a career path?

I agree that COBOL will still be around for awhile, but a lot can happen in 11-12 years, and this leaves the reader to wonder what the market is currently like.

<comment><USER3> Was curious to look this up - doesn't appear to have been much movement (see below from 2011)

"It is estimated that there are approximately 200 billion lines of COBOL code in production, with 5 billion lines of new code added to these highly valued core production systems each year. As much as 70% of business data worldwide is stored on mainframes and approximately 80% of daily business transactions are processed in COBOL. There are about 1.5 - 2 million developers globally developing and maintaining COBOL code today.

[https://www.ibm.com/developerworks/mydeveloperworks/blogs/in...](https://www.ibm.com/developerworks/mydeveloperworks/blogs/invisiblethread/entry/a_rational_approach_to_enterprise_modernization- part1?lang=en)

</comment></comment><comment><USER4> I know a teeny bit of COBOL. I'd say that if I were to learn it, it would be with a view of learning to generate it from a meta-language so that all the indentation strangeness and record layouts and so on could be done more easily.

<comment><USER5> I've thought about something like this. However, it just seems like too much trouble to be worth it.

</comment></comment><comment><USER6> But could today's programmer even _learn_ COBOL?

[http://web.archive.org/web/20050214210251/http://objectz.com...](http://web.archive.org/web/20050214210251/http://objectz.com/columnists/martin/02252002.asp)

</comment><comment><USER7> The number of available jobs are meaningless without salary information. I suspect that the average COBOL developer makes much less than what the typical HN reader would consider competitive.

</comment><comment><USER8> Interesting enough I did a quick search, found hundreds of java/python jobs and 2 cobol jobs... in the entire state.

<comment><USER9> Just did the same search in the UK with a similar result. Surprising barren prospects given the upbeat nature of the article.</comment></comment>


Amazon Lightsail Announces 50% Price Drop and Two New Instance Sizes - <AUTHOR> https://aws.amazon.com/about-aws/whats-new/2018/08/amazon-lightsail-announces-50-percent-price-drop-and-two-new-instance-sizes/ <comment><AUTHOR> I wonder if they use their previous generation infrastructure for things like Lightsail. So now that T3s are out they will use the T2 infrastructure for lightsail as customers migrate.</comment>


American Food Products that are Banned in Other Countries - <AUTHOR> http://eatlocalgrown.com/article/11944-banned-foods.html

<comment><USER2> Most of the time when a food product is banned in another country it is the result of local food producers lobbying to keep cheaper imports out. While the public explanation is often "safety" under the guise of "we don't know if this is safe or not, and aren't going to bother to check".

You can't simply ban or tax a competing foodstuff from a country with which you have open trade rules, so you invent a reason.

<comment><USER3> Isn't it safer to assume that something is unsafe, rather than to assume it is safe?

<comment><USER4> If you banned everything that could possibly be unsafe, we'd still be running around in the African Savannah.

This article is troll-bait.

</comment></comment></comment><comment><USER5> Advertisements for diet pills and miracle foods and pervasive self links to extremely spurious and/or poorly cited research. I'm not sure if this is pure spam or just disingenuous.</comment>


Spam Robocalls Aren't Slowing Down. Here's the Tech That Could Stop Them - <AUTHOR> http://nymag.com/intelligencer/2018/05/how-to-stop-spam-robocalls-with-stir-shaken.html <comment><USER2> Does it matter? It's not a technical issue, it's a money and policy issue.

Inbound WATS subscribers had non-spoofable CNID tech for decades. It's called ANI. Why couldn't the ANI information be ported onto the CNID signalling if not to enable spoofing?

[https://en.wikipedia.org/wiki/Automatic_number_identificatio...](https://en.wikipedia.org/wiki/Automatic_number_identification)</comment>


The story behind Google Books: Torching the Modern-Day Library of Alexandria (2017) - <AUTHOR> https://www.theatlantic.com/technology/archive/2017/04/the-tragedy-of-google-books/523320/ <comment><AUTHOR> "It was strange to me, the idea that somewhere at Google there is a database containing 25-million books and nobody is allowed to read them. It's like that scene at the end of the first Indiana Jones movie where they put the Ark of the Covenant back on a shelf somewhere, lost in the chaos of a vast warehouse. It's there. The books are there. People have been trying to build a library like this for ages—to do so, they've said, would be to erect one of the great humanitarian artifacts of all time—and here we've done the work to make it real and we were about to give it to the world and now, instead, it's 50 or 60 petabytes on disk, and the only people who can see it are half a dozen engineers on the project who happen to have access because they're the ones responsible for locking it up."

</comment><comment><USER2> Prior comments: [https://news.ycombinator.com/item?id=14172791](https://news.ycombinator.com/item?id=14172791)</comment>


Why Omaha is a great place for startups - <AUTHOR> http://www.centernetworks.com/why-i-love-omaha-startups

<comment><USER2> You've got to be kidding. Evan Williams who co-founded Blogger, Odeo, and Twitter is from there. He tried to do several startups in Omaha before deciding that the problem was the place. So he moved to San Francisco and has been very successful. Follow his advice.

<comment><USER3> <http://evhead.com/2007/11/where-should-you-be.asp>

<comment><USER4> >I got a job at O'Reilly as a marketing coordinator for their software group as a way to get me to California. I was 25. I had no degree or significant tangible skills. (I could "code" HTML, ColdFusion, VB...and write marketing copy.) I had spent the last few years trying to get my own Internet company going in Nebraska, which was a painful (but educational) mess.

Maybe the problem was not so much Nebraska but the fact that he had no significant or tangible skills - in 1994-1997, when it would have probably been more difficult for a guy in the middle of nowhere to pick up the necessary skills by himself.

</comment></comment></comment><comment><USER5> I lived in Omaha for 10 years and now live in the Research Triangle area of North Carolina where I started a company three years ago. Because of my Omaha ties we do some business there.

Omaha is a great place to live.

For startups as HN defines them, Omaha is not an ideal location. There are two big reasons for this:

1\. Low cost of living. For a tech startup, Ramen and split-rent costs about the same everywhere. A low cost of living generally means that the people around you are used to paying less for things. Silicon Valley is nice because the population has money and is ready to spend it and founders can get by for dirt cheap just as they would anywhere else.

2\. University System. SF, NYC, Boston (and RTP!) all have strong startup communities as well as great University systems nearby. This is not a coincidence. Omaha is an hour from the University of Nebraska. The next closest are the Iowa schools which are several hours away.

A good part of Omaha that the OP mentions is the creative scene. I am continually impressed by it. Omaha has also been making some great business development decisions over the last 10 years so I do believe the situation will only get better.

<comment><USER6> I don't understand. It sounds like you're saying rent costs the same everywhere. It manifestly does not.

<comment><USER5> If I'm going to quit my job for a full-time startup the difference between $500 on rent in Omaha and $1000 rent in SF is not large enough to optimize for.

Those numbers are probably exaggerated as well. If you really wanted to live cheap you could do $300 and $600 I'm sure. The point is that the difference between the costs of living decreases in an absolute sense when you are living cheap.

Paying double for Ramen is not a big deal if it means you are living in an area where there are investors.

</comment></comment></comment><comment><USER7> I bet if everyone thinks long enough, they can come up with enough reasons why their city / state / country is great for startups.

While I do believe that location plays a large enough part in the life of a startup, once the product is up and running, do people really care if the next cool product was built in eastern Timbuktu and not in the Bay Area?

<comment><USER3> Its not that one place or another is a great place for startup xyz it is the fact that Omaha is in the middle of the country and no one associates it with creativity, entrepreneurship, or technology. But there is a growing group of people in those scenes here, and we have as much to offer talent wise as the bigger cities.... If you can't tell I am biased because I live in Omaha and know most of the people they are talking about in the article. But you are right there is no reason why some city should not be included, so make it a point to be the one that gets these people together in your city and make it happen. That is what so many of the people in this article are doing, growing a community, and making things happen.

</comment></comment><comment><USER8> Why X is a great place for startups [where X is a member of the set of US cities larger than 100,000 people but not including San Francisco]

</comment><comment><USER9> Anyone but me first read that as, "Why Obama is a great place for startups"?

Getting old sucks.

</comment><comment><USER10> And you can have Warren Buffet as your neighbor!

</comment><comment><USER11> And then you realize you live in fucking Nebraska and fellate the business end of a 12 gauge.</comment>


The Battle for Power on the Internet - <AUTHOR> https://www.schneier.com/blog/archives/2013/10/the_battle_for_1.html

<comment><USER2> This is a great piece that should go to top of HN.

We can reverse the trend as consumers, by questioning our consuming behaviour. And as hackers, by building tools that the users like and which make the web more free.

Power is where the money is. And power makes legislation. It will only get harder from now on..

But on the upside, software is a very malleable thing. New applications can be developed quickly. And they can replace established ones.

<comment><USER3> "We can reverse the trend as consumers"

No, you can't. You can reverse this trend as a _peer_ on the network, but not as a consumer.

</comment></comment><comment><USER4> Off-topic observation: I like Bruce Schneier, really. But now I dread the sense of déjà vu that accompanies most of his posts on HN, because each one gets reposted multiple times. Mostly because Schneier himself reposts all his columns that appear elsewhere on his own blog after a few days or weeks, and those reposts get reposted to HN.

For instance, this piece originally appeared at The Atlantic on 24th Oct:

[http://www.theatlantic.com/technology/archive/2013/10/the- ba...](http://www.theatlantic.com/technology/archive/2013/10/the-battle-for- power-on-the-internet/280824/)

[https://news.ycombinator.com/item?id=6604967](https://news.ycombinator.com/item?id=6604967)

Of course the original post never got a single comment, so I guess this repost added more value to the HN community :-/

<comment><USER5> My guess is that people recognised the schneier.com domain.

</comment></comment><comment><USER3> "Our e-mail, photos, calendars, address books, messages, and documents are on servers belonging to Google, Apple, Microsoft, Facebook, and so on."

That's not a given. Not only is it trivially easy to host your own email, there are a number of very positive side-effects of doing so. For instance, when I email my wife, it's just a local copy operation - no network traffic is generated, and thus nothing can be intercepted by third parties.

Further, although I have not done it yet, it appears to be only slightly more technically challenging to provide your own dialtone.

In 2013 the Internet traffic I actually do generate is much more secure than the Internet traffic I generated 20 years ago. Now I have a VPN to various endpoints around the globe. That's much better than telnet to tc.umn.edu :)

The disconnect here is that he is talking about particular consumer properties (walled gardens) that happen to exist on the Internet. It surprises me, given who the author is.

<comment><USER6> Maybe it's trivially easy to host your own e-mail, but isn't it pretty hard to convince other servers to accept e-mail originating from your host? I haven't been following things closely, but I remember reading about stuff like DKIM and SPF and I seem to recall that you need a static IP for some of the stuff involved. All in all, sounds like a non-trivial hassle and non-trivial cost.

On that note, is there a down-to-earth guide to setting up your own e-mail host?

<comment><USER7> You need a static IP, yes, but any VPS will get you one, so that can hardly be an issue. In seven years of hosting my own email I never had issues with delivering mail to other providers.

Setting up an SMTP daemon and IMAP/POP3 server is rather easy, the most difficult decision being which SMTPd to choose (I like Postfix, but Exim is Debian's default and hence supposedly good as well, others like Courier) and then reading the relevant manpages :)

If you search for, e.g., "Postfix tutorial", you'll find plenty of reasonably good guides.

<comment><USER8> I don't understand why email hosting has to be so difficult. You say it is easy, which it is if you know what you are doing, but it is not really that simple, is it? There is no out of the box solution that just works, even the microsoft effort called exchange is not that. You should be able to configure a mail server with the ease that you can configure a mail client.

<comment><USER9> Spam is the reason. Mail servers are easy to set up, it's all the crap you need to do to actually get your mail accepted that's hard.

<comment><USER3> In 16 years of running my own mail server(s) I have never done anything to "get my mail accepted", other than make sure relaying is turned off, which I think it is by default in just about every implementation since 1998.

<comment><USER10> Consider yourself lucky. I made the mistake of not setting up my email with OpenDKIM and virtually all of my mail went to spam for a few months.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> > So who wins? Which type of power dominates in the coming decades?

Institutional power will win in the coming decades, but fringe power in the coming centuries as humans colonize the solar system. Each planet/moon will eventually have control of its technical infrastructure. In the coming millenia, as humans journey out to the stars, it will be almost impossible for one star system to control another. Thank God for the Speed of Light!

> Medieval feudalism evolved into a more balanced relationship in which lords > had responsibilities as well as rights.

I'm not sure "evolve" is the best word. Diseases killed many surfs in both Europe and China, often many all at once (e.g. Black Death) which gave the survivors more power _suddenly_.

<comment><USER12> I think institutional power is on the wane. The fact that so many institutions are flexing their muscle is a prime indication. There's a saying "when you're taking flak you know you're over the target".

I'd say the biggest problem right now is one of awareness and direction. But as people become more atuned to these latent problems that are becoming more obvious it will drive ideas and action. Since the problem is not a lack of know how or resources, it's that growing awareness which will make all the difference.

Consider the amount of work that has gone into open source projects (like firefox, linux, apache, rails) and crowd sourced projects (like wikipedia or stack exchange). With the right kind of well directed projects the tables can, and will, be turned.

Imagine, for example, a web that was designed to prevent evesdropping and designed to ensure maximum longevity of content (through duplication). Something closer to bittorrent than today's web. It would be technologically challenging, but doable. Then imagine what happens if the equivalent of the worldwide workforce developing, say, linux was dedicated to developing tools to decentralize the network.

Over the next few decades the cost of wireless APs will become trivial even as their capabilities increase vastly. It won't take long before it's possible for unregulated internetworks with wireless backbones owned by many individuals to become possible, among many other innovations. At some point centralized control over communications becomes untenable. And that's just square one.

</comment></comment><comment><USER13> Schneier asserts that the modern situation is like feudalism. There's a bit of wild west situation in which various groups can cyberattack others and then hide. Powerful entities like Google and the U.S. government have the capacity to defend themeselves against cyberattacks, and even to attack, but most individuals do not; except for the small percentage of technologically sophisticated individuals, similar perhaps to the warrior classes of old. The ordinary individuals, like peasants, are stuck with the security configurations given to them by the feudal lords. The lords usually act in their own interests, rather than for the interests of the peasants.

However, i opine that there are huge differences that make the feudal metaphor ill-fitting. Quoting Wikipedia, "In its classic definition, by François-Louis Ganshof (1944), feudalism describes a set of reciprocal legal and military obligations among the warrior nobility, revolving around the three key concepts of lords, vassals and fiefs....A lord was in broad terms a noble who held land, a vassal was a person who was granted possession of the land by the lord, and the land was known as a fief....the lord and vassal entered into a contract in which the vassal promised to fight for the lord at his command, whilst the lord agreed to protect the vassal from external forces....Since at least the 1960s, when Marc Bloch's Feudal Society (1939) was first translated into English in 1961, many medieval historians have included a broader social aspect that includes not only the nobility but all three estates of the realm, adding the peasantry bonds of manorialism and the estates of the Church; this is sometimes referred to as "feudal society" since it encompasses all members of society into the feudal system.".

The present-day cybersecurity situation involves none of: (1) peasants who to pay feudal dues (2) a subset of peasants (call them serfs) who were not permitted to migrate (3) the Church estates (4) vassals and peasants to which the lords provide land and protection (5) vassalage in which the vassal promises to provide military service

The first four are debatable. One might say that one's loss of privacy on facebook is like a feudal due.

Although people are certainly not prohibited from migrating between facebook, gmail, macOS and their competitors, the high costs of migration from lock-in and network effects may be thought of as a "soft serfdom" if not an absolute one.

One might argue that the construct of feudalism is still useful without the role of the Church.

Internet security differs from physical overland security in the feudal era in that a distant invading army need not conquer or ally with your neighbors in order to be able to reach you; cybercriminals can attack you from anywhere in the world. This has implications for the relevancy of a nearby 'lord' who gives you land; however one could still argue that the 'land' being given is something like a software configuration, and to the extent that yours is vulnerable, so are others running similar configurations, so there is in fact some way in which it is somewhat more efficient for the lord to protect 'his' land than for you to contract protection from some other powerful entity on the other side of the globe.

However the last point, vassalage involving military service, is both absolutely central to feudalism and entirely lacking in the present-day cybersecurity situation. Nowdays we exchange money, not service, for protection, and while this arrangement became common in later feudalism, i opine that it is because that was not workable at the beginning that feudalism even arose.

Still, it does seem that the existence of an elite 'warrior class' of cybersecurity warriors is coming to pass: people with both skills that require extensive training, and artifacts which are relatively expensive, and whose skills and artifacts would allow even one of them to decisively defeat large numbers of untrained, poorly equipped non-warriors. The existence of a warrior class was one of the primary reasons that the system of feudalism arose. So perhaps we'll see the emergence of a feudal cybersecurity system sometime in the future, one in which individual cybersecurity experts, and organizations who can employ them, subordinate themselves to greater 'lords' by pledging military service, in exchange for protection and 'land', meaning software platforms and 'network real estate' (e.g. things like a facebook page).

But there are reasons to doubt that. First, i think feudalism arose during a time of a breakdown of trade and declining populations; in such a situation a lord needs to demand military service directly, rather than taxes with which to buy mercenaries, because of high transaction costs. This is not the case today; it is easier for facebook to collect money from business activities and spend some of that on employing cybersecurity professionals, rather than to grant lavish privileges to those of its users who are cybersecurity experts in exchange for their labor.

Second, today many governments might choose to prosecute cybersecurity vigilantes within their borders, making non-state 'armies' of 'cybersecurity warriors' ineffective.

In summary, what Schneier is talking about is a situation where a variety of large organizations have a lot of power. Imo feudalism means something more specific.

</comment><comment><USER14> I am not convinced that the solution to criminals increasing their power with technology is purely political. There are technological solutions as well. Criminals are raiding bank accounts by tricking people into divulging secret passwords or other information? Banks can issue smart cards, thus ensuring that secrets cannot be inadvertently divulged (because the cards cannot divulge their secrets). Governments are abusing their surveillance powers? We can build systems that encrypt messages and send the ciphertexts through mix- nets (or more complicated approaches for things like social networking [1]).

The political side of this should be encouraging or at least not discouraging the deployment of such technologies. Laws can be changed more easily than technologies. Deploy a secure infrastructure _now_ ; if the law changes later, the technology will still protect us.

[1] [https://www.usenix.org/conference/usenixsecurity12/social- ne...](https://www.usenix.org/conference/usenixsecurity12/social-networking- frientegrity-privacy-and-integrity-untrusted-provider)

</comment><comment><USER15> The other side of this is countrys using the NSA furor as an excuse to create a more balkanized Internet fire walling off themselves form those nasty furineers.

<comment><USER16> I would hardly call "other countries" reactions just an excuse... If the internet becomes more balkanized, it is on the NSA and American government's head, nobody else's.

<comment><USER15> Really you are very naive the ITU and the usual suspects have been trying for this for decades as they say "dont waste a crisis"

</comment></comment></comment><comment><USER17> It seems Schneier is saying less and less specific, fundamental issues and speaking more of abstract, high-level political and social concepts. He seems to have lost all power over his understanding of important breaking security issues and is left playing catch-up trying to understand what has already happened. My guess this is a result of the privatization/monitization/markets of zero-days, re-establishing control of technology by the classic economic systems, and taking it from engineers and experts.

That said, I don't think I'll bother reading anything else from Schneier's desk from this point forward. If he thinks that the "battle" is being fought on the edge of corporate networks, he's lost the trees for the forest. The real battle is happening for eyes and ears, on the streets, like it always has been. Less and less, some random person who happens to be the descendant of some king thinks the way the entire IT market needs to move so that "society" doesn't collapse, less and less is anyone listening to that person or believing he has any power. Real Time web of things or whatever you want to call it, nobody is buying it. If he thinks that people buying an iPod is signing allegiance to Apple's security forces, well he's wrong. If he thinks EULAs are going to be enforced in court, he's wrong. So considering those two flaws in the foundation of his world view, the rest of his rambling screed has been lost to the world of fiction.

</comment><comment><USER18> Well, I doubt a certain Japanese-American political theorist would look too kindly upon his characterisation of medieval political development...</comment>