Don't Panic: Seeking Points of Agreement on the "Going Dark" Debate - <AUTHOR> https://cyber.law.harvard.edu/pubrelease/dont-panic/ <comment><USER2> This fake crisis of "Going Dark" as if we haven't been that way for all of time before the Internet is dangerous. The "scary" notion that the police won't be able to read everything about everyone is being recast by the Feds as if it really is national crisis. Benjamin Wittes suggests on Lawfare we make Common Carrier Immunity conditional on the company being able to make all data available in the clear to the government. This is dangerous ground.

[https://www.lawfareblog.com/out-box-approach-going-dark- prob...](https://www.lawfareblog.com/out-box-approach-going-dark-problem)

<comment><USER3> While I oppose things like encryption backdoors, I think it's disingenuous to say this is a "fake crisis." The 4th amendment has always required balancing security and privacy--that's why the distinction between "unreasonable searches" and reasonable ones appears right there in the text. And society has always balanced those two interests with a simple mechanism: the police can only search with a warrant, but once they have a warrant their power to search is nearly limitless.

Thus, the government has always had a way to search the long-distance communications mechanisms of its day. Wiretapping telegraph or telephone lines was not deemed a violation of the 4th amendment until 1967. Even after that, a wiretap was authorized with a warrant.

Now, you have a pervasive mechanism of long-distance communications, and it's increasingly opaque to the government, _even with a warrant_. That's an unprecedented state of affairs.

<comment><USER4> Prior to the Internet, cipher schemes existed that could delay or foil the best government analysts, and that took significant government efforts to even attempt to crack. It was never illegal to use such a code and transmit the result on a letter, postcard, or phone. And a government warrant would not compel the decipherment of such a scheme, unless someone had possession of a physical key usable for decipherment.

The two differences now: we've made that technology available to non-experts, and we _hope_ that no amount of government effort can crack the scheme (as opposed to obtaining the key).

I agree with your comment that it's not a "fake crisis", though. It's one with only one right answer, but it's a "crisis" in the sense that no possible path forward will make both parties happy, so we fundamentally need the government to either realize they're wrong or to lose. Government positions don't change easily, and governments do not like to lose.

While it bothers me to see terms like "common ground" used, as they imply that both positions have grounds worth considering, I do think one of the few paths that has a hope of success is to convince the government that there exists a position they can adopt that doesn't _look_ like it goes back on their current stance.

<comment><USER3> It's mostly not about banning encryption though. The debate mostly centers on regulating the products and services companies can provide to facilitate such communications. If there was a precursor to companies promising to make it easy for regular joe criminal to encrypt his postal mail, it's conceivable that the government would have fracked down on those companies.

> It's one with only one right answer, but it's a "crisis" in the sense that > no possible path forward will make both parties happy, so we fundamentally > need the government to either realize they're wrong or to lose. Government > positions don't change easily, and governments do not like to lose.

It's not the "government" versus "the people." It's a small group of people who strongly support surveillance, a small group who strongly oppose it, and a mushy middle that tends to lean towards whatever makes them feel safe. People in each group are represented within government, though for obvious reason people in the first group tend to gravitate toward positions involving national security or defense.

<comment><USER5> > The debate mostly centers on regulating the products and services companies > can provide to facilitate such communications.

You're calling them products but the relevant thing they want to regulate is still more speech.

If you want to communicate with your friends in code then you first have to communicate the code itself. In this context the code is _code_ , but code is speech.

<comment><USER3> Code is not speech any more than electronic circuits are speech. That is to say that in unique contexts when the code is itself a means of expression code may be speech,[1] but not when it is used to _build something_ that enables communication.

[1] Bricks can also be expression in unique contexts. That doesn't mean that bricks are speech.

<comment><USER5> A brick or electronic circuit is speech when being used as a medium of expression. Code is speech all the time because it can't be anything else. It's pure information. You can't email someone a brick.

It happens we have machines that will turn that information into action, but the code isn't the machine or the action. It's just a type of speech that machines can understand too.

People are always wanting to regulate speech by combining it with a machine, but the machine and the speech are separate. They don't have any specific relationship. Apple makes a) a general purpose computer and b) computer software. But (modulo DRM/copyright) you could run that software on _any_ general purpose computer and use that general purpose computer to run _any_ software.

It's like trying to regulate what information you can print in a newspaper by claiming you're regulating the printing press.

<comment><USER6> A piece of encryption software is clearly both.

It is speech. If you wanted to you could even go find the source code and translate it into english in such a way that a relatively competent programmer could turn it back into code ("If the first bit in the byte is 1 then do .... other wise do ....").

But it's clearly also a tool. I've never read the source code to the software I use to encrypt my hard drive. It's unlikely that I ever will. I just care that it does the job I want it to.

Trying to say that it's either one or the other is silly. It's both.

But just because it's speech doesn't mean that the government might not have an interest in regulating it. The first amendment is not absolute. I can imagine a great many prima facie arguments supporting the idea of regulating encryption software. The fact that code is speech is not, in and of itself, a defense against any of them.

As with most cases of constitutional law, it comes down to weighing competing interests. Failing to acknowledge these varying interests fails to acknowledge the actual question at hand.

<comment><USER5> > Trying to say that it's either one or the other is silly. It's both.

I'm not trying to say that it's one or the other. I'm trying to say that there is no part of it that _isn 't_ speech. There is not a part which is a tool and a distinct part which is speech. The whole of it is speech. All you're saying is that it's possible to use pure speech as a tool. But what of it?

You can't win by talking about balancing because encryption software is meta. You can use it to distribute it. If people who are breaking no law have the right to be able to communicate without government surveillance then the government would have to violate that right _universally_ to enforce any rule restricting the distribution of software, because distributing software over a secure channel is indistinguishable from any other communication of the same size. It's hard to imagine anything that could justify that level of intrusion, and certainly not anything that has been proposed as a countervailing interest in this context.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Something learned in my 30y career as low level felon and spending fairly significant amounts of time (to me at least...a week in jail is no picnic!) locked up in both jail and prisons...

95% of cases are made via informants and not CSI-type investigations, so the whole "going dark" thing, I feel, isn't going to affect law enforcement the way a lot of people think it might.

I did notice, however, my last time through the system last year, that the State is now making a bunch of cases using cell tower information to put the defendants near the crime scene during the approx time of the situation.

Just FYI.

<comment><USER8> Going dark has a significant effect on law enforcement. It'll force them to rely on active investigations instead of passively collecting data that they can review at their leisure.

I think this will reduce their ability to target people for political reasons.

</comment></comment><comment><USER9> My kneejerk reaction to this is to panic about the opposite of what the concern here seems to be. Seems to me like ubiquitous surveillance via any and all available technology is a bigger threat than "going dark" would be. I know encryption can provide an obstacle for law enforcement but my inclination is to worry about privacy in society over potential lawbreakers.

<comment><USER10> This ^

It seems to me that all this report is saying is: "Hey government, don't worry about tech 'going dark', we will still have the ability to spy on people through their poorly implemented Internet of Things devices, services that won't use end to end encryption, metadata, and because software is still fragmented."

But they don't seem to even slightly condemn the simple fact that governments are turning into surveillance machines...

</comment></comment><comment><USER11> The submitted berklett "Don't Panic" article has a "Bruce Schneier" link to his "Security or Surveillance?" article on lawfareblog.com. It's also good reading.

[1] [https://lawfareblog.com/security-or- surveillance](https://lawfareblog.com/security-or-surveillance)

<comment><USER12> This is what the debate is all about. The government wants to have surveillance of its citizens, but wants to call it something else.

</comment></comment><comment><USER13> If we could only make them understand that forcing the good guys to not encrypt doesn't take encryption away from the bad guys. Legislators don't understand that encryption doesn't have to be made by Apple for the bad guys to have encryption. A shared key and XOR gives you unbreakable encryption. A high school comp sci. kid could implement that.

<comment><USER14> Incorrect, if the key is shared the encryption is breakable. If you're just doing one round of XOR it's pretty easy to break the key given a known plaintext, in the same way that AES is very breakable in ECB mode.

For unbreakable encryption, I'd suggest XORing with the contents of /dev/random (assuming /dev/random is unknowable). Of course decryption may be an issue.

<comment><USER15> In context, I'm sure the parent commenter meant "a random key the same length as the plaintext", not a repeating key or a reused key.

<comment><USER14> Some people when faced with an encryption problem think 'I know, I'll use a non-repeating random text to XOR against the plain text', now they have two encryption problems.

<comment><USER13> Three if you count entropy.

</comment></comment></comment></comment></comment><comment><USER16> To summarize: end-to-end encryption is making online surveillance harder. However, standards for end-to-end encryption are still fragmented and companies have incentives to not adopt it. Besides that, connected sensors, 'the internet of things' and unencrypted metadata give new surveillance possibilities.

</comment><comment><USER17> "legitimate government interests" should be enough to scare everyone. It's not for criminals, just like gun control is not about criminals. Think the worst, 'cause it don't get any better!

</comment><comment><USER18> Why do we need to agree? That's how this works. You compromise a bit, and they don't budge. Then you compromise again. Repeat the process until all liberties are gone.

Also, why is this framed as "going dark"? That's the ignorant people's wording. Why doesn't the author call it what it is: key escrow, or back- dooring? Use the terms of the industry you are talking about.

</comment><comment><USER13> If you want to beat it, brand it. Obamacare, The Surge, War on Terror. Going Dark is just the latest. Expect letsnotencrypt.gov any day now.

<comment><USER19> > If you want to beat it, brand it. Obamacare, The Surge, War on Terror.

The Surge and the War On Terror were branded by their supporters. Obamacare was branded that way by those trying to defeat it, but it hasn't worked. So, not sure your examples illustrate your point.

<comment><USER13> I shall be sure to quote more pertinent examples in future.

<comment><USER20> >The receptivity of the great masses is very limited, their intelligence is small, but their power of forgetting is enormous. In consequence of these facts, all effective propaganda must be limited to a very few points and must harp on these in slogans until the last member of the public understands what you want him to understand by your slogan. As soon as you sacrifice this slogan and try to be many-sided, the effect will piddle away, for the crowd can neither digest nor retain the material offered. In this way the result is weakened and in the end entirely cancelled out.

<comment><USER13> The subtitled versions of his speeches certainly shed new light on the guy. You realize how powerful (and potentially dangerous) charisma can be.

</comment></comment></comment></comment></comment><comment><USER21> There's an underlying issue that the report dances around, but doesn't address directly: sovereignty. Understandably enough, US authorities expect US companies to comply with US law. When foreigners are involved, as users or counterparties, things get iffy. Diplomatic relationships, treaties, agreements, etc become dispositive.

For example, the US supports Chinese dissidents, and maybe Thai dissidents, but for sure not ISIS. And so decrypted ISIS messages would be widely shared, but decrypted messages from Chinese dissidents would not be shared with China.

Old-school sovereignty just doesn't work on the Internet. If the US pushes hard enough, some firms will fold. But some may just leave. Consider the extent to which Apple has already left the US, for tax purposes.

</comment><comment><USER22> Related: Apple's patent for "polluting online social networks with fake profiles".. based on variants of the real profile.

[http://www.darkreading.com/risk-management/apple-gets- patent...](http://www.darkreading.com/risk-management/apple-gets-patent-for- polluting-electronic-profiles/d/d-id/1104952)? (Or google for other articles)

</comment><comment><USER23> Apparently, authorities are not really worried: [https://theintercept.com/2016/02/01/is-law-enforcement- going...](https://theintercept.com/2016/02/01/is-law-enforcement-going-dark- because-of-encryption-hardly-says-new-report/)

</comment><comment><USER24> Regulating strong encryption out of consumer products is functionally the same as banning it. Using encryption would draw special attention. Encryption needs to be routine in order to protect the public, outside of special situations.

</comment><comment><USER25> put in proper context

Imagine if its WWII and that they asked for all mail to be un-sealed..Shocking but did almost happen..as far as they got was asking Military Personnel to 'volunteer' not to seal mail..

<comment><USER26> They forced everyone to turn in their shortwave radios too.

<comment><USER27> Who? Where? In the UK that would have meant pretty much every radio would have had to be given up. At least every radio I have seen from the period had LW, MW, and SW.

<comment><USER26> [http://www.radiomuseum.org/forum/radios_confiscated_in_us_du...](http://www.radiomuseum.org/forum/radios_confiscated_in_us_during_wwii.html)

</comment></comment></comment></comment><comment><USER28> It's not just about tech. The real issue is that government is running up against scaling limits.

Arguably, a government can only rule over how people relate within boundaries it can defend and control. Previously the boundaries were physical geographies, and then regulated channels (mail, PSTN, etc). Now, we have a kind of fractal boundary of peer-to-peer connections that provide tremendous freedom to organize and transact on a diminishingly microscopic scale.

Sovereignty is zero sum.

Crypto provides a kind of micro-sovereignty to users, and for a few privileged or outlying people this is an acceptable risk, but when you have constituencies of people achieving that micro-sovereignty, it cuts into the sovereignty of the state at critical level.

Imagine the strategic consequences for U.S. national security if Rhode Island became it's own country, with an impenetrable laser air shield, with it's own allies, currency, tax laws, extradition treaties, defense systems, resources, etc. It would be such a constant threat, it would make more sense to just invade.

Tor and similar systems could reach that critical mass, where they become a constant threat to the sovereignty of nations. Tech is naively forcing hard questions about the conventions that provide "stability."

The feds know they might just have to just outlaw crypto. The technology exists to detect and round up most people who use it, or enough of them that it will be hard to find people to use it with. If they have to, they will.

This dance they are doing is political posturing, testing the edges to see what kind of resistance they get, and how much political capital it is going to cost.

Like voting and graffiti, if crypto really changed anything, it would be illegal.

<comment><USER29> Is graffiti not illegal?

<comment><USER28> Banksy reference. he tagged, "If graffiti changed anything it would be illegal."</comment></comment></comment>


What I've learned from growing 0 to 3600 subscribers in 1 month - <AUTHOR> https://www.indiehackers.com/product/the-product-person/6-lessons-from-growing-to-3600-subs-in-1-month--LvLyIU9YbGRzKslYWUg <comment><USER2> Hard to read with light blue text on dark blue background</comment>


The air conditioning trap: how cold air is heating the world - <AUTHOR> https://www.theguardian.com/environment/2019/aug/29/the-air-conditioning-trap-how-cold-air-is-heating-the-world <comment><AUTHOR> "Last year in Beijing, during a heatwave, 50% of the power capacity was going to air conditioning"</comment>


The Parallel Universe magazine is now available for download [Issue 3 - .PDF] - <AUTHOR> https://swdevtoolsmag.makebettercode.com/download/ParallelMag_Issue3.pdf The Parallel Universe magazine is a quarterly publication devoted to exploring inroads and innovations in the field of software development, from high-performance computing to threading serial applications. This issue's cover story is, "Enhancing Productivity and Achieving High Performance with Intel Cluster Toolkit Compiler Edition," by Bill Magro. <comment><USER2> For some reason I thought this magazine would be from a parallel universe.</comment>


Connect APP connections from social networks are on your map from the start - <AUTHOR> http://connect.com/

<comment><USER2> Looks promising! I'm impressed by the domain name!</comment>


Without New Laws or Walls, Trump Presses the Brake on Legal Immigration - <AUTHOR> https://www.nytimes.com/2017/12/20/us/trump-immigration-slowdown.html <comment><USER2> CTRL - F "HB-1"

1 mention in the whole article... seems like its missing the point.</comment>


Ask HN: paying rent and bootstrapping - what alternatives are there? - <AUTHOR>

Hi everyone,
I run a company with a core product that is bootstrapped and a bit more than ramen-profitable. We are a small fish in a big market. Our customers love us, but business is growing slowly since other players dominate distribution channels and we are only slowly starting to change that. I've thought about taking investment to try and grow faster, but it doesn't seem like a great move without a solid plan for converting cash into revenue. And I'm concerned that the need to return multiples on any investment would screw our existing business if we weren't able to push beyond slow organic growth. So current strategy is pouring all income back into the company and trying to grow existing and new product lines with the cash we have. In short: more bootstrapping.
Here's the rub: I'm running this business from a rented apartment that is large enough to host the people I have who come over at times and has certain kinds of other dedicated space necessary for the business.  I sleep in a room in the back so it doubles as an apartment. There aren't zoning problems with any of this, but paying rent every month grates. Surely there's a better way. I've started wondering if it would make sense to look for investment to buy a place and pledge the property as collateral to the investor? That would free up cash on our side, and reduce the downside risk to any investor. Sort of like dealing with a bank, only without the bank, and with an equity stake or convertible loan taking the place of what would be the interest payment.
Has anyone gone down this road for purchasing housing or other fixed assets? As a bootstrapped startup? I've never heard of anyone doing anything like this and don't know if that's because it's a patently stupid idea, because it isn't a common growth scenario, because the market is covered by existing mortgage products, or because angels are generally disinterested in this sort of thing. How off the wall is the idea and are there any better ones? How do I stop paying rent, or at least get a better deal for it? <comment><USER2> One option may be to consider what sounds like multiple needs (a place to host people, dedicated business space, a space to sleep) and see if separating those allows you to spend less on rent.

For the bought property to cost you less than renting (making generalisations about the area you live in, interest rates etc) the Investor would probably need to stump up a sizable chunk of cash into the property. Most property investors (myself included) are mindful that equity growth in real estate, when it happens, is normally only a few % points above inflation - it's profitable because you leverage a bank's money - you only put in a small amount of cash, so those few % points are pretty good against your investment. A simple example that clearly ignores interest costs, maintenance etc

      I put 10% ($30K) into a $300K apartment, and owe a bank $270K.
      The market grows by 5%, so the apartment is now worth $315K
      but I still only owe the bank $270K so my $30K has grown to $45K
      a 50% return.

Now if you need an investor to put in a sizeable chunk, that equation will be different.

      I put 40% ($120K) into the same $300K apartment.
      After the growth of 5%, my $120K is worth $135K.
      That's a 12.5% return.

At the upper extreme, if I invest 100% of the property my growth is 5% - better than bank interest in the US at the moment, but only just. Not an attractive deal (and I still haven't factored in interest and other cashflow costs).

So that's my response to your out-of-the-box idea - for it to help you (by reducing or removing rent / mortgage costs) it probably won't be attractive to an investor (smaller returns than more diversified investment). Happy to be proved wrong, and different investors do have different needs!

<comment><AUTHOR> > Most property investors (myself included) are mindful that equity > growth > in real estate, when it happens, is normally only a few % > points above > inflation - it's profitable because you leverage a > bank's money - you only > put in a small amount of cash, so those few > % points are pretty good > against your investment.

Appreciate the reply. Very useful to read how you calculate your ROI when making real estate investments.

</comment></comment><comment><USER3> It sounds like you have two separate problems:

1\. Your company is growing slowly, and you don't know how to accelerate the growth.

2\. You live in your office and don't have a way to change the situation.

Approach the issues separately. It's hard to get into specifics on either one without knowing more.

Could you move the company out of your apartment by finding cheap shared office space? Could you find a roommate situation to exact yourself at the same time? Can you just bite the bullet and get a mortgage?

For the first one, it sounds like you're not confident in your ability to grow due to larger competitors. How long do you want to bootstrap for? Sit back and figure out how to make a bigger move. Ask people you trust for help. Ask them to refer you to people they trust and find thoughtful. Look at your market from a different angle. Look at different markets. Make a plan that you believe in and use it to get investment. Don't be afraid of money.

It's going to be tough to explain to someone why investing in real estate for you is better than investing in real estate just for themselves. Tackle the issues separately.

<comment><AUTHOR> Thanks for the reply. More revenue solves problems. I think the core problem isn't growth though. It's the expectation of a really high rate of return on angel investment.

I was really wondering if taking investment for fixed asset purchasing was typically done. From the general silence, it sounds as if taking out a mortgage would be the most practical thing to do.

I appreciate the consideration put into the reply. Food for thought, especially in the second last paragraph.

<comment><USER3> The angels I've met are looking for stratospheric upside when there's high risk. Proven, ongoing revenue puts _you_ in the driver's seat. You've cut the risk of an investment dramatically relative to a buying into a couple of 22 year old guys with just a wacky idea that has a minuscule chance of a 100,000% return.

You need a different kind of investor than the ones who are playing startup roulette. They're out there. There's a lot of money looking for a new home.</comment></comment></comment>


Practical Implementation with Flutter of DroidKaigi Conference App - <AUTHOR> https://github.com/yamarkz/unofficial_conference_app_2020 <comment><AUTHOR> About a six months has passed since I started using Flutter.

I didn't know much at first. However, through trial and error, I gained an understanding of Flutter App implement.

This Flutter app has been created with a practical implementation that goes beyond the sample code.

I think Flutter is a great cross-platform framework.

if you are interested, please give me feedback. :)

<comment><USER2> Nice app!

What are your thoughts on flutter overall?

Did it make it easy to build a cross platform app?

How was dart to learn? Is it a headache to understand the syntax of yet another programming language?

Have you been totally satisfied with the performance?

<comment><AUTHOR> Thanks!

I think Flutter will be one of the standards for app development in the future. because it's simple, beautiful, and enable you to build apps quickly.

Flutter is very easy to use and enable you to create apps cross-platform.

Dart learned mainly from the official documentation. It has so much information.

it has good at Formatter, so you can learn excellent notation systematically. ;)

I'm satisfied with the performance and developer experience.

</comment></comment></comment><comment><USER3> The UI looks great and thanks for sharing the code. I would definitely look at the code to learn how you implemented. I too am a learner and have been doing Flutter UI challenges for couple of months now to gain comfortable knowledge about this amazing platform. One thing I addon is to write my experience in a blog post, it helps me grip my understanding of the concept.</comment>


The 7 Questions You Need to Ask to Operate Deep Learning Infrastructure at Scale - <AUTHOR> https://jameskle.com/writes/deep-learning-infrastructure-tooling <comment><AUTHOR> The portion of ML code in a real-world ML system is a lot smaller than the infrastructure needed for its support. In this blog post, I would like to share the 7 questions that you and your colleagues should ask to handle deep learning technical debt.</comment>


"My Code is Self-Documenting" - <AUTHOR> http://ericholscher.com/blog/2017/jan/27/code-is-self-documenting/ <comment><USER2> Self documenting code is not about the "how", it's about the "what". Ex: A method name should be FilterOutOddNumbers(). Not MapModulo2Predicate().

Indeed not everything can be expressed in methods and variable names etc and so comments can be helpful occasionally. But the focus must be on clearly written code with comments as an exception, not a rule.

As for SDC being myopic, I beg to differ. Code (and contents) is for developers and machines. End users and API consumers should have _documents_ (hence documentation) available to them for purposes of tutorials, user guides and references.

</comment><comment><USER3> I treat the comments in my code as notes... things future developers will need to know, TODO's, occasionally why I'm doing things a certain way, or other things that may be forgotten. I try to make the code as readable as possible so comments aren't needed. If you really want the documentation, look at the tests. My test descriptions describe what the code should be doing. The actual tests describe the API. Then there's actual documentation. This tends to cover more high level stuff. If the code provides an API others will be using then I'll provide documentation on how to consume it, otherwise my tests describe the API.

All of that being said, I'm not dogmatic about any of the above. I'd prefer my code to be self-documenting, but I understand it isn't always for any number of reasons.

</comment><comment><USER4> I find it interesting to come across another discussion about writing good code with no real examples of where code has been improved through the use of the practices being advocated.

How am I supposed to know if the comments have really helped the code, or if is that the code was just not written in a self-documenting way to begin with? Or, form the other perspective, how am I to know if the self-documenting code isn't as self-documenting as the original author likes to think? Perhaps even more importantly, how will I learn to take on that better style without examples to study?

In a world where we have a treasure-trove of great open source software, you would think the first step would be to point to exemplar examples to show exactly what can be gained by writing code in the prescribed manner. The "I do it this way and it is great. Believe me.", unfortunately, does not make for a good discussion.

</comment><comment><USER5> The biggest problem I have with comments is that they quickly fall out of sync with the code. The code gets updated but the comments stay the same. Now you have a situation worse than no comments: misleading comments.

It sometimes happens with self-documenting code too, but only when someone refactors enough of the code so that the class or method no longer matches the original name.

<comment><USER6> I hear this all the time as to why comments are "bad" (and I'm not suggesting that's what _you_ are saying, btw). Comments need to be kept up-to-date with code changes. The same way unit tests are kept up-to-date, and everything else around your code is. Comments are no exception.

<comment><USER7> The thing is, if somebody forgets to update a unit test, it immediately becomes obvious. If somebody forgets to update a comment, it's very easy for no-one to notice until it's much too late. There's no way to automate that check.

In terms of developer resources, the act of doing updating the comments is cheap, but the act of making sure it gets done (in a systematic way) is comparatively expensive.

<comment><USER8> So add comments to your code review process. This really isn't hard.

For example: python functions shall have a docstring unless trivial. For external api functions on a class, there must be at least one example. etc etc. Plus, this makes working in ipython really nice!

<comment><USER9> I usually apply something like this except only for public methods; I figure if you're digging around the private methods you probably need to look closely anyways.

</comment></comment></comment></comment></comment><comment><USER10> > Explaining previous approaches that didn't work; explaining trade offs in > the current implementation; marking possible improvements (TODOs) in the > code; anything else you'd like to communicate with someone reading or > developing the code

To me, those are the functions of _commit messages_ , not code comments.

Of course, a "proper" IDE (and I don't know of any) would give you the context of the commit messages "impinging upon" any given line/block. Maybe something like Light Table (whatever happened to that?) could be configured to do this.

> Presenting an example usage of the function and example output

And that's what (formalized) docs are for. You can certainly generate those from docstring-style comments, if you like, but personally I feel like they get it the way of editing the code itself, and would be better kept in separate files.

(Consider: would you put the gettext translation table for a string, inline inside the source file that contains said string? The arguments are the same, I think.)

<comment><USER11> if you're looking at commit messages to figure out a piece of code, you're probably having a very bad day

<comment><USER10> I feel like the most consideration that is ever spent reading a particular line of code, happens during the code review for the PR that introduces that code. When you're doing a code review, you read new code at the same time that you read the commit messages. The commit messages _should_ explain+justify the code they commit. Heck, half the reason you can break commits down into little semantic pieces with tools like `git add -p` is so you can explain/justify each piece separately.

Really, rather than what I said above, it might be better if ever line of code were just always put in context of the PR+code review that allowed it to enter the codebase. Instead of git-blame(1), github-blame(1).

</comment></comment></comment><comment><USER12> I find that the commonly touted opinion that comments should only reflect why, and avoid all duplication; is misguided. The only places where I will elaborate on why is where I can see obvious room for improvement but I'm still waiting for the bigger picture to stabilize, or I'm adding a dependency that I'm not really happy with. Otherwise my comments mostly express the intent of the code in regular prose and have to be updated with the code.

<comment><USER13> If your comments just say what the code does, they're redundant and unnecessary. Good comments explain things the code can't, like why you chose a particular algo, or why some piece of code needs to exist. Most code when written well requires no comments. Comments like yours, that repeat what the code does, I simply delete.

<comment><USER12> Like I said, I don't agree with that particular broken record; there is value in stating the intent of code in normal prose as documentation.

<comment><USER13> Yes there is value, comments like those let me know which developers need more training to learn how to code cleaner.

I know what you said, and I disagreed; responding back by repeating your disagreement doesn't add any value to the conversation.

</comment></comment></comment></comment><comment><USER14> This is an odd one for me, 90% of the time I wind up subconsciously ignoring comments that exist in code. It's almost as if I can't see them on the screen. I've been in at least one argument with a coworker where I realized I was ignoring the existence of the comment he was referencing a line above the code we were looking at. On the other side of that, I'm usually adding comments about what's going on all over the place. At least partly to codify what the heck I'm thinking at the time I'm writing it.

To distill that down, document a lot but don't rely on comments you find to be correct.

<comment><USER15> I read code the way you would a book, constructing this model in my head. Comments to me are a big flashing warning sign saying "this is so important, we added extra comments".

If the comments aren't really that important it will start hurting my ability to read and understand the code quickly.

likewise, if you a comment I wrote, you better sit up and read because it's there for a very good reason.

I'm of the opinion that at the end of the day people need to be able to read code, not use comments as a crutch. There are times when non-obvious things should be documented so developer B doesn't go down the same rabbithole you did, but in general the code should speak for itself.

document gives the context, the code gives the details. If you have both, there should be no real issues with understanding what's going on.

<comment><USER16> I agree that accurately reading code is important, but no amount of reading just code tell you why something was done.

For a contrived example, why does a specific function/class use an array instead of a dictionary/hash table? A comment explaining that the dictionary was 500x slower in tests could fix that.

I suspect that is exactly the kind of comments you would want someone to "sit up and read" but I didn't want to assume.

<comment><USER9> Yeah, exactly. If I'm putting comments inside a method (as opposed to the docstring kind of stuff) I'm writing something like "it might seem like it would be better to do [xyz], but that's actually not a good idea because of [abc]."

</comment></comment></comment></comment><comment><USER17> I think the Uncle Bob quote is good: "Code comments are not the Schindler's List. They're not pure good."

If a line of code has a comment attached to it, the reader needs to understand both the code and the comment. The comment is written in natural language. There are multiple ways of understanding it. It must be written with great care so that people reading it don't misunderstand it. Otherwise it will likely just confuse people. How about putting that effort in writing the code line with clarity? The reader must read and understand it in any case.

Stick with the code, people!

<comment><USER18> No, the reader must not need to read the function to understand how it works.

The idea would be that the function names are so good that one does not need to read the function contents, right?

But some things are complicated and may not be expressible with the function name alone.

That's why people write comments. To help readers understand the code.

Let's say I am implementing some algorithm. I may mention the performance characteristics in the comment. Or I may let the readers dig into the code to find out what they are. Seriously, please don't follow "no comments" rule dogmatically.

<comment><USER17> No.

If I have a function and I need to understand _how_it works_, that is, how does it implement some algorithm, of course I have to read every single line of code to understand how it works!

If the function is named "quicksort", for example, and I suspect it has a bug, I really have to read it to understand whether it implements the quicksort algorithm correctly.

<comment><USER16> I don't think starting a comment off with "No" is an effective tactic to convey your point or change someone else' mind.

It seems clear to me, as an impartial third party, that there are merits and drawbacks to both of your school's of thought on comments. "No" attempts to shutdown the discussion and makes it hard to discuss these.

</comment></comment></comment></comment><comment><USER19> Most of our very large and complex code base lack comments.

But just yesterday I came across a particularly good comment in an else block, that summarized the story of "how could we have gotten here", and it involved far-flung failures and not so obvious interactions. Very informative to have that right there.

</comment><comment><USER20> > code comments document the why, not the how

While I do agree with this since thoroughly reading the code itself tells you the how I find comments that tell me what it does to be just as helpful as telling why it does it.

I used to fall into the self-documenting code camp back when I programmed in Objective-C and long descriptive names with named parameters made it read like English but as I've read more code in more languages I actually prefer shorter names supported with code comments that tell me clearly in English what the code does.

For instance earlier today I was reading some of the source code in fossil-scm in the check-in.c file. In it there was a function that was simply named `locate_unmanaged_files`. If there wasn't a detailed comment preceding that function I would have assumed it merely found the files and reported on them directly but after reading the comment explaining what it did I realized it stores the files in a temporary SQLite table, after reading that I learned that "locate" had a wider meaning then to just find it and return it but it rather meant that it is now located for any part of the system to find in the database. It would have taken careful reading of the code to have realized this and it helped me to better focus and understand the code I was reading.

</comment><comment><USER21> +1 exactly this.

Aside from "why", or explaining overly clever one-liners, the kind of comments I always find necessary are those providing before/after example of data during a transformation; and example strings w/ resulting capture groups for regular expressions.

Example: # "tag1,tag2,tag3:val" => tags: [tag1, tag2], metadata: [tag3:val] # fun one-liner goes here

<comment><USER17> No. Those are test cases that you put in your unit tests. You don't put data examples as comments in your code.

<comment><USER21> No. Why make myself or another developer find an entirely separate file in order to comprehend a line (or three) of code? Why leave in a line of code that is all but incomprehensible without an example or explanation? Why provide a paragraph of explanation when a single line of example data will be more informative? Why further decouple the "documentation" from the code itself?

Yes, you want test cases, and that's where you also put all the weird edge case conditionals; but, it's not like you're going to copy the actual line(s) of code into the test case, so you'd either need to temporarily copy the code (or the data samples) to be adjacent, or open side-by-side editor panes, or what have... All of this is more complicated than an example.

But what about sample data that doesn't fit on one line? Then either your sample data is too complex, or this method is unsuited to your situation.

There are guidelines for maximally legible code. There are no rules. If you follow rules, someday, you will encounter a situation where the rules force you to produce sub-optimal work. "Simply" strive to write legible code, and you will succeed. Strive to follow rules, and you will succeed at following the rules; and maybe you'll succeed at writing legible code.

<comment><USER22> That's why more languages should let you write tests in the same file as the code it tests like Rust does.

</comment></comment></comment></comment><comment><USER23> The worst claim I've ever heard is that Simulink models are self documenting because they are flow diagrams.

</comment><comment><USER24> One thing not mentioned is that in an earlier era, code absolutely could not self-document at all. For instance, assembly language in the 80s. Many systems just did not allow for practical longer descriptive names.

Or the traditional C style with extremely long functions that do many things, cryptic names, hardware-related constants or magic numbers, little to no facility for modularization or composability etc.

In that era it was an absolute truism that comments were important. In today's era, comments are usually a symptom.

</comment><comment><USER25> Ironically, his article does not allow commenting

<comment><USER26> This might be the best comment on the thread. Your trolling skills are excellent.

</comment></comment><comment><USER27> If comments in code are worthless.. then why aren't we all using some language that has no comment system built in?

</comment><comment><USER9> In particular, it is nice if you bother to document assumptions/constraints related to the expected input and output of your code; why should I have to trace the whole thing to figure that out?

</comment><comment><USER28> I'd rather have uncommented code that is clear and easy to follow than commented code which is not. Alas, what I actually get is wrongly commented code that is not easy to follow.

Best of both worlds or something.

</comment><comment><USER17> Usually the people who cannot write good code love to write comments because they somehow feel it makes the code better. But they cannot write good comments either. Then everything is horrible. Code is really complex and hard to understand and the comments just make it worse. They might be out of sync or just erroneous.

I'm witnessing this currently with the code base I'm maintaining.

<comment><USER29> All people who write bad code write bad comments = / = All people who write good code write good comments/don't need them.

<comment><USER17> Well, the point is that people who write good, clean code don't need to comment their code extensively. They don't need to continuously explain why they did some horrible hack or some trivialities because their code is well structured and very easy to understand based on other good software development practices. They don't write the requirements of their functions as code comments, rather they write unit tests that document the requirements etc.

<comment><USER29> I think this ignores the idea that code also has context to it, and that comments even in elegant code are useful not for documenting _how_ a bit of code works, but why that particular thing was done.

</comment></comment></comment></comment><comment><USER17> From my experience there is a correlation between the amount of code comments and defects in the code. The more I see comments in the code base of a module, the more likely it doesn't have any (unit) tests and the more it has defects.

Yet this may just indicate that the code is complex and therefore required comments and contains bugs.

In any case, high comment density is a code smell.

<comment><USER30> LOL. Comments are not a part of the code. Good comments adds to readability, bad commenting style (e.g. enterprise style comments for everything) affects readability. Comments cannot add bugs to code.

What you think about spaces?

<comment><USER17> > Good comments adds to readability

I agree. I was talking about the _amount_ of comments.

Extreme example:

      void foobar()
      {
        // iterate over the list
        foreach(var item in list)
        {
          // send it
          sender.send(item);
        }
      }

I've seen a lot of comments like this. They don't add value. They distract. They must be removed.

They also tell that the author didn't have a clear understanding why code comments should be written, so we may not trust his/her judgement in other programming decisions. The code is suspect. It's a code smell.

<comment><USER30> It's looks like top-to-bottom style of development: first, algorithm is written in text, then implemented in code. Kind of literate programming. Sometimes it helps, sometimes it not. Usually, this style is used right after the school, by inexperienced programmers incapable to keep algorithm in the head in parallel to development, or when experienced developer does his first steps in a new language.

Not a problem for me. Usually, I clear them out.

</comment></comment></comment></comment><comment><USER31> As someone who had never heard the "self-documenting code" term, I imagined a machine-learning-assisted 'autocomplete' of sorts for code comments or a genius.com for code.

</comment><comment><USER32> I find that if your comments consist solely of commented out code, then you both don't need to comment in English and you remove the need for an SCM.

/says so many people I've worked with.

</comment><comment><USER33> > Code comments document the why, not the how.

I disagree. The _what_ is what your comments should tell me. The contract, and its preconditions and postconditions. Nothing more, nothing less.

<comment><USER34> So where would you document the "why" then? This is often the question I find most difficult to answer when reviewing code (including my own) -- after all, I can ferret out the what from the code.

<comment><USER35> There's nothing wrong with what your parent said.

If we are speaking of API documentation (i.e. function or module documentation): The "why" can't be explained here. It's at the caller side.

There are more rare cases where it's reasonable to document the implementation of a function because there's a particularly tricky section of code -- and documenting the "why" makes more sense to me here.

</comment></comment></comment><comment><USER36> In my experience the worst code that I have seen was the one with the most comments. If your code is self-explaining, if you have a full test coverage that documents what the code does and how it should be used then the comments are completely useless unless you are publishing a library or an external API. In my current job I am required to add this completely useless Java Doc / xml doc comments for an application on which only I am working on, that is far more clear than the rest of the codebase, with extensive test coverage and currently I have the same amount of LOC and comments. It's a total and utter waste of my time and it decreases the productivity so much trying to read the code in the middle of the comments that I had to find a visual studio and Idea extension to hide the comments to avoid getting distracted by all that awful noise. Needless to say that I completely disagree with the author of the article and I hope that people sooner rather than later will understand that the living documentation of the code is in the code itself and in the tests that, by definition, can't ever be out of sync like the comments.</comment>


Why Do Most Entrepreneurs Fail to Scale? - <AUTHOR> http://blogs.harvardbusiness.org/tjan/2009/04/why-do-most-entrepreneurs-fail.html <comment><USER2> * the DNA of great entrepreneurs [is] a mix of three simple things: smarts, guts, and luck *

what is smarts, what are guts and what is luck? I personally think that smarts is experience, guts is I have no idea, I doubt it is any different from experience, and as for luck that is a mystical term used for trial and error. So the DNA of great entrepreneurship then is experience, or putting it in colourful language, getting down on dirt.

Agree? :P

seeing that he used three terms to describe one thing, I am assuming that the rest of the article is as my professor would put it: "verbal diarrhea" :P</comment>


Should Psychological Neuroscience Research Be Funded? - <AUTHOR> http://popsych.org/should-psychological-neuroscience-research-be-funded/

<comment><USER2> Let me formulate another thought experiment. We want to investigate the subjective experience of heat. Subjects are to put their hands into water heated or cooled using various procedures and rate how hot it is on a subjective scale. If we are ultimately only interested in the subjective experience, could a thermometer really add anything?

There is one interesting property of the thermometer, it is very good at predicting how someone would rate it. Because of "survey variance", the thermometer reading is a better predictor of _subject b 's_ rating, than the rating _subject a_ gives.

Because the thermometer reading is a better predictor of the subjective experience, I would say that it is better at capturing the underlying phenomenon.

</comment><comment><USER3> Yes, it should be funded, but not without consideration of alternatives for particular measures. There is a _lot_ of bad, expensive neuroscience work - much of it yields no significant result - but there are also important results that are unavailable by other means. It's good to inject caution but the potential for great advances in understanding how the mind works is still there.</comment>


Ask HN: Can I help you be more awesome today? (No strings.) - <AUTHOR>

Hello HN!
Every once in a while, I like to offer my time to help other passionate people be a little more successful with their goals. If there's anything I can help you with, just ask here. No strings whatsoever. I've done this before a few times now, and it's worked out well for everyone. Check out some of the previous "No strings" sessions I've done to get an idea of how I can help. (http://news.ycombinator.com/submitted?id=mikegreenberg)
A few requests: Be specific about what you're trying to fix/solve/accomplish. The more details you provide, the better I can help you out. I will try to help all requests made before the end of today and will attempt to complete by the end of Sunday. Be patient and check back. Please keep requests to tasks I can do in ~15 minutes. I'll spend more time willingly, but smaller requests lets me help more people! Thanks. :)
Cheers!! Mike
PS: Quick thanks to fameoflight who I thought did a really great job last time. He opted out of the book, so I donated $25 to the EFF in his name. Thanks again!
PPS: Last month, things got hectic with the holidays and I didn't get to answer everyone's inquiry before the thread locked down. As always, I attempt to help those with the most need on a first-come-first-served basis. Apologies in advance if I can't help you within the thread. If for some reason I missed you, please don't hesitate to email me directly. I'll do my best to give you SOME sort of helpful response. (my initials) (at) nobulb.com.
PPPS: Pass this on if you know someone who needs help. <comment><USER2> Hi Mike,

Great offer, I'd love to take you up on it. Our new startup, HiringThing, is moving from closed Beta to launch in the next couple of months. While our application is shaping up great, one of the major things we need to focus on before we launch is signup and onboarding.

I'd love for you to take a few minutes, sign up for our public beta on our website, and provide a few suggestions on what you think would make the signup experience great. We KNOW there's work to do, but an outside opinion will help us down the path.

Thanks,

Josh, CTO/Founder, HiringThing.com

<comment><AUTHOR> Hi Josh, Here are my thoughts as I go through the onboarding process with HiringThing.com.

\- Registration and confirmation seem pretty straight forward. However, the screen after setting my password is a lot of information with many different steps to move forward. At this point, you might either want to offer a split walkthrough... an option to introduce the new job listing area with a brief walkthrough on ways it can be personalized or an introduction to creating new job listings.

\- Good job on the "University" aspect of the site. Education on proper use of the site will certainly help your improve engagement on your site.

\- Creating job listings on the site could be improved. Currently you require all of the information the listing requires upfront without much thought put into the presentation. You may find it easier for your users if they have a step-by-step process which gradually requests the required information. Not only will your users be able to save their progress as they go, but they won't be overwhelmed with the large about of information they'll need to provide for a listing. This is called the progressive reveal...and can be useful anytime you have a lot of steps to cover or a lot of information which needs to be conveyed to the user at once.

\- In customizing the look and feel of the listing page, consider a preview of each of the preset color schemes.

\- Spend a little bit of time thinking about how you're laying out the elements in your website. At this point, it's just large blocks of text that the user has to swim through to find what they need. It's most noticeable in the welcome screen/dashboard where you suggest to the user some tasks they could take.

\- I couldn't go through and post listings and apply to them and see how the rest of the workflow is, but think about the most important and most repeated tasks your users will take and put that front-and-center on the dashboard. It might not be clear to me right now, but when I'm welcomed, there is a lot of suggestions to customize my company page instead of posting listings (maybe more important?).

\- You have some nav buttons on the top, a dashboard/create a job tab, and then each view sometimes has a few sub-views beneath that. Tighten up the navigation and layout of the pages. The Dashboard, Create a Listing buttons can be groups with the Saved Applications, Account Details and Logout. Consider which buttons you choose for actions, could these features be organized elsewhere in the site to improve how quickly users find what they're looking for? Maybe have just "Dashboard", "Account Details", and "Logout". Your dashboard can then hold your listings and saved applications. Account details will hold everything specific to the account. Might simplify things greatly.

Hope these thoughts are helpful for you. :)

<comment><USER2> Definitely helpful. Thanks for taking the time - there's nothing like an educated outside opinion to firm up priorities.

</comment></comment></comment><comment><USER3> Hey Mike, I had a question. Do you know anything/are you involved with Gazelle Labs? Just trying to do some due diligence as an entrepreneur. They have been really great toward me the last few months, retweeting my stories/posts on tech.li and have felt a great rapport with them. Just wanted to see if you had any info being in S. Florida? Thank you for the time.

<comment><AUTHOR> I'm afraid I don't have much information as Orlando (where Gazelle is located) is about 3.5 hours from me. I don't get up that way too often, but I know a few people who are. If it's helpful to you, I can put in a quick call and get a feel for you.

From the one article I read about them, they seem to be very welcome in the area and have the right people running things in the background. Can't say more than that, at this point.

<comment><USER3> Everything I have read and experienced with them so far has been tops, I really like that. There is never any promise to get into these kinds of things but based on a feel I have, it is at least promising. Don't put yourself out on a call for me unless you happen to be calling already. I do appreciate the time you have taken already. Thank you.

</comment></comment></comment><comment><USER4> Time for no strings!

Like last time, I'll piggyback on Mike's thread and offer help on any type of statistical, machine learning, or econometric problems. I can also offer help with Python, as that's my language of choice.

<comment><USER4> Should've mentioned above: if it's no longer Friday, just feel free to reach me at the email in my profile.

<comment><USER5> Hi Alex, Thanks for your much appreciate offer, I just sent you an email with a help request and all the details, please to take a look.

<comment><USER4> No problem--just responded. Good luck!</comment></comment></comment></comment>


Working with freelancers and telecommuting employers is a pain - <AUTHOR>

Some of you may find this situation familiar: You need something done, you post a job description - either a one time freelancer that will do the designated task or a full time employee that is going to work with you telecommuting - you get a bunch of applicants, you work for a couple of weeks trying to find the right person, explaining the project in details, answering the same questions over and over, and eventually settling on someone.
The first couple of days everything works well, but a week or two down the road you begin to notice first communication breakdown - emails are ignored, tasks are pending, and the developer? not answering his skype for 10 days straight. Is he dead? did he abandon the project? No idea, just you with a half of the work done, and some money that you will never see again.
After five-six weeks you start the process all over again.
I've been there countless times, on both sides, and it always looks the same, you pay the money, a few weeks go by, features are not coming in as fast as you initially expected, and the dev starts loosing interest as time goes by - no face to look at in the morning means you can simply ignore the person. Not a fun way of doing business.
What is needed is some kind of a freelance report card - where employees and employers can post their own experience working with the other party, think of it as linkedin with employees/employers keeping tabs on one another. Item delivered on time? that's +5 points, two weeks late? that's -10 points. Your client haven't paid in 6 weeks? that's -50 points.
At first it will need to build up reputation and network - but once the network is sufficiently large, both sides will go to this report card to check on future employees/employers to see how well they worked in the past. No score on a particular freelancer? it might not be that good of a deal to make.
Good freelancers/employees will work harder to maintain their report card, and will request from employers to post a report.
You might say "But that's what Elance is for", wrong - elance is a platform designed to maximize profits for themselves - they care not for the employees nor the employers, and if you've ever worked with a freelancer from Elance you know that the scoring system there is not really genuine, and people (freelancers) often change names when they get bad rep and continue onward.
To fix this, the freelancer report card should care only about creating profiles of work-providers and work-consumers, with full on details about the person as much as required - Facebook, LinkedId, past clients, past employees, and sincere commenting/scoring that would require users to provide genuine information about themselves, and work to maintain their report card in good condition.
Reporting on employees/employers would require connecting at least one social network profile, and I think that the "quality" and "trustworthiness" of a particular profile would be calculated based on the number of "positive" connections that link to the profile - if you plugin a fake facebook account with 2-3 friends, and zero users in the report card system, you won't get a high score, but the more social networks you plugin, the more active it is, the more followers it has, and the more users are linked both in the system and in your social network the higher score you'll get.
"Unregistered" users will still be reported on - so if you work with a freelancer that isn't registered to the system, you still can report on them, providing social network handles and some review details. The only thing that "registered" users can do is to report on others and attach different social graphs to the report card.
I'd like to hear your opinion on this, and answer questions if you have them. <comment><USER2> Good developers likely wouldn't bother with something like this just like they don't bother with Odesk or Elance. They simply have enough demand they don't need to jump through these sorts of hoops.

Another issue with a report card system is the different standards from different clients. Interestingly, there seems to be a seriously high percentage of developers charging third world / poverty rates who get excellent reviews (I don't have stats to back this up.) Are they getting 5 star reviews because they are as good as any other developer getting five star reviews? I'm guessing someone specifically shopping for a developer charging $5 or less / hour is far less demanding than someone shopping for the best developers available.

The problem with freelancing is that every freelancer is running a business and while most freelancers may be good technicians, most aren't good business people. Coding may be easy for these people, but running a business is crazy difficult. Most freelancers would probably be better off having someone else handle much of the management layer.

You get what you pay for. How many people have seen this scenario...

Your buddy is trying to build an app and wants any advice you might have. You cringe when you hear the first candidate for developing the site is quoting a rate that you know the developer can't live on (this shows inexperience and a lack of understanding on how to set rates.) You cringe again to see that your buddy is happy to find someone at such a bargain (your buddy also hasn't done the math to see the new developer won't be able to make a living) and makes the selection. Weeks later the developer disappears (maybe he lost his internet connection, maybe he had a better paying offer he couldn't pass up.)

Also, your quote.

"What is needed is some kind of a freelance report card - where employees and employers can post their own experience working with the other party, think of it as linkedin with employees/employers keeping tabs on one another."

And.

"...no face to look at in the morning means you can simply ignore the person."

A freelancer is not an employee. A freelancer may have to juggle multiple projects and certainly has to juggle multiple roles (sales, accounting, development, etc.) The person you hired shouldn't ignore you, but don't think you should have the same attention from this person as you would an employee. Of course, that's all part of the expectations both sides set at the beginning.

</comment><comment><USER3> odesk has a rating system. It usually gives you a pretty good idea on the quality of the freelancer.</comment>


Chance CLI – Generate random stuff in your shell - <AUTHOR> https://github.com/victorquinn/chancejs-cli <comment><USER2> Random numbers are already available on CLI. This is neat, but what is the use case for this?</comment>


The most disruptive technology of the last century was home appliances - <AUTHOR> http://www.washingtonpost.com/news/wonkblog/wp/2015/10/14/the-most-disruptive-technology-of-the-last-century-is-in-your-house/ <comment><USER2> Hans Rosling presented a similar topic at TED (2010):

[http://www.ted.com/talks/hans_rosling_and_the_magic_washing_...](http://www.ted.com/talks/hans_rosling_and_the_magic_washing_machine?language=en)

On the other hand, we may overestimate the disruption of home appliances because of how history played out. _Today_ , many poor villagers choose to spend what little money they have on _a cellphone instead of a washing machine._ They continue to wash clothes by hand and hang them to dry but they absolutely need the cellphone to tell them what price their crops will sell for at the market.

<comment><USER3> The article is about last century. Smartphones are _this_ century's invention. However, both appliances and mobile tech only show how significant and underestimated the effect of technology on society is. We like to think that technology is just some weird addition or convenience, but it seems to me that it is technological advancements that fundamentally transform society.

<comment><USER2> _> Smartphones are this century's invention._

If you notice, I had deliberately used the word " _cellphone_ " instead of " _smartphone_ ". Cellphones (1980s) were 20th century technology. Many poor villagers don't have smartphones but they do have cellphones.

<comment><USER3> Right. My misread, I apologize.

The reason I read 'smartphone' instead of 'cellphone' is that they're related to an observation I find important - that smartphones are actually essential tools for the poor. Internet access gives significant quality of life improvements.

<comment><USER4> You could use the internet on a web on a phone in late 90's. The post 2000 smartphone was more an evolution than a specific capability. [https://en.wikipedia.org/wiki/Mobile_browser](https://en.wikipedia.org/wiki/Mobile_browser)

EX: BlackBerry 850 (1999) was very email centric.

<comment><USER3> You could, but the Internet in mid-to-late 90's was nothing like it looks today. I still remember WAP browsers and this was not something useful for general population in a way smartphones and the Internet of today are. Western corporate businessmen did AFAIK had some use for it though.

</comment></comment></comment></comment></comment></comment><comment><USER5> It's incidental (for me) that this article should be posted today. Only two days ago, in a philosophy class on environmental ethics, I was told by the professor that my answer to a discussion prompt on "ecofeminism," which cited the development of the washing machine as facilitating the women's rights movement, would be disagreed with by feminists and that it reflected my worldview that it was women's "essential role in life to do laundry." The counterargument was that World War 2 had been responsible for women entering the workforce and not household electrical appliances. My rebuttal that this may not explain global demographic data from developing countries has thus far gone unanswered.

Apologies for the personal anecdote, but needless to say I'm still a bit offended at having been called a bigot. Particularly when Ana Swanson, a "reporter for Wonkblog specializing in business, economics, data visualization and China" would probably not have been similarly told that by writing this article she believes housework is women's essential role in life. It seems some would require extensive quantitative evidence for this claim to avoid stepping on any toes, though, and I wonder if Hans Rosling, Ha-Joon Chang, Max Roser and the others making it have quantified to what extent appliances were an influence compared to other factors.

<comment><USER3> Personally I'm starting to believe in a limited form of something I heard called 'technological determinism' \- that it's the technology that shapes society. Your washing machine would be an example. Another would be seeing civil rights movement as enabled by the printing press.

<comment><USER6> Have you read Marshall McLuhan's Understanding Media? Written in the 60s, explaining world phenomena from the perspective of "media" (which he uses to mean something very similar to "technology" \- roads and the printing press both qualify) and accurately predicts the effect of the internet on society. Dense, but very worth reading if you're interested in macro societal change.

<comment><USER3> I haven't. Thanks for the reference, I'll definitely read it!

</comment></comment></comment></comment><comment><USER7> What is strange to me is how the invention of home appliances seems to have stopped. The refrigerator, washing machine, vacuum and dishwasher all made huge changes to everyday life. But since the microwave oven, there has been nothing major. We are still spending many hours on household work. Are the remaining chores just to difficult to automate?

<comment><USER8> It's funny that on the one hand we'll soon have something as advanced as self- driving cars, and on the other we still need to iron our clothes, wipe off the dust and take garbage manually :)

<comment> martin-adams My take on it is that next level of disruption in the home requires a high degree of AI or robots to work.

Ironing clothes has to cope with intricate clothing types and shapes. Wiping dust has to navigate a space around obstacles (like a self driving car?). Taking the bins out has to work with a hugely varying terrain - steps, doors, gates, etc - unless you install something custom to the building.

That said, these solutions are the obvious way to automate the tasks we do today. May be the disruption comes form clothes that don't need ironing, spaces that don't collect dust.

<comment><USER9> Right, if you look at washers, dryers, and dish washers, it's not like they automated the exact procedure that people performed to do the task. They used a different method that was possible to automate.

<comment><USER10> Similarly, early AI research tried to mimic how humans learn, and now we have machine learning, which doesn't learn in the same way as humans do but is still quite successful.

</comment></comment></comment></comment></comment><comment><USER11> This reminds me of a film from 1960, "The Home Of The Future: Year 1999 A.D." [1], where even more household chores are automated (for example, meals are delivered and stored frozen, and take only seconds to heat up).

However, for some reason, the wife still stays at home (and goes shopping) while the husband works and pays the bills. This made me think that the only development which is harder to predict than technological progress, is sociocultural progress.

[1] [https://www.youtube.com/watch?v=0RRxqg4G-G4](https://www.youtube.com/watch?v=0RRxqg4G-G4)

</comment><comment><USER12> Agh I wish people would either read some of Christensen's work, or even the basic Wikipedia article, or else stop using the word 'disruptive' in this context. It's diluting a concept which used to have a very specific meaning, and has rapidly changed to mean nothing, through misuse.

This article starts off by almost calling people out, saying that people use 'disruptive' in the wrong way, but then it proceeds to make the same basic errors.

There are a few key characteristics of a disruptive innovation. One is that incumbents don't notice the changes due to market myopia. Were competitors to the vacuum unaware of the technical leaps possible due to technology? I will bet not. Another key characteristic is that it causes competitor value- networks to change. What value network changed by vacuums being adopted? The hitting-rug-with-stick value network? How much value flows through this network? Did the sweeping brush value network change? No, everyone still has a sweeping brush even now. All that happened was that consumer demands changed and a new product was adopted. But wasn't it still an amazing leap in technology? Yes! It was a 'radical innovation'!

"Disruptive" does not mean "big change". It doesn't mean "impressive". It doesn't mean "unexpected competition". In this case, it doesn't mean "society changed over the course of a century as a new industry was created due to ancillary technological improvements".

It certainly doesn't mean "normal dynamics of industry and competition", which is how most people seem to inexplicably use it.

</comment><comment><USER13> I'd love to see a study of these tech adoption trends and their effect in an even shorter timescale like in post-Soviet countries.

In Russia even a few years ago, all my friends' parents would obsessively pickle the hell out of whatever they could grow. My impression is now that that tradition has almost disappeared among the younger generations.

<comment><USER14> I'm from an East European country and can confirm that the pickle obsession seems to be a lot less relevant for the newer generations. But I think the cause for this is better access to western style supermarket chains and not technological.

<comment><USER15> Supermarkets are enabled both by refrigeration and by trucking. How is that not technological?

</comment></comment></comment><comment><USER16> There's a beautiful chapter ("The Sad Irons") in Robert Caro's first volume of his Lyndon Johnson biography which describes life in rural Texas in the 1930s before they got electricity. Because all the electric appliances existed already, their world was transformed literally overnight when the switch was flipped and the juice started flowing.

</comment><comment><USER17> Looking back it's amazing how little change there was through the twentieth century in fundamental consumer tech. Radio, TV, record players, fridges, washing machines & vacuum cleaners were all available in the 1930s. Sure, they became cheaper and more widely available, but IMHO, not much changed in home tech until the 1980s.

<comment><USER9> They may have existed in some form but that doesn't mean they were good, widespread, or useful. It's like saying that since the first semiconductor was invented, nothing has really changed in computing tech.

<comment><USER18> With the exception of the '80 most of these items lasted longer, were easily repairable, or made to be repaired.

As a child, when my parents bought an appliance it was a big deal, and that appliance lasted. It was partially due to practical engineering, an emphasis on longevity, and my father who refused to spend his hard earned money on a new washing machine every two years. My father believed in 15 years durable goods. And so due I. (Yes--that's a fragment Mr. Taylor.)

So appliances, I don't want your bells and whistles. I want an appliance that lasts. I want a service manual attached to the gizmo, along with the warranty information. I want an assurance of a few years of the availability of repair parts.

I don't need, nor want to buy a new appliance every two years, but I know you have built it into your business cycle by now. Some of us see through the scam, and just aren't buying.

Everything I said here, goes for any new automobile(gas, alt fuel, electric), but that might be a loosing fight? I can't believe how people buy automobiles. They buy them like they will never break down?

<comment><USER19> Are you willing to pay significantly more for your home appliances?

<comment><USER20> _If_ I can get one with a 15-20 expected life then yes I'll pay 3-4x more for it. I expect however an ~10 year guarantee and a firm promise that parts will be available for a further 10 years (or if possible the full spec for parts is published and new ones can be made from the spec.)

</comment></comment></comment></comment></comment><comment><USER21> I think the most disruptive technology invented recently is effective birth control.

<comment><USER22> Effective birth control isn't recent - it was a reasonably flourishing industry and concept by the 1850s (including rubber and skin condoms). American birth rates plummeted from 1800 to the mid 1800s because of this.

Modern innovations have certainly made birth control more convenient, but I think the biggest changes have been social.

</comment></comment><comment><USER23> Also relevant: This[1] Nautilus article about how we have a tendency to over- estimate the significance of new technology in the future, simply because it is new.

[1] [http://nautil.us/issue/28/2050/why-futurism-has-a- cultural-b...](http://nautil.us/issue/28/2050/why-futurism-has-a-cultural- blindspot)

</comment><comment><USER24> What am I missing? The graph suggests only 1/3 of Americans had a water heater as of 1985?

<comment><USER25> Note that you don't need a discrete water heater to have hot water. I didn't have one in my current house until I got a new furnace a few years back.

Multi-unit buildings may also have shared hot water heaters which may factor into the numbers as well.

</comment></comment><comment><USER26> So many technological improvements, and we are still working 40+ hours per week...

<comment><USER27> We're working 40+ hours a week. That's at a job. But when we come home, we're working less at home. That's still progress.

<comment><USER26> Well usually, one person was going to work, and the other person usually worked at home (doing laundry, etc.) Nowadays, two people have to work to pay the mortgage. Not really progress if you ask me.

</comment></comment></comment><comment><USER28> One big non-appliance thing here is the proliferation of mobile phones. Am pretty sure months of my productive life have been saved simply by excluding waiting around on people and not making unnecessary trips.

</comment><comment><USER29> Chapter 4 of "23 Things They Don't Tell You About Capitalism" echoed this point titled, "The Washing Machine has Changed the World More than the Internet Has". In addition to talking about how revolutionary household appliances have been, he also mentioned how economists have consistently failed to measure much economic value in the Internet.

</comment><comment> pseudonom- This thesis seems rather incomplete in light of:

[https://www.nber.org/digest/oct08/w13985.html](https://www.nber.org/digest/oct08/w13985.html)

[http://psycnet.apa.org/psycinfo/1975-07262-001](http://psycnet.apa.org/psycinfo/1975-07262-001)

</comment><comment><USER30> Where is the vibrator, the fifth home electrical appliance, on these graphs? :-)

[http://www.thedailybeast.com/articles/2012/04/27/hysteria- an...](http://www.thedailybeast.com/articles/2012/04/27/hysteria-and-the-long- strange-history-of-the-vibrator-vertical.html)

</comment><comment><USER30> As an owner of an older home I find the evolution of central heating to be fascinating. I highly recommend this book:

[http://www.amazon.com/The-Lost-Art-Steam- Heating/dp/09743960...](http://www.amazon.com/The-Lost-Art-Steam- Heating/dp/0974396095)

</comment><comment><USER31> Why is the 'Civilian Labor Force Participation Rate' for women going down again?

<comment><USER7> It could be lower US employment in general since the 2008 downturn.

</comment></comment><comment><USER32> Whant happens if you try to plot the relative improvement instead of absolute reduction of working hours? Because it's much more difficult to kill the remaining ones than the ones gained by the washing machine!

</comment><comment><USER33> You know what has been one of the sickest revolutions ever?

Ballpoint pens.

Just let that sink in.

</comment><comment><USER34> AKA robots that replaced human labor.

<comment><USER35> sssshh. we're not supposed to talk about that.</comment></comment>


Fourth paradigm: data-intensive scientific discovery - <AUTHOR> http://research.microsoft.com/en-us/collaboration/fourthparadigm/

<comment><AUTHOR> Background information from NYTimes: <http://www.nytimes.com/2009/12/15/science/15books.html></comment>


Show HN: I Hate Angular - <AUTHOR> http://ihateangular.com/

<comment><USER2> I really don't understand the point of spending so much energy on something you dislike, rather than just using something you do and moving on with your life. Some people like Angular, some don't. If you don't, your opinion really doesn't matter to the people who do, and you're wasting your time trying to convince them they're doing some disservice to the world by using a framework which they actually like.

<comment><USER3> because frameworks with bigger userbases survive, and keep getting developed. persuading people to move from angular to competitors is a survival tactic. if the next evolution is ignored while a lesser one gets all the press (derby/meteor?) the latter wins out.

i have a suspicion all the angular hate is to take away from its momentum so other neglected frameworks get deserved attention.

<comment><AUTHOR> Me personally not advocating for any particular framework :) I just personally find angular disgusting.

BTW, I work on angular (and typescript!) project for a living :)

</comment></comment></comment><comment><USER4> I have been working a very serious project with angular and it definitely has it's downsides. Overall it's the lack of any kind of model / association ORM that makes it challenging, as creating your own services or models has no best practice guidelines as far as I can tell.

<comment><USER5> [https://github.com/jmdobry/angular-data](https://github.com/jmdobry/angular- data)

</comment></comment><comment><USER6> I hated angular too, so I built this instead:

[http://intercoolerjs.org/](http://intercoolerjs.org/)

<comment><USER7> that is awesome

</comment></comment><comment><USER8> All of the outgoing links lead through ihateangular.co rather than .com.

<comment><AUTHOR> thanx! apparently bug in telescope i am using =) will investigate anr probably file a bug

<comment><AUTHOR> I was wrong - did not read help under URL setting field which said I should add `/` in the end URL (apparently telescope just cuts last character, hence .co vs .com)

</comment></comment></comment><comment><USER9> It makes me sad that Miško hasn't checked out other frameworks. I am not sure what his current role is in Angular development, but I would wish that any major contributor to such a "big & important" open-source framework has the drive to look at competitors code to grow as architect and developer.

</comment><comment><USER10> Angular drives me nuts on a regular basis but I feel like I learned a great deal about developing Javascript applications from it and its community.

I remember someone complaining in AngularJS forums that the documentation reads a lot like a CS dissertation paper. Not sure how many others feel this way but I appreciate the extra context. Or maybe I'm just a masochist.</comment>


Google: Your new phone carrier? - <AUTHOR> http://techcrunch.com/2010/12/30/google-carrier/

<comment><USER2> Although Google has done some moves that could allow it to become a player in carrier space, in the current climate it doesn't seem a wise move because of the success of Android.

Given that Android took off better than anticipated, this would be rather risky move for global Android adoption. Carriers still "own" customer contact in most countries. If they decide to be really afraid of Google, they will stop helping Android adoption.

In early 00s, Nokia wasn't that operator friendly compared to other OEMs. This led to situation that operators took less (or didn't take any) Nokia phones to their subsidised selection. This was the main reason for Nokia's bad performance in US.

Then Nokia started licking some juicy carrier butt. Boy it was a shitty time to work in Nokia. Requirement pipe line was filled with all kinds of crazy useless requirements from carriers, and that essentially halted the software development.

<comment><USER3> > Carriers still "own" customer contact in most countries. If they decide to > be really afraid of Google, they will stop helping Android adoption.

I wonder how they might do this. Possibilities I can think of:

A) Stop releasing Android phones and use WP7 and such (similarly risky, if it's actually something the market wants).

B) Keep using Android but make more deals like the one that put Bing as the unchangeable default search on the Galaxy S.

C) Fork/rebrand Android and make their own derivative.

B seems most likely--same platform so they can benefit from Google's development, but with Google services blocked.

<comment><USER4> They won't do any of the above directly. Carriers don't make phones, but they do market and sell them (because they own the customer). They'll simply refuse to do so for Android phones that aren't neutered in ways acceptable to them.

"Hey Motorola, of course we'll do a big marketing push for the Droid 9000, so long as it complies with our guidelines for handsets on our network. You have made sure users can't install Google Voice, haven't you? What's that? They can install any software they want? Well, maybe we'll just go for that Samsung device instead. See you next product cycle."

</comment></comment></comment><comment><USER5> I would love to have Google as my carrier. Google is by no means my favorite corp (I trust them less than Microsoft, personally, though probably more than Facebook and Apple), but they're angels compared to Verizon and AT&T.

</comment><comment><USER6> Becoming a wireless carrier would not play to Google's strengths. Google generally succeeds in markets where they can leverage smart engineers to serve hundreds of millions of users. They tend to fail in markets which require human interaction or physical presence.

Google does, however, have strategic interest in keeping the mobile internet market as competitive as possible. So I would expect them to chip away at the carriers indirectly, much as they use Chrome to chip away at the IE hegemony, or as they use Android to chip away at the iOS.

</comment><comment><USER7> Seems awfully speculative. Is there anything new since the last time this rumor went around a few years ago?

<comment><USER8> It's MG blowing smoke from his arse as usual.

</comment></comment><comment><USER9> Personally, I would love to see Google in the carrier business, but it would be a huge risk to their brand/image.

Most everyone loves Google right now. Most everyone hates wireless carriers. So, it sounds like it could be a good opportunity. But there are reasons people hate carriers that are either outside of the carriers' control or too costly to fix completely on a global level (ie. spotty coverage, slow connections, great expectations, etc)

Even if Google became the #1 carrier, their valuable, mostly unblemished image could take a big hit.

Google's ability to simplify/scale technology for the masses (Google search, Gmail) won't help as much when it comes to dealing with frustrated customers on the telephone who want to speak to someone right now.

</comment><comment><USER10> What a crock. Among other things, the article completely omits what is the biggest hurdle for Google, or any new company, for entering the phone market - infrastructure.

A newcomer has no hope of competing in major metropolitan markets such as New York, SF, Boston etc, without the multi-year process of scouting, negotiating, and installing cell towers throughout the cities. Even in private buildings where planning permission is not needed, many of the prime locations have been snapped up by Verizon, AT&T etc on multi-year exclusive or limited compete leases. "Newer" companies such as Virgin Mobile lease their backbone from Sprint etc for exactly this reason.

<comment><USER11> Couldn't Google just lease the backbone too in order to enter the space?

<comment><USER12> It's questionable whether the MVNO business model would allow Google to innovate the ways they want to.

</comment></comment></comment><comment><USER13> I would think Google's wet dream is a world in which ultra-high speed internet access is available everywhere at low or no cost to the user, and I would expect Google to be thinking hard about how to help make that a reality. Today cellular phone companies are our de facto ISPs when we're away from our homes and offices, so I would expect Google to be thinking about how to deal with them or become them or whatever, but that's just an accident of history and there are other ways to make Google's wet dream a reality. Or so I hope...

</comment><comment><USER14> Why did you change the title? I feel like the original headline was a better description.

<comment><USER15> What was the original headline (to those who're seeing the new headline)?

<comment><USER16> The "original" headline is the one on TC, which is 'Google As A Carrier. It's Not A Question Of "If They Will", But Rather "When They'll Try"', whereas on HN it has been changed to 'Google: Your new phone carrier?'

Was a bit too lengthy for my taste.</comment></comment></comment>


Ask HN: Recommendations for Java Hosting? - <AUTHOR>

I am looking for a good java hosting provider. Can you recommend any?
I tried using AppEngine for my Java app, but it has many restrictions at the DB level. Didn't try AWS yet. I am looking for a good hosting provider where I can use MySQL along with my JSPs.
Any recommendations? <comment><USER2> I have had a good experience with eApps.

<http://www.eapps.com/></comment>