Crime Lab Scandal Leaves Massachusetts Legal System In Turmoil - <AUTHOR> http://www.npr.org/2013/03/14/174269211/mass-crime-lab-scandal-reverberates-across-state <comment><USER2> > "It's unsettling and maddening, because you're now going to have a lot of > people get released to the street prematurely," says Middlesex County > District attorney Gerry Leone, one of many hoping the state supreme court > will curb the releases.

That's a pretty bad way of looking at this, because it assumes that those people _deserved_ to be behind bars to begin with, and ignores those that didn't.

How about, "It's unsettling and maddening, because we now realize we have a lot of people behind bars without the [proper] due process they deserved"?

<comment><USER3> Worse:

>"We tell them, 'Listen, we know what you were doing before and we're watching you. And if you go back into the life, that Dookhan's not there anymore. So when you go [back] in on this charge, it's gonna stick,'" Davis says.

So, Ed Davis is sending officers to threaten people who, from a legal perspective, have not been convicted of a crime and have been erroneously jailed for years. Lovely. That's really icing on the cake.

I'm not happy about putting potential dealers back on the street, but we are a nation of laws, and these people will be freed by our courts. You can't have the police commissioner sending people to threaten them.

<comment><USER4> How is he threatening them? He was telling repeat offenders that the police are going to be keeping a close eye on them. That's their job, isn't it? Or would you rather he tell them that the police will be away on holiday all next week, "but please call our support centre if you plan on committing any crime and we'll get our duty officer to log a ticket"?

<comment><USER5> they aren't repeat offenders if the evidence used against them was fraudulent. If that evidence was the basis of their conviction they should be free and this prosecutor should be out of a job for such threats.

Look, he only does this because his position is mostly safe for him to abuse. He has already declared all these people guilty, sadly I bet he is more upset the chemist was caught than the possibility people were wrongfully convicted.

</comment></comment></comment></comment><comment><USER6> [http://www.boston.com/news/local/massachusetts/2012/12/20/in...](http://www.boston.com/news/local/massachusetts/2012/12/20/indicted- drug-analyst-annie-dookhan-mails-reveal-her-close-personal-ties- prosecutors/A37GaatHLKfW1kphDjxLXJ/story.html)

The DA is already covering up and defending the prosecutor's involvement, saying there is nothing wrong with prosecutors telling Dhookan what test results they needed to get their convictions, in clear violation of proper experimental procedures.

<comment><USER7> There should be a chinese wall between the crime lab and the DA. All the DA should be able to do is submit evidence and any matching of that evidence to the accused should be a complete black box as far as the DA is concerned.

<comment><USER8> If you read some of the other articles in this thread, there is specific mention of a recent supreme court case ruling in 2009, "Melendez-Diaz v. Massachusetts", where it was found that the accused are entitled to face expert witnesses as their accusers. This means forensic analysts are forced to appear in court more often.

The forensic analysts are government employees. This means that they are almost always providing evidence that implicates the accused in the commission of a crime.

When a case goes to trial, the prosecution only includes evidence that proves guilt. At the very least, if it proves neither guilt nor innocence, they exclude it from their exhibits as irrelevant. Prosecutors don't even look for opportuinities to prove innocence. That's not their job. That's up to the defence. They deliberately engage in tunnel vision, biased only in favor of guilt. If they have evidence that exonerates the accused, they simply drop the case. They have to. But that outcome is deeply undesirable to the prosecution, because it opens the door to wrongful arrests, police harassment and other liabilities.

The disturbing part here is that she was rubber stamping evidence in favor of guilt.

What if her behavior correlates to the DEA's program of parallel construction using inadmissible evidense collected by the NSA and shared with the DEA, thus provoking a premature conclusion of guilt, where the court case was then reversed engineered to align with the illicit intelligence?

If she were playing a role in that capacity, this would represent a far more serious problem than a single "rogue" chemist... She would merely be a patsy, a useful idiot, taking the fall for a much larger institutional debacle.

<comment><USER9> >What if her behavior correlates to the DEA's program of parallel construction using inadmissible evidense collected by the NSA and shared with the DEA, thus provoking a premature conclusion of guilt, where the court case was then reversed engineered to align with the illicit intelligence?

that would explain why she went down without talking to FBI/etc and taking down all the DAs with (or even instead of :) her (as this just couldn't have happened at that scale without all the DAs involvement)

Took one for the team, and will land softly somewhere after the time on the "farm" (again with such cover it wouldn't be general prison population which she helped to populate).

<comment><USER10> What is a farm?

</comment></comment></comment></comment></comment><comment><USER11> The OP is a bit outdated...Dookhan has since been sentenced to 3 to 5 years in prison:

[http://www.bostonglobe.com/metro/2013/11/22/annie-dookhan- fo...](http://www.bostonglobe.com/metro/2013/11/22/annie-dookhan-former-state- chemist-who-mishandled-drug-evidence-agrees-plead- guilty/7UU3hfZUof4DFJGoNUfXGO/story.html)

The system is indeed in turmoil as it has to continue to review a massive number of cases. One of the worser case scenarios has since happened: a man who was freed because of possibly tainted evidence went on to allegedly murder someone

[http://www.bostonglobe.com/metro/2013/05/17/man-freed- becaus...](http://www.bostonglobe.com/metro/2013/05/17/man-freed-because- annie-dookhan-case-charged-brockton-murder/8bWlbdDMmRef2l6yW2KVEL/story.html)

<comment><USER12> I'd say that imprisoning innocent people was already the worst case scenario.

</comment></comment><comment><USER13> Minnesota Public Radio reported often about systemic problems in the St. Paul, Minnesota crime lab over the last few years.

[http://blogs.mprnews.org/cities/2013/08/st-paul-police- crime...](http://blogs.mprnews.org/cities/2013/08/st-paul-police-crime-lab- back-up-and-running-after-scandal/)

It seems those problems are now mostly cleaned up, and there is no particular implication here that a similar problem exists in the state crime lab, but it is a very good idea for citizens to press law enforcement administrators to make sure that crime lab procedures are validated and standardized and checked and rechecked.

When I started reading the skeptical literature a decade or so ago, I was astonished to discover that even fingerprint identification is not a well standardized or well validated procedure. And I used to believe that defense attorneys (I am a lawyer by training, although I don't practice law) were mostly willfully ignorant of science when they cast doubt on DNA evidence. But now I heartily approve the side-effect of our adversary system of justice, which when it works best should have the "other side" questioning every form of evidence and putting it to the test of rigorous validation. I think too often people trying to solve the problem of crime through the criminal justice system look for quick answers rather than exact answers.

AFTER EDIT: This background article link

[http://badchemistry.wbur.org/2013/05/19/annie-dookhan-and- th...](http://badchemistry.wbur.org/2013/05/19/annie-dookhan-and-the- massachusetts-drug-lab-crisis)

from the NPR affiliate in Boston updates the story and is more current than the NPR link kindly submitted here (which is from March 2013 rather than May 2013).

<comment><USER14> > _It seems those problems are now mostly cleaned up, and there is no > particular implication here that a similar problem exists in the state crime > lab_

Except that the incentives are still massively perverse. It doesn't take an organizational dynamics genius to know it's a safe bet these are not the only two state crime labs with this problem.

</comment></comment><comment><USER15> All sorts of "fun" stuff going on here:

Another chemist found with no credentials - [http://badchemistry.wbur.org/2013/11/26/mass-chemist- academi...](http://badchemistry.wbur.org/2013/11/26/mass-chemist-academic- credentials)

How fast did Dookhan work contrasted to case load: [http://badchemistry.wbur.org/2013/05/15/annie-dookhan- drug-t...](http://badchemistry.wbur.org/2013/05/15/annie-dookhan-drug-testing- productivity)

</comment><comment><USER7> I would love to see every single email by DAs that include her name subpoenaed.

        "The report shows that the Hinton lab leaned heavily on
        Dookhan's productivity. Supervisors lauded her work ethic
        and assigned her an increasing share of tests."[0]

We should know what her supervisors and DA were saying in private about her work to her and to one another. There is no way that someone is so much more productive, without anyone ever suspecting wrongdoing and turning a blind eye to all this. Anyone who had ever expressed suspicion of her work, but never raised the issue should be liable for criminal negligence here.

[0] [http://badchemistry.wbur.org/2013/05/15/annie-dookhan- drug-t...](http://badchemistry.wbur.org/2013/05/15/annie-dookhan-drug-testing- productivity)

<comment><USER16> Outside of political fallout, nothing will happen to the prosecutors. Nobody will charge them criminally, and civilly, prosecutors have absolute immunity in most cases, sadly.

(There are limits to when they are given absolute immunity, generally limited to to advocative functions, but they are often hard to separate out)

</comment></comment><comment><USER7> In one of the threads about this scandal someone said that it would be valuable to send known negative samples to a lab and check which ones come back positive, so that we can investigate whether misconduct was involved. This is basically equivalent to unit testing, since they are known assert(false) tests. Unit tests can be devised to test crime labs, district attorneys, law enforcement officers, judges, etc.

This makes me think if maybe this wouldn't be a worthwhile test for the justice system in general. Hire actors to pose as criminals in the system where the person is not guilty, but where most evidence supports a guilty verdict with a few smaller pieces of evidence that prove innocent. With this we find out how many prosecutors take the case all the way to conviction by willingly choosing to ignore evidence suggesting guilt and which decide to drop the case because they believe the person to be innocent. This would be the equivalent of acceptance testing the justice system.

<comment><USER17> The problem is no one, especially not the Justice or Police System, want to show all the flaws that they have when it's so easy to cover for themselves currently.

</comment></comment><comment><USER18> 34000 tainted cases is not "messed up big time". It's deliberate and malicious. And she gets 3-5 years? Bullshit.

<comment><USER19> Actually, 3-5 years sounds pretty reasonable. If you think about it, you should be glad that she didn't get a crazy "send a message" punishment of 20 years or life in prison. She'll never work in that capacity again, so it's not like there's a need to separate her from society for the protection of society.

A better question to address is how a single rogue person could do so much damage. This is institutional failure. Just going after this woman misses the big problem.

<comment><USER20> > This is institutional failure.

Indeed. I wonder how hard it would be to have random testing of the chemists' work.

<comment><USER21> I believe part of the accusations are that she actually tainted evidence. So testing her results would not be sufficient, you would need to test samples that she never had access to in the first place.

</comment></comment></comment></comment><comment><USER22> I assume nothing will happen to the prosecutors she worked with.

<comment><USER23> Are they elected?

<comment><USER24> Only the actual district attorney is elected, and the DA is seldom responsible for the actual trying of cases. The DA is usually pretty far removed from the minutia of actual casework.

<comment><USER7> Social network analysis using known tampered cases should be enough to highlight all the DAs that could require further scrutiny. I would not be surprised if SNA shows that a few DAs in particular show up over and over and over again in these tampered cases. AFAIK, the DAs are the civil servants with the most to gain and lose from conviction rates and therefore are the most likely to have been involved, assuming others collaborated or were at least complicit.

</comment></comment></comment></comment><comment><USER25> Previously: [http://en.wikipedia.org/wiki/FBI_Laboratory#Controversy](http://en.wikipedia.org/wiki/FBI_Laboratory#Controversy)

</comment><comment><USER26> According to Dookhan's lawyer, she says that she did it because she wanted to get a 8 hour pay-check, that there was "too much red tape" but very loose protocol.

But - she's _not_ a rogue chemist! Oh no.

When chemists do lab tests, are they blind to the criminal circumstances themselves?

[http://www.wbur.org/2013/11/29/dookhan- lawyer](http://www.wbur.org/2013/11/29/dookhan-lawyer)

What I find really awful, is that in many cases, jobs were lost, families destroyed, and sentences were stiffer because of false results by this chemist.

</comment><comment><USER27> Could she have been manipulated by prosecutors? Yes she should be held accountable for her actions, but I have a hunch that prosecutors had something more to do with this.

</comment><comment><USER28> I'm curious what percentage of testing goes through that lab.

<comment><USER29> This is a good question. I think most cities have one lab. They probably have multiple analysts in the lab, but I think it's still a pretty high percentage of the total cases.

<comment><USER30> sadly, no, most cities don't have their own tox/drug chemistry lab. there are entire states with just 1 lab.

i'm not familiar with massachusetts, but i wouldn't be surprised if most of the relevant testing for the state was going through there.

<comment><USER28> Another travesty of monoculture.

</comment></comment></comment></comment><comment><USER31> I am shocked and horrified that a loyal servant of the system should be discarded so casually. After all, falsifying convictions is just a part of how the system works, isn't it?

You have to keep the lower orders scared to keep them loyal - otherwise they might start getting ideas above their station, mightn't they? It's like holding a wolf by the ears: release it, and we would all be in trouble.

</comment><comment><USER32> Story looked familiar. This is back in March.

</comment><comment><USER33> Being a Mass. Resident this is really really really really old news! How the hell is this just not getting here?

</comment><comment><USER34> what is her motive?

<comment><USER35> "Putting drug dealers in jail", to only very loosely paraphrase her words. She was working with the prosecutors.

The news loves to call her a "rogue chemist" to misdirect.

[http://www.boston.com/news/local/massachusetts/2012/12/20/in...](http://www.boston.com/news/local/massachusetts/2012/12/20/indicted- drug-analyst-annie-dookhan-mails-reveal-her-close-personal-ties- prosecutors/A37GaatHLKfW1kphDjxLXJ/story.html)

<comment><USER36> Reminds me of this:

[http://www.theguardian.com/world/2011/aug/11/kids-for- cash-j...](http://www.theguardian.com/world/2011/aug/11/kids-for-cash-judge- pennsylvania)

"'Kids for cash' judge gets 28 years in Pennsylvania bribery case"</comment></comment></comment>


Ask HN: What do recruiters do that annoys you? - <AUTHOR>

What kinds of things to recruiters say or do (or not say and not do) that annoy you the most?<p>Especially in their cold emails and cold calls. <comment><USER2> \- Spends ages talking about what a great opportunity it is, then switches to "So what are _your_ resourcing needs?"

\- Not telling me the name of the employer. I kinda need to know that if I'm to write an effective CV. Or if I want to move to where they're based.

\- Emailing my work address. Last think I want is my Outlook to pop-up a notification saying "Thanks for the job application" while I'm presenting to my boss.

\- Lying. So many do this - they lie about salary, experience needed, benefits, location, timescales.

There are some good recruiters out there - but a lot of charlatans as well.

</comment><comment><USER3> Where do I start.

1\. "My client is a leading company in x..."(does the client have a name?)

2\. "My client is looking for university graduates from a top 20 university..."(so because I didn't go to Harvard/MIT/Oxford/Cambridge et.al you wont consider my application)

3\. "Fast paced environment which is constantly changing..."(this company sounds like a confused sweatshop which decides to chose another technology because they hit technical debt.)

4\. Experience in C/Haskell/Python/Java/C#/F#/Clojure/Lisp/Erlang/Rust/GO/Ruby/Assembly/Forth/Brainfuck...(Signs of a dodgy recruiter)

5\. "Github account a must and you should have a contributing history to opensource"...(I use open source, I'm a huge fan of it, but because I didn't contribute to it means I can't get a job? Clearly this recruiter is following media trends. And what if I don't want a Github account, with what happened a couple of days ago[0] I would be pretty concerned about having one(though awesome work for getting the message out Github, other companies would just keep quiet and hope nobody notices))

6\. Graduate with 2 years of commercial experience(I just finished university when I "learn" hoping to get that experience which you are asking for.)

I could probably write a blog post. I probably will when I get the energy. HR is a dodgy industry which doesn't know a lot about each of the sector it works with.

[0] [http://arstechnica.com/security/2014/12/critical-git-bug- all...](http://arstechnica.com/security/2014/12/critical-git-bug-allows- malicious-code-execution-on-client-machines/)

</comment><comment><USER4> Asking for X years experience in a technology that is Y years old:

X > Y

Seeing cookie-cutter job descriptions (companies always talk about keeping CVs short, so why do they let recruiters write out template-style blocks of text try to magically explain what a great company it is without just saying the name - in fact, if you are bothered enough, you can work backwards and figure out the company)

</comment><comment><USER5> When a recruiter told me about an awesome opportunity in Michigan (I live in Chicago), I pointed out that my then-girlfriend probably wouldn't want to move there. His response? "Sometimes when an opportunity presents itself you have to evaluate whether a relationship is helping or hurting you."

</comment><comment><USER6> Pretty much this:

[https://scott.arciszewski.me/blog/2014/08/technology- recruit...](https://scott.arciszewski.me/blog/2014/08/technology-recruiter- misery)

</comment><comment><USER7> Cold call or email me. I'll call you, don't call me.

Linked in to me for no specific reason other than to build network.

Tell me about an amazing opportunity that they then forget about when I reach back out to them.

</comment><comment><USER8> Sending their first email as a connection request on LinkedIn

</comment><comment><USER9> Cold-calling my office receptionist (who has caller ID and also works as an EA for my boss) and asking for my extension.

</comment><comment><USER10> Every opportunity they present is awesome⸮</comment>


A paradoxical math ratio - <AUTHOR> http://mindyourdecisions.com/blog/2011/02/01/broken-sticks-puzzle-and-a-seemingly-paradoxical-ratio/

<comment><USER2> _"This itself is a rather surprising result: Euler's constant e comes out of nowhere!"_

Is it? There's an integral with a 1/x term[1]. How exactly is it surprising that logarithms start showing up? I realise integrating by hand is a pain, but surely it's a good idea to at least _think_ about the integral expression before typing it into Wolfram Alpha. (EDIT: to clarify - the author takes integration for granted, yet is surprised when the integral evaluates to a logarithm; this makes little sense to me, integrating polynomials is the first thing they teach you)

[1] 1/(1-x) is transformed into 1/y in a pretty straightforward substitution. When you do that with our actual integrals, you find yourself with 2 identical integrals, as you well should, given the symmetry. My solution was actually to look at the distribution of breaks already sorted into short & long, which means doing only one of the integrals (short sticks are 0..1/2) and divide by the range, since we're taking an average (i.e. multiply by 2).

<comment><USER3> To get really blown away, consider (again if necessary) that the average spacing between neighboring primes (primes!) less than N _roughly approaches_ ln N [1]... Stunning.

[1] <http://en.wikipedia.org/wiki/Prime_number_theorem>

</comment></comment><comment><USER4> I think the bonus question is more counter-intuitive, not only is the inverse ratio not the reciprocal, it doesn't exist.

<comment><USER5> Exactly. There's nothing paradoxical about this at all, just a bit counter- intuitive.

<comment><USER4> Well, he does say 'seemingly paradoxical', and look what happens when you try and express this (naively) in English:

"The shorter stick is typically (about) 2/5 the length of the longer stick, but the longer stick is typically much more than 3 times the length of the shorter stick."

To be honest, I can't figure out how to summarize the two results in English correctly (short of saying 'the mean of x/y~=2/5, but the mean of y/x does not exist, where x is the shorter and y the longer length')

<comment><USER6> There've been some psychological studies on averageness, and I believe one common case (though I'd have to look it up) is that people think of "typical" as a representative example in the middle of a distribution, something like a peak of a distribution and/or a median, and then imagine the distribution as a cloud of "stuff on either side of that".

So the intuitive answer to the question would require there to exist a "typical" stick. Once you pick one specific stick, of course things work intuitively: the stick's dimensions are _x=A, y=B_ , its shorter/longer ratio is _min(A,B)/max(A,B)_ , and its longer/shorter ratio is _max(A,B)/min(A,B)_.

An interesting question might be whether there's a definition of "typical stick" that in any useful way provides the answer that's intuitively wanted here.

<comment><USER7> Our brains aren't exactly wired to handle uniform distributions too, I guess. Nature is full of normal distributions anyway.

</comment></comment></comment></comment></comment><comment><USER7> It's a funny trick, but it touches on something that I can't help but feel is completely nonsensical: repeatedly picking random numbers from an infinite set.

It's basically a longer version of the following trick:

1) Pick a random real number in the range [0, 1]

2) Pick another

3) What is the probability that they are identical?

For another example, see: [http://en.wikipedia.org/wiki/Bertrand_paradox_%28probability...](http://en.wikipedia.org/wiki/Bertrand_paradox_%28probability%29)

<comment><USER8> It seems to me the probability that they are identical is zero (or at least zero at the limit).

<comment><USER7> My hunch is that it's meaningless at the limit.

</comment></comment></comment><comment><USER9> I like this alternative problem statement (not for the ratio part): If you break a stick in two places, what is the probability that the pieces can make a triangle?

There is a nice geometrical solution which is described here: [http://www.cut- the-knot.org/Curriculum/Probability/TriProbab...](http://www.cut-the- knot.org/Curriculum/Probability/TriProbability.shtml#Explanation)

</comment><comment><USER10> This is pretty basic math. A fun puzzle for high school students maybe, but anyone remembering any of their comp sci or engineering courses should be able to solve this very quickly.

<comment><USER11> Though it's a nice bit of interesting Maths for a Tuesday afternoon!</comment></comment>


How the Blockchain will help us secure our online identity - <AUTHOR> https://bitsapphire.com/manage-your-identity-in-blockchains/ <comment><USER2> Who is doing this besides Keybase?</comment>


Ask HN: Examples of Good Software - <AUTHOR> Where can I read clean testable maintainable source code? <comment><USER2> [https://github.com/openbsd/src](https://github.com/openbsd/src) , as well as any software built by that team: [https://github.com/openssh](https://github.com/openssh) [https://github.com/opensmtpd](https://github.com/opensmtpd) [https://github.com/libressl-portable/](https://github.com/libressl-portable/) etc.

</comment><comment><AUTHOR> [https://news.ycombinator.com/item?id=21254187](https://news.ycombinator.com/item?id=21254187) says they improved a react project with redux. What does the source look like?</comment>


Blender 2.82 - <AUTHOR> https://www.blender.org/press/blender-2-82-released/ <comment><USER2> For those unfamiliar with Blender's versioning, the major number is effectively meaningless. The 8 is effectively the major number and the 2 the minor.

Anyway the big items in this release IMHO are:

\- preliminary support for the Pixar USD format ( [https://graphics.pixar.com/usd/docs/index.html](https://graphics.pixar.com/usd/docs/index.html) ) which is gaining large traction in film studios, gradually in game engines and is the format of choice for Apple's AR ecosystem

\- coming in line with the VFX reference platform ( [https://vfxplatform.com/](https://vfxplatform.com/) )

The combination of both which means that Blender will be easier to integrate in existing pipelines rather than being a very interesting curiosity for large studios with preexisting pipelines.

Blender is certainly very powerful, and with the 2.8x releases, I think they're really opening up appeal to a larger set of artists and studios.

Just recently been talking to some large studios that are actively considering adding it to their toolset.

An overview of some of the major features in this release with accompanying videos can be found here : [https://www.blendernation.com/2020/02/14/the-five- key-featur...](https://www.blendernation.com/2020/02/14/the-five-key-features- in-blender-2-82/)

<comment><USER3> How is it compared to ZBrush? I've seen a lot of the sculpting tools they're showing and I'm wondering if they're up to par yet?

<comment> Arcanum-XIII Zbrush is it's own thing. Nearly all 3D package can (and have) produced the equivalent. What you have with Zbrush is another way of looking at how to do 3D illustration and as a side effect 3D sculpting.

So, blender was on par already for quite a while. And since the version 2.8, it seems that they're more than on par with the rest of the industry.

<comment><USER4> 2.81 is what brought it near zbrush, not 2.80:

[https://www.blender.org/download/releases/2-81/](https://www.blender.org/download/releases/2-81/)

[https://wiki.blender.org/wiki/Reference/Release_Notes/2.81/S...](https://wiki.blender.org/wiki/Reference/Release_Notes/2.81/Sculpt)

It was almost all focused on sculpting improvements, adding a voxel remesh workflow.

<comment> Arcanum-XIII Honnestly, it's mostly the UI revamp that put Blender up to big gun: a familiar interface mean that every artist trained on other software can "easily" transfer. Sculpting improvement, are, well, an open discussion. Poly modelling with subdiv is still better in Mirai, a software dead for nearly 20 year now for example, and lot of artist using nurbs still miss Softimage 3D 4.

</comment></comment></comment></comment></comment><comment><USER5> We're very excited about this new release. I'm pipeline lead at Tangent Animation. Blender was used for "NextGen" and our future projects. I may answer how it is to be part of the development (Blender/Cycles) while producing features, but better yet you can talk to us at the SparkFX in Vancouver if you happen to be there.

<comment><USER6> Do you have any example work done either solely or mostly with blender for viewing?

<comment><USER2> [https://youtu.be/uf3ALGKgpGU](https://youtu.be/uf3ALGKgpGU)

[https://youtu.be/iZn3kCsw5D8](https://youtu.be/iZn3kCsw5D8)

<comment><USER6> Those were great, thanks

</comment></comment></comment></comment><comment><USER7> While not all the new features will be in this release, the rate of improvement for Blender's sculpting tools has been astounding. For example, the new cloth brush:

( [https://twitter.com/pablodp606/status/1223663016811618307](https://twitter.com/pablodp606/status/1223663016811618307) , [https://twitter.com/pablodp606/status/1223060180344147970](https://twitter.com/pablodp606/status/1223060180344147970) )

Available as an experimental build here: [https://blender.community/c/graphicall/Sjbbbc/](https://blender.community/c/graphicall/Sjbbbc/)

</comment><comment><USER8> \- Will Blender put the competition out of business? Maya, C4D, Modo, ZBrush, etc. are all rather expensive, and Blender covers so many workflows.

\- How could one build new and better 3D software when competing with free and good enough?

\- Does blender as a business generate good income for its developers? If you look at their Development Fund [0], it says $115k/mo for 20 developers.

\- What is the extent of contribution to Blender from unpaid contributors?

[0]: [https://fund.blender.org](https://fund.blender.org)

<comment><USER9> > Will Blender put the competition out of business? Maya, C4D, Modo, ZBrush, > etc. are all rather expensive, and Blender covers so many workflows.

It's happening, you have game studios like Ubisoft throwing money at the Blender Foundation and switching to it.

<comment><USER10> Moreover, they also support other FOSS too, for example Krita. I hope these companies would support GIMP as well, and some FOSS video editing tools, like Shortcut.

</comment></comment></comment><comment><USER11> I use Blender to make videos of fluid flow to make my teaching more accessible. I absolutely love it, I wish CFD tools had half the polish and capability.

I'm going to do a summer workshop for my colleagues so they can start to make animations of their own, all these new usability features are very much welcome.

A truly incredible open source project!

<comment><USER12> I've long wanted to play with fluid simulatuons, but haven't had time for a 3D gfx hobby for a while. Could you recommend a good tutorial or set of documentation for a starting point with Blender's fluid dynamics?

<comment><USER11> This new version of Blender comes with a new fluid solver called MantaFlow. There should be tutorials popping up on YouTube as I type. I use the FLIP fluid add on which comes with good documentation.

<comment><USER13> Note that MantaFlow also has a FLIP solver, which is a combination of a volume and particle solver. This is nice because you can simulate how a fluid changes into a foam for example.

FLIP: FLuid Implicit Particle

<comment><USER11> I haven't had much time to try it. I like the add on because it handles viscosity and surface tension rather well.

</comment></comment></comment></comment></comment><comment><USER14> Me and my kids have been using it routinely since 2.80 (thanks to the shift to saner mouse button defaults and other UX tweaks), and there are loads of great YouTube tutorials out there these days, so I'd say it's really helped 3D rendering become mainstream.

</comment><comment> ur-whale Blender has become so good and so complete, my bet is it will become the de facto standard for all things 3D over the course of the next decade.

It still is difficult to approach, but it has come a very very long way and is almost on par with commercial packages wrt usability.

<comment><USER15> It gets some criticism for it, but, in my opinion, it has one of the most innovative/powerful UX of any software I've used.

Some highlights:

\- Any panel can be positioned/sized however you like

\- You can create custom named layouts for your own common workflows

\- Fully extensible via Python plugins (create new UI panels, menu items, hotkeys, etc.)

\- Anything you can do manually can be scripted with python

\- By default, (although this has changed some) the more-frequently-used hotkeys are single-key. And of course it's all configurable and (if I remember correctly) they have presets for matching other apps like 3ds max / maya.

\- searchable commands palette (press [space], start typing command name, press [enter] to execute command)

\- on load / "new file": it loads [something like] "default.blend" instead of a hard-coded set of defaults, so that you can configure its definition of an empty file (which IIRC also includes the default layout configuration). To make it quick+easy to change, you can set with menu option [File]+[Save Startup File].

\- Windows can be broken out and dragged to a separate monitor

\- Lots of highly-specialized UI widgets. e.g. inline ranged slider that captures the mouse on click and adjusts the value as you move the cursor, has a "progress bar" to visualize the percentage, allows keyboard entry if you single-click instead of click+drag, has arrows on left and right that can be clicked to step forward/backward, has label inline with widget, and has description on mouseover

\- Generalized interactive timeline for animation and sequencing

\- Powerful node-based editors for shaders, textures, etc., with nodes for each stage of the pipeline and utility nodes to apply transformations (e.g. add a node for a source image, draw a line from the image's color output to the input of a "brightness" node, etc.)

And not only can you use it for the obvious 3D tasks, but it can be used as a non-linear video editor (including things like cross-fade of audio and/or video, video superimposition, textual overlaying, cropping, stretching, mirroring, color manipulation, option to use 3D scene output as video input, etc.), shadeless 2D raster/vector animator, 3D printing, and probably other things I don't know about.

<comment><USER16> I prefer Cinema4D UI over Blender. It does all the things you listed and then some.

Blender UI is great, but Cinema4D UI is arguably better. I've used both for 10 years.

I think most engineers and designers forget that they're just tools. Vim or emacs? PyCharm. Whatever works for you. Stop letting tools define your craftsmanship. This comment reminds me of pixel peeping that most enthusiast photographers do...comparing MTF curves for days. How about going out and taking pictures, learning composition and narrative, story telling and photographic experimentation? But they're too enslaved to their tools.

I guess that too can be a hobby?

<comment><USER17> You may be right but keep in mind that there are a lot of talented people that cant afford paying for software such as Cinema4D and that's the beauty of Blender you have access to 3D software with good amount of possibilities without paying anything and the community is pretty huge and getting a momentum

<comment><USER16> Yep, I agree - Blender is a great tool and not wanting to take away anything from it.

But I found this horn-tooting about Blender and saying that its superior to every 3D software out there is a stretch if not flatout wrong.

Ever used Houdini? Yeah, it's not totally free but it's free for non- commercial use. It will blow your mind what it can do: [https://www.youtube.com/watch?v=MIcUW9QFMLE](https://www.youtube.com/watch?v=MIcUW9QFMLE)

The Houdini UI is nothing short of absolute genius.

I don't see Blender ever competing with Houdini. Like...ever. Because, it is fundamentally a different take on 3D content. It does the same thing at the end (3D content), but the way it does it is different (procedural). Better IMHO, but I could be biased.

Does that mean Blender has no place in the sofware ecosystem? No. Can we me a bit more pragmatic, stop horn-tooting and objectively look at the 3D software landscape as a whole? Yes.

<comment><USER17> Houdini is nice peace of 3D software they are going for a lot of years now leading to 90s good that they added some affordable licensing for indie artists recent years but again for starter 3d artist Blender is best choice after that its up to the person what direction he/she will choose.

</comment></comment></comment></comment></comment></comment><comment><USER18> 2.8 was a game changer for Blender. I absolutely believe it will be a multi- industry standard for years to come.</comment>


Ask HN: Recommemd an HTML CSS editor for an 8 year-old Girl? - <AUTHOR>

So one thing I can have my 8 year old daughter learn tomorrow for "Bring Your Child To Work Day" is how to code HTML and maaaaybe CSS to build a website--which I believe is an essential skill to learn for her generation.
My Question is what do you think would be a great editor that will show code and results (design/WYSIWYG) for her to learn (and hopefully free)?
I know I can find some great beginner tutorials, but curious for suggestions on a kid friendly editor that allows for actual hard coding. <comment><USER2> Notepad + some browser.

Best to start with the simplest and most transparent tools IMO, + its not really difficult to save, switch windows and refresh the browser.

I say this because a lot of HTML design tools take away the necessity to actually learn what goes on with the HTML and CSS, sometimes in subtle ways. If you want easy use MS Word and save as ".html" or FrontPage or whatever, but that won't teach her much about HTML or CSS directly...

(EDIT: Also they are free and available on every computer with a Windows on it since 2000/ME I believe.)

</comment><comment><USER3> Ok I'll bite. I think you should make one for her.

Maybe not the answer you wanted but I've never been a fan of wysiwyg editing if you you want to learn how to _program_ websites. What I mean to say is that it's good to be tied directly to the code and understand exactly what's going on through an actual development workflow. So having her sit in a text editor, then reload the browser page gives her that rawness. This also acts as a test to see whether shes is into the whole idea of being hackerish. I can tell you that writing "color:red" and reloading the page to see the color turn red was the catalyst that got me down the word to being a programmer. I never got the same feeling from using photoshop, which I think is a good analog to using a wysiwyg editor.

No offense to designers but I think this approach _eventually_ pays off a lot more than being handicapped by dreamweaver.

Best of luck to you.

</comment><comment><AUTHOR> Geez, I thought by now someone would have chimed in. Yes, I searched around, but sometimes my HN family is more reliable than Google ;)</comment>


Power Your Dreams with Xbox Series X - <AUTHOR> https://news.xbox.com/en-us/2019/12/12/microsoft-unveils-xbox-series-x/ <comment><USER2> I'm excited for the coming console generation, but I can't shake the feeling that it's all entirely pointless in 2019. There was a thread some days ago about the changes in hardware since the NES days, and how it's all basically just generalized PC hardware purposefully locked down in software. Like, I loved Bloodborne as much as the next gamer, but are all the wasted resources & labor really worth it?

On a side note:

> Power Your Dreams with Xbox Series X

Can we get a more informative post title? The current one reeks of marketing clickbait.

</comment><comment><USER3> Just from a design point of view the console looks great!

<comment><USER4> It does and it doesn't. My current Xbox fits on a shelf under the TV. The cupboard is 60cm tall, having 2 shelves for all the TV-related electronics: BluRay Player, TV Box, and Xbox. With the new design, it can't fit in there... I couldn't find the exact measurements; I don't know it's height or if it would fit if I take out one shelf.

I get it that it wants to stand out and it does but at first glance, I don't think it's that practical.

<comment><USER5> No worries, FTA: "We also designed Xbox Series X to support both vertical and horizontal orientation."

<comment><USER4> Yeah, I must have skipped that line. Would it come in two variants or it's just that it's possible to turn it on its side? the XBOX logo at least would look kind of "wrong"...</comment></comment></comment></comment>


AWS Fargate Deep Dive - <AUTHOR> https://www.learnaws.org/2019/09/14/deep-dive-aws-fargate/ <comment><USER2> I love AWS, I really do and I thought about using fargate because the promise of not managing your "cattle-like" servers is wonderful but they need to get the pricing within this stratosphere for it to not be a complete joke.

I actually really like ECS and aware of how much time it would save me (a lot) and how much terraform I could delete (a ton) and it's still not even close to worth it.

Amazon usually nails this sort of thing, surprising that despite the operational value it provides nobody seems to be using it.

<comment><USER3> I believe vendor lock-in and lack of incremental value over EKS are the reasons. The amount of flexibility we lose by using Fargate is not compensated well enough by the ease of use offered.

<comment><USER4> What lock-in? I'm genuinely curious, I can't imagine it would be hard at all to move my service from Fargate to anything else. It's just docker containers and DNS, I haven't done anything Fargate specific.

<comment><USER5> I assume what is referred to is rather of the "we have built all this internal tooling, release pipelines and processes, internal know-how even among non- developers" etc that any technology choice is accompanied by. These effectively lock you in and costs real money to replace.

<comment><USER6> I get that, although in many cases the AWS-specific tooling needed to build and deploy services running on Fargate is minimal.

It's basically logging in to ECR and triggering an ECS service update (2 API calls).

I voluntarily keep out the networking and IAM parts out, as I believe they are also needed for a Kubernetes cluster.

What I don't get is that many people seem to think that they are lock-in free just by choosing Kubernetes. But:

1\. Kubernetes itself is a very, very opinionated piece of software. You are not free, you have to go the Kubernetes way.

2\. The overhead of learning and maintaining Kubernetes is real, compared to a more managed solution like Fargate.

3\. If you use Kubernetes, you still have to set up the underlying infrastructure. This infra is still vendor specific. If you go for a managed Kubernetes like GKE or EKS, you still have to deal with a vendor-specific API.

<comment><USER3> I would rather run kops and not GKE/EKS. Also, if needed, for the vendor specific infra we can use terraform.

I believe Kubernetes stack is more intuitive than any AWS (or GC or Azure) software. The open source approach will spur innovation that will outclass Fargate by miles. Fargate provides single instances, you would need networks/routes/Load balancers/auto scalers to make anything meaningful. I bet they will all be provided as AWS way of doing the same if Fargate gets any traction.

<comment><USER7> And you're still locked in to your cloud provider with Terraform since every provisioner is cloud provider specific.

<comment><USER3> At least the code is uniform and extendable.

<comment><USER7> Saying your code is uniform because the syntax is the same is about like saying developing a website with Java and developing an Android app is "uniform".

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> We spend ~900$ a month on fargate to run our of our dev, stage, qa, and prod environments as well as some other services and sqs consumers. After the recent price decrease we looked at how much reserve instance would save us and the few hundred in savings would not make sense vs the over provisioning and need to dedicate resources to scaling and new tools to monitor individual containers.

Note: do have some stuff in lambda but its package size restrictions limit us.

<comment><USER9> Your packages exceed 250mb??? Wow

<comment><USER10> My docker containers average about 5gb total. And I have lots of them. It is incredibly easy to become bloated. It is hard to stay bloat free

<comment><USER9> We're talking about Lambda tho, executing a function, how much code is required to execute a function... The largest .net lambda I've managed to create is ~40mb which included chromium.

<comment> jon-wood While Lambda is sold as "functions as a service" I have on several occasions made the particular function being served the router for a Ruby web application - with the Ruby runtime there's really nothing stopping you running a complete Rails app in Lambda other than size limitations once you add a few too many gems.

</comment></comment></comment></comment></comment><comment><USER11> For people who worry about security (either sincere or tick the box types): what are the pros and cons of managed containers? It seems like you get a reduction in attack surface but also have fewer tools at your disposal

<comment><USER12> One of the key things to remember about Fargate is the following.

 _Each Fargate task has its own isolation boundary and does not share the underlying kernel, CPU resources, memory resources, or elastic network interface with another task._ (Source: [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/...](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html))

The other part is patching. We are (I work at AWS) responsible for patching the underlying hosts. More details at [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/...](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)

<comment><USER13> > Each Fargate task has its own isolation boundary and does not share the > underlying kernel, CPU resources, memory resources, or elastic network > interface with another task.

Isn't Lambda the same as they're both using Firecracker under the hood isn't it?

<comment><USER12> With or without Firecracker the isolation models are similar.

</comment></comment></comment></comment><comment><USER14> I would love a managed Kubernetes Deployment/Job/StatefulSet. Forget managing the cluster or the node, just allow me to "apply" a Deployment config with associated Service straight to the cloud. I will tell you my resource limits bill me accordingly.

I hope Google Cloud or AWS is working on that. That would have a much wider impact then Fargate.

<comment><USER15> Check out Google's CloudRun [https://cloud.google.com/run/](https://cloud.google.com/run/)

</comment></comment><comment><USER16> I'm using Fargate for services that are CPU intensive (i.e. 24/7) and not reactive by nature. It's been a good experience so far.

</comment><comment><USER17> For my poor brain still trying to cope with the enslaught of the huge number of all these cloud service features ... this sounds a lot like kubernetes ... is this just a proprietary version of that? Can someone differentiate them for me?

<comment><USER18> It's a fully managed version of Amazon ECS (elastic container service). With Fargate, you don't need to manage the EC2 instances that make up the cluster, as is required with ECS.

Early on, Amazon tried to avoid offering a managed Kubernetes service, and so they rolled their own container service in the form of ECS. Later they caved in and created EKS, their Kubernetes platform. ECS is still used as the underpinnings of some of their other services, such as Batch and Fargate.

<comment><USER19> It's not 100% fully managed. You still need to set auto-scaling rules. I find that mildly annoying.

<comment><USER20> When I played with Fargate about a year ago or, this was its Achilles heel. I was hoping for a solution that would auto-scale very quickly, but the healthcheck intervals and minimum counts to consider a container "running" couldn't go below 30 seconds or so.

As far as I recall, this is all configured on the load balancer, rather than directly inside Fargate. Somehow makes it feel less like a "fully managed" solution, but rather something you have to still tinker quite a bit with.

(compared to Lambda, which you really don't have to worry about scaling at all)

EDIT: [0] indicates that the minimum you can set is 10 seconds (minimum 2 intervals of 5 seconds to consider it "healthy"), if I understand it correctly

[0] [https://docs.aws.amazon.com/elasticloadbalancing/latest/appl...](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target- group-health-checks.html)

<comment><USER21> GKE and Google Load Balancer has similar issues, changes to the loadbalancer/ingress take up to 10-15 minutes to propogate and if you miss a health check you'll be serving 500's until it magically balances itself out or you just nuke it out of frustration and wait the 10 minutes for it to configure with your ip again.

</comment></comment></comment></comment></comment><comment><USER22> I like using Fargate for one-shot tasks that are easy to split up. I used it a couple of times for summary tasks on large batches of satellite data (100s of GBs). Set up a docker image that takes the month for which to do the analysis as environment variable and then launch 50 or so Fargate tasks in parallel. Fairly easy to set up and can save quite a lot of time. If it's for short running jobs the increased price is not much of an issue. For more complicated, long-running services I feel like I would prefer managed Kubernetes.

<comment><USER23> What is the advantage of using Fargate instead of Batch for this use case?

<comment><USER22> I wasn't aware of AWS Batch. Looks like that might actually be more suitable for this use case, so thanks for mentioning it :)

</comment></comment></comment><comment><USER24> Can I easily SSH into or otherwise interactively get a shell into a Fargate container? I think this is a minimum debuggability requirment for these kinds of services.

[https://github.com/aws/containers- roadmap/issues/187](https://github.com/aws/containers-roadmap/issues/187) sounds like the answer is "no"?

<comment><USER25> The short answer is no. The long answer is that you could theoretically explicitly set up a user for auth, run sshd in fargate containers, and shell in, but it's not going to be worth it as anything other than a toy example.

<comment><USER24> I wonder what's behind this functionality gap in the managed services. After all we take docker exec, podman exec, kubectl exec etc for granted in troubleshooting.

</comment></comment></comment><comment><USER26> This product always makes me think of Aqua Teen Hunger Force. I wonder if that's where the name originated.

[https://youtu.be/uOd7HQoKxcU?t=50](https://youtu.be/uOd7HQoKxcU?t=50)

</comment><comment><USER27> Is EKS a serious competitor to this? It seems like it would be and the bonus of no lockin. What's the advantage of Fargate over EKS?

</comment><comment><USER28> I still haven't managed to SSH into a container (for Django). The best way I guess is SSM (systems security manager) which at least gives a web based console.

codepipeline integration was time consuming to set up. You have to get it to create a json file with the image id and uh I'd have to consult my notes.

All told, it was more complicated to set up than I expected.

<comment> jon-wood We're working on this at my workplace as a pre-requisite to a widespread deployment of Fargate, its the only blocker on moving out of Heroku for a large distributed system.

The approach I'm going with is to have an EC2 host attached to the ECS cluster which people can schedule interactive tasks on. Coupled with some scripting (maybe a Lambda function if I decide to get fancy) we can then start a task for any given service on the instance with the same environment and IAM role, but with a command like /bin/yes just to keep it alive. Once that's running users can SSH to the host instance and docker exec into the container for whatever command they actually wanted to run.

It's quite a bit more involved than Heroku's run command, but initial prototypes seem to indicate it'll work once we wrap it in some tooling.

</comment></comment><comment><USER29> In general, you should just start with whatever service AWS has that integrates the most features, and once you know what your technical requirements/limitations are, you'll know if you need to back up to a less integrated solution. Worst case, you're paying too much for a solution for a short time, but you have a working MVP.

</comment><comment><USER30> Does anyone remember that time at Re:Invent 2017 when they announced Fargate, and said that Fargate was coming to EKS "soon"? Let's put odds on which is released first: Fargate for EKS, or Half Life 3.

</comment><comment><USER31> NodeChef is a good alternative where you don't have to do the tedious job of managing servers. [https://www.nodechef.com/](https://www.nodechef.com/)

<comment><USER32> Are they allowed to host a MongoDB for you? Isn't there something in the license about that not being allowed?

<comment><USER33> Not of the versions they offer.</comment></comment></comment>


Ask HN: Questions about your career. - <AUTHOR>

I have some questions for those of you working or interning. I'm an undergrad CS major about to graduate and I'm asking these as part of a business communication course at my university. I am particularly interested in hearing from those of you who are starting your own company or are involved in recent startups. Thanks in advance; I look forward to learning more about y'all.
Tell me about the company you work for.
What is your role at this company?
What do you like most about your current job?
What do you like least about your current job?
What advice would you give to a CS student graduating next month?
What have been some of the biggest roadblocks in your career?
How do you recommend finding mentors and networking with fellow computer scientists and entrepreneurs?
Tell me about your favorite project you have worked on or contributed to.
Who within our industry serves as a role model to you?
What is your primary goal you have set for yourself professionally? <comment><USER2> Can I ask your age and what you studied java or c++? thanks.

<comment><AUTHOR> I'm 21, and attending Texas Christian University. I graduate next month.

You can see some of what I've worked on at <http://baerbradford.com>. I'm most familiar with Java, C#, and Python, and I am primarily interested in computer networking and web development.</comment></comment>


Ask HN: Was hired to improve company's devops, founder won't listen to my ideas - <AUTHOR> 	Three weeks ago I joined a fast growing startup on the West Coast to improve their dev operations and processes. The company is seeing crazy growth but they are still doing things like pushing directly to master and using prod deploys to test things out. I was hired to help improve this and implement things like staging environments, autoscaling of resources, and other DevOpsy stuff. Since joining I've received considerable pushback on my ideas. Obviously I am the new guy and don't expect to just dictate people around nor is that my intention. However what really gets me is that the founder just straight up does not seem to trust me. Every suggestion I give - even things as industry standard such as the use of a staging environment - is met with suspicion and doubt and the insistence that I hadn't done enough proper "research" on the idea. I find this highly offensive considering I've been working in DevOps for almost seven years and before that was a SysAdmin.
So after two weeks, I got the approval to create a staging branch. I wrote up a huge document on the staging workflow, covering edge cases such as hotfixes and rollbacks. I put time on people's calendars and walked them through it including the founder. Yet he still continues to resist the change and pushes directly to master, ignores the new processes I put in place, and generally just does what he wants. He also keeps harping that I need to "earn his trust." I find this baffling - I mean, I was hired for a reason right? Why would they hire me if they didn't trust me?
I am starting to get frustrated, especially since the founder has pushed breaking changes directly to master and then I got flack since I am now the "systems" guy and am responsible for the health of the app. I'm trying to think of the best way to approach this diplomatically. Do any HNers have some pointers or advice to give? I've worked with difficult clients before but I've never faced such a huge lack of trust. <comment><USER2> A process I like to use and that might be helpful to you is what I call "Technical Initiatives".

The idea is to allow everyone to suggest and implement technical improvement by providing a process to do so. For each idea, the owner fills a spec to describe it. The main ideas are: \- Be transparent on what we want to do and our issues, the doc should be public and comments-friendly \- Follow an advice process by proactively asking people to improve or challenge the idea \- Always have by a trial with time boundaries and goal

A template could look like this:

\- Owner: Name

\- Title: to easily speak about it

\- Reviewers: people who should definitely have a look

\- Summary

\- Why: Describe what are the issues with the current process, the bugs or similar.

\- What is the change

\- How to implement the change

\- Duration of the trial

\- What should we've achieved at the end of the trial

In your situation, it might be something like:

\- WAthrowaway

\- Staging env

\- Reviewers: Founder, Senior Eng #1...

\- Setup a staging environment

\- We encountered critical issue #1 on October 1st, issue #2 on October 2nd

\- A staging environment would allow to catch this bugs before it is on production

\- 1. Create a staging env 2. Create a staging branch 3. block push on master 4. PR staging / master

\- 1 month

\- Critical issues happen on staging and not on master

PS: It's inspired by [http://www.reinventingorganizationswiki.com/Decision_Making](http://www.reinventingorganizationswiki.com/Decision_Making)

</comment><comment><USER3> If you're using Github or Bitbucket, consider putting a block on a direct push to master, and guiding them to a Pull Request / Code Review based procedure of merging to master.

If logic is breaking, look to encourage units tests on new code, and back port unit test coverage as time goes on.

<comment><AUTHOR> Yes these are all things I have proposed but I just get stonewalled by the founder and the two senior engineers. I am debating just implementing the block without their approval - because it would seriously help the company - but I don't want to seem aggressive or confrontational?

</comment></comment><comment><USER4> One thing stands out in all of that: he's still pushing to master. Change starts at the top with leadership and then some accountability. Either start looking for a new gig or really embrace "continuous improvement" and start with much much smaller fights.

<comment><AUTHOR> Yea I am looking around but I really like the product and I thought this would an opportunity to put my skills to the test since it all essentially greenfield. But if I can't get approval from the guy who hired me then it seems moot.

<comment><USER5> Assume nothing will change, because it probably won't. Given that, consider the pluses and minuses of staying vs going. If the money is awesome, you might want to stay, at least for a while.

</comment></comment></comment><comment><USER6> My wife is a management consultant and she has hundreds of anecdotes about owners who do not want to change. If I were you I would be looking for a new job since you will most likely not gain the trust of the owner.</comment>


Diagnosing a Weak Memory Ordering Bug - <AUTHOR> https://robert.ocallahan.org/2018/08/for-first-time-in-my-life-i-tracked.html <comment><USER2> > Observation #1: stick to sequential consistency unless you really need the > performance edge of weaker orderings.

My understanding is that acq_rel is sufficient for many use-cases, as opposed to seq_cst.

<comment><USER3> Load/acquire and store/release are sufficient pretty much when you're implementing a mutex-style operations, so you have a lock on a single value guarding vanilla memory operations that are unused outside of the mutexes. In pretty much any other scenario, (including, notably, most lock-free algorithms), it's best to start with sequential consistency and don't try to relax the memory unless you can prove correctness.

The actual bug in question used relaxed memory ordering, and the fix was to use acquire/release. Relaxed memory ordering really should be reserved for scenarios where you need atomicity but absolutely no synchronization (statistics counters are the only case that readily comes to mind).

<comment><USER4> Note that C++11 std::mutex and C11 mtx_t require a single total order of operations on the mutex, which means acquire plus release pairs equivalent on lock/unlock. That is actually weaker than acq rel write.

POSIX requires memory barrier in addition to that on the pthread pair, making it get more different, and both major C++ library implementations defer to pthreads.</comment></comment></comment>


The Day the United States Blew Up a Reactor (2015) - <AUTHOR> http://nucleardiner.com/2015/01/21/day-united-states-blew-reactor/ <comment><USER2> The site doesn't resolve for me.</comment>


Secure PGP Sync - <AUTHOR> https://blog.whiteout.io/2014/07/07/secure-pgp-key-sync-a-proposal/

<comment><USER2> Strangely, I was thinking about this problem this morning. A "keychain code" (aka, randomly generated passphrase) doesn't seem any more usable. It moves from "it's hard to securely sync private keys across devices", to "it's hard to securely sync long passphrases between devices".

Why not a user chosen passphrase, with pretty extreme key stretching (w seed)? Allow fetching the encrypted key with any piece of ID similar (email, twitter handle). The key stretching makes brute-force or dictionary attacks pretty much impossible.

[http://en.wikipedia.org/wiki/Key_stretching](http://en.wikipedia.org/wiki/Key_stretching)

<comment><USER3> > Why not a user chosen passphrase, with pretty extreme key stretching (w > seed)?

Because users simply cannot be trusted to provide secure passphrases. Never, _ever_ store or transmit data secured with a passphrase; it _will_ be broken at some point.

It's okay to secure data on a user's device with a passphrase; that requires that an attacker access the device itself.

To move data between devices, consider systems like JPAKE and/or using NFC to communicate between the devices themselves.

<comment><USER2> Both NCF and JPAKE require a communication channel between devices. Neither fit the bill if the goal is user friendly, accessible from anywhere, and backup in case of loss (what they are proposing).

Extreme key-stretching (w seed) mostly mitigates weak passphrases (I mean extreme stretching, 60s+ of CPU time for each guess). Even a 6 char password would take 100k years of CPU time to brute force. I'm aware if they use "12345" or "password" it'll be crackable, but it's a balance of user friendliness and security.

Am I missing something, genuinely curious.

<comment><USER3> > Both NCF and JPAKE require a communication channel between devices.

Well, I did state that the use of NCF or JPAKE would be when moving data between devices; moving data kinda presupposes some sort of communication channel☺

> Neither fit the bill if the goal is user friendly, accessible from anywhere, > and backup in case of loss (what they are proposing).

I think that this is a mutual-exclusion situation. If there's remote storage of data, the encryption _must_ be high-entropy, which means that it _cannot_ be user-friendly.

> I'm aware if they use "12345" or "password" it'll be crackable, but it's a > balance of user friendliness and security.

I don't believe that's a good enough balance, given that so many users _will_ choose poor passwords. Nor is waiting a minute or more to log into a system particularly friendly (although in the case of backups, maybe they only need to wait that long when accessing those backups).

And of course, with Moore's Law, what took 60 sec today will take 40 sec in a a year and a half and 27 sec in three years,just over a second in a decade and .02 seconds in twenty years; an attacker will be able to make 3,195 guesses per second in 30 years and 184,288 guesses per second in 40 years. Better hope that none of the data stored remotely under that key is still valuable in four decades.

</comment></comment></comment></comment><comment><USER4> Sooo what happens when whiteout gets an NSL and suddenly the "we don't store the keycode on our server.... trust us" mantra gets thrown out the window? Why invent your own authentication protocol with AES-256-GCM when this seems like a clear-cut case for TLS? Why use PBKDF2 over Scrypt?

<comment><USER5> wtf tls? it's not about transport. it's about us not being able to read shit b/c you encrypted your key. i don't want your plaintext keys, so to prevent the nsl thing from happening.

also, nsl? we're german. meh. ;)

"trust us" sucks. period. we can agree on that. [https://blog.whiteout.io/2014/06/12/how-we- operate/](https://blog.whiteout.io/2014/06/12/how-we-operate/)

we're trying to move away from storing stuff on _our_ servers. more on that soon.

why pbkdf2? here's why: [http://www.w3.org/TR/WebCryptoAPI/#pbkdf2](http://www.w3.org/TR/WebCryptoAPI/#pbkdf2)

</comment></comment><comment><USER6> I don't see how this is any significant improvement over just having passphrase protected private key in your dropbox. In both cases some cloud server has similar access to encrypted keyfile.

<comment><USER3> Because if the user chooses a bad passphrase (hint: he will) then his key will be compromised forever.

Users will choose 'password'; they'll choose '12345'; they won't choose 'VPSJjNwytizY7vtGzRv208' or 'cZD2N49caaSYkDuWZMHuyiuKuk6AhA5jdC29g3moHmX' (128- and 256-bit, respectively).

<comment><USER6> So make an app that creates random passphrases. You don't need completely new protocol for that.

<comment><USER7> As far as I can tell, that's exactly what TFA proposes (while also trying to be user-friendly).

> You don't need completely new protocol for that.

You _need_ a protocol because protocols can be audited and built upon. User- interaction protocols are very much a part of crypto and, IMHO, trying to minimize the user-error surface is critical for cryptography's development.

This is about bringing crypto to the average Joe. You think they're going to download several heterogeneous tools, learn to use them, devise their own security protocol... and also not mess anywhere in the process? I don't think so!

If a protocol+app saves them the hassle and lowers the chance of mistakes, why not?

Also, as they point in the article:

> One could simply throw out the last 30 years of protocols like SMTP, IMAP > and PGP and reinvent the wheel like DarkMail, but we at Whiteout believe in > building on existing standards, since they aren't going away any time soon.

This would merely be another layer at the stack.</comment></comment></comment></comment>


An open letter to developers. Pls stop fucking up the APIs ecosystem. - <AUTHOR> http://blog.mashape.com/an-open-letter-to-developers-pls-stop-fucking

<comment><USER2> My rule of thumb:

If the API contains a version number it its URL, then the developers have considered how people will use their service after they add new features, and it's probably good to use. e.g. <http://myservice.com/v1/doathing>

Unfortunately, there's hardly anyone doing this. As API's get older and we figure these things out, we should see this getting better.

As a side note, if you're interfacing with any API though anything other than a wrapper, then you're asking for trouble.</comment>


Writing an OS in Rust: Introduction to Paging - <AUTHOR> https://os.phil-opp.com/paging-introduction/ <comment><USER2> I've followed Phil's site on making an operating system. Ever since having worked on PintOS in college, operating systems and their internals have fascinated me. I've tried learning more about writing operating systems via resources like the OSdev wiki, but much of its material almost seems to discourage working on an OS of any kind unless you're already sure of what you're doing. Phil's articles seems so much more accessible for someone just wanting to dip their toes in the water.

<comment><USER3> I think it's one of these things that's more approachable if you start by working on specific subsystems of an existing OS. This way you don't have to figure everything out at once. At least that's how I did it.

I think writing an OS from scratch is discouraging and not very accessible because... writing an OS is discouraging and not very accessible. It's a bit as if a painter was saying "It tried looking up guides on how to paint The Wedding Feast at Cana but they all make it look super difficult, I wish I could get an easy step-by-step tutorial". Even if you break it down in small, digestible parts I'd wager that you'll end up with a few hundred episodes before you even get a basic microkernel up and running on a modern system. It's truly a daunting task.

I learned that the hard way: I tried to write a guide on how to emulate a PlayStation from scratch. At first you focus on emulating the instructions in the CPU, that's relatively focused and straightforward. But then once you're done with that you need to explain the various peripherals, and the main bus, and the interrupts, and the cache, and the timers, and the pipelines, and the intricacies of the various CD formats, and the memorycard filesystem, and video modes, and paging, and high impedance, and metastability and everything kind of interacts with everything else so it's difficult to maintain a coherent narrative.

On top of that a PlayStation is a ridiculously simple system compared to a modern desktop computer. The task of writing a very accessible guide on how to write an OS that would take you from zero to a working userland is absolutely tremendous. I think you could probably write a thousand-page book on the virtual memory subsystem alone.

<comment><USER2> I fully agree, but I think it's good to have options on how to approach the issue. Generally, I've referred to OSDev when I need more real-world information on how things tend to work in practice and resources like Phil's when writing a toy operating system.

I wouldn't consider Phil's blog a good resource for, e.g., gaining particular insight into how something like the Linux kernel works, but I also don't think Phil intended it for that use.

<comment><USER4> > I need more real-world information on how things tend to work in practice.

Have you tried reading any book?

</comment></comment></comment></comment><comment><USER5> As a side note: I wish Rust would come to embedded development ASAP running a real time OS written in Rust. You can use massive Boost libraries and Qt frameworks on non-embedded systems with C/C++, but in embedded, there is no such luxury. I am new to it but it is painful and I wish to see a day where we have a complete LLVM based ARM compiler toolchain with Rust sitting on top. I think there were some blog posts about running Rust on STM32 but it is still very early.

<comment><USER6> Get used to the idea that embedded is 15 years behind PC. Which is initially frustrating but if you step back is kind of a good thing.

I'd also like to see Rust make it's way into embedded. C support for things like data serialization or RPC for interfacing to web stuff is limited, people just don't port it to C. And C++ doesn't thrill me in terms of its non- deterministic garbage handling and difficult to debug nature. Rust though, seems modern and still safe, but I looked over the crates for embedded it's prstty slim pickings!

When I see mfgs pushing out their own Rust libs, or a professional IDE with support I can buy that uses the Rust compiler, I'll give it a try. Until then, it's clearly hobbiest-only.

<comment><USER7> C++ has deterministic garbage collection.

<comment><USER8> C++ does not have garbage collection of any sorts. Objects leave the scope and are destroyed, however the order in which they are destroyed is not defined by the standard.

<comment><USER9> C++ has a garbage collection interface API since ISO C++11, it is up to the respective implementation to provide an optional implementation.

</comment></comment></comment></comment></comment><comment><USER10> Not only this is interesting well understandable Rust code for non-Rust developer, but it is also one of the best tutorial how page tables work on modern PC CPUs.

</comment><comment><USER11> Regardless of the platform, this is a truly excellent introduction to memory segmentation, which in my experience tends to be relevant far outside of the realm of operating system (or even single process application) development. Just the other day I was struggling to explain several concepts illustrated eloquently here to a coworker trying to design a scheduling/persistence system for variably-sized datasets that needs to be stored in hundreds of Redis instances across a compute cluster.

</comment><comment><USER12> [https://os.phil-opp.com/paging-introduction/#example- transla...](https://os.phil-opp.com/paging-introduction/#example-translation)

Frame entry 511 for "Level 2 Page Table" should be 32KiB instead of 24KiB.

<comment> phil-opp Thanks! Fixed in [https://github.com/phil- opp/blog_os/commit/f423c068fec803725...](https://github.com/phil- opp/blog_os/commit/f423c068fec80372564f5dc70ee3ad36cbfceeb9?short_path=06711e9#diff-06711e99ec881661414cc904d2d1eb56)

</comment></comment><comment><USER13> Phil writes this topic very clearly unlike many others, good stuff

</comment><comment><USER14> Any idea what tool might have been used to create the diagrams?

<comment> phil-opp They were created with draw.io ([https://about.draw.io/](https://about.draw.io/)).

</comment></comment><comment><USER15> I'm a few surprised nobody have mentioned UlixOS [1]. I'm reading their book, it is just great on many aspects, although it rushes to explain other things that should be detailed a bit more. The chapter about paging is very explicative too.

[1] [http://ulixos.org/](http://ulixos.org/)

</comment><comment><USER16> The article seems written much easier to follow than PintOS manual. Could anyone tell me how much writing OS became enjoyable by adopting Rust? Dealing with a excessive amount of unsafe pointers was really a pain in my memory.

</comment><comment><USER17> With memory growing arguably beyond what most application workloads really require anyways, and possibly hardware such as Intel Optane, do we still need things like VM, paging, and segmentation?

<comment><USER18> >do we still need things like VM, paging, and segmentation?

Yes. To begin with, on modern processors, paging is tied with the memory protection system. Memory is protected on a per-page basis. Memory mapped files are implemented through paging. There's also backwards compatibility. Virtual memory allows 32-bit applications to have their physical memory located anywhere. Without that, we'd have to ensure that they reside below 4GB. Programs would start up slower as the executable would have to be relocated every time. Additionally, it's hard to imagine a hypervisor that doesn't use virtual memory. Virtual memory allows hypervisors to present a unified address space to their guests; no matter how fragmented physical memory gets.

<comment><USER17> I was thinking in terms detached from typical system architecture.

What if we don't tie paging with memory protection when designing CPUs? What if we don't assume, build, or run 32 bit applications? What if we do actually put a hard physical 4GB (or whatever) limit on processes? What if we don't need hypervisors?

What if we trade off hardware and software complexity we've built decades ago for limitations we had decades ago, and build something simpler from scratch?

</comment></comment></comment><comment><USER19> On page tables... Why would they go to 5 levels rather than just increasing the page size and the number of bits in the indexes from 9 to 12 and make each page 32K or 64K?

<comment> phil-opp I assume backwards compatibility. It's a much smaller change to existing operating systems than to create a completely new page table format.

</comment></comment><comment><USER20> Why not join Redox?

<comment><USER21> Redox looks awesome, my impression is that this is more about learning by implementing from scratch. I could imagine feeling more comfortable contributing to something like Redox after working with this course.

</comment></comment><comment><USER22> Off topic: can we please get support for storing arbitrary data structures inside mmapped files (with nonfixed base address)?

<comment><USER23> That's not possible to do safely for _arbitrary_ data structures because they can contain pointers or references. If you reload to a different address then the pointers, even within the allocated chunk, would be invalid and require fixup. And if you require fixup then you might as well do (de)serialization for your data structures.

Just allocating into such a memory region (essentially custom page swapping) will eventually be possible with data structures that can be constructed with custom allocators, but it still wouldn't be ok to reload those.

<comment><USER22> Perhaps this problem can be overcome by modifying the concept of a pointer slightly, to make it a "based pointer" (?)

I found an old discussion on this topic here: [https://news.ycombinator.com/item?id=13890011](https://news.ycombinator.com/item?id=13890011)

Note that the Microsoft C++ compiler implements based pointers, using the __based keyword.

<comment><USER23> Specialized data structures can be built that contain primitives and other types supporting this kind of thing. But you still can't store _arbitrary_ data because they could contain FFI pointers, handles to native resources, things that need to run destructors etc.

So to do this safely all the types must be whitelisted through a custom trait. Copy is close, but not quite, since references are still Copy.

</comment></comment></comment></comment><comment><USER24> Curious to see a re-write of MINIX in Rust.

</comment><comment><USER25> Nothing like finally grokking a major part of the CS operating systems curriculum. Wonderful write up

</comment><comment><USER26> While in college, I did not understand paging well. Thank you for the wonderful post.

</comment><comment><USER27> I had trouble understanding how paging worked it until it was explained in Rust

</comment><comment><USER28> I've never programmed in Rust because I still have trouble seeing the point. It seems overly restrictive. A copy of any data has nearly zero marginal cost (and you can pay the cost by doing the work yourself), so in a free machine, it would have nearly zero price. If widely useful data is protected by the borrow checker, far fewer people will use it.

It is easy to show that the total utility of a piece of data to the rest of the program is reduced by assigning an owner to it. Each potential user of the data, faced with the need to mess with the borrow checker to use it, may choose to mess, or may forego use of the data and write a complicated workaround instead.

To counter the borrow checker, I'm currently designing a programming language featuring a mechanism that grants free access to data structures, with the restriction that copiers must grant the same rights to anyone else:

        0. the freedom to use the data for any purpose,
        1. the freedom to change the data to suit your needs,
        2. the freedom to share the data with your friends and neighbors, and
        3. the freedom to share the changes you make.

<comment><USER29> > A copy of any data has nearly zero marginal cost

I don't think this is true at all. Reducing copies and allocations in my programs is one of the things which has speeded them up the most.

> If widely useful data is protected by the borrow checker, far fewer people > will use it.

Are you also against private struct/class fields? Because they also restrict access to useful data.

For me, the need for Rust is as a language that gives me maximum possible performance, while giving me safety guards that C and C++ do not. This makes Rust much _easier to use_ than those languages _for me_.

<comment><USER30> The person you're replying seems to be making a parody of copyleft, applying Richard Stallmann's four essential freedoms to program data. I don't think it's a serious attack on Rust's borrow checker.

<comment><USER29> Ah yes, I see it now. Thanks :)</comment></comment></comment></comment>


Ask HN: What would you pay $5/month for? - <AUTHOR> Is there anything missing that you would gladly pay $5/month for? Whether it's a software service, traditional service, physical good(s), etc (really anything "realistic", ie a mansion with sports cars is not a real answer) <comment><USER2> I would pay 5 € per month (or even 10 €) for reading any e-book I want. But this service should come without DRM, otherwise I wouldn't subscribe.

</comment><comment><USER3> Five things. Any more and I'd begin to lose track of subscriptions, or get less use from them while the money continues to flow.

</comment><comment><USER4> I would pay 5$ for youtube.

I already pay 5 for mail (and 4 for vpn).

I would pay 5 for a photo gallery for family only.

</comment><comment><USER5> Free Software. The specific project changes month by month.

</comment><comment><USER6> Oh god, not another chat app, email app, calendar, todo, music, social network, notes, drawing, flashy game. Definitely no more fart apps.

<comment><USER7> The question was "What would you pay $5/month for?" and not "What would you _not_ pay $5/month for?"

<comment><USER6> Providing the negative helps assist in knowing where my $5 won't go.

Asking what colour to paint a room and someone says "Not Purple" means you now know that purple is the only colour that is objectionable.

So my answer was valid.

</comment></comment></comment><comment><USER8> Definitely daily sex. Sounds a very reasonable price.</comment>


Toward an open Internet of Things - <AUTHOR> http://radar.oreilly.com/2014/04/toward-an-open-internet-of-things.html <comment><USER2> Things connected to the internet should expose an API defining what they are, what they do, and what they need to perform their magic, so consumers can act accordingly.

        name: thermostat
        task: control room temperature
        icon: [base64]
        functions:
        - turn on
        - turn off
        - set temperature (temp:num)

With that information my cell phone can interact with all the things around it. If I click on the thermostat icon I get the info shown and three butons with the actions I can perform on it. If I want to control the temperature I just enter a number and done.

If a TV is around, I can easily turn it on/off, switch channels, volume, etc.

No need for specialized apps, they're universal APIs every device can access, provided some level of security or trust.

Is that the IoT we want?

<comment><USER3> Basically, yes. But how do you authenticate that the thing telling the TV to turn off actually has the authority to tell it to turn off? This is a whole nother level of complexity which consumers will need to navigate after the API for all the things are standardized and many companies are going to screw up the security way worse than they are currently screwing up the interoperability.

The _real_ problem with IoT isn't the standardization of the transfer medium, it's the security implications of having your things on an internet.

</comment></comment><comment><USER4> "Unfortunately, we're still in a world where a manufacturer's first reaction is to lock things down, to make devices incompatible, in an attempt to extract as much profit as possible from the system. If this is your mindset, you're not going to release an API (as Philips did), let alone encourage your competition to build on the same API (as Philips hasn't)."

Yeah, IoT protocols are a warzone, hell, few companies/coders are even able to agree on general web API architectures (REST/RPC/SOAP - and everything in between. puke). Add MQTT, CoAP, XMPP or whatever other pet vendor protocol or semantic layer into the mix... total nightmare. What's left are a bunch of consumers hung out to dry because a these big old guard companies haven't learnt how to collaborate and deliver broad spectrum value to their customers.

A lot of hand-rolled integrations for many years to come! Whoever can alleviate that pain will likely end up dominating

</comment><comment><USER5> As someone working on standards development in this area, I would point out that the proliferation of proprietary APIs and protocols are not caused by a desire to create lock-in in many cases. More often than not, the interfaces are proprietary because good standards simply don't exist to do what is required.

A large part of the problem often overlooked by the tech community is that none of the existing web standards are useful for the Internet of Things. It needs a new set of standards designed for the purpose so that applications can support the operations necessary at the throughput and operation rates required by IoT.

For example, something that comes up a lot at the standards meetings is representation of data. Formats like JSON and XML were fine for the web, but when you have to continuously parse a billion records every second the implied computational cost of just parsing using most existing standard formats is extraordinary. It shifts the economics such that computational efficiency becomes totally worth the implementation cost. Unfortunately, there are not a lot of existing standards that reflect the tradeoffs you see with IoT implementations.

<comment><USER6> What would be a good data representation at that scale? Is a typed/schema- driven approach preferable?

For ingesting such massive amounts of data, it seems a sensible serialization would have minimal divergence between the wire and memory representation, such as Cap'n Proto.

Handling composite types seems tricky too -- eg, for prefixing lengths to strings or lists, it appears the extra CPU time for variable-sized integers would be preferable to the I/O overhead of billions of wasted bytes that come with a fixed-size prefix. Assuming explicit begin/end delimiters aren't even an option here.

<comment><USER5> Cap'n'Proto is actually pretty good example of a modern, high-performance serialization. I've been using it as a template for IoT wire representation discussions.

Fast wire encodings are almost universally TLV ("tag-length-value") style serializations. Delimiter scanning is inefficient and also means the parser has little ability to predict what will be coming over the wire so that it can optimize processing.

While older serializations tend to be byte oriented, newer formats use word- sized "frames" (even if not aligned) to enable nearly branchless, parallel processing of the bytes in the stream using bit-twiddling techniques or vector instructions.

</comment></comment></comment><comment><USER7> Money quote: "The assumption behind any 'lock-in' strategy is ultimately that your product is poor and that customers will gladly switch vendors if given a chance."

<comment><USER8> That's wrong. The assumption is "even great products can get copied, and than profits go to hell.".Lock-in is one of the rare strategies that work.

<comment><USER7> No one ever leaves your first mover product to go to a copy unless they have a reason to.

<comment><USER8> Isn't lower cost reason enough ? and what about new customers(and the side effects they carry for marketing and other stuff) ?

</comment></comment></comment></comment><comment><USER9> This is a core idea I've been thinking about for a while. What I settled on is a system where I have different sensors around which just broadcast (really multicast) a trivial binary encoding of an object (in the JSON sense) whenever they feel like it. The idea is if you standardise the fields in the object then anything listening can decide which messages it wants and which it doesn't.

The problem is inventing or maintaining a standard in this space is going to be a completely thankless task. We've seen things like Android where the theory of Intent interoperability is really good, but in practice it just isn't used that much, or is deliberately broken, such as with Facebook (in order to promote their SDK).

The other problem is that there is a lot of feeling that any standards are being created in the hope that a problem emerges, and it's not like we have any really compelling problems with which to guide the standards. The reality is 90% of the IoT fuss is cloud infrastructure providers trying to come up with a use for their systems, and anything which doesn't rely on them will be told it's not part of the IoT, and is just a traditional hardware effort.

EDIT: started fleshing this out on github a while back ( [https://github.com/atomirex/chirp](https://github.com/atomirex/chirp) ), but never got round to uploading the actual implementations thanks to their terribly embarrassing state! This might persuade me to get round to resolving that.

<comment><USER10> Protobuf is not bad, but relies on a fixed schema. Blink protocol transmits the schema and seems much better suited. But then there is the question of message security and authenticity. Hawk encoding seems to be the best option outside of TLS transport.

There are enough existing formats/protocols/standards, let's work with the existing ones and continue to improve them.

<comment><USER9> My conclusion was obscuring message contents isn't really too important, but certainly authenticating them is, and preventing replay attacks is where it gets hard. (So a challenge/response system would be needed in some cases).

This becomes nasty at the device configuration stage though, since you need to distribute/share keys somewhere. There simply are not protocols around that deal with buying a device from a store, taking it home and magically making it work, but that is the point it needs to get to. The industry seems to be moving towards "solving" that through embedding cellular modems in everything and getting the stuff to phone home.

The actual binary format is beside the point really, but it does need to be as close to self describing as possible.

<comment><USER8> > There simply are not protocols around that deal with buying a device from a > store, taking it home and magically making it work,

There are currently a few such protocols in the works(some still in development, some are starting deployment),highly optimized for the IOT: sigfox, semtech's lora, and the weightless standard.

In general they are low bandwidth, long range protocols(from 1.5 kilometer in dense urban environment to tens of kilometers with direct line of site), mostly use unlicensed bands, use very little power(end user devices might last 5 years on a single battery), enable good latency, and are pretty cheap(around 1 euro per year, maybe less.).

> self describing protocols

It's hard to see that happening on the device side, but having the self- description added on the cloud/router would work.

</comment></comment></comment></comment><comment><USER11> I 100% agree that there needs to be a simple protocol (much like email) that can help interconnect the many devices that we are bringing online. I think that the emphasis this time around, however, will be on security and flexibility. We need a protocol that we can trust and adapt to changing times.

PLUG: This is exactly the sort of thing that we are attempting to build at [AirDispatch]([http://airdispatch.org](http://airdispatch.org)). You should check it out and let me know what you think.

</comment><comment><USER12> The devices need to leverage existing standards like TCP or UDP. Then the battle of IoT protocols happens between MQTT, CoAP, and existing things like HTTP. For the extremely tiny devices with low power budgets, these may be too heavy.. so there needs to be some sort of gateway.

The problem then is the same as the internet of now: There is another layer on top of that which is specific to an application. I hope there is a battle for different standards and the best one wins.

</comment><comment><USER13> There is a lot to learn yet. The Internet of Things is a new paradigm for interacting with the world. Anyone who has developed applications that aggregate the control of disparate devices and tried to make them work together knows what the pain points are. For starters, there are many reasons why a Thing on a network might not do what you tell it to do. Error handling is a huge PITA.

<comment><USER14> +1. It's going to be a while before this all shakes out. I hope the standards bodies wait a bit and cherry-pick the best parts of the various vendor implementations, rather than trying to jam something incomplete and poorly specified into the market now.

With all this noise about "standards" though, it's important to remember how much we (computer people) take for granted. I, as well as the majority of people here, I'd guess, wouldn't consider building a new device that doesn't use TCP/UDP and IPv4/6\. There'll be a battle on the layer-1/2 front (radios, electrical stuff) and messaging formats (OSI layer 5+: application, session, presentation), but let's not forget how far we've come.

</comment></comment><comment><USER15> Qualcomm and Linux Foundation has taken great initiative in developing common platform for IoT through Allseen Alliance. Many device manufacturers are already supporting this effort in standardizing hardware & software stack for IoT.

</comment><comment><USER10>
      participants should send data that obeys the specifications, but
      they should be willing to accept data that doesn't.

This is what I believe to be the next logical step in device interoperability -- the "un-API". Inferring API-call intention from the provided data. It will require more than one datapoint and a feedback loop, but an API only has to be categorized correctly once -- rather than every implementation being created manually or relying on custom independent library. Zapier has touched the tip of the iceberg on this.

I am currently building a SaaS product to this end, please get in touch if this interests you.

<comment><USER16> This is nothing more than the Robustness Principle - "Be conservative in what you do, be liberal in what you accept from others"

[http://en.wikipedia.org/wiki/Robustness_principle](http://en.wikipedia.org/wiki/Robustness_principle)

<comment><USER10> Yes, the article states that directly before the line I quoted -- I assumed it would be recognized.

In practice very few APIs are tolerant of unexpected fields, values, or protocols. Forget the protocol war that other commenters are expecting, our devices should interact regardless of protocol. Only then will producers be forced to compete on useful features.

</comment></comment></comment><comment><USER17> The main attraction in openess in IoT as a consumer is that it would hopefully enable the market for robust, hopefully open-source, turn-key software solutions for HW manufacturers, minimizing the amount of (inevitably broken) software the HW mfgs need to write themselves.

I think we have repeatedly seen that HW guys just can not be relied to write good enough software to be exposed on the internet.

</comment><comment><USER18> Seems a little early to complain about lack of protocol standards when the underlying transport and topologies aren't even converging yet. It seems easy enough for anything that supports conventional protocols like IP but a lot of future networked devices will be using NFC-like things or mesh networks.

</comment><comment><USER19> I've been poking around with using OSC (Open Sound Control, but hardly limited to just sound) mixed with some sort of DNS-like or DNS-based registration and discovery.

Devices that can peer can just exchange OSC messages directly. Otherwise they might use some sort of proxying service (to arrange for OSC over TCP).

<comment><USER20> This is interesting. I've been toying with the idea of using OSC to control general playback/playlists across different programs. The idea is to have an unified playlist, queue and volume control, but the end goal is to be able to synchronize different applications using OSC (think controlling Youtube playback and a general purpose audio player with OSC and having each other respect the current playback status).

</comment></comment><comment><USER21> I work/consult for a startup doing Power Over Ethernet Lighting (www.igor- tech.com). We use UPnP (universal plug-n-play) to communicate with lights as there is already an open spec.

FWIW, we're also releasing an open reference design for hardware.

</comment><comment><USER22> The alternative usually is design by committee, which leads to huge ugly standards.

I'm also not so sure wether the robustness principle really helps. With HTML we had lots of problems because everybody parsed non-standard files differently.

</comment><comment><USER23> Hopefully "Internet of Connected Things"

</comment><comment><USER24> I don't understand why anyone wants this

<comment><USER7> Adolescent power fantasies.

<comment><USER7> Again, adolescent power fantasies.</comment></comment></comment>


YC Demo Day Doodles (Summer 2015) - <AUTHOR> http://dd-s2015.startupnotes.org/

<comment><AUTHOR> The real Demo Days are today and tomorrow; these are from yesterday's Alumni Demo Day.

<comment><USER2> They have today's companies now. Nebia, wheels cafe, etc.

<comment><AUTHOR> Same companies presented Monday as will present Tuesday and Wednesday.

</comment></comment></comment><comment><USER3> Beautiful doodles as always :)</comment>


Everone's just glued to their TV and it sucks. We did someting about it. - <AUTHOR> http://blog.piazzo.co

<comment><AUTHOR> We're all so damn occupied and online but we need to meet more friends and do great stuff together. Piazzo should accelerate this so that we can have 2 more great meetings with friends we don't see that often per week. The goal is 2 extra meetings with friends you don't meet per week.</comment>