Ask HN: Back-end team does not document their APIs. How do I convince them? - <AUTHOR> I've been working at a SaaS-company for about half a year as a front-end developer, the product has been in production for about 3 years. The codebase has always been quite messy, because many engineers worked on it without any guidelines or even linting.
In the past months, the front-end team worked on a new application that is well documented and maintainable. This resulted in the need of two new APIs.
This resulted in an exchange of JSON-files over email, rather than a proper API-documentation. I am currently in the process of trying to convince the product-owner to allocate time for this, as I'm quite disappointed about the total lack of docs.
Do you have any tips on how to take this on? <comment><USER2> One of the hardest things to do is choosing the right battles. Ask, is this worth it? If it's an API integration point primarily for internal use I wouldn't insist on it. If the API is changing too much right now that documentation would quickly become obsolete, I wouldn't worry about it. It might be easier and cheaper to get a backend engineer to answer your questions.

If you are expecting clients to integrate with your backend without documentation, and you do not have an enterprise-level agreement, then it would be a deterrent for integration on most teams. Making that case should be straightforward. More documentation would mean more adoption, which means more value for the company.

<comment><USER3> In my opinion this is a very important battle, even if this will be a 100% internal API. Think about the possible scenario - no one touches one of the endpoints for 18 months. A new developer comes in and wants to use it. There are no docs and no one remembers what's going on there. == mess.

<comment><AUTHOR> This is the issue I am mostly worried about. Not having documentation is risky, as it causes your team to depend on human-resources instead.

<comment><USER4> or the code.

depending on this API, it could just be easier to look at the code. Seriously, if it is just exposing some database tables, then I don't necessarily always see the point of extra documentation. With extra docs you have to answer:

        * Who writes the docs?
        * Who reads the docs?
        * Where are the docs?
        * When are the docs written?
        * How are the docs written?

Basically, unless you have a dead-simple process, or a docs champion, you've just created another project. If you can answer these questions:

        * Who writes the codez?
        * Who reads the codez?
        * Where are the codez?
        * When are the codez written?
        * How are the codez written?

Then the simplest thing may be "just read the code"

</comment></comment></comment></comment><comment><USER5> Besides convincing your backend team that sharing how to communicate with the API in a structured way is important, one bit of advice in general is to make it easy.

One way to make API documentation easy is to generate it from code rather than write a doc manually. This can pull from class and method comments to add description to your endpoints (if those comments exist and are relevant), but even if they aren't there you'll still have access to the endpoints and the input/output.

I'm not sure what your tech stack is but here's an example using Django w/ Django Rest Framework. You can use Swagger [1] for docs / a browsable interface to the API. Then you can use an integration like Django Rest Swagger [2] to automate most of the work.

[1]: [http://swagger.io](http://swagger.io)

[2]: [http://marcgibbons.github.io/django-rest- swagger/](http://marcgibbons.github.io/django-rest-swagger/)

<comment><USER6> There are other tools/plug-ins to generate OpenAPI/Swagger spec (1.2 or 2.0) based on annotations in the code. Please refer to [http://swagger.io/open- source-integrations/](http://swagger.io/open-source-integrations/) for more information.

If the REST API is documented in OpenAPI/Swagger spec, you can then use Swagger Codegen [1] to automatically generate API clients in Java, C#, Javascript, Typescript, Ruby, ObjC, Swift and more.

[1]: [https://github.com/swagger-api/swagger- codegen](https://github.com/swagger-api/swagger-codegen)

Disclosure: I'm a top contributor to Swagger Codegen

</comment></comment><comment><USER7> Everything comes down to time and budget. Assuming you have a project budgeting model, make sure that for every project you add in estimates for analyzing, documenting, and integrating the backend layer, and call it out specifically as a result of insufficient documentation. What you're trying to do is get someone up the managerial food chain to ask, "Why are we paying developers to do this for every project, when we could document this once and be done with it?"

To put it another way, you'll never have enough leverage to talk another business unit into spending their time and money to solve your problems. You need to make your problem someone else's -- someone with the ability to force the solution.

</comment><comment><USER8> There is a cultural problem in some orgs where some (even sr.) devs think not documenting things creates job security, but it really just creates bottlenecks that suffocate the organization. Few things signal a corporate death spiral like the phrase, "useless documentation." This means that nobody is going to read it, because nobody cares, and nobody cares because it's probably crap. GIGO. A product of shitty thinking.

The only real value of any software is that it does what someone says it does, and if nobody says it does anything, then I would argue it is not creating value for anyone. It is showing up to work and consuming resources, but it's not moving the company anywhere.

Growth in a company means building things that are the foundation for something else, and those foundations are based on the assurances of people with credible word. Documentation creates a basis for that credibility. A lack of credibility means a lack of ability to deliver value.

If your backend devs won't document their APIs as a matter of backward principle, your company is probably in a death spiral, fire them or eject.

</comment><comment><USER9> /r/whataretensors is correct that you have to pick your battles. However, if you're asking us then I'm going to assume that the lack of documentation is slowing you down enough that it is in your company's interest for docs to get written. Lack of docs puts timely product delivery at risk.

What are the product-owner's overall goals? You should tie documentation to that. In a healthy organisation, the product-owner's goals will either be already pretty clear or they'll be actively working on making them clear. If they aren't clear to you then do a quick check through emails/minutes/retrospectives to see if you've missed something and ask for a half hour on their calendar to seek clarity. Take the bulk of that time to listen[1] to what their priorities and stressors are. Pay particular attention to where your work fits into that. If your work actually _doesn 't_ fit into that then you've got a bit of an organisational incentives problem. Assuming it does, then make your case that documentation in a canonical place (even if it is those same json files and some comments) is not a nice-to-have but a need-to-have for frontend to deliver what the product owner needs.

For all of this, I've assumed that the product owner for the backend and frontend is the same person. If it is two different people, then you might have a conflict of incentives that needs to be fixed: The backend team has little/no incentive to help the frontend team. If that is the case, then you should have a chat with the product owner of the frontend team because that is an organisation-level problem and some incentives will need to get re-aligned.

[1] [https://hbr.org/2016/07/what-great-listeners-actually- do](https://hbr.org/2016/07/what-great-listeners-actually-do)

</comment><comment><USER4> I would think long and hard about the following questions:

What are your expectations?

What is the minimum possible that could be done to meet your expectations?

What deficiencies currently exist that are blocking you?

Once you have this written down, only then should you approach the other party. Remember YOU think it is "messy" "lacks docs", however others may think it is fine. You will not win any friends by demanding someone does more work that they don't consider to be worthwhile.

If you have no leverage, then you are asking for a favor.

Be nice, be friendly and courteous. Try to see the other person's viewpoint.

Good luck in your negotiation.

</comment><comment><USER10> I've often found if you lead the effort yourself, and then ask for their input, this usually works well. If you wait for someone else to take the first step, it's usually not going to happen.

Start by creating a Github wiki for documentation for both front-end and back- end API's. Add them as collaborators, or create them right inside each existing repo if you can. Populate the back-end one as best you can to your knowledge, then ask for them to validate.

I always think of documentation as a note to my future self. In X months, what won't I remember?

<comment><USER9> The problems I've found with this approach are:

1) It is hard to write clear explanations of things that you don't understand.

2) It adds another project to your plate. If you don't actually allocate time for this project from what you are currently doing, it won't get done well and it will distract you from what your primary responsibility is.

EDIT: So, OP would need to convince the product owner that he should spend his time on docs rather than javascript.

</comment></comment><comment><USER3> I'd argue that this should go the other way around. Your developers should be creating the 'docs' \- the API design and boilerplate, before programing it. If they actually sit down and design the API before setting of to write the code you'll end up with: (a) the documentation you want. (b) an API that this designed consistently and consciously. Would you let your front end developers build something without at least a wire frame / functional design?

<comment><AUTHOR> Good point. How can you build an API if you don't know what data to return anyway? Designing a model is part of the job and could be documentation by itself. Thanks!

</comment></comment><comment><USER11> If it's just an internal use, you can ask them to have tests build against the endpoints and use that as a way to document how to use them. It's better than nothing, and they're technically code, so it's in their domain to build.

</comment><comment><USER12> what is the language & middleware/framework used in backend ?

<comment><AUTHOR> Python / Flask

<comment><USER12> using node.js/express here and I share your pain/ Need to find a module or should I write one which automates major part of documentation.

This has python support.. might be helpful : [http://apidocjs.com/#examples](http://apidocjs.com/#examples)</comment></comment></comment>


SXSW Startup List - It's more than just locations - <AUTHOR> http://fandrop.com/sxsw/startups

<comment><AUTHOR> It might not be complete. Please add to it if I miss anything. Thanks guys!</comment>


Zuckerberg forecasts mobile will pull Facebook out of its stock market hole - <AUTHOR> http://venturebeat.com/2012/09/11/zuckerberg-says-mobile-will-pull-facebook-out-of-its-stock-market-hole/

<comment><USER2> ROFL</comment>


Evolving Alien Corals with Neuroevolution and Novelty Search - <AUTHOR> http://www.joelsimon.net/corals.html <comment><USER2> Super fascinating! What are your future plans after this?

</comment><comment><USER3> This is so cool!!!!</comment>


Workers in Apple's supply chain forced into indentured servitude, Bloomberg - <AUTHOR> http://www.theverge.com/2013/11/7/5078402/workers-in-apples-supply-chain-forced-into-indentured-servitude <comment><USER2> Shallow summary of [http://www.businessweek.com/articles/2013-11-07/an-iphone- te...](http://www.businessweek.com/articles/2013-11-07/an-iphone-tester- caught-in-apples-supply-chain)</comment>


Chinese-made drones may be sending sensitive flight data to China - <AUTHOR> https://edition.cnn.com/2019/05/20/politics/dhs-chinese-drone-warning/index.html <comment><USER3> They say there is the ability to opt out, i wish the US Government would pass a bill that everything is opt out by default (for the US of course). This is not just for this article but for all data gathering devices/software in general. I found with helping non tech friends that most things they buy rely on them not knowing or understanding the "send back to the mothership" option.

Just like my firewall, first statement DENY ALL.

<comment><USER4> You also need to consider that there is difference between a a check box saying _opt out_ and that check box actually opting you out.

<comment><USER5> Also the checkbox carefully worded to make opting out a double negative so that you think you're opting out when in fact you're opting in.

</comment></comment></comment><comment><USER6> I bought a DJI mavic and it is disabled from the getgo. You have to run their app and register even to fly it non-autonomously with the sticks.

A little searching online and found the dji go app is a cesspool - <USER2> to maybe 20 different sites with all kinds of flight details.

Sent back without registration.

</comment><comment><USER7> This is a 5g huawei play or a Lenovo play not sure. But the phrase about totalitarian country taken over data (and should have said can remote control your devices ) is something.

Wonder what area china is in the lead - moon landing, human gene research on real human, ...</comment>


Ask HN: Where can I see most used web apps for each country? - <AUTHOR>

Hi, is there a website that lists the most used apps for each country? If not maybe a site that lists those in the US or worldwide? Thanks in advance! <comment><USER2> It's tough to measure, because you can't really know for sure how much traffic a site is getting unless you are the owner of that site. However, services like Alexa attempt to estimate the most trafficked sites by tracking segments of users (in Alexa's case they track users of their toolbar). Their top-site estimates can be split by country:

<http://www.alexa.com/topsites/countries></comment>


Shc: A Shell Script Compiler - <AUTHOR> https://github.com/neurobin/shc <comment><USER2> From the Readme it seems like this is not a compiler but some obsfucator and not a very good one at that as it can be defeated by just replacing the shell with a wrapper which dumps the script before execution.</comment>


Iranian Nuclear Accident? - <AUTHOR> http://wikileaks.org/wiki/Serious_nuclear_accident_may_lay_behind_Iranian_nuke_chief_resignation This might be old news, but did anything more come of this? <comment><USER2> 1\. Aghazadeh resigned as he had supported Mousavi in the presidential elections and had had enough of Ahamdinejad. He was replaced by the much better qualified, and very well respected Ali Akbar Salehi (MIT PhD): <http://en.wikipedia.org/wiki/Ali_Akbar_Salehi>

2\. Natanz is under full IAEA supervision (cameras, sampling devices, etc) and subject to frequent IAEA visits. If there was any type of an accident or radiation release, you would have heard it by now, or you will see it in the next IAEA report on Iran's nuclear activities.

</comment><comment><USER3> My guess is a criticality accident. They are very hard to avoid without [institutional] experience.

I've been expecting one for quite a while.

<comment><USER4> True... but even supposing that it were to happen, it may not have been a big deal, in the grand scheme of things. It happened twice to the US A-Bomb program and life went on. General Leslie was not forced down.

<http://en.wikipedia.org/wiki/Louis_Slotin> <http://en.wikipedia.org/wiki/Harry_K._Daghlian,_Jr>.

</comment></comment><comment><USER5> Isn't this an underground facility? Radiation released if any was probably contained?

<comment><USER3> When you say radiation do you mean radioactive matter, or actual radiation (like gamma rays)?

Because there is nothing to contain if it was gamma rays since they dissipate (like light). If it was neutrons then it can make other things radioactive, but again, there is nothing to contain.

Contain sort of implies an explosion. But nuclear accident does not necessarily mean an explosion.

</comment></comment><comment><USER6> I wonder how many of these rumors they hear, and how unlikely it is that they'd find corroborating evidence.

</comment><comment><USER7> Inflaming outside pressure on Iran regarding its nuclear program via anonymous leaks at this time will result in internal pressure against the still flourishing opposition movement.</comment>


George Boole and the Calculus of Thought (2018) - <AUTHOR> https://www.3quarksdaily.com/3quarksdaily/2018/02/george-boole-and-the-calculus-of-thought-5.html <comment><USER2> Fantastic article that sheds beautiful light on the core of modern digital computers.

</comment><comment><USER3> What a lovely article! I happened to walk past his house in Cork last year, not having known he'd lived there. My partner couldn't work out why I was so excited, but then there's only 10 types of people in this world etc

</comment><comment><USER4> From the article: " _It is impossible that the same quality should both belong and not belong to the same thing … This is the most certain of all principles … For it is by nature the source of all the other axioms._ " Aristotle

And yet.. quantum mechanics managed to break the most certain of all principles. Or actually.. the man who says "I always lie", does he belong to the group of people who always lie, or does he not belong to it?

The universe we live in turns out to be an interesting place, at least.

<comment><USER5> > And yet.. quantum mechanics managed to break the most certain of all > principles.

That's false. Quantum logic satisfies the principle of non-contradiction (the logical property described in the quotation from Aristotle).

The mistake you're making is misinterpreting the superposition of _p_ and _~p_ , which is a combination of being _p_ with some probability and _~p_ with some probability, with the simultaneous possession of _p_ and _~p_ with certainty in both cases. Quantum mechanics doesn't say the latter is possible.

<comment><USER6> You are confusing "excluded middle" (¬p⋁p) with "non-contradiction" (¬(p∧¬p)). The former is not valid in e.g. constructive logic, whereas the latter is a basic statement of consistency.

<comment><USER5> My edit to correct that raced with your comment, but thanks. In any case, my point about quantum logic stands.

<comment><USER6> Or as Lewis Caroll puts it, through Tweedledee: "if it was so, it might be; and if it were so, it would be; but as it isn't, it ain't. That's logic."</comment></comment></comment></comment></comment>


50 years ago today the word "hypertext" was introduced - <AUTHOR> https://gigaom.com/2015/08/24/hypertext-50/ <comment><USER2> Perhaps someday the original vision of hypertext will become commonplace, rather than the watered-down version that we have.

> So, I still have a dream that the web could be less of a television channel, > and more of a sea of interactive shared knowledge...

[http://worrydream.com/quotes/?author=Tim%20Berners- Lee](http://worrydream.com/quotes/?author=Tim%20Berners-Lee)

<comment><USER3> That quote was from 1995. You've got wikis, you've got instant global knowledge search, you've got stack overflow, you've got forums devoted to the tiniest minutia of any topic, you've got random youtubers sharing their knowledge of their hobbies every day, you've a million other great things--I feel like we're doing ok.

(I mean, yeah, the sea of interactive shared knowledge also has a garbage island...)

<comment><USER2> I cannot dispute the fact that the web is fantastic in many ways, and I did not intend to do so. Nevertheless, the current incarnation of the web is not the full system envisioned by Nelson and even TimBL.

I chose the excerpt from that full quote poorly. I'll try again, but I'd recommend reading the full linked quote (or watching the original source video).

> The "World Wide Web" program, the original browser/editor, was in fact an > editor, and you could make links as easily as you could follow them. And > that was fundamental. There are two things which seem to me to be totally > bizarre. One of them is the fact that you can't do that [now], that we've > lost that. So in fact the thing is not interactive. I don't know if I can > think of any hypertext experiments in research where you haven't been able > to make links just as easily as following them. Authorship has always been > right up there. And now, for some historical quirk, which I could go into, I > have gone into, I won't go into, we have a whole bunch of things out there > which are "browsers".

The big ideas that TimBL is expressing is still fairly applicable 20 years later.

Other interesting links:

[http://hapgood.us/2015/07/21/beyond- conversation/](http://hapgood.us/2015/07/21/beyond-conversation/) [http://worrydream.com/TheWebOfAlexandria/](http://worrydream.com/TheWebOfAlexandria/) [http://hapgood.us/2014/08/14/the-web-is-broken-and-we- should...](http://hapgood.us/2014/08/14/the-web-is-broken-and-we-should-fix- it/)

<comment><USER4> Even after all these years, Project Xanadu is still kicking, trying to do something like this - "the longest-running vaporware story in the history of the computer industry". [http://archive.wired.com/wired/archive/3.06/xanadu.html](http://archive.wired.com/wired/archive/3.06/xanadu.html)

</comment></comment></comment></comment><comment><USER5> The article that influenced it all, reproduced on _The Atlantic_ ; [http://www.theatlantic.com/magazine/archive/1945/07/as-we- ma...](http://www.theatlantic.com/magazine/archive/1945/07/as-we-may- think/303881/)

</comment><comment><USER6> What an interesting character. You can see his vision for the web at [http://www.xanadu.com/](http://www.xanadu.com/), it is quite unique. Seems to focus almost entirely on concepts of ownership, attribution, quotation, and composition.

Given how much the modern web has developed, without significant infrastructure arising to support any of these, I wonder what that says about their utility in our current society, compared to those features which _have_ arisen in the modern web (hyperlinking, anonymity, ephemerality, independence, content-addressability).

<comment><USER7> We didn't have personal computers back then. Try to imagine if you'd had to design the web based on mainframes, and you had to go to a sort of cybercafe to rent a dumb terminal....

Remember also that technology was very expensive so the "ownership, attribution, quotation" system was the basis for micropayments.

By the way, it's a terrific interview, and I highly recommend it to anyone who hasn't read it....

<comment><USER6> Oh I totally get that! I'm commenting on where the web is _now_ , in contrast to Mr. Nelson's view of what it "should" be.

</comment></comment></comment><comment><USER8> Google N-Gram Viewer: [https://books.google.com/ngrams/graph?content=hypertext&year...](https://books.google.com/ngrams/graph?content=hypertext&year_start=1960&year_end=2000&corpus=15&smoothing=3&share=&direct_url=t1%3B%2Chypertext%3B%2Cc0)

<comment><USER9> Interesting that "cyberspace",starting a few years after "hypertext", seems to be following almost the same trajectory.

[https://books.google.com/ngrams/graph?content=hypertext%2C+c...](https://books.google.com/ngrams/graph?content=hypertext%2C+cyberspace&year_start=1960&year_end=2015&corpus=15&smoothing=3&share=&direct_url=t1%3B%2Chypertext%3B%2Cc0%3B.t1%3B%2Ccyberspace%3B%2Cc0)

</comment></comment><comment><USER10> > Well enough to get three patents and independently invent ray tracing, if > anyone is interested.

It seems that Mr. Nelson has an implicit respect for patents, but I don't know why. I guess he can't be right about everything, or can he?

</comment><comment><USER11> Gigaom is back? I thought it abruptly ceased operations (other than leaving the static website up) back in March.

It doesn't look like there are many new articles being posting, but this is one.

</comment><comment><USER12> We've come a long way with the Web,languages, and technologies. Can't imagine what another 50 years will bring.

</comment><comment><USER13> 50 years later we have words like "hyperloop". Fascinating

</comment><comment><USER14> Time for the image macro [https://lh3.googleusercontent.com/-7RQK6LC3gdg/VGFsmQBX0RI/A...](https://lh3.googleusercontent.com/-7RQK6LC3gdg/VGFsmQBX0RI/AAAAAAAAAWU/H2xNrkuvCbw/w640-h960-no/tedmacro.jpg) again.</comment>


Bees' artistic flair gives greater insight into visual memory - <AUTHOR> http://www.qbi.uq.edu.au/bees-and-art-172771

<comment><AUTHOR> And the BBC story that talks about it (sorry if this doesn't work outside the UK): <http://www.bbc.co.uk/news/science-environment-20114359></comment>


The wear patterns of jeans aren't good forensic evidence - <AUTHOR> https://arstechnica.com/science/2020/02/the-wear-patterns-of-your-jeans-arent-good-forensic-evidence/ <comment><USER2> A false positive rate of 0.1% and a false negative rate of 40-50%? Isn't that... actually pretty useful? You'd never want to convict someone based exclusively on this, but it could fit into the "preponderance of evidence" standard. No one piece of evidence is foolproof, e.g. the classic examples of DNA & fingerprints- did you even lift the right set of prints or collect the right sample of hair?

<comment><USER3> I'm not sure the article correctly interpreted the findings. The paper is here: [https://www.pnas.org/content/pnas/early/2020/02/18/191722211...](https://www.pnas.org/content/pnas/early/2020/02/18/1917222117.full.pdf)

What they found was a correlation between false positive rates and true positive rates, where IF you could accept a false positive rate of 0.1%, THEN you could get a little over 50% true positive rate with the longest seam length under "ideal imaging conditions".

They do not attempt to estimate the false positive rate of whatever methodology FBI agents are using in practice. I doubt the FBI has a rigorous well-defined test that could be analyzed; I suspect this is just a general technique that is applied by different agents in different ways.

Even if the FBI's methods approach this ideal false positive rate (which they can't), they are not describing it honestly in court.

> When, for example, an FBI analyst identified the plaid shirt in a > surveillance video as that belonging to Wilbert McKreith, the analyst stated > in court that the odds that two different shirts would match were a > staggering 1-in-650 billion. The analyst arrived at this number by making > eight measurements along two seams, estimating the probability that the > plaid stripes at these eight locations were misaligned by a certain > distance, and then multiplying all eight of these probabilities to reach the > astronom-ically low odds of 1-in-650 billion.

</comment></comment><comment><USER4> For a broader discussion of just how bad, and dangerous, forensic sciecne can be there is a Scientific American article [0] from about 5 years ago. Along with many others if you take a look. Most access this issue through one specific case that is of local relevance...but at a high level, people have literally been executed based on bluntly fake science and courts opt out of doing anything.

If AAAS is telling you your field is bad at science, everyone should situp and listen [1]. For example...there are no scientific standards around fingerprinting.

[0] [https://www.scientificamerican.com/article/can-we-trust- crim...](https://www.scientificamerican.com/article/can-we-trust-crime- forensics/)

[1] [https://www.aaas.org/resources/forensic-science- assessments-...](https://www.aaas.org/resources/forensic-science-assessments- quality-and-gap-analysis)

<comment><USER5> There was a PBS show that looked into how wonky forensic science could be.

A common certification at the time was earned by taking an online class and answering multiple choice questions ... and blamo you had a certificate that they found on a lot of resumes. It didn't require much of any actual scientific knowledge.

<comment><USER6> This appears to be surprisingly common in both law and fire. I hold a handful of such certificates, all of which say I'm qualified to do things I'm mostly certainly not.

I'm trying to change this behavior by incorporating objective examinations into one of my specializations and it's extremely difficult.

<comment><USER7> I wouldn't mind tacking some BS certifications onto my resume, which would you recommend?

<comment><USER6> In all seriousness, the FEMA ICS 100 and 200 courses:

100: [https://training.fema.gov/is/courseoverview.aspx?code=IS-100...](https://training.fema.gov/is/courseoverview.aspx?code=IS-100.c)

200: [https://training.fema.gov/is/courseoverview.aspx?code=IS-200...](https://training.fema.gov/is/courseoverview.aspx?code=IS-200.c)

They are both available online for free and you download a little certificate afterward.

ICS is the Incident Command System used by law, fire, and other agencies to manage "incidents" \-- anything from, "my kid just disappeared from my front yard" to "the entire town of Paradise just burned to the ground, now what do we do?"

There are some principles in ICS that any technical manager should find helpful. Someday I'd like to write a long article on what technical managers can learn from ICS, but in the meantime I'm happy to suggest other people just take the first two courses.

</comment></comment></comment></comment></comment><comment><USER8> More junk science used to convict people in the courts of America? I'm going to die now of not surprise! I guess a better way to say this is, how does the proliferation of shit work like this happen so fast but the refutation take so damned long?

<comment><USER9> There's an asymmetry to the process of how judges allow evidence.

If one judge somewhere allows a prosecutor to present junk science as evidence, that becomes precedent that other prosecutors can point to in order to convince other judges to allow it, too.

Once precedent is established, it takes the decision of a higher court to stop use of that junk science. It takes time for cases to work their way up.

<comment><USER10> At what point are judges liable here? They play a vital role in our society yet a lot of what they do seems to be based on precedent established on a whim.

<comment><USER11> Under the Appeals process.

If you mean criminally liable though, we don't hold them liable for the same reasons we don't hold lawyers criminally liable for defending a convicted criminal. At the end of every human process, you need someone somewhere to exercise some human judgement and be able to rely on it. Humans are not infallible though, and neither is anything else we create whether it's court systems or computer systems.

This is one of the reason's why we have trials by Jury in cases where life, limb and liberty are at stake. It is one thing to convince one person, the judge presiding over the case to pass judgement one way or another, but a whole other thing to convince several of your peers of equal social standing to pass judgement. It's still not perfect, but nothing ever will be.

<comment><USER10> Do judges lose their jobs after successful appeals? I'm sure it has happened, but this seems like an incredibly rare event. Yet lawyers who do their jobs poorly (even ones defending criminals) can get fired from being a lawyer and have consequences on their ability to practice law. For most jobs, if you do it poorly enough then there can be severe consequences that follow. Yet here there are matters of life and death at play and nobody seems to have any responsibility in their screw up. Even police officers are held accountable when great harm comes to the innocent due to what they did.

<comment><USER11> Federally, Article III judges can be impeached and removed by Congress. Administrative and Military (Article II) judges can be fired outright or demoted. State-level, depends on the State, but in California we have something called retention elections, which rarely result in a change in office, but changes in office have come about after particularly unpopular rulings.

An appeal doesn't directly lead to jobs loss, but it doesn't look good on your record when your judgements are regularly overturned, particularly if you aspire to a better position. Keeping your job isn't always the only, or most important incentive if you have any kind of ambition or want to leave any kind of lasting legacy.

</comment></comment></comment></comment></comment></comment><comment><USER12> Link to the paper:

[https://www.pnas.org/content/pnas/early/2020/02/18/191722211...](https://www.pnas.org/content/pnas/early/2020/02/18/1917222117.full.pdf)

</comment><comment><USER13> Most forensic science is complete BS. Very little has changed since the pivotal National Academies of Sciences report, "Strengthening Forensic Science in the United States" came out in 2009.

</comment><comment><USER14> [https://www.wired.com/1998/04/fbi-tracks-the-denim- trail/](https://www.wired.com/1998/04/fbi-tracks-the-denim-trail/)

> (1998) FBI scientists reported at the American Academy of Forensic Sciences > in February that they are using a new technique to identify criminals – > analyzing the unique wear patterns of denim jeans and comparing them to > photographs taken from crime scenes.

</comment><comment><USER15> Bad forensic science kills : see e.g. [https://en.wikipedia.org/wiki/Cameron_Todd_Willingham](https://en.wikipedia.org/wiki/Cameron_Todd_Willingham)

Executed following a conviction based on the worst junk science.

(there was no crime, everything pointing to a tragic accident)

<comment><USER12> > there was no crime, everything pointing to a tragic accident

From just reading the Wiki article (key caveat), I would say the case is not "beyond reasonable doubt" thus a conviction is unwarranted. But that doesn't mean _everything_ points to a tragic incident. This is a pretty murky case.

<comment><USER16> Is there a single piece of evidence for arson in this case? I don't see any in the wiki article.

House fires happen a lot. According to the NFPA, in the US there were on average around 350000 house fires per year between 2013 and 2017, 92% of them accidental: [https://www.nfpa.org/News-and-Research/Data-research-and- too...](https://www.nfpa.org/News-and-Research/Data-research-and- tools/Building-and-Life-Safety/Home-Structure-Fires)

</comment></comment></comment><comment><USER17> I'm surprised that surveillance camera resolution is high enough to see that pattern.

</comment><comment><USER18> I posted on ProPublica article earlier [https://news.ycombinator.com/item?id=22430735](https://news.ycombinator.com/item?id=22430735)

</comment><comment><USER19> TL;DR: the "wear" pattern are those light/dark marks on both sides of pants, along the seam, that would be "unique" to each jeans isn't enough to give a "true positive" identification keeping the "false positives" low enough.</comment>


Earth-sized planet found in a very close orbit around Alpha Centauri B - <AUTHOR> http://translate.google.com/translate?sl=hr&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fwww.tportal.hr%2Fscitech%2Fznanost%2F220563%2FU-orbiti-najblize-zvijezde-otkriven-Zemljin-blizanac.html&act=url

<comment><AUTHOR> The news was supposed to be under embargo until tomorrow 7pm CEST: <http://www.eso.org/public/announcements/ann12072/>

</comment><comment><USER2> Finding Earth-sized planets is still quite exciting, especially so near to us. Too bad this one is so close to Alpha Centauri B, it's probably too hot for electromechanical life (like us) to exist.</comment>


Ask HN: Why does HN have a black line on top of the page? - <AUTHOR> The title says it all. I was not able to figure out. Someone died? There is no pinned post about it. <comment><USER2> At the time of writing this is the number three story on HN:

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

HN does not have 'pinned posts'.

</comment><comment><USER3> It would be nice to have a tooltip for the black bar to see who has died.</comment>


Is surfing the Internet altering your brain? - <AUTHOR> http://www.reuters.com/article/technologyNews/idUSTRE49Q2YW20081027 <comment><USER2> What experience doesn't alter the brain in some way?</comment>


Amazon Cuts Prices at Whole Foods by Up to 43% on First Day - <AUTHOR> https://www.bloomberg.com/news/articles/2017-08-28/amazon-cuts-prices-at-whole-foods-as-much-as-50-on-first-day <comment><USER2> Discussed 4 days ago: (341 points, 219 comments)

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

<comment><USER3> It was discussed in theory; now we have actual numbers.

</comment></comment><comment><USER4> Not looking forward to this at all. I trust Whole Foods--it's highly transparent. If I want to know what kind of oil they use in their prepared foods, they have a blog post on it. I don't trust Amazon, not even a little bit. I used to, back when you ran a search and it would list stuff sold by Amazon. These days, who knows what you're getting. I can deal with that for USB cables, but not food.

There is also the issue that Amazon is big on wage theft: [https://www.google.com/amp/s/thinkprogress.org/the- supreme-c...](https://www.google.com/amp/s/thinkprogress.org/the-supreme- court-just-rejected-a-wage-theft-suit-against-amazon-what-does-it-mean-for- other-workers-24849991afeb/amp/;) [https://consumerist.com/2015/10/28/amazon- prime-now-drivers-...](https://consumerist.com/2015/10/28/amazon-prime-now- drivers-accuse-company-of-wage-theft;) [http://gawker.com/true-stories-of- life-as-an-amazon-worker-1...](http://gawker.com/true-stories-of-life-as-an- amazon-worker-1002568208)

<comment><USER5> > I trust Whole Foods

After the systematic fraudulent overcharging and false "all natural" labelling of their in-store products, why?

<comment><USER4> I don't imagine overcharging in some New York stores of mislabeling some things containing an artificial leveling agent was a conscious corporate policy. It's certainly not central to the business model. Trying to optimize the human labor chain, trying to obscure the source of products, etc. are conscious decisions Amazon makes at the highest levels. And it's central to the business model.

<comment><USER5> > I don't imagine overcharging in some New York stores

...and California, just of the states where officials investigated and caught them.

<comment><USER4> Okay. Do you think overcharging is a conscious business decision on the part of WH?

<comment><USER5> > Do you think overcharging is a conscious business decision on the part of > WH?

Honestly, I don't think it matters when the question is trust in Whole Foods.

Whether the widespread systematic overcharging is due to executive malicious intent, executive neglect, or executive lack of control despite best best intent, or some shade in between or combining elements of these, it's a negative signal for trustworthiness of the organization as an organization, though some explanations are not negative for trustworthiness of executives as individuals.

</comment></comment></comment></comment></comment></comment><comment><USER6> I wonder if the beer aisle is getting some of those discounts? Whole Foods has one of the best craft beer selections among the big-name stores, including BevMo and the like. (Actually spotted Cantillon on the shelf one time!) Really hope this won't change with the acquisition.</comment>


Google Code now has native git support - <AUTHOR> https://code.google.com/p/support/issues/detail?id=2454#c43

<comment><AUTHOR> even though this hasn't been officially announced yet, git can already be used for new projects: <http://code.google.com/hosting/createProject></comment>


Sub-10 ms Latency in Java: Concurrent GC with Green Threads - <AUTHOR> https://jet-start.sh/blog/2020/08/05/gc-tuning-for-jet <comment><USER2> For years of my life, all I thought about was stuff like this. If you've ever ran latency sensitive systems on the JVM.. man is it ever a pain.

Who was it that turned GC off entirely, minimized allocation and just restarted their VMs when they ran out of RAM every couple of hours, was that Netflix?

Either way. It makes me excited for Rust and the languages it'll inspire, all this labor gone away.

<comment> dan-robertson The part of GC which causes the most latency issues is compaction rather than merely collection. Using a language like rust won't help if you have memory fragmentation and indeed allocation tends to be much faster with a GC than with malloc. I think the advantages of rust are more to do with often avoiding heap allocation entirely (and predictably) or value semantics leading to fewer small allocations or the language's semantics not forcing you to choose between more reliable allocation-heavy immutable-everything code and faster harder-to-think-about mutation-heavy code.

<comment><USER3> Don't forget scanning. Yes, moving blocks of memory around is expensive, but it can also be done concurrently. Scanning, AFAIK, cannot be done concurrently, and thus remains the primary blocker to lower latency. And scanning is something that is entirely eliminated with static memory management.

<comment><USER4> Scanning is most certainly done concurrently with ZGC. Even root scanning is on its way to become fully concurrent, which is why we're nearing the goal of <1ms latency.

<comment><USER5> I didn't know about fully concurrent root scanning, thank you!

How does root scanning work wrt to Loom? Are stacks of virtual threads treated as roots? I guess there is no other option?

<comment><USER4> No, virtual thread stacks are not roots! This is one of the main design highlights of the current Loom implementation. In fact, at least currently, the VM doesn't maintain any list of virtual threads at all. They are just Java objects, but the GC does treat them specially.

<comment><USER6> Interesting! In what way are they handled specially?

<comment><USER4> Unlike any other object, the location of references on a stack can change dynamically, so the GC needs to recognise those objects and walk their references differently. There are other subtleties, too.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Doesn't seem helpful to use the term _green threads_ here. This isn't a JVM with green threads (those are a thing of the past as I understand it). They're using plain old OpenJDK, and they're ensuring the GC gets a CPU core to itself.

Neat that they were able to get a dramatic improvement in GC latencies on both G1 and ZGC.

No mention of the Shenandoah GC. Would the same trick help out there too?

<comment><AUTHOR> We did measure on Shenandoah as well, it helped but not enough to be within 10 ms. Since this post is about Hazelcast Jet getting the best latency, we didn't report that.

<comment><USER7> Interesting, thanks.

</comment></comment></comment><comment><USER8> Even on ten year old hardware single digit ms latency in Java server apps wasn't very special. Java (JVM) is an extremely performant platform so I always find odd how a meme has somehow built up on it being otherwise.

True that one can end up writing terribly inefficient Java code, but one can write terrible code in any language. If I need to write server code where performance is particularly important and I don't want to deal with the cost (in debug time and dev expertise) of C or C++, Java would be my first choice.

Also I'm of the school of thought that performance always matters. Autoscaling in cloud providers sure makes it easy to scale horizontally to make up for slow server code, but once you reach certain size, go have a chat with the finance team about the AWS bill.

</comment><comment><USER9> Can we talk about no async/await support? Can't build scalable apps when I'm in callback hell. It's like ES5 all over again.

<comment><USER10> Java is getting virtual threads/fibers instead of async/await.

From [https://cr.openjdk.java.net/~rpressler/loom/Loom- Proposal.ht...](https://cr.openjdk.java.net/~rpressler/loom/Loom- Proposal.html)

\</comment></comment><comment></comment><comment>-

An alternative solution to that of fibers to concurrency's simplicity vs. performance issue is known as async/await, and has been adopted by C# and Node.js, and will likely be adopted by standard JavaScript. Continuations and fibers dominate async/await in the sense that async/await is easily implemented with continuations (in fact, it can be implemented with a weak form of delimited continuations known as stackless continuations, that don't capture an entire call-stack but only the local context of a single subroutine), but not vice-versa.

While implementing async/await is easier than full-blown continuations and fibers, that solution falls far too short of addressing the problem. While async/await makes code simpler and gives it the appearance of normal, sequential code, like asynchronous code it still requires significant changes to existing code, explicit support in libraries, and does not interoperate well with synchronous code. In other words, it does not solve what's known as the "colored function" problem.

<comment><USER9> This is some sauce. Ty.

</comment></comment><comment><USER11> I want to see Java on mission critical computers in space!

<comment><USER12> Not on space, but still mission critical,

"Aegis Battleship Weapons System"

[http://www.artist- embedded.org/docs/Events/2011/JTRES/Slides...](http://www.artist- embedded.org/docs/Events/2011/JTRES/Slides/JTRES-Winkler.pdf)

"French radar system for ballistic missile tracking and measurement"

[https://www.militaryaerospace.com/defense- executive/article/...](https://www.militaryaerospace.com/defense- executive/article/16720700/thales-chooses-aonix-perc-virtual-machine-software- for-ballistic-missile-radar)

"NASA Ground Control Station for Multiple UAVs Flight Simulation"

[https://www.semanticscholar.org/paper/Ground-Control- Station...](https://www.semanticscholar.org/paper/Ground-Control-Station-for- Multiple-UAVs-Flight-Angonese-Rosa/12e4a305fd7251803c743f1ad96718c72d198165)

</comment></comment><comment><USER13> I would certainly hope that green threads have less than 10 megaseconds latency.

<comment><USER14> Was the title changed? Because it says "ms" both here and on jet-start.sh and that unit is milliseconds.

<comment><USER13> It used to be 'Ms'. Guess it's fixed now.

</comment></comment></comment><comment><USER15> Glad to see some love for legacy programming languages like Java.

<comment><USER4> Well, that's understandable because there are still some legacy companies and organisations left that write a lot of new software in Java, like Apple, Amazon, Netflix, Twitter, Google, Alibaba, Tencent, NASA, GitHub, Microsoft, Facebook, Spotify and nearly all Fortune 500 companies. Plus, if you care about both performance and observability, there aren't many viable alternatives.

BTW, many if not most of the cutting-edge advances in compilation, low- overhead deep profiling, and garbage collection are done on the Java platform, so it's still the technology leader in those areas.</comment></comment>


"Farout", the Farthest Object Ever Seen in the Solar System - <AUTHOR> https://www.universetoday.com/140901/just-discovered-farout-the-farthest-object-ever-seen-in-the-solar-system/ <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=18700144](https://news.ycombinator.com/item?id=18700144).

</comment><comment><USER3> I think the most interesting part is at the end of the article: "Their work indicates the potential presence of an enormous planet, perhaps up to 10 times the size of Earth."

Dwarf planets are apparently somewhat plentiful in our solar system, but such a giant would really tickle the fantasy even if far from the sun.

<comment><USER4> I suspect that in the next ~30yr we'll either find planet 9 or find something else to explain the odd orbits of small things beyond Neptune. There's been a ton of progress in our understanding of that part of the solar system in the last 20yr.

</comment></comment><comment><USER5> Looking at the Wikipedia page there are a number of trans neptunian objects with much greater aphelions:

[https://en.wikipedia.org/wiki/2018_VG18](https://en.wikipedia.org/wiki/2018_VG18)

It is just the farthest out _right now_.

[https://en.wikipedia.org/wiki/Extreme_trans- Neptunian_object](https://en.wikipedia.org/wiki/Extreme_trans- Neptunian_object)

There are likely many, many more we haven't found yet.

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

For comparison it is often announced in the media that voyagers 1 and 2 have "left the solar system". Voyager 1 is about 144AU out right now. There are things in orbit of the sun with aphelions from 1500 to 3000AU.

<comment><USER6> The same folks also discovered [https://en.wikipedia.org/wiki/2015_TG387](https://en.wikipedia.org/wiki/2015_TG387) a while back, with a 1955 AU aphelion. That is a lot more far out. It's crazy to think about an orbit taking over 32 thousand years. I wonder what the sun looks like from out there.

<comment><USER5> Yeah, I remember that. There is speculation in the astronomy community that based on the sheer amount of cubic volume that is out there, the distance, the small size and dark color of Sednoids and other TNOs, and the small area that's been systematically searched so far, that there may be literally thousands of them out there and a total mass of 75% of Jupiter.

</comment></comment></comment><comment><USER7> It may be 'far out' now, but in ~ 500 years it comes in as close as Saturn! (And the orbit's inclined 31 degrees.)

<comment><USER8> What? The article says they do not know the orbit so why do you say that?

<comment><USER9> The orbit isn't well known, too short an observation arc, but a rough one has been calculated. It probably reaches somewhere between Uranus and Neptune, but not Saturn.

<comment><USER10> Vadai!!!!!

</comment></comment></comment></comment><comment><USER11> How long will it be before they discover "Even Farther Out"?

<comment><USER12> That has to wait until the Ludicrous Large Telescope has been built.

<comment><USER13> For more on that see: [https://xkcd.com/1294/](https://xkcd.com/1294/)

</comment></comment></comment><comment><USER14> The first diagram, of the distances from the sun of those objects including the classical planets, it's not really a sensible thing to show.

If you look at the second diagram some of the orbits are very elliptical so the distance from the sun changes significantly. And it's also not the case that one objects it always the same "rank" from the sun.

<comment><USER15> The article mentions that the orbital elements of Farout (2018 VG18) are currently unknown. We don't know if its orbit is similar to the eccentric orbits of the other minor planets mentioned. All we know is that it is currently about 120 AU from the sun.

"2018 VG18 is much more distant and slower moving than any other observed Solar System object, so it will take a few years to fully determine its orbit."

</comment></comment><comment><USER16> Why does the article keep referring to it as a planet? That's highly confusing and disingenious, as in, probably trying to get the pop sci sites to start yelling about it as a planet.

<comment><USER17> Genuine question from an astronomically-challenged person: why would this _not_ be a planet?

<comment><USER18> The International Astronomical Union defined a planet [0] as an object that:

(a) orbits the sun, (b) has sufficient mass to be round, or nearly round, (c) is not a satellite (moon) of another object, and (d) has removed debris and small objects from the area around its orbit

The dwarf "planets" often suffer from not being round (enough), and even more from not clearing out their debris in their orbit.

[0]: [https://www.space.com/25986-planet- definition.html](https://www.space.com/25986-planet-definition.html)

<comment><USER19> Well, Farout orbits the sun, is round, is not a moon. The article is silent on item d.

I don't know what to do with the information that its diameter is 500km. I guess that makes it 1/5 of Pluto's diameter, and given that Pluto is called a dwarf planet...

<comment><USER20> "round" is a bit oversimplified in the above the actual criteria is:

"(b) has sufficient mass for its self-gravity to overcome rigid body forces so that it assumes a hydrostatic equilibrium (nearly round) shape, "

If Farout is highly icy 500km could be enough to qualify it.

Regardless it isn't nearly massive enough to clear it's orbit.

</comment></comment></comment></comment></comment><comment><USER21> Can someone explain just What it is? A planet?

<comment><USER22> It's about 1/5 the diameter of Pluto (500km to Pluto's 2400), so quite small and definitely not a planet. It's interesting because it could give evidence about the hypothetical ninth true planet-sized object that people have been hypothesizing for awhile.

<comment><USER21> Thanks! Hoping for that ninth planet :D

</comment></comment></comment><comment><USER23> How could they not have named it Farpoint?

Q is not impressed.

</comment><comment><USER24> Semi-off topic, I suspect someone's a Pratchett fan:

 _' Correct. The Bank is now in orbit forty million miles out beyond - what's the name of your outermost world?'_

 _' Far Out,' said Tarli._

\-- 'The Dark Side of the Sun', Terry Pratchett

</comment><comment><USER25> Its Yuggot!</comment>


An Introduction to Kolmogorov Complexity - <AUTHOR> http://jnape.com/kolmogorov-complexity/

<comment><USER2> For some reason I'm constantly reminded of the story of the discovery of Karatsuba multiplication.

At a seminar Kolmogorov suggests that the classic multiplication algorithm was optimal, to multiply two numbers with n digits was O(n^2). Karatsuba, who is a student attending, come back a week later with an O(n^(log_2 3)) algorithm - which Kolmogorov was so excited about he cancelled the rest of the seminar and wrote up and published the algorithm without even telling Karatsuba (although he did list his as the author)

There's a lesson in there somewhere

<comment><USER3> >There's a lesson in there somewhere

Communicate with ones peers even if its mundane?

</comment></comment><comment><USER4> I don't think this is right. The Kolmgorov complexity as you wrote is the shortest description of some program in a universal language. If you have program P and you shorten it to an isomorphic program P', k(P) = k(P') as we have the true shortest program P* where k(P) = |P| <= k(P). P' has the same Kolmgorov complexity as P.

</comment><comment><USER5> > between two extrinsically identical algorithms, the one that can be > expressed - or implemented, as it were - with less characters is > fundemantally [sic] simpler in the context of the problem domain.

It does not make sense to say "an algorithm can be expressed in fewer characters" because an algorithm _is_ its description in the fixed (universal) description language. This confusion between the Kolmogorov complexity of a string and the Kolmogorov complexity of an algorithm [1] haunts the entire article.

[1] Or what, the Kolmogorov complexity of a language? Saying "extrinsically identical algorithms" makes it unclear whether the author understands the difference between an algorithm and a function.

<comment><AUTHOR> > It does not make sense to say "an algorithm can be expressed in fewer > characters" because an algorithm is its description in the fixed (universal) > description language.

If you don't find it fitting to describe an implementation of an algorithm as an expression of that algorithm, fair enough.

> This confusion between the Kolmogorov complexity of a string and the > Kolmogorov complexity of an algorithm [1] haunts the entire article.

"The Kolmogorov complexity of an algorithm" was intended to be "the Kolmogorov complexity of the implementation of an algorithm in some language by some engineer", but perhaps the entire article is rendered ineffective due to this lack of clear distinction. I'll accept that.

> Saying "extrinsically identical algorithms" makes it unclear whether the > author understands the difference between an algorithm and a function.

Perhaps I was too lazy and should have said "extrinsically identical _implementations_ of some algorithm". It is true that algorithms are by most definitions (I like Turing's) necessarily more abstract than the computational mechanisms we use to reify them, but it didn't seem like a crucial failure to not be pedantic about this distinction. Perhaps it was.

Hopefully subsequent articles will benefit from your points. Thanks very much for the feedback!

<comment><USER5> I think you may be still seriously confused by the definition of Kolmogorov complexity. It's not a fine distinction I'm trying to make, but rather that your definition has a type error! You should think hard about how Kolmogorov complexity (which is defined for strings) can make sense when you try to extend the definition to algorithms in the way you want. They way you've done it is not consistent from what you've written.

I suggest you read a few more tutorials on Kolmogorov complexity.

</comment></comment></comment><comment><USER6> As others have pointed out, the author is confusing a few ideas.

First of all, Kolmogorov complexity talks about the _output_ from programs at a "higher-level". For example, to define the Kolmogorov complexity of plain text, we must talk about _programs_ which _output_ text. To define Kolmogorov complexity of, say, Ruby code, we must talk about _programs_ which _output_ Ruby code. And so on. The author mixes up the complexity of the _text_ (eg. in the 3 line example) with the complexity of the _code_. These are two different things: the complexity of the text depends on the shortest program which outputs that text; the complexity of the code depends on the shortest program which _outputs that code_.

Secondly, writing different programs with the same output doesn't change the Kolmogorov complexity; it merely improves an approximation (since Kolmogorov complexity is undecidable, we must approximate it). The author also uses the word "count" when talking about these approximate numbers, which I think is better than calling them "complexity".

A couple more points about the author's argument:

1) When comparing different languages, like Ruby and Python, it might be nice to point out that the complexity can only change by a constant amount. This is because, in the worst possible scenario, we can write an interpreter for the other language. For example, if we use Python as our meta-language, we can denote the complexity of some text T as P(T); if we switch to using Ruby instead, the complexity R(T) <= P(T) + I, where I is the complexity of a Python interpreter written in Ruby. Since I doesn't depend on T, it is a constant, and therefore the choice of language becomes less important as the complexity of T increases.

2) Using Kolmogorov complexity as a benchmark doesn't seem like a great idea to me. It's true that repetition gets eliminated, eg. using loops, but it can also lead to really bizarre things, like crazy integer arithmetic which just- so-happens to produce the correct ASCII characters. Code becomes shorter, but after a certain point it can get unintelligible. In effect, pursuing Kolmogorov complexity means trying to compress your source code. Eventually you'll end up with something like this:

        def decompress(str):
            # Insert crazy, program-specific arithmetic here

        eval(decompress('!"£$%^&*()"£$%^&*(!"£$%^&*'))

In particular, code which approaches the limit of Kolmogorov complexity becomes incredibly inter-dependent, lacks all modularity and loses the ability to make incremental changes (making small changes in a compressed encoding leads to large changes in the output).

Just look at [http://codegolf.stackexchange.com](http://codegolf.stackexchange.com) for example ;)

<comment><AUTHOR> Whew, lots of good feedback here. Clearly I should have checked back earlier; I didn't realize there would be so much discussion. Excellent! Points addressed inline.

> First of all, Kolmogorov complexity talks about the output from programs at > a "higher-level". For example, to define the Kolmogorov complexity of plain > text, we must talk about programs which output text. To define Kolmogorov > complexity of, say, Ruby code, we must talk about programs which output Ruby > code. And so on. The author mixes up the complexity of the text (eg. in the > 3 line example) with the complexity of the code. These are two different > things: the complexity of the text depends on the shortest program which > outputs that text; the complexity of the code depends on the shortest > program which outputs that code.

Unequivocally true, and probably illustrative of the primary reason my article failed to express my intent, which was to illustrate Kolmogorov complexity as a useful measurement in reconciling the complexity of an algorithm (as expressed, say, in some natural spoken language, like English) with the complexity of its implementation: or, more precisely, how uniformly symmetrical some implementation which models an algorithm is to the algorithm itself. Perhaps it was too great of a leap to name Kolmogorov complexity as the conduit for this, but it seemed much closer than other similar textual comparison mechanisms (like, say, Hamming distance, which has its own interesting, but completely different, implications in comparing source code revisions).

For example, in a language that supports pattern matching in function definitions, you could, in theory, implement a 2-arity addition function by defining all permutations of two 32-bit signed integers. This is, of course, an incredibly unhelpful implementation, not only in general comprehension and understanding (who's going to memorize the outputs of 2^64 function definitions?) but also in deriving the intent of the solution (in this case, the rules of addition). I find too often our implementations tend to focus on varieties of knowing "2 plus 2 equals 4", rather than understanding the nature of the solution, and was trying to use Kolmogorov complexity as a heuristic for identifying the relative complexity of two implementations to discover the one that is more general and correct. Perhaps that was too much of a leap.

> Secondly, writing different programs with the same output doesn't change the > Kolmogorov complexity; it merely improves an approximation (since Kolmogorov > complexity is undecidable, we must approximate it). The author also uses the > word "count" when talking about these approximate numbers, which I think is > better than calling them "complexity".

Again, this is absolutely true, although given that complexity is undecidable, it seemed convenient to synonymize "complexity" with "approximate complexity". Given this feedback, however, perhaps I'll update the article to attempt to clarify this distinction (possibly using "count" more, as that seems to have struck accord).

> 1) When comparing different languages, like Ruby and Python, it might be > nice to point out that the complexity can only change by a constant amount. > This is because, in the worst possible scenario, we can write an interpreter > for the other language. For example, if we use Python as our meta-language, > we can denote the complexity of some text T as P(T); if we switch to using > Ruby instead, the complexity R(T) <= P(T) + I, where I is the complexity of > a Python interpreter written in Ruby. Since I doesn't depend on T, it is a > constant, and therefore the choice of language becomes less important as the > complexity of T increases.

Great point! I'd also add that it's useful to understand the magnitude of I between languages, as that could (and should) be a contributing factor when choosing the language most appropriate for the problem.

2) Using Kolmogorov complexity as a benchmark doesn't seem like a great idea to me. [...]

It can certainly be taken too far! I tried to caveat the article at the end, illustrating some of the pitfalls of making it the One True Metric, e.g. introducing artificial abstractions. Of course, this can extend to incidental language idiosyncrasies that can be exploited to shorten implementations. I was attempting to bring focus to subjective clarity as the final ruling metric, using Kolmogorov as assistance on the journey.

> Just look at > [http://codegolf.stackexchange.com](http://codegolf.stackexchange.com) for > example ;)

I actually referenced code golf in the footnotes as a correlative example of refactorings based solely on Kolmogorov complexity. It's a double edged sword: some of my most profound "aha!" moments came from code golf exercises, although the vast majority of the time I just end up frowning at the non- obvious nature of the final winning submissions.

Hopefully my responses are more clear than the article was, although I fear they perhaps were not. Thanks for the very thoughtful and measured feedback!

</comment></comment><comment><USER7> You should disable auto smart-quotes on whatever publishing platform you're using. It's changing

        puts 'My name is George and my age is 31'

into

        puts 'My name is George and my age is 31'

I noticed because the syntax highlighting on the Ruby code was incorrect.

<comment><AUTHOR> Yes...sadly, the code highlighting plugin I'm using is not very good. I'll try to find a better one: thanks for the feedback.</comment></comment>


Man finds extreme healing eating parasitic worms - <AUTHOR> http://edition.cnn.com/2010/HEALTH/12/09/worms.health/index.html

<comment><USER2> <http://www.radiolab.org/2009/sep/07/> pretty sure a similar story was on radiolab too.

</comment><comment> DifE-Q I believe interleukin is also made as a byproduct of the baking process in bread...where the crust has 8x higher concentration of interleukin than the other part of the bread. It is thought that bread crust can be a buffer in helping to reduce the chances of colon cancer.

I don't know though if interleukin-22 is the same as the interleukin made in the baking process.

</comment><comment><AUTHOR> Reminds of this classic Kuro5hin account of seeking hookworm infection as an asthma treatment:

<http://www.kuro5hin.org/story/2006/4/30/91945/8971></comment>


For the first time, a spacecraft has returned an aging satellite to service - <AUTHOR> https://arstechnica.com/science/2020/04/mission-extension-vehicle-succeeds-returns-aging-satellite-into-service/? <comment><USER2> The Hubble telescope and a couple of Space Shuttle orbiters would like to a word with you.</comment>


Three Minutes to Midnight - <AUTHOR> https://thedaleyreview.wordpress.com/2016/10/09/three-minutes-to-midnight/ <comment><USER2> >Surely it is clear that if anything the build up of troops on the Russian border acts to position NATO in an overtly aggressive posture, regardless of any predilection for defensive contrivance.

Seriously?

I feel like I'm reading something Putin wrote for the Russian people.

Wasn't it Russia that annexed Crimea? Wasn't it Russia that shot down MH17? Wasn't it Russia that invaded eastern Ukraine? Wasn't it Russia that is bombing UN Convoys and Hospitals in Syria? Wasn't it Russia that has openly invaded the Airspace of Baltic Countries?

Everything Johnathan Frances has written reeks of the Kremlin Propaganda Machine.</comment>


Git is more that a mere source control - <AUTHOR> http://mathieuberube.net/blog/2010/06/20/git-is-not-just-source-control/

<comment><USER2> This doesn't seem very git specific. Of its three points, only interactive rebase is one that I'm not sure is present in other VCSs.</comment>


Confirmed: Motorola Mobility acquires cloud start-up Zecter (YC S07) - <AUTHOR> http://news.cnet.com/8301-1035_3-20026388-94.html

<comment><USER2> Azingo, 280 North, 4Home, now ZumoDrive. I wonder what Motorola thinks they are up to?

<comment><USER3> They're trying to stay relevant in the age of iOS and Android.

</comment></comment><comment><USER4> That's awesome news, congrats to Dave and Kevin

</comment><comment><USER5> what is the exit price?</comment>


The ugly afterlife of crowdfunding projects that never ship and never end - chris-at http://arstechnica.com/business/2014/10/the-ugly-afterlife-of-crowdfunding-projects-that-never-ship-and-never-end/ <comment><AUTHOR> Ouch! Not entirely unexpected of course, there are many inexperienced people who try to get something going, and get experienced the hard way. I wonder sometimes if Kickstarter and Indiegogo are training a new breed of entrepreneur or con artists.

What I haven't seen too much of yet, but expect to, is something that is a cross between Quirky and Kickstarter where a company with product development expertise runs 'kickstarters' as essentially a way to schedule excess factory capacity. Given a couple of designers you could have them throw out ideas and if they get funded, then make those. A bit harder to forecast than the current process but it seems like an interesting way to monetize excess capacity.

</comment><comment><USER2> A huge red flag for a crowdfunded project is any sort of new technology that needs to be developed before the project can be successful. Something that has never been done before might simply not be possible or might turn out to be impossible to resolve before everyone loses interest. The amount of money available makes no difference past a certain point.

These hard/impossible problems can sometimes be hidden inside other apparently easy problems. This is particularly true if there is a significant software component.</comment>


Jupiter Loses a Stripe - <AUTHOR> http://science.nasa.gov/science-news/science-at-nasa/2010/20may_loststripe/

<comment><USER2> See also: <http://news.ycombinator.com/item?id=1340492>

Different source, some discussion.</comment>


Is Google's motto "Don't be Evil" still reality? - <AUTHOR> https://www.yourinterest.com/blog/2015/07/22/google-dont-be-evil/

<comment><USER2> >>> When a company like Google states the fact that (according to an FT article published on October 31st 2014) Larry Page stated: "We do benefit from the fact that once we say we're going to do it, people believe we can do it, because we have the resources," it is that business' responsibility to live up to that mission, especially when the impact of offering false promises can have such a detrimental effect of our society.

What the hell did I just read? Seriously, what the hell?!</comment>


Workers should not have to die so Apple can build the iPhone 5 - <AUTHOR> http://www.bgr.com/2012/02/01/workers-should-not-have-to-die-so-apple-can-build-the-iphone-5-petition-says/

<comment><USER2> As usual, there's always another side to the story. Why do you think these companies continue to be inundated with resumes and applicants?

A good read is Factory Girls by Leslie Chang. I went to listen to a talk she gave last year on her experience at Shenzhen. She made a comment that Shenzhen is a very tough place to live. The place is very industrial and polluted. But when she went to the hometown village of one of her friends (a factory worker) for several days during the Chinese New Year, she found herself missing Shenzhen because the conditions of Chinese countrysides were even worse.

This isn't t justify business practices of Apple, Foxconn, or other manufacturers, but it's important to remember that whether an environment is good or bad really depends on what we are benchmarking it with.

<comment><USER3> You're right, and the moral of that story is: Poverty sucks! Poverty is so bad that even the process of _rapidly growing out of that poverty_ seems incomprehensibly awful to the non-poor.

On the other hand, just because these little letters of protest can't magically fix the whole Chinese economy doesn't mean they're necessarily useless. Worker rights are not won all at once. They're negotiated a little bit at a time. The more bad PR companies get, the higher the cost of dealing with it, and the easier it becomes for workers to negotiate better working conditions.

Much of Foxconn's response to this dustup will be cosmetic. But cosmetics cost money, too, so some of the response will consist of real reform.

</comment></comment><comment><USER4> Should workers die so I can have a fish dinner? (Fishing is dangerous.) Should workers die so I can wipe my ass? (So is forestry.) Should workers die so I can charge my iPhone? (So is generating and transmitting power.) Should workers die so I can have a larger house? (As is construction.) Should workers die so I can drive to work? (Oh, and manufacturing.)

We live in an imperfect world. Everything is somewhat dangerous. People are - literally - dying while making every single product you have ever consumed or seen in the stores. To phrase your argument in absolutes is to reveal yourself as hopelessly naive.

There's a conversation to be had here, but it's probably going to be in the following form: "The fatal accident rate in factories supplying Apple is X per 100,000. I believe it should be Y, and I believe that because of specific reasons A, B, and C." And then we can discuss if X is really too high, and if Y is achievable, and maybe evaluate your reasons, and the likely outcome of trying to bring the rate from X to Y.

But the implication here is that the rate of fatal accidents per year should be zero, and that's ludicrous. Foxconn employs around a million people. How many people do _you_ think have died there in the last year? (Please provide citations to government statistics or independent news articles.)

Meanwhile, the death rate for manufacturing workers in the UK is 1.1 per 100,000; 27 people died in fatal accidents in the UK in the manufacturing sector last year. So...what? "Workers should not have to die so Rolls Royce can build jet engines?" Are these workers being exploited? Should we be boycotting jet engines, air travel, and all products which have travelled by air? Or is, perhaps, a death rate of 1.1 per 100,000 actually an acceptable trade-off?

<comment><USER5> One problem I have with the people up in arms about suicides at the plant, is they have little awareness of how rampant suicides are at major universities in China. It's fairly regular for teens to literally jump out of the window in their dormitories if they get a bad grade.

I think the point is not to single out a particular company, but figure out how to evolve the entire culture so this kind of stuff doesn't happen.

</comment></comment><comment><USER6> Far east countries do seem to be going through the same events that lead to the migration of the Department of Labor from statistical institution to enforcement institution.

The have similar weak laws like the Working Condition Service act that really do little to force change, but begin to change the mindset of workers. This beginning change of mindset will force real workplace safety regulation in the future, but even in the US it took over 40 years and was mostly because of a side effect from a shipping regulation change that expanded the scope of the DOL to enforce safety requirements on merchant ships. This small change was used as precedence for real regulation in 1970 with OSHA, which was very necessary, with numbers of workplace deaths in the near 15,000.

It will take time for the public will to be great enough to force real change, and it is hard regardless of your buying power to change cultural practices.

</comment><comment><USER7> The n-hexane poisoning incident happened between October 2008 and July 2009, Apple's 2010 report on suppliers' labor practice (published feb 2011) disclosed this severe offense and Apple demanded Wintek to stop such practice and compensate affected workers.

Wintek failed to offer these disabled workers adequate monetary compensation and necessary medical aide. And Apple did not monitor Wintek's clean-up act close enough, just took the vendor's word for it. So later 2011 the conflict blew out into a full protest at the factory's gate.

Though Apple is one of Wintek's major clients, the Taiwan based company did not exclusively produce iPhone panels.

</comment><comment><USER8> The people writing and promoting these stories are going to be really bummed out when they find out where wedding rings, light bulbs, clothing, toys, gasoline, oil, electricity, food and water come from.

</comment><comment><USER9> I feel like the outrage against Foxconn and Apple (and others) is particularly heightened by the fact that we're talking about an iPhone, as opposed to a piece of industrial machinery, or even, say, a car, the production of which is probably as or more dangerous than the production of iPhones. You're not going to see an article that says "Workers should not have to die so Toyota can build the Toyota Camry," although that is likely an equally valid claim.

The reality is that the construction of any product, even one as aesthetically sleek as the iPhone (or consumer technology in general), is dangerous and doubtlessly comes with human costs. If we're getting upset at this, why not use this to take issue with the production of other consumer products which, doubtlessly, are made just down the road from the iPhone?

</comment><comment><USER10> Is someone actually dying due to Apple?

So far I have only heard about suicides but they do not seem to be above global averages.

The working conditions could probably be improved but I really don't know since all I read on the topic is sensationalistic.

<comment><USER11> "Foxconn Explosion Kills Two, iPad Production Line Halted" [http://gizmodo.com/5803963/would-the-foxconn-factory- explosi...](http://gizmodo.com/5803963/would-the-foxconn-factory-explosion- further-delay-ipad-shipments)

<comment><USER10> So 2 people died total or are there more stori mes like this? 2 people of 1 million is a low percentage.

Surely there are a number of companies that kill far more people that a petition would do more good for.

<comment><USER11> Moving the goal posts. The question was whether anyone died besides the suicides.

</comment></comment></comment></comment><comment><USER12> Conflict Diamonds == Suicide Technology

<comment><USER13> This isn't about the suicides (which actually are statistically lower at Foxconn than in the rest of China). It's about working conditions that kill workers.</comment></comment>