The State of Go - <AUTHOR> https://talks.golang.org/2017/state-of-go.slide#1 <comment><USER2> I don't share some of the opinions I see in the comments here.

I've recently started programming in Go and I am having a blast. Plus, I am making my systems faster and simpler with Go. I love concurrency in Go. I love the concept of Goroutines, the simple and intuitive use of Select. Channels still present a few mysteries here and there... But I'll get it at some point.

But the n#1 thing for me in Go is: It's written in Go. It's refreshing to drill into the language details, I feel like I have learned so much from seeing the Go source code (and having it readily available with a Ctrl+click in VS Code).

Maybe it's because I don't have the "depth" of some of the HN users, but Go feels great to me.

<comment><USER3> > Maybe it's because I don't have the "depth" of some of the HN users, but Go > feels great to me.

I've been writing Go full-time as my primary language for nearly five years. Before that, my languages of choice were Lisp[0] and Python, with R as a very distant third choice[1]. I have always been a polyglot and enjoyed experimenting with any new language I could try out - you'd be hard pressed to name a non-esoteric language that I haven't written more than a "Hello, World" in at some point.

I still write other languages and appreciate them for what they are, but Go is what I reach for when I need to crank something out. The language gets out of my way and doesn't distract me - and as an added bonus, I can be reasonably confident that I can quickly refactor the code 6 months later and still have it run[2]. Go is not a scripting languages, but I sometimes even write small applications in Go that I would have previously written as shell scripts, just because it's easier and less thorny than remembering to avoid all of the pitfalls of shell scripting.

You might say that this is because I've been writing the language for so long - and yes, I'm definitely more comfortable with it today than I was in 2012. But everything I just said was still true even when I was only a few weeks into learning the language. It was like putting on glasses for the first time in my life - yes, I could "see" before, but somehow everything was just a little bit crisper, and I felt incomprehensibly more powerful and capable when writing Go compared to Lisp, Python, Scala, Java, Perl... despite having far more years of experience in those other languages.

If some people don't want to use Go, that's fine with me. But I strongly reject the criticisms that Go is meant for "mediocre" programmers, for programmers without experience in functional languages, or somehow an inferior language because it lacks feature X or Y from language Z.

[0] Common Lisp (via SBCL) or Racket, depending on the project and collaborators

[1] It's a language with a lot of warts, but even Python couldn't touch R for completeness in statistical libraries.

[2] Seriously, I have never found a language that made refactoring as easy - or, dare I say _fun_? - as Go.

<comment><USER4> >If some people don't want to use Go, that's fine with me. But I strongly reject the criticisms that Go is meant for "mediocre" programmers, for programmers without experience in functional languages, or somehow an inferior language because it lacks feature X or Y from language Z.

I think such complaints are the predictable backlash that's correlated with the final stage of its hype-cycle. Tech hipsters always need a hot new thing to tout so that they can pretend to know what they're talking about.

Now that we have a new iteration of hyped languages in Swift, TypeScript, and Elixir, Scala, Go, and node.js are on the hipsterdom downtrend (which often also means they're on the mature user uptrend). That prior generation of languages are now at least semi-widely known, so they no longer serve the purposes of the talentless hipsters, who base their self-worth on the esoteric nature of their preferences and need something that most people don't yet know much about to hide their ineptitude.

I think Python is a great example of a community that built a real niche for itself and legitimately earned the respect of mature, senior engineers by repeatedly proving and improving its utility and stability for many years. Giving Go the opportunity to develop this same type of sustainable, consistent, healthily growing ecosystem without a flood of 0.1x programmers and other hipsters is really the best thing for it. I'm optimistic for Go in the long term.

<comment><USER5> At the beginning of the Java and the XML hype cycles few people called that out the new toys weren't as shiny as they looked on the box. It took 10, maybe 15, years for others to catch up.

Look behind hype cycles and often you'll find $company marketing department.

</comment></comment></comment></comment><comment><USER6> Given some of the comments, I'll make the same comment I've made before: Stroustrup is right, there are languages that people complain about, and languages that no-one uses. Go is now firmly in the former camp.

I'm a C++ dev, and I really enjoy using Go. If you don't like what it does or how it does it, it's not for you. Either way, people are out there using it, making systems from it, and generally getting on with it.

<comment><USER7> Idk if that's such a clean binary, one of my favorite languages is Haskell, and people both complain about that and don't use it :)

<comment><USER8> I'm starting a backend job tomorrow that's all Haskell. what are people's complaints?

<comment><USER9> The main one I see is that it is too hard for programmers who don't fully understand haskell/functional programming.

I see people complain at times about it's performance but there is always someone there to rebut that it's fast at some things but not others.

<comment><USER8> yea compile times are killing my ability to iterate.

</comment></comment></comment></comment></comment><comment><USER10> Go's success is attributable to the fact that it is the first compiled language in a long time which is backed by a major company and has managed to deliver a simple and enriched experience compared to the old company backed compiled languages.

1\. Fast compilation is a killer feature.

2\. Ease of deployment, as a self contained executable (static linked), is a joy.

3\. Channels are a revolutionary concept to every programmer who had only touched mainstay languages.

4\. Type inference is a revolutionary concept to every programmer who had only touched mainstay languages.

5\. Go's syntax is less verbose than all other earlier mainstay languages. Such as how public/private is handled through casing, and not having to type public or private.

6\. Go's structural typing is a revolutionary concept to every programmer who had only touched mainstay languages.

7\. Everything that's new in Go to a programmer who had only touched mainstay languages before it is not there in Go as an extra set of features, but the only thing for them to use. This greatly focuses them on learning those new features. Also, non of the features are too radical to throw them off completely.

8\. All the tools for Go, are built by the team behind Go.

9\. Go's battery included, and has a great selection of modern standard libs.

When compared to Java, Go lacks very little, and brings a lot to the table. Generics are probably the biggest omission, but that's probably going to make it in the language eventually.

</comment><comment><USER11> The best summary I read recently is that go isn't a bad language, nor is it a particularly good one. What fascinates me is the way the Golang community have concretised that essential middle-of-the-roadness as the language's prime virtue. That, of course, has long been Java's prime virtue as well. (see Blub Paradox)

By putting "we're okay with being okay" as your Big Thing you're clearly pitching for that vast bulk of mid-quality developers that make up the huge middle chunk of corporate devs, the space where Java reigns supreme.

<comment><USER12> Nah. I like Go because the language itself is minimal yet powerful, and because the quality of engineering is extremely high. I am so tired of having to deal with bullshit because of poorly-thought-out and poorly-engineered tools; Go minimizes that.

An excellent example is the handling of this bug report(§):

[https://github.com/golang/go/issues/12914](https://github.com/golang/go/issues/12914)

which resulted in this language-change proposal:

[https://github.com/golang/proposal/blob/master/design/12914-...](https://github.com/golang/proposal/blob/master/design/12914-monotonic.md)

And then these commits:

[https://go-review.googlesource.com/#/c/36255/](https://go- review.googlesource.com/#/c/36255/)

I feel like any other language I've used would've just added a "monotonicTime" function and called it a day; the Go solution is impressive, elegant, and shows an exceedingly high level of care for the end-outcome results for the users of the language.

To me, that's what makes Go special.

(§After a rocky start; it took the core devs a bit to realize it was a real issue because within Google's special environment it isn't.)

<comment><USER13> _I am so tired of having to deal with bullshit because of poorly-thought-out and poorly-engineered tools_

Seems to be some cognitive dissonance (in the modern erroneous sense of the word) going on. This was a hack necessary because the design of the library wasn't fully thought out. Imagining the world would one day become Google is not thinking things out.

<comment><USER14> > This was a hack necessary because the design of the library wasn't fully > thought out.

Easy to say 'not fully thought out'. It took Java from version 1.2 to 1.8 to fix its date/time library.

<comment><USER15>
      It took Java from version 1.2 to 1.8 to fix
      its date/time library.

That is incorrect[0]. When spreading FUD[1], expect assertions such as these to be fact checked by others.

0 - [http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22joda- time...](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22joda- time%22%20AND%20a%3A%22joda-time%22)

1 - [https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt](https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt)

</comment></comment></comment></comment></comment><comment><USER16> IMO the Go goal is to be an enhancement of C. It is not as expressive as some existing languages (i.e., Go programs may be longer), but it is very good for translating clearly thought through logic into efficient machine code.

It supports some of the features that original C lacks (networking, parallelism, channels, etc.), which to me is a very good thing. With minimal forethought this allows writing programs that can be massively scaled later without impeding initial checkouts at small data sets.

Eventually the success or failure may be determined by the libraries developed by the user community. For example, fortran survived so long not because it was a good language, but because it had freely available, easy to use world class libraries for numerical computation. Many grad students kept using Fortran given the choice of an existing, working, ugly-ish code that they could use for their PhD projects vs redeveloping and retesting the same functionality from scratch.

<comment><USER17> In my experience writing go is very fast and reading go is also very fast. The language was designed to be very comfortable, and they did a great job with that. You sit down to write something and you don't have to think too much about the best way to tackle the problem, the lines of code just flow from your fingertips. There's mostly one way to do everything, which makes doing things easy.

Code review is much the same.

<comment><USER18> I feel the same. Go is a different type of terse. I think terseness goes beyond the number of lines. When I skim Go code, I can grasp the meaning of it very quickly.

<comment><USER19> I've seen talks where Rob Pike describes Go as being "light on the page" vs. "noisy", meaning (I think) that it doesn't have lots of sigils and annotation bits around the code.

</comment></comment></comment></comment><comment><USER20> I'm concurrently learning Go and Node, which might not be a fair comparison but I'm going to make the comparison anyway.

Node feels like a flesh wound with delicately layered bandaids. The ecosystem is a mess, you have to jerry rig basic packages to work together, the syntax and semantics of closures and context is ridiculous, and despite that callback mania is like this cool-aid that's supposed to feel great once you drink it (but hasn't yet for me).

Go just...works.

<comment><USER21> Hehe, I have to underline this aspect as npm killed half an hour of my work yesterday, when I redownload some package in a sibling directory (for diff purposes).

Never had this experience with go. The comparison is a little emotional for me, but when I realized npm just killed my code, I was emotional...

Nevertheless, Javascript/Ecmascript is the result of years of development in a living environment (the web) while go was designed from scratch, by some of the most capable programming language designers on this planet, to enhance their previous work. Who wonders about the result?

</comment></comment><comment><USER22> My impression is that Go is a language that was cobbled together to simplify the coding of some specific applications, such as simple servers. It lacks any kind of purity, is not the best choice for any specific task, but is just good enough for some (many?) tasks. And poor type safety!

Frankly, I can't help being disappointed by how bland this language is, and I have zero interest in using it. Maybe because I like coding, and the IMHO using Go or Java would totally kill the fun of it.

<comment><USER23> But if you like typing `if err != nil` it's actually the _most_ fun language.

<comment><USER24> Heh, it does feel repetitive. But after ~10 years with Java, I'm happy to avoid the cognitive load from deciding how to most politely generate/propagate an exception. Obviously, there's no perfect solution, and preference is subjective.

<comment><USER25> In reality Go makes it worse, if you truly keep track of all possible cases. After calling a method, in Go you have to

1) "if err != nil" after every statement

2) give some serious thought to whether the previous statement could panic or not

Good luck if it's a library call that may get updated or call other libraries !

3) Think about the non-error error cases that can't be abstracted out. Go is like C, in the sense that there is an ERETRY "error" (unsurprisingly, you should simply try again, you should NOT fail)

And there are cases where there can be an error and yet error is nil. Easy example of this would be sscanf.

And we now see practical Go code published online : how these problems are dealt with, real world edition:

1) either mindlessly putting "if err != nil { return err }", which is a very bad information-erasing exception system, or just outright ignoring errors. Don't you know you can also use "_" as the error variable ? Maybe they should make that implicit like in perl. Of course perl is likely to tell you this happened ... unlike C and Go.

(really brings back the C days doesn't it ?)

2) most people either don't know or just deny this. Thankfully panics at least do list where they occur. They also kill your program and print stacktraces. Pages and pages and pages of stacktraces.

3) very few people even know about these problems ... so they're ignored, and the standard Go tools themselves don't behave according to unix specifications.

<comment><USER26> Panic is pretty much never used (so you don't really have to think if the previous statement can panic. If it does it means something is SO wrong that your application can't continue anyways because it's broken)

You should really use a library like github.com/pkg/errors so you get to wrap the error you return with additional information. Errors are just a worse Either monad after allm they're much more pleasant to use than exceptions.

<comment><USER27> > Errors are just a worse Either monad after allm they're much more pleasant > to use than exceptions.

How are errors in Go at all monadic? They just have a convention where you return a tuple and manually check if something isn't nil. Either type will inhabit one variant or another, not both with one having a value of nil.

The 'monadic' part of Either (or Result in something like Rust, where try! is sort of like >>= if you squint) is the ability to chain Either types together and have the boilerplate abstracted, that feature is completely absent from Go. Errors in Go are neither the Either type nor monad, IMO.

<comment><USER26> As I said, in practice they're a worse either monad. With which I meant -> they were inspired by them, but lack the monad part and having the value with the error in one object interchangeably. It's the same treating errors as values though.

<comment><USER27> It's really just a worse Either type, if anything, there's nothing monad about it. Although it's sort of hard to be close to an Either without being an algebraic data type. But I see what you're trying to say.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER28> [https://tip.golang.org/pkg/sort/#Slice](https://tip.golang.org/pkg/sort/#Slice)

ouch compile time type safety... even Go maintainers have abandoned it. Go pundits can't expect developers not to do the same thing in their own codebase at that point.

Can't wait for aliases though.

<comment><USER29> The ability to provide inline comparison function for Sort() is welcome. It's one of those infrequently needed language niceties that have (at least for me) made perl and python so slick to use.

Sorting arrays of objects or small hashes, based on arbitrary properties/keys, is quite useful.

<comment><USER30> You are not really responding to the comment you are replying to, though. Yes, being able to do custom sorting is nice, but no-one challenged that claim. The type system really doesn't look very nice when it won't even manage type safety in such a simple case as this. Also, compared to other languages that is in sort of a similar spot[* ], such as Swift or Crystal that both manage type safe custom sort functions, it looks even worse.

[*] That is, modern languages that compile down to native code while having some basic way of avoiding manual memory management.

</comment></comment></comment><comment><USER31> I'm in a pretty weird place with Go.

On the one hand, I really cannot stop using it. I can build an small web applications in a day or two, I can write them in just slightly more lines than Rails, and the applications I can build are much speedier than Rails applications.

On the other hand, I really, really hate using Go. It's tremendously boring and I never feel the code is that elegant.

I've tried Haskell, but I end up messing around monads too much because there's so much IO.

Rails is fantastic, but I'd prefer to experiment. I never grow as a developer when I use Rails.

Node.js is great. But if I don't need to write a lot of JavaScript on the frontend I end up asking myself: why am I writing JavaScript on the backend?

Racket or Chicken Scheme look like good directions for me. Erlang looks interesting. Maybe I should give Clojure another shot?

<comment><USER32> Your comment is similar to how I feel about Clojure. It's "good enough" for me for most things. Whenever I need something fast, that's what I grab for first. But, it feels "mushy" after +10k lines of logic, and I'm wishing it was F# or Haskell. I think I just need to bite the bullet and only use Haskell from now on. If it's slower at first, meh, it'll catch up when it grows.

</comment></comment><comment><USER33> Awful to try to read on mobile. Regular page anywhere?

<comment><USER34> Completely unusable, perhaps the worst in recent memory of any front page article. Strange thing is that previous Go presentations have looked almost identical aesthetically but worked well.

</comment></comment><comment><USER35> Man I really wish they would stop using whatever crappy presentation software this is; it NEVER works well on mobile.

<comment><USER36> It's `present`, a very simple tool. Written in Go, open source.

Using it is a choice.

I agree its ability to work on mobile is limited and that could use a CL (or a few) to improve.

[https://godoc.org/golang.org/x/tools/cmd/present](https://godoc.org/golang.org/x/tools/cmd/present)

<comment><USER37> A beautiful example of NIH syndrome in the real world.

<comment><USER38> Can you suggest another presentation tool that makes it as easy to author and maintain slides? Nothing like this existed when Rob and I wrote present.

<comment><USER37> I'm not sure what your exact requirements were, but I immediately thought of the following:

* Beamer: write slides in LaTeX, maintainable for a long time to come and easy to build.

* Reveal.js: use JS and HTML to author slides, easy to present, and pretty maintainable I think.

* Pandoc[1]: use Markdown or RST to write your slides, then compile to HTML (e.g., Reveal.js) or LaTeX (Beamer).

* Google Slides

I'm not sure if any of these (except Beamer) were available back when you wrote the tool, but given some of the complaints in this thread (e.g., not mobile-friendly), wouldn't it make sense to migrate to some other tool going forward?

[1]: Absolutely fantastic tool all-round, and written in Haskell to top it off. I used it a few years back to write a LaTeX report in Markdown. It's definitely not as good as writing LaTeX directly, but it's a great place to start. I can't praise Pandoc enough.

<comment><USER38> Reveal wasn't a thing when I wrote present. I probably would have used it as a front end, had it existed.

Tools like Keynote and Google Slides were exactly the kind of thing we were trying to improve upon. They're great for making pretty slides, but a total PITA for authoring and editing technical content.

Can any of those tools execute code from within the slides?

[https://youtu.be/f6kdp27TYZs?t=380](https://youtu.be/f6kdp27TYZs?t=380)

[https://talks.golang.org/2012/concurrency.slide#16](https://talks.golang.org/2012/concurrency.slide#16)

And do they let us store our code snippets in actual testable (or at least buildable) source files?

<comment><USER37> > Can any of those tools execute code from within the slides?

> And do they let us store our code snippets in actual testable (or at least > buildable) source files?

Not that I'm aware of, no. That's a pretty cool feature actually!

As you kindly said, Reveal.js may probably work for you as a frontend for your tool.

<comment><USER38> Those features were the impetus for the tool, and as far as I'm aware they were Not Invented Anywhere at the time. :-)

<comment><USER37> I guess I missed those features at first glance. I apologize for that.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> I'm yearning for the Golang of functional programming. That is, excellent std lib, clear documentation, awesome tooling, active community.. and after typing this, maybe that's Elixir? Though I do love static typing.

<comment><USER40> You may be interested in [https://facebook.github.io/reason/](https://facebook.github.io/reason/)

They have an active community that is _very_ engaged in improving the entire developer experience. Plus ReasonML is just OCaml under the (new syntax) hood so you have decades of OCaml expertise and libraries to draw on. In case that's not enough, it also deploys to JavaScript and targets the npm ecosystem, so you _also_ have the entire npm package collection at your disposal.

<comment><USER39> Wow, thanks very much for sharing that!

</comment></comment></comment><comment><USER41> I'm at FOSDEM where this talk was just given. Francesc was hilarious.

<comment><USER42> well thanks

<comment><USER39> I love your Just For Func videos! I wondered if you could make one explaining pointers in Go. No explanation I've found really settles in for me, and while I'm getting a 'feel' for them writing more code and getting feedback from the compiler, I'd like to find a good explanation of them. I'm asking you specifically because you have a really great way of explaining things, and a warm presentation style. Either way, thanks for all you've given through your talks and videos!

</comment></comment></comment><comment><USER43> Definitely the talk I enjoyed the most at FOSDEM today. Both instructive, relevant and pleasant to listen to. Glad to see things like sort.Slice or JSON rendering. When you're spoiled with python or groovy, you miss them them badly.

<comment><USER44> Always good to see features from the likes of Python and Apache Groovy make it into Go.

</comment></comment><comment><USER45> How is Go as a compiler-target? I'm asking because I've heard that Go has a very good concurrent garbage collector.

</comment><comment><USER46> There's a worldwide Go 1.8 Release Party on Feb 16th. If you're interested in Go, or want to discuss changes in 1.8, find a meetup near you.

[https://github.com/golang/go/wiki/Go-1.8-Release- Party](https://github.com/golang/go/wiki/Go-1.8-Release-Party)

</comment><comment><USER47> I was glad to find they made it much easier to define custom sorts for slices. But! Why on earth does what should really be syntactic sugar make sorting nontrivially slower?

It speaks to the lack of expressiveness in golang that you can't make sorting less egregiously verbose without adding a performance penalty.

<comment><USER48> > what should really be syntactic sugar

They probably use run time reflections, not a compile time syntactic sugar a.k.a. generics. As Go doesn't have those, so anything like that would require a compiler hack and nobody likes hacks.

<comment><USER49> Syntax sugar is extra syntax to make an existing feature easier to use, syntax sugar has no runtime impact.

Generics are not syntax sugar, they add functionality such as stricter compile-time type checking and improved run-time performance (e.g., C# can use unboxed primatives in generics)

</comment></comment></comment><comment><USER50> I shall be moving my codebase to Go this year. I'm very impressed at how readable it is, how much thought has gone in to the tooling and support environment and how fast the GC is now. I also must be one of the few people who likes the assembler :)

</comment><comment><USER51> I'm on my iPhone and the slides are terrible to navigate on a mobile browser.

<comment><USER39> Yeah I came here to comment about that, too. It's surprising to me - I would have expected the Go team to have implemented/fixed that

</comment></comment><comment><USER52> Most of my work is C++ but I've also used Go a fair bit since Go 1.5. I like Go a lot. The C++ crowd (including myself) keeps trying to make things that are trivial in Go easier in C++ but the best efforts still look like a mess. I think the lightweight/green threads model of concurrency wins over others (threads, processes) and is incredibly difficult to get right in C++. Channels are also very useful and difficult to get right in C++. While C++ with some aid from Boost can be a very safe language it ends up being a lot harder to write and read with all sorts of [](){} -> hacked up conventions that are a result of backwards compatibility. I find the test infrastructure in Go to also be very pleasant and easy to use. Stuff you need to go to extremes of C++ to test are just trivial to do in Go.

Things I would like to see improved:

\- Package management. I think "go get" was an interesting idea that is basically a fail for anything except the most trivial of situations. Vendoring is not a great solution either IMO. Perhaps some idea that manages package versions through local git repositories can work better since a git repository is a better representation of the version history of packages.

\- I didn't like the compile speed loss we took when the compiler code base moved to Go. I'm not quite sure where it stand right now but one of the things that I liked about Go from the beginning is lightning quick builds.

\- In my usage there seem to a few quirks in the language including the various scoping weirdness and the declare and assign operator := ... I frequently end up with code that re-uses the same variable such that the first instance is := and the next are = which makes refactoring a pain. The compound if statement also suffers from this.

The uppercase/lowercase public/private convention is also odd. You get used to it but it seems like a hacky afterthought.

</comment><comment><USER53> I for one will be more interested in using Go when Jetbrains finishes their IDE. Clearly not everyone cares to develop in an IDE but after 33 years of doing it, I prefer the idea. Give Swift (my current work) as many years as Go has had (10 years), and maybe I won't find Go that interesting any more.

<comment><USER54> To each their own, but Go is probably the only mainstream language that has first class integration with text editors. So I wouldn't let that stop me from using it, unless you can't see yourself using a text editor at all.

<comment><USER55> What is the first class integration? My experience using Ruby, Python and Rust (via Racer) with Vim+Syntastic has been pretty good.

<comment><USER56> In my Emacs I've got 1) eldoc (displaying signature of function at point), 2) function source lookup, 3) function documentation lookup, 4) flycheck (display compiler err/warn on save), 5) auto-completion. Among a few other things like go-guru integration which I haven't used much yet but I can see its use.

All of those features come from editor agnostic golang tools.

<comment><USER57> Typescript has thee same. Ditto with C#. Python is pretty close. Same with most LISPs.

In Emacs too. I'd hardly say this is a unique selling point of Go.

<comment><USER54> Do they do static analysis of code? The problem is that with other languages they all work "sort of". For example, for Elpy:

"the backends can not always identify what kind of symbol is at point. Especially after a few indirections, they have basically no hope of guessing right, so they don't"

With go guru it just works, always, no matter how deep you drill into the graph (that's what I meant by "first class").

<comment><USER57> With C# and TypeScript and all LISPs I've worked with, they work hand in hand with the compiler/runtime to provide absolute correctness at all levels. Absolutely first class. (And I agree Elpy does not qualify for that term)

And while we're on the subject: Only Microsoft had the foresight (or hindsight, insight, whatever) to realize this was a _general_ problem and propose a solution which applies to _all_ editors and _all_ languages:

[https://github.com/Microsoft/language-server- protocol](https://github.com/Microsoft/language-server-protocol)

[https://github.com/Microsoft/language-server- protocol/wiki/P...](https://github.com/Microsoft/language-server- protocol/wiki/Protocol-Implementations)

You'd think Google, with their tons of resources could put together a few resources and join a new, future-proof non-NIH standard for Go, but so far they seems to be lagging.

<comment><USER54> I agree, a common standard would be good. That said, experience taught me to distrust any proposed standard that comes out of Microsoft. Besides, I find that with the programming editor communities, such standards are not that important - as long as a language has the tooling, it'll be integrated, standard or no standard.

<comment><USER57> This protocol is about reducing the N languages and M editors = N*M client/server implementations with a much better N+M solution, where we don't have to reinvent 200 wheels every time someone makes a new editor or language.

And the protocol is open. Seriously what do you have to lose, besides a shit- ton of redundant work?

Distrust? Distrust exactly what? Are you sure you aren't being your own worst enemy?

See here for a list of fully open source and MS-independent implementations: [http://langserver.org/](http://langserver.org/)

<comment><USER57> Too late to edit, so replying to self.

Looking at that list, I see Go is actually doing pretty well these days. I retract my criticism.

That said, as the page shows, having full editor support these days is getting pretty common.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER58> Conversion rules seem like an awfully specific language feature to introduce just to scratch a very particular itch.

The rest of the slides are pretty standard-fare, and that's a good thing. Would've liked a reference to the lack of monotonic time, though; either an acknowledgment that it's a problem (because it's now fairly widely known), or a mention that a new proposal to fix it [1] is in the works.

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

<comment><USER59> The conversion feature is in fact very convenient.

We often keep different types for what we get from the user (JSON) and what we write on the database (e.g: BSON). Having the ability to convert between them without having to re-type everything is useful for a lot of code out there.

<comment><USER60> To be fair, you can do that right now with unsafe.Pointer, but of course it's better to have a compile time checked version of it.

</comment></comment></comment><comment><USER61> Go is better for applied tasks. Currently there is no faster way to write or simpler language than Go to write a highly scalable internet server that can handle 100-1000k concurrent clients on the commodity hardware. I suspect this applies to some big data analysis tasks in bioinformatics, that can be parallelized.

<comment><USER62> As a bioinformatician, I can tell you: no. Hardly anywhere you have that concurrency need. You have a few clients only, typically, but with very highly parallel work-loads (as opposed to concurrent ones). Go is a bad for there.

</comment></comment><comment><USER63> This slideshow doesn't work on narrow browsers: a narrow browser window clips the text, despite there being more than enough window space to display all the information on the slide.

Remember when the Web was automatically adaptive? Remember when we preferred HTML to PDF _because_ it adapted?

</comment><comment><USER64> I think Go is an amazing lang, its simple yet powerful. I have been using it in production for over 3 years.

<comment><USER62> Mind to elaborate on what? Writing servers/services, and devops tasks, or something different?

</comment></comment><comment><USER65> Looks like the video is here, but YouTube is having trouble with it at the moment:

[https://www.youtube.com/watch?v=pwIOmKZBuVI](https://www.youtube.com/watch?v=pwIOmKZBuVI)

</comment><comment><USER66> I've never used Go, but would you write your customer facing REST service using Go? Or would it only be used for back-end microservices? What's a recommended library for writing a customer facing REST API?

</comment><comment><USER67> Video here: [http://video.fosdem.org/2017/H.1302/](http://video.fosdem.org/2017/H.1302/) (go_state.*)

<comment><USER68> Already on the Go channel on Youtube:

[https://www.youtube.com/watch?v=tY4UKkgb5IY](https://www.youtube.com/watch?v=tY4UKkgb5IY)

</comment></comment><comment><USER51> I'm on my iPhone and the slides don't work well.

</comment><comment><USER69> Why are we getting rid of OSX 10.8 and some of ARM6? Are they _really_ that much extra work to support? I have a hard time believing so.

<comment><USER38> Well Apple stopped supporting 10.8, so why should Go continue to support it?

ARM6 support is a lot of work, actually, as IIUC a lot of stuff that the chip doesn't support needs to be done in software, and we don't have a reliable platform for testing against ARM6.

<comment><USER70> > Well Apple stopped supporting 10.8, so why should Go continue to support it?

I don't know, but Microsoft stopped supporting Windows XP many years ago, and it's still supported by Go. (Not that I care about Go on Darwin 10.8; just making an observation...)

<comment><USER38> Microsoft puts more effort into keeping things working than Apple does. Go works on XP as a result of the work Microsoft has done, not the Go project. Apple change subtle things in each OS X release making it onerous to support the older ones.

<comment><USER70> This is not true, Go "keeps working" on Windows because on Windows Go is ABI compliant and uses stable interfaces. In particular, on Windows Go interacts with the system through kernel32.dll and uses the standard Windows ABI.

Same is true for Solaris, where Go interacts with the system only through libc.so.1, and uses the System V ABI for the calling convention and thread- local storage.

On Linux the system call interface is stable (unlike Windows and Solaris), so on Linux Go "keeps working" too (albeit I will note that we don't use an ABI- compliant method for determining the current time...).

Darwin is just like Windows and Solaris, and unlike Linux. The system call interface is not stable, but unlike Windows and Solaris we use it anyway, and the method we use for thread-local storage is unportable and system-dependent. However, Darwin still has a stable interface through its own libc, and there's an ABI-compatible method to do thread-local storage as well. If Go would use the standard system interfaces on Darwin (like it does on Windows and Solaris), Go would just "keep working" on Darwin too and would not require changes each time a new macOS release is made.

It is true that Microsoft is very committed to forward and backwards compatibility, but only for its stable and documented interfaces (which Go uses), undocumented interfaces break all the time; Darwin's forward and backwards compatibility guarantees might not be as strong as Microsoft's over large periods of time, but they are still pretty good _as long as you use the supported interfaces_.

</comment></comment></comment></comment></comment><comment><USER71> Impossible to read on an iPhone SE. Landscape or portrait, slides cut in half and jumping around when you try to scroll.

</comment><comment><USER72> Is there a youtube view available?

</comment><comment><USER73> i love languages and i am enjoying seeing Go mature as a language. At the moment I do have my hands tied with Elm and Haskell.

Originally I am a Python programmer. Any advice for people transitioning for Python? What are some of the advantages of Go?

<comment><USER74> My advice is be demand rather than supply driven. Be driven by what paradigm and language is suited to a problem, rather than just what can I apply my new silver-bullet language to.

</comment></comment><comment><USER75> One thing I never understood with Go was what's the deal with multiple return values in functions? Why would you do this? What was the reasoning?

<comment><USER76> One of Go's other design decisions is signalling failures by returning errors. Multiple return values makes it possible to do that and also return a real value.

If you didn't have multiple return values, you would have to do something ugly: C-style pseudo-return via a passed-in pointer, or returning an error or a value as an interface{} and requiring the caller to type-switch on it. Or add a special case to the language to somehow allow an error return alongside a normal return. Multiple return makes this straightforward and uniform.

<comment><USER75> Alright, that actually makes sense. Thanks.

</comment></comment></comment><comment><USER77> And yet no generics still. What a joke.

<comment><USER78> Is go something you'd like to use? Are you happy with the stack you're currently using? What is that stack?

There are clearly people who are getting things done using go, and finding generics aren't something they require. Dumping on a language you don't like is boring and gratuitously negative.

</comment></comment><comment><USER79> Question: who is going to remember all these conversion rules? By the second bullet you lost me.

 _Simply run the command below:_

       go tool fix -diff -force=context state-of-go/tools/gofix.go

How is typing 59 characters simple?

<comment><USER36> `staticcheck` will statically analyze your code and suggest all places where the new conversion rule can be applied.

All the other rules are same as the last 7 years, you know them through experience after using Go for a week. Way simpler than most other languages.

That go fix command can be typed once and update millions of lines of code. Pretty simple.

<comment><USER79> These rules intimidate me (I don't know Go).

You also meant to say the go fix command does a lot (which is great), not that calling it is simple (which is not great).

</comment></comment></comment><comment><USER62> Golang really seems to have come a long way. But what holds me back from using it are the dangers of deadlocks and segfaults (due to forgotten error handling) that might be introduced even inadvertedly if applied to industrial- scale projects (say, 1M+ LOC, 10+ developers). That is, I see many small (server/microservice) projects flourish with Golang, and it seems an excellent replacement for certain types of C projects, but I wonder how Go enthusiasts believe it could scale to compete with Java or C++, due to the way it does error handling, and deadlocking issues with channels.

<comment><USER80> It's even easier to mishandle errors and get deadlocks in C++. That is in addition to all sorts of other fun like buffer overruns. If the team is capable of not messing these things up in C++, then they are more than capable of not messing up in Go.

<comment><USER62> Modern C++14 provides quite good support on those fronts, and modern Java8 has lost most of its "code notoriety".

But that's just arguing back and forth. Here's the real argument: What popular OSS projects of noteworthy scale are being developed in Go? I know a few dozens in either Java or C++, and even a few fairly noticable Scala projects (Spark, Flink, Play, ...), but I yet have to see anything written in Go that can be called "industrial sized".

<comment><USER19> If you want examples of "industrial-sized" Go projects right now, you may have to look at case studies for proprietary cloud infrastructure, e.g. CloudFlare, Fastly, DigitalOcean, SoundCloud, and SendGrid. These companies obviously don't open up their product code, but they've been happy to share some information about their use of Go.

<comment><USER62> Yes, I've noticed for years that Go gets heavily used in web service-oriented startups with many concurrent users (plus, its easier to pick up than Erlang :-)).

But what I would really hope to see is Go being used for anything _else_ than servers/services. I understand this is all the rage for certain companies, but none of that directly touches my own interests. Is Go only good for that niche, or will we see Go being adopted outside that "web services world"? E.g., for building old-school desktop apps, Go's concurrency features might be pretty cool - if its not too low-level for that?</comment></comment></comment></comment></comment>


macOS 10.12 Sierra: The Ars Technica review - <AUTHOR> http://arstechnica.com/apple/2016/09/macos-10-12-sierra-the-ars-technica-review/ <comment><USER2> I feel the biggest disappointment in Sierra that this review didn't really harp on is the lack of new features for non-iOS users. There's not that much in this update and the end user features that are available right now are solely focused on iPhone users. As an android user, I can't use siri on a day to day basis, I can't do automatic unlock with my watch, etc. You'd suspect that most mac users have iPhones, but that's not been my experience since most developers use mac but also use android.

<comment><USER3> The Photos upgrade for "moments" is quite nice, assuming you use Photos to store your photos.

The storage upgrade where they can remove forgotten debris files and then migrate your unused files to the cloud is great for most people.

I realize most HN readers have already drawn their saber and are 2/3rds over the gunwale at my suggestion that a computer make a decision about the disposition of a file, but this one feature is going to reduce my "friends and family tech support debt" by about 75%. A couple of clicks and I can fix their full computer. In the process of that I have quietly gotten them to backup their documents to the cloud so when I get the "my computer won't turn on" call I don't have to spend hours extracting and recovering their hard drive because they NEVER backup. Thanks to "apps", I can finally convince people that paying $1.99/mo for cloud storage isn't some evil plan to loot the world economy. People are used to small payments for computer services.

<comment><USER4> The 'migrate to the cloud' is no good for backups -- it doesn't put files in the cloud which you actually use regularly!

<comment><USER5> No sync service is good for backing up. Delete it locally and it's deleted remotely, same with making edits to a file.

<comment><USER6> Dropbox. I disable syncing for certain files, and its only stored in Dropbox. I need access again without using a web browser? I turn on syncing for that folder again and the files are synced back locally within a few seconds to minutes.

I priced out getting an external SSD drive ($300 for 1TB). Its cheaper for me to just buy a year of Dropbox at a time (1TB @ $100/year if paid annually).

[https://www.dropbox.com/en/help/113](https://www.dropbox.com/en/help/113)

<comment><USER7> Why would you compare the cost of an SSD in this case?

You can get a good 1TB HDD for $50.

<comment><USER6> A mechanical drive is more likely to fail if exposed to shock or magnetic fields; unless its safely encased in a rack in a datacenter, its not an acceptable form of data storage.

<comment><USER8> Citation needed. You don't need for the drive to never ever go bad you just need for primary and backup not to fail in the time window required to replace the drive. Most of planet earth relies primarily on magnetic storage including people outside the data center.

<comment><USER6> I need citations that mechanical drives will fail from shock or magnetic fields? I'm not going to waste my time googling references for that.

> Most of planet earth relies primarily on magnetic storage including people > outside the data center.

Right. And I'm arguing SSDs are sturdier in that regard when not safe in a chassis somewhere. SSDs can withstand higher shock forces, have no glass platters or mechanical arms that can contact each other, and are not affected by magnetic fields.

<comment><USER9> It takes quite a bit of shock force [1] and a pretty insane magnetic field [2] to damage rust.

Also you could buy 2 6tb hdds [3] for the price of that single ssd and mirror them for another level of redundancy, so in my book they come out way ahead of ssds and cloud storage for backup/archival purposes.

1: [http://www.tomshardware.com/reviews/a-sturdy- companion,758-2...](http://www.tomshardware.com/reviews/a-sturdy- companion,758-2.html)

2: [http://superuser.com/questions/568336/what-is-the- tolerable-...](http://superuser.com/questions/568336/what-is-the-tolerable- magnetic-field-in-tesla-for-a-hard-disk)

3: [https://smile.amazon.com/Marshal-7200RPM-Internal- MAL36000NS...](https://smile.amazon.com/Marshal-7200RPM-Internal- MAL36000NS-T72-Especia%EF%BD%8Cly/dp/B01AU6IOSS/)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> At the end of the review, the author also complains about Apple neglecting Mac hardware which 'is no longer running circles around the rest of the PC industry'.

I had the same thoughts a few weeks ago—I needed to buy a new notebook and coming from many years on several Macbook Pros, I was disappointed that Apple hasn't done any significant refreshes for years. So, I decided just to get a nice Thinkpad and put Ubuntu or Windows on it. This journey—and it was a journey taking weeks—was infuriating and I realized that Apple is still way ahead, even with three years old hardware.

To make it short: I faced so many frustrations on the other side just to buy a non-Apple notebook. I lost so much time with find the right notebook that I finally decided for a three year old Macbook Pro maxed out with a Intel quad core HQ CPU—which runs circles around all current notebooks, performance-wise and battery-wise, even the just launched Kaby Lake U series.

Here just a few of these disappointments which brought me back to a 'coasting platform' as the author says: even the best trackpads in the non-Apple-world are still crap, Thinkpad suffer from display lottery (two suppliers two qualities), displays not matching Apple quality and brightness, PWM for brightness control, hidpi screens are still not fully supported by the OS as on macOS, on Windows it's ok, on Ubuntu so-so, but never the consistent crispiness of macOS, good non-Apple-hardware is not cheaper, Thinkpads can get really, really expensive, too much choice with little difference, worse quality control, battery-time never matches Apple's, very often tacky designs (except Thinkpads), innovation takes wrong direction (who needs 2-in-1s), 5K display support (Windows is kind of capable, Linux not), wake-up problems (notebooks don't come back from sleep and if something is not working, trackpad, Wifi, etc.)...

It's often very small stuff but my notebook is my daily driver and it's shocking that a three year old MBP still crushes all brand new notebooks from competitors.

<comment><USER11> I see this train of thought in Apple-centric forums like MacRumors and here on HN. The typical "I can't believe Apple is doing X!" or the "Why hasn't Apple upgraded X yet, Apple is dead! I'm moving to X company now".

I work in IT. I see and use many different laptops all the time. These people really don't get how bad a lot of the other options are, even when they look great on the companies marketing page.

The reality is that innovation in laptops died when the tablet and phone boom took the market by storm. Apple hasn't been innovating with the Mac, but neither has anyone else. Any new MacBook Pro will be just another step above the already steaming pile of trash that the majority of "PC" laptops are.

</comment></comment><comment><USER12> Just a heads up, for anyone running the now "unsupported" 2008 MacPro's, MacBooks, and the like.

[http://dosdude1.com/sierrapatch.html](http://dosdude1.com/sierrapatch.html)

Worked perfectly for me. Patches the installer, reboot, install as normal, reboot, run the post patch stuff, reboot. done.

Been running the GM release for the past week with zero issues on my Early 2008.

<comment><USER13> It seems like there are a lot of tools, patches, and installers in the Hackintosh/"not quite supported Mac" realm that are supposed to be blindly trusted by users. It's like a few guys figure something out and release a fix but they are rarely explained or documented.

Do you know if there is a forum thread or mailing list or site documenting what this program does with source available?

<comment><USER14> Reminds me of the android scene, loads of random forum posts, zips uploaded to rapidshare and blind trust in hacked installers.

It's been a few years since I last built a hackintosh though.

<comment><USER12> The newest patcher, downloads the installer straight from Apple for you, and then you patch that.

</comment></comment></comment></comment><comment><USER15> "And finally, Apple Watch unlocking also requires 802.11ac Wi-Fi because of the way the software determines the distance between your watch and your Mac. That list includes:

MacBook (Early 2015 and later) iMac (Late 2013 and later) MacBook Air (Mid 2013 and later) MacBook Pro (Late 2013 and later) Mac Mini (Late 2014) Mac Pro (Late 2013)"

I have a Mid-2012 Retina Macbook Pro, and I actually upgraded the wifi card to the one in the Late 2013 because I wanted 802.11AC (It's one of the few things that are not soldered to the board). It works without any issue, I wonder if it will work with this apple watch unlock feature.

<comment><USER16> This mcard is supposed to work on unsupported Macs. I personally do not care for the mobility features as I do not use iCloud so YMMV.

[http://www.quickertek.com/products/mCard.html](http://www.quickertek.com/products/mCard.html)

<comment><USER17> Save yourself some money and just buy this: [https://www.amazon.com/SEENIGHT- Bcm94360cs2-Bcm94360cs2ax-Bl...](https://www.amazon.com/SEENIGHT- Bcm94360cs2-Bcm94360cs2ax-Bluetooth- Wireless/dp/B01F3I300U/ref=sr_1_1?ie=UTF8&qid=1474472939&sr=8-1&keywords=BCM94360CS2)

Apple uses bog-standard Broadcom wireless chips for their AirPort Extreme cards, this one is advertised as "mac-compatible" but any of the BCM943X cards will work as long as they are standard mini-PCIe cards.

<comment><USER15> Same kind of thing, but for the retina macbooks make sure you get one like this: [https://www.amazon.com/SEENIGHT- Bluetooth-653-0029-BCM94360C...](https://www.amazon.com/SEENIGHT- Bluetooth-653-0029-BCM94360CSAX- BCM94360CS/dp/B01F3G92C2/ref=sr_1_1?ie=UTF8&qid=1474473438&sr=8-1&keywords=BCM94360CS)

The retina macbook pro has 3 antennas for 3x3 MIMO, the one you linked to only has two.

This is really only needed if you have the 2012 retina macbook pro as they didn't switch to 802.11AC chips until 2013.

</comment></comment></comment></comment><comment><USER18> So unless I want to use Siri on my computer (I don't) or tighter integration with iPhones (which I don't use), this update brings mostly nothing of significance.

<comment><USER19> Yes and as a Mac developer, thank god for that. None of my apps broke this year!

<comment><USER20> Seems you don't use Seil or Karabiner. Lucky.

<comment><USER21> I'm sure they mean the apps they made, not the apps they use.

</comment></comment></comment></comment><comment><USER22> It was unclear to me from the review, does the Spotlight Siri integration now let us type "Remind me to put out the trash cans when I get home" in Spotlight and have it perform the same action Siri would have done? I feel like for the couple of things that Siri parses well, it's way easier to use than the app itself, but I'm not going to speak into my computer in my open-plan office.

<comment><USER23> No, it doesn't receive text input, just voice right now.

<comment><USER24> That's a strange design choice.

<comment><USER25> Well if you are going to use keyboard anyway, why not just create a reminder yourself instead of asking Siri to do it?

<comment><USER26> Because I don't know how to create a reminder in macOS, but I know how to type a sentence

</comment></comment></comment></comment></comment><comment><USER27> > if you've got a Mac with a fan and that fan is currently spinning loudly, > triggering Siri will slow it down so that the fan noise doesn't interfere as > much with your speech.

These kinds of small details make me happy. Nice touch as usual, Apple.

</comment><comment><USER28> If you're running any Logitech hardware, specifically mice, I recommend waiting to upgrade. Numerous issues have been reported (see [1][2][3]). For my Marathon M705 mouse, I cannot use back/forward and scrolling is only half working, plus the Logitech Control Center is crashing randomly and actually uninstalled itself this morning without warning, which is always cool.

[1]: [https://community.logitech.com/s/question/0D53100005UytQy](https://community.logitech.com/s/question/0D53100005UytQy)

[2]: [http://apple.stackexchange.com/questions/253784/logitech- mou...](http://apple.stackexchange.com/questions/253784/logitech-mouse- scrolling-weird-after-sierra-update-soggy-inertia-effect-in-nati)

[3]: [https://community.logitech.com/s/question/0D53100005UPFcp](https://community.logitech.com/s/question/0D53100005UPFcp)

<comment><USER29> Various Logitech gear has broken (sometimes grayscreening the entire Mac just by existing) with every major OS X update ov the last half dozen or so.

Most of these issues can be solved by using a third-party driver and never installing any of the Logitech software.

</comment></comment><comment><USER30> I'm fascinated by this line: "In macOS Sierra, ECN is enabled for 50 percent of TCP sessions. So should you run into a creaky old firewall that hasn't been updated in the past decade and a half (it happens), then clicking the link again will probably solve the issue."

Introducing congestion features to a network is always scary (you can blackhole your clients and even trigger unintended behavior that affects the health of the network) but introducing non-determinism in your TCP connections seems like an odd way to do it.

<comment><USER31> See also their previous non-deterministic usage of IPv4 vs. IPv6: [http://arstechnica.com/apple/2015/09/os-x-10-11-el- capitan-t...](http://arstechnica.com/apple/2015/09/os-x-10-11-el-capitan-the- ars-technica-review/11/) (paragraph that starts with "When an iOS 9 or OS X 10.11 application")

</comment></comment><comment><USER32> I don't see "second fiddle to iOS" as _necessarily_ a terrible thing.

OSX is a fine operating system. It's stable, strikes a great compromise between power, security, and ease of use, and is useful for pretty much anything you want to do with a present-day desktop.

I personally want Apple to keep it _mostly_ the same but polish it, make it more secure (without making it less useful!), and improve things like stability and performance. Other than that I'm fine with it as-is.

<comment><USER33> Same here, Granted (I just moved to it really 3 years ago) I really wish they also paused OS release/delay them a bit longer. By looking back on older versions, I wish we had another Snow Leopard like version since some of the latest releases seem to be not completely polished but I welcome the new features as well

</comment></comment><comment><USER34> With Siri in macOS, Cortana in Windows 10, and Google Now in chrome.. The operating systems have turned into data mining software. This is an alarming trend. Companies are no longer making money from operating systems by selling licenses, but using their software platforms for harvesting personal user data. Cross-device and cross-browser tracking is catching up. And the worse part is that majority of consumers don't really have a choice

<comment><USER35> How does voice dictation enable data capture that wasnt already doable before? They already have calendar apps, browsers for web searches. The things you type pipe through the OS already. I'm not saying your concerns aren't valid, just that I don't see how these make it more about data mining.

<comment><USER34> voice dictations were local. The data you stored in calendar did not go to cloud, and even if it did, nobody correlated your calendar with your web searches or your location. Various pieces of data existed in their own Silos, without needlessly going to cloud.

These personal assistants are combining data from all sources (your contacts, location, search history, calendar, across devices) , correlating and storing it in one place to build a personality profile. This has huge privacy implications.

</comment></comment></comment><comment><USER36> Quite a bit written there on APFS:

[http://arstechnica.com/apple/2016/09/macos-10-12-sierra- the-...](http://arstechnica.com/apple/2016/09/macos-10-12-sierra-the-ars- technica-review/7/#h1)

 _Sounds_ like it's going to be awesome, especially the snapshots and clones.

(I love that the author of this review has B.A. in Classics from Kenyon College and he records a weekly book podcast.)

<comment><USER37> I can't be the only one who is massively disappointed that, not only did we not get ZFS, but APFS forgoes the most important feature - data checksumming - with a snobby hand-wave of "trust us", yet includes it for meta data.

Sure, APFS is a tremendous improvement over HFS+ (Hardly Fail Safe), but such as missed opportunity.

</comment></comment><comment><USER38> Did they update the FreeBSD userland? The neglect to the core of the system the last few years has gotten increasingly more annoying to deal with. There are now glaring incompatibilities due to the age of a lot of the core tools. Stuff as basic as "readlink -f" works everywhere except on MacOS, simply because they haven't bothered to update it in a decade...

It also looks like the OpenGL support is untouched for yet another release from the article, and that's another pain point for me, since it's the poorest supported of all major platforms at this point.

</comment><comment><USER39> I was mostly disappointed with Siri on macOS - there is no homekit support. The dream of sitting on my computer and verbally turning off the lights was premature. I still have to reach for my phone =/

Everything else Siri could do seems a bit pointless (to me) on a computer. The latency added by asking Siri to do something makes using keyboard and mouse much quicker, I feel.

<comment><USER40> Not just you asking, but Apple processing it while you wait to see whether it understood correctly.

The only time I use Siri is calling people when I'm wearing gloves. I don't see it changing on a computer.

My biggest problem with Siri is that half the time it feels like muttering magical incantations - get the words in the wrong order and the spell doesn't work.

</comment></comment><comment><USER41> Be aware: Sierra breaks Karabiner and Seil. You'll need to use Karabiner- Elements, which has far less functionality than Karabiner. Notably, you can't remap caps lock and you can't assign to more than 2 keys, so caps-lock "hyper" is out.

<comment><USER25> You _can_ remap Caps Lock. It's even in the [readme]([https://github.com/tekezo/Karabiner- Elements/blob/master/usa...](https://github.com/tekezo/Karabiner- Elements/blob/master/usage/README.md#change-key)). I was using Seil on El Capitan and after upgrading to Sierra I went to the Seil website and I see it says "use Karabiner elements now". Ok, I uninstalled Seil, installed Karabiner elements, got configuration example from readme file and it works as it did before. I use it to switch keyboard languages with Caps Lock key.

<comment><USER41> That's great to know. So all that's missing is the ability to map more than 2 keys so we can get `hyper` back.

Seems this is the place to look: [https://github.com/tekezo/Karabiner- Elements/blob/master/src...](https://github.com/tekezo/Karabiner- Elements/blob/master/src/core/grabber/include/manipulator/event_manipulator.hpp)

</comment></comment></comment><comment><USER42> The only compelling 'feature' of this release, is that now I won't have to deal with most of software I use telling me I need to upgrade.

</comment><comment><USER43> I miss John Siracusa's reviews.

This is a fine review, but not a Siracusa Review.

</comment><comment><USER44> I miss Snow Leopard and I miss pre-iPhone Apple!

</comment><comment><USER45> As much as I like Mac OS X, when does Mac OS XI come out? (I've been using it since the first pre-release).

<comment><USER46> It doesn't. They dropped the X. It's 'macOS Sierra' now.

</comment></comment><comment><USER47> Have they finally updated packages like php and ruby? They were so outdated in 10.10/10.11

<comment><USER48> > Have they finally updated packages like php and ruby?

PHP:

> ▶ /usr/bin/php -v

> PHP 5.6.24 (cli) (built: Aug 8 2016 16:58:37)

> Copyright (c) 1997-2016 The PHP Group

> Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Ruby:

> ▶ /usr/bin/ruby -v

> ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

<comment><USER47> +1 for PHP

/usr/bin/php -v

PHP 5.5.36 (cli) (built: May 29 2016 01:07:06) (10/11)

-1 for ruby (2.3.1 is the recommended now)

ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15] (10/11)

</comment></comment></comment><comment><USER49> No useful new features for power users...I am a bit disappointed.

<comment><USER19> I guess you won't be buying it then.

<comment><USER4> No I won't, I spend the day downgrading my machine back to El Capitan (first time I've ever done an OS downgrade).

Also, unless things improve rapidly, my next machine won't be a mac.

<comment><USER19> You were so offended by lack of new features that you actually downgraded?

I suspect there must be more to it than that.

<comment><USER4> No, I downgraded because cocoa builds of emacs randomly crash (fixed in git head), as does TeXShop (not obviously fixed yet). Also some other apps weren't running because of gatekeeper changes I didn't bother to investigate seriously.

The lack of new features meant that I had no motivation to try to fix my problems / run git heads of software / figure out gatekeeper.</comment></comment></comment></comment></comment>


Toxic 'Forever Chemicals' in Drinking Water Leave Military Families Reeling - <AUTHOR> https://www.nytimes.com/2019/02/22/us/military-water-toxic-chemicals.html <comment><USER2> _Blood testing has emerged as a sticking point. Specifically, a growing movement of veterans and others, united in advocacy groups with names like Fountain Valley Clean Water Coalition and Need Our Water, are asking the military test their blood for the chemicals, hoping to bring results to their doctors or use them in lawsuits._

Strange that the article is being so cagey about why this might be the case.

Every human blood sample tested since the 1950s has shown detectable perfluorooctanoic acid (PFOA aka C8, a member of the PFAS class of chemicals mentioned in the article). The problem was so bad that DuPont had to search high and low for blood samples that _weren 't_ contaminated with PFOA. They did eventually find clean samples - archived from a group of recruits for the Korean War.

A little about the chemistry. Think of most forms of grease as a greasy, long, water-repellant chain of carbon-hydrogen bonds attached to a small water- attractive "polar" head. PFASs replace all of the carbon-hydrogen bonds in the greasy tail with carbon-fluorine bonds. This makes the molecule repel grease (great for non-stick coatings throughout the house). But the carbon-fluroene bond is quite inert, thus the name "forever chemical." There are few environmental mechanisms that can degrade them - either exposed or inside a body.

This article fails to put the problem into proper context - making it sound unique to military bases. That not true. PFOA is a problem at numerous sites. Nobody knows the long-term consequences of releasing this much highly-inert, carcinogenic material into the environment. What is known is that those unfortunate enough to have worked on PFOA production and who received high exposure to it developed horrific problems including cancers.

The Intercept did a massive series on this:

[https://theintercept.com/series/the-teflon- toxin/](https://theintercept.com/series/the-teflon-toxin/)

The Netflix documentary "The Devil We Know" is also worth watching:

[https://www.netflix.com/title/80997719](https://www.netflix.com/title/80997719)

<comment><USER3> That's a nice explanation. But what I don't get is: if the chemical is highly inert that means it doesn't react easily with other substances, so how then can it be carcinogenic?

<comment><USER4> Even if not reactive in the sense of forming chemical bonds with cellular material, interactions through mechanisms like Van der Walls forces could change 3D shapes of enzymes, altering their reactivity. If those enzymes participate in cellular replication, the effect could be carcinogenic.

Poor car analogy: tossing a ball bearing into the open oil fill cap in your car will probably not cause the ball bearing to bond with the lifters, valve springs & stems, etc. But it will probably damage your engine.

<comment><USER5> Yes, there are many ~inert enzyme inhibitors. And receptor agonists and antagonists.

</comment></comment></comment></comment><comment><USER6> I wonder if there's a way to democratize inexpensive health testing and see these trends faster? Imagine a world where you're testing your blood/sweat/saliva/vitals daily and semi-anonymously sending the results to be analysed using statistical methods. A doctor can give you a one time use current diagnoses voucher to add into the system for serious diseases. The whole thing is voluntary. There's definitely some dystopian abuse potential, but in the US healthcare is already a disaster for a large portion of the population, and this could lessen that. Is it possible for something like this to be created?

<comment><USER7> There's one general point that has to always be considered in these sort of ideas. Resources are not infinite. Of course you realize this, but I think we who come from the software world can fail to appreciate how severely restricting a problem this actually is. There are 325 million people in the US. Let's imagine a very high participation rate and just exclude infants and some outliers, just so see what would happen. So we'll call it 300 million.

That's 300 million tests per day or about 110 billion per year. The cost there is already going to be extreme. Even if you can get the tests down to $10/person, which you probably cannot, that's more than a trillion dollars a year -- upwards of 5% of the GDP. But the bigger issue here is what money represents: resources.

Machinery, maintenance, operation, even the strain on the transportation system would be intolerable. For instance think about the little kit you send over with your sample. I mean you'd think just getting it there would be negligible, but it'd be anything but. The USPS currently handles 20.2 million pieces of mail per hour. [1] Just handling these packages alone would increase the entire postal system's burden by more than 60%!

Or even consider the simple packaging that needs to be produced and disposed of. How small of a kit can we get to ensure sterility, sufficient sample size, and transportation safety? Let's say 100 grams. That doesn't seem like that much, but again think about it at scale. That's 30 million kilograms. For some sort of scale, The Statue of Liberty weighs about 200,000 kilograms. So each day you're talking about 150 Statues of Liberty of packaging and material that needs to be manufactured, distributed, delivered, processed, and disposed.

Big ideas in the physical world have quite tremendous barriers.

\---

As one interesting aside, imagine you took the market value for literally every single consumed good and service in the US, the sum total of money invested by businesses, and all government expenditure on top of it. And then you divided that equally among every man, woman, and child. How much would it be? It's interesting to compare expectation versus reality there. Conveniently what I described is really easy to measure - it's the GDP/capita. And it's less than $60,000. I always find that number quite bemusing when thinking about it contrasted against our economic ideals in various matters.

[1] - [https://facts.usps.com/one-day/](https://facts.usps.com/one-day/)

<comment><USER8> Well, considering how the U.S. (where I live) spends about 1 trillion + on war or war-related stuff each year, and, considering all the people in the country with crappy jobs that can't pay the bills, seems like shifting even say $500 billion (plenty enough left to bomb people) to hire or train folks to solve these problems would be a good investment.

</comment></comment></comment><comment><USER9> _I grew up drinking and bathing in the toxic waters around a military base in North Carolina. Thirty years later, I went back to investigate._ :

[https://psmag.com/environment/what-happened-at-camp- lejeune](https://psmag.com/environment/what-happened-at-camp-lejeune)

 _From the 1950s until at least 1985, the drinking water was contaminated with toxic chemicals at levels 240 to 3400 times higher than what is permitted by safety standards. ... Camp Lejeune has been characterized as a candidate for the worst water contamination case in U.S. history—and I am one of up to a million people who were poisoned. The tragedy, though, is hardly all in the past.

According to the Project on Government Oversight (POGO), the military's failures are continuing today; mistakes are being repeated at our bases overseas, and, in foreign cases, it took a whistleblower to prompt action on contaminated water. A 2013 investigative report produced by the Navy inspector general, obtained through a Freedom of Information Act request, reveals "shortfalls in the oversight and management of drinking water for Navy personnel stationed overseas—even in wealthy, developed countries." The report concludes that "not a single Navy overseas drinking water system meets U.S. compliance standards" or the Navy's own governing standards," according to POGO._

<comment><USER10> I don't know where the 'foreign' place referred to is, but this is playing out in New Zealand too. The slow moving shambles is shameful. [https://www.google.co.nz/amp/s/amp.rnz.co.nz/article/80fdd24...](https://www.google.co.nz/amp/s/amp.rnz.co.nz/article/80fdd245-8515-4ac9-89e7-b761faf13aed)

</comment></comment><comment><USER11> This is really bad. Most bad things in life are reversible but this degree of health damage isn't.

May everyone responsible for this be exemplarily punished to deter this kind of disregard for human life from happening again.

> Since then, the Defense Department has admitted that it allowed a > firefighting foam to slip into at least 55 drinking water systems at > military bases around the globe, sometimes for generations. This exposed > tens of thousands of Americans, possibly many more, to per-and > polyfluoroalkyl substances, a group of man-made chemicals known as PFAS that > have been linked to cancers, immune suppression and other serious health > problems.

<comment><USER12> They will not be punished. They never are.

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

[https://en.wikipedia.org/wiki/Los_Alamos_National_Laboratory...](https://en.wikipedia.org/wiki/Los_Alamos_National_Laboratory#Controversy_and_criticism)

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

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

The "problems" kill people. From the governments perspective this soft, civilian side, collateral damage is a required cost of our military machine. Inside of the military you have no real chance unless it is egregious beyond comprehension to ever get any kind of remedy.

The government will poison you and your family and then look at you with dead eyes and pat your survivors on the head and tell you to move on. EVERY one of those sites have a history of medical issues in the nearby community. A little "light" water table poisoning is nothing to the government if people can't pursue the vast history and documented scope of nuclear weapons production poisoning people.

<comment><USER13> It's important to note that 'the government' you mention, is doing the poisoning, is actually through private companies.

<comment><USER12> True. But they gained tremendous protection via the govt. There is at least a small chance a company is fined if they do something egregious. (Exxon Valdez). It is rare though.

</comment></comment></comment></comment><comment><USER14> I was a military wife for a lot of years. I have very serious health problems. Doctors officially blame that on my genes, which can't be changed, so it's a de facto means to throw their hands in the air and call me unfixable.

I think environmental factors are a big part of the problem and that those can be addressed.

I lived on a military base for 2.75 years where there was one tap in the house labeled "potable water." You weren't supposed to drink water from the bathroom sink while brushing teeth, yet we bathed in this stuff and washed our dishes with it, etc.

The house was not very far from Hinkley, CA, location of the hexavalent chromium plume made famous in the movie "Erin Brockovich."

When I have said on the internet that I believe hexavalent chromium poisoning is one of my problems, I have been dismissed as a nutter and conspiracy theorist by internet strangers who are confident they know all about my life better than I do.

I actually spent some years on an antivaxxer email list. They had a lot of interesting and useful information that helped me begin turning my health around while my doctor expressed zero curiosity about my improvement, advised me other patients needed him more and scheduled me fewer appointments.

YouTube recently demonitized anti vax channels (seemingly part of general trend to shut down such views). Most people seem to think that's a good thing. It leaves me wondering where people like me are supposed to go in a world where "fringe" views cannot be discussed in good faith on the internet. Are we supposed to just quietly die because that's the PC answer when doctors tell you "People like you don't get well. Symptom management is the name of the game."?

If you make zero effort to get me well and write me off for dead because of the label you gave me, wouldn't my decline and death be a form of self- fulfilling prophecy?

And when I defy that prediction, I'm written off as a crazy person and thrown off of one forum after another.

Insert some quote about "And when they came for me, there was no one left to speak."

<comment><USER15> Seems your condition is very different from that of a newborn baby with an under developed and fragile immune system, who's mothers are fed mistruths about how harmful vaccines are.

I don't see how your story relates in any way about harmful anti-vax groups (and vaccines in general) other than "I got some unrelated help at one point". So yes, we can absolutely be happy they are being demonitized.

That being said I am sorry that your doctor treated you like that and I am glad you did manage to help yourself.

<comment><USER16> The person you're responding to is a decade-long HN commenter. Currently, her comment is sitting at [dead].

I myself don't necessarily agree with her chain of implications, but it was her journey. This isn't directly solely at your comment (but I can't respond to the top one directly, as it's dead) - When you latch on to it simply to beat the anti-anti-vax dead horse, you're doing everyone a disservice.

IMHO if you want to know why online discourse has turned into such shite, then examine this. The noble ethos of judging words on their own merit has devolved into a tyranny - when you remove the "inertia" of individual reputation, each comment stands in isolation. Rather than seeing a larger pattern of a person being generally reasonable, giving the benefit of the doubt to a questionable comment, and perhaps extracting something worthwhile from it... we instead quickly judge it as "other" and move on.

<comment><USER15> The fact it is sitting at [dead] has nothing to do with my comment and the length of her time here on HN bears no relevance to this discussion. I fail to see why you can latch onto that fallacy and try to beat me with it as if it is my fault that her comment has been flagged. If it helps you sleep at night I have vouched for her comment as I don't think it should be flagged.

If you would take the time to re-read my original comment, which was replying to a comment which has since been edited to be a bit more explicit about it's message, you would find that I'm simply questioning first what anti-vax groups have to do with the original post (or really her original comment at all) because vaxxines have nothing to do with her apparent on-base drinkwater poisoning, and also why her journey should make us feel bad about them being demonetized.

Nobody is labelling her as "other" and moving on. I would say that you are pretty quick to judge my comment and to lambaste me for the ills you perceive, which is a bit ironic given the content of your message.

<comment><USER16> > _the length of her time here on HN bears no relevance to this discussion_

It's directly germane to my larger point about the results of eschewing personal standing.

> _lambaste me for the ills you perceive, which is a bit ironic given the > content of your message_

From your earlier comment:

> _So yes, we can absolutely be happy they are being demonitized_

The difference is that you are starting to go on the group-offensive, celebrating the winning against one flavor of Youtube nutter.

The original comment did tangentially bring up anti-vax, yes. But my point is we should aim to tolerate that, as it's tangential. Focusing on that single aspect then either results into re-arguing whether the censorship is good (which can only go more meta, because obviously the immediate anti-vax phenomenon itself is bad), or simply left to sit and form a tacit consensus that censorship is worthwhile.

(I apologize for having focused on you by virtue of you being the only commenter, and good on you for vouching - directly opposing the main symptom).

<comment><USER17> >The original comment did tangentially bring up anti-vax

the literal original comment brought up how demonetization of anti-vaccination youtubers is a "first they came for me" slippery slope, what definition of "tangential" are you operating on?

</comment></comment></comment></comment></comment></comment><comment><USER18> FWIW, I found the EPA [1] and CDC [2] sites on these chemicals to be extremely informative. Definitely gives me an appreciation for the "good" parts of government.

1\. [https://www.epa.gov/pfas](https://www.epa.gov/pfas)

2\. [https://www.atsdr.cdc.gov/pfas/index.html](https://www.atsdr.cdc.gov/pfas/index.html)

</comment><comment><USER19> I am affected by the Camp LeJeune water issue. I have cancer because of it. I am on my appeal process with the VA over it. It sucks and it's still going to be a long fight.

<comment><USER20> Camp Lejeune is more known for cheap dry cleaners using PERC and dumping it rather than perfluorinated contaminants [https://psmag.com/environment/what- happened-at-camp-lejeune](https://psmag.com/environment/what-happened-at-camp- lejeune). [https://www.popsci.com/dry-cleaning- chemicals](https://www.popsci.com/dry-cleaning-chemicals) points out newer water-detergent machines, but states they cost $40~80k. Best cheap solution has been to use hydrocarbon solvents and incinerate the waste. I do not know of any list of dry cleaners that do so.

</comment></comment><comment><USER21> I'll stick to my distilled water. I still don't understand why they aren't more popular. Here they add a chemical to our tap water that bonds to lead so that there will be less (hopefully no) lead from the lead water pipes/solder/fittings. No thank you.

<comment><USER22> Doesn't drinking distilled water in significant quantities remove important minerals from your body?

<comment><USER23> No that is a common myth. Food has plenty of minerals etc compared to what you get via tap water.

[https://www.healthline.com/health/can-you-drink-distilled- wa...](https://www.healthline.com/health/can-you-drink-distilled-water)

<comment><USER24> From the very article you linked to:

"Because it doesn't contain its own minerals, distilled water has a tendency to pull them from whatever it touches to maintain a balance.

So when you drink distilled water, _it may pull small amounts of minerals from your body, including from your teeth._"

How does this contradict lr4444lr's claim "drinking distilled water in significant quantities remove important minerals from your body"?

Are you arguing it is a matter of degree, that while distilled water does remove minerals from your body, the "myth" is that it is significant?

> Food has plenty of minerals etc compared to what you get via tap water.

How many minerals do you receive from food and how do you know this is sufficient?

There is research showing a (weak) correlation between hard water (high in mineral content, as opposed to the low/zero mineral content of distilled water) and cardiovascular health, eczema, and dermatitis:

[https://www.sciencedirect.com/science/article/pii/S004896978...](https://www.sciencedirect.com/science/article/pii/S0048969781800472) Studies of water quality and cardiovascular disease in the United Kingdom

[https://www.sciencedirect.com/science/article/pii/S001393510...](https://www.sciencedirect.com/science/article/pii/S0013935103000689) Ecological association of water hardness with prevalence of childhood atopic dermatitis in a Japanese urban area

[https://www.jacionline.org/article/S0091-6749(16)30187-7/ful...](https://www.jacionline.org/article/S0091-6749\(16\)30187-7/fulltext) Association between domestic water hardness, chlorine, and atopic dermatitis risk in early life: A population-based cross-sectional study

<comment><USER23> Upon further research I have changed my stance, I had never seen this WHO report before. It's old but they recommend not drinking water less than 100 ppm.

[https://www.who.int/water_sanitation_health/dwq/nutrientscha...](https://www.who.int/water_sanitation_health/dwq/nutrientschap12.pdf)

</comment></comment></comment></comment></comment><comment><USER25> We really need to switch to a regime under which we first establish the safety of a compound and then mass-produce it.

</comment><comment><USER26> I wish there were established means by which institutions and individuals could admit fault in order to expedite problem solving. So much energy is wasted trying to conceal blame and responsibility. The problem becomes harder to tackle because nobody can acknowledge it.

</comment><comment><USER27> I grew up on a military base and we were told on certain days not to drink the water but on other days it was "fine"

I wonder about the after effects.

</comment><comment><USER28> > That was 2016. Since then, the Defense Department has admitted that it > allowed a firefighting foam to slip into at least 55 drinking water systems > at military bases around the globe, sometimes for generations.

Where's the list of locations for the 55 systems?

<comment><USER20> At least 91 per Northeastern University - [https://www.ewg.org/interactive- maps/2017_pfa/](https://www.ewg.org/interactive-maps/2017_pfa/)

Here's a different one: [https://www.bloomberg.com/graphics/2018-3M-groundwater- pollu...](https://www.bloomberg.com/graphics/2018-3M-groundwater-pollution- problem/)

All public landfills can be added to those maps.

</comment></comment><comment><USER29> Once again we see that government doesn't have regard for doing the best for its citizens. It's only regard is doing what is best to keep itself alive.

<comment><USER30> How do you eplain all the instances of when government has shown regard for doing the best for its citizens? Do you apply the same logic you used here for government on corporations? Instead of focusing on the fact that it was a government agency in this instance let's focus on the fact that without proper oversight bad things can happen. This is true for corporations, individuals, government agencies, non-profit agencies, and all other organized groups of people.

<comment><USER31> > Do you apply the same logic you used here for government on corporations?

Obviously not, since the article says DuPont did the same, but that elicited no anti-corporate criticism: "While the military has used the chemicals extensively, it is far from the only entity to do so, and in recent years, companies like DuPont have come under fire for leaching PFAS into water systems."

</comment></comment></comment><comment><USER32> Is this because military bases aren't held to the same standard a house next door to the base would be?

</comment><comment><USER33> > _But the military has said it continued to use firefighting foams containing > the compounds because companies have continued to produce them and the > E.P.A. doesn't regulate them._

Isn't the point of capitalism that if 'x' company isn't doing 'y', you can take your dollars to company 'zed' and drive the market to the desired result[s]?

They make it sound like no one in the history of ever has produced a firefighting foam without those chemicals. Erring on the side of caution (e.g.: if that were truly the case), couldn't they have used their research arms (e.g.: DARPA) to come-up with an alernative, on their own? After all, it's been 28 years since the Army Corps of Engineers sent the warning out, according to the article, yeah?

I find the thought incredulous, at best, that they had _no_ alternative but to keep using the same foams.

<comment><USER34> I think this is the big weakness in our current implementation of capitalism/market economy. It's supposed to depend on perfect information about producers and products, but how can the average person know what's in a firefighting foam, and how it will affect them?

Even if you take the government aspect out of it - consider if your bought this foam for your own use. How would anyone know what it would do to them and their family, in time to make an educated decision to avoid poisoning themselves? Are we supposed to all get a degree in chemistry, build a lab in the basement, and analyze every product we bring into our homes?

If no one knows it's poison, or if the only ones who know are the producers, or if the purchaser is separated from whoever gets poisoned (i.e. govt purchasing personnel -> people drinking the water at the bases), then there's no incentive for anyone to make an alternate foam, especially if the most effective/cheapest version is the poisonous one.

A less effective or more expensive foam would be a hard sell when the people buying are not the people getting poisoned.

Without a requirement to verify that a compound is safe for long-term exposure before being sold, this is going to keep happening, no matter who is buying or selling. Unfortunately, you can't say regulation in the USA without getting shouted down as "anti-capitalist" or worse, "socialist."

</comment></comment><comment><USER35> Are US military bases overseas doing the same to other countries?

<comment><USER20> If jet fuel is stored on base, then it is part of the standard fire suppression operating procedure. [https://www.afcec.af.mil/WhatWeDo/Environment/Perfluorinated...](https://www.afcec.af.mil/WhatWeDo/Environment/Perfluorinated- Compounds/) I cannot fault that given the cost of the jets, but if they use any fire retardants and a good job of cleaning any mess up is not done, then the users need to be given a stern talking to as everyone will be drinking the stuff in a few years.

</comment></comment><comment><USER36> This is terrible. Why do we treat people that protect our freedoms this way?

<comment><USER37> "our"?

</comment></comment><comment><USER38> People often seem to think I am being unreasonably paranoid for saying that you have to look out for yourself and your family when it comes to exposure to dangerous chemicals, and not just trust the Environmental Pimping Agency (or your local equivalent) to do it for you...

<comment><USER11> You're not paranoid in the least. My family always went to great lengths to ensure we never had to drink tap water. Always buying and stocking mineral water from respectable brands.

In my generation I'm going a bit further and using filters for shower/tap water. And I plan to test the mineral water brands we consume at least once a year.

<comment><USER39> > And I plan to test the mineral water brands we consume at least once a year.

How do you conduct these tests out of curiosity?

<comment><USER11> Don't know exactly what labs I'll use yet. It depends on where you live.

This is the article that got me interested: [http://blogs.worldbank.org/water/how-test-water-quality- chem...](http://blogs.worldbank.org/water/how-test-water-quality-chemical- tests-limited-budgets)</comment></comment></comment></comment>


Deep Learning Research Review: Intro to Reinforcement Learning - <AUTHOR> https://adeshpande3.github.io/adeshpande3.github.io/Deep-Learning-Research-Review-Week-2-Reinforcement-Learning <comment><USER2> Interesting read!</comment>