skysight-inc/HackerNews huggingface dataset:
> as part of the process you can usually confine the parts that are hard to reason about to a smaller portion of the code and reduce the magnitude of the problem, and gain the ability to reason about the rest.

Alas, this was proven wrong for verification in 2005. See https://pron.github.io/posts/correctness-and-complexity#corr...

> Since your objections applies to a different set of languages than those I'm talking about, your objections are moot.

1. I reject your examples on the ground that they're considered insufficient for their own domains, and in any case are so restricted that you could not compose the lion share of an application from them even without the theorem showing that you cannot reduce the cost of composition by verifying simple components.

2. While I'm happy to further ponder the utility of the languages you listed, you should bear in mind that, say, a Java program using similar constructs to a Sieve program can be reasoned about automatically by current tools, and with relative ease. In other words, a program so simple is easy to reason about whether it's written in a restricted or a non-restricted language, so using those DSLs just increases the cost of verification. However, that does not mean they are not useful. For example, I read that the main design object of Sieve is to allow servers to run untrusted code.
> What's the intended outcome?

Punitive action against the company who collected the data and lost control of it.

Punitive penalties are typically just a monetary fine above and beyond damages, but exposing just how badly they screwed up to the public at large should provide a good financial penalty in addition to doing a public good (a reminder of how much "private" data is not actually private).
Is no one else annoyed about the GOPATH pedantry ?
> hours to match the performance you get for "free" from other languages?

In a sense, you pay those hours that you saved up by using an easier, more intuitive language like JS. Or you can choose not to and still have pretty good performance and blazing fast dev cycles.
If the actual thing was summarized, it wouldn't be political. Instead it's sesame street time where we learn about systemic oppression.
1 is a subset of a smaller issue. Default params are just a way to declare variadic functions more easily, but the language doesn't allow variadic functions at all. In go trying to define `add(int x, int y)` and `add(float64 x, float64 y)` is a compile error, even though the compiler can tell full well which one I want to use where.

2 is so annoying. Half the sdtlib wants you to use `foo.NewStruct()` and the other half uses `&bar.Struct{}`. As far as I can tell the rule is to use a bare definition where possible and only declare a New function if the zero value isn't meaningful. But there's no way for a library author to force the use of new and/or disable bare struct literals, and there's no way for an API consumer to know which category a given library will fall into other than by rote memorization. It's practically designed to invite user error.

Both of these seem emblematic of a bigger problem in the design philosophy of go. It's optimized for simplicity, but often at the expense of making idiot proof interfaces difficult or impossible to build. This seems like a fundamental misunderstanding of what makes programming difficult in the first place. My package's users (including future me) aren't going to know or care about how the internals of whatever I'm throwing together work, they just want to use the API to solve their problem with as little extra contextual knowledge as possible. Go doesn't let me write an interface where they don't have to know or care, all in service of a definition of "simplicity" that doesn't seem to actually make anything easier.
I love and use ascii art everywhere. Its one of my very few design choices that Ive actually delved into as a cs major.
If you read it closely, it seems like fluency in advanced mathematics and significantly above-average IQ were implicit criteria. At least that was my takeaway.
That effect is so pretty!
Yeah, and resolve your issues with life like this. You are a human being, with a very complex psyche, on top of it, you are to unaware to be aware of most of it. So, the thing that drives you, is a program written into you, maybe you should change something in your life, than just take a pill and transform into a robot. Maybe you enjoy, drawing, making art, being closer to your children, doing something in nature, meditation, and so on. Maybe, you adderall it all away, for the money.
For all the talk from Apple about recycling, they sure love to design disposable products. I say this as a HomePod owner.
> Implicit interfaces are the single best part of Go.

Help me understand this. The concern raised by the author regarding method signatures versus method contracts seems valid, and I have a hard time envisioning where implicit interfaces would be useful. Do you just hope to get lucky? Somebody, without knowing about the interface, would have to use all the same parameters and return types, the same method name, and implement the contract in a compatible way for it to work, right?
From what I can tell, doing basic things like a property get on an object in WASM/host-bindings will require a spill to function, with no chance of specialization:

https://github.com/WebAssembly/host-bindings/issues/11#issue...

If you think the assembly in this article is bad, WASM/host-bindings appear to be even worse.
Same way it does when compiling to C or assembly, the correctness is checked on the source and assume the codegen and platform you run on behave correctly (and fix/work around bugs which inevitably arise).

So the correctness transfers in the sense that the code the compiler output should always be correct.
Monitoring usage of a corporate issue piece of equipment is very different than using it against a private individual without their knowledge
When I hear "this company is a family," I say, "You're not supposed to go into business with family."
worth noting the article was published near the end of July 2016 and these methods were only added in the following month (and packaged as part of a Go release in October). i'd argue that since it's a retrospective of a few years of use, it would be fair to include that criticism even if that release had come shortly before publication
Sounds like maybe we're talking past each other. Would you mind clarifying how you're defining a DSL?
Testing in production doesn't get enough attention. While in theory it is always possible to simulate, sometimes the practical difficulty of doing so means some amount of testing in production has to be done.
> It really is striking to me that it is so popular to dislike Go on HN. A lot of people seem to have to voice their dislike for it instead of just not using the language.

It's normal. After the initial hype 3/4 years ago, developers are taking a harder look at that language and with experience its flaws have become more obvious.

Go type system definitely has problems that aren't addressed by its designers, IMHO limiting its adoption.

> A lot of people seem to have to voice their dislike for it instead of just not using the language.

One can use a language daily while still remaining critical of it. People who don't use Go don't care about Go. Only people using Go will complain about its shortcomings.

A lot of Go issues have actually been addressed in previous languages such as Ada. Ada tasks for instance are close to go-routines and they use the same "select" system to deal with concurrent messages. However, Ada tasks unlike go-routines are "objects" that can be referenced as variable, they also can scheduled by the developer.

There is not a single language out there free of criticism, Go isn't different. So it shouldn't really be striking at all.
I think this article is a great illustration of the things a Java developer will struggle with while they are learning Go. I no longer write Java, and I now view many of these as strengths.

1. Capitalization rules vary by language, I remember struggling with camel cased naming in Java in some scenarios. I also thing the example given is bad, User.user is a poor name in any language.

2. Structs w/ implicit interfaces. I like this feature of Go, and it's never bitten me in the way the author describes. I never liked having to declare them in Java. And there is an easy way to ensure your particular type implements an interface in Go.

3. I prefer not having exceptions, and linters will tell you when you are not checking returned errs. I do wish Go would offer tools to reduce the amount of if err != nil {} blocks, particularly in IO heavy code.

4. Go's build system is very easy to understand compared to something like Makefiles or Maven. I don't consider a few conventions "magic." I have mixed feelings about init(), but I think it's much better than trying to come up with thread-safe alternatives to compile regexp, etc.

5. Naming. Writing unit tests from an outside perspective (package xyz_test) will help you pick better names, and you will run into less conflicts. In Java you see hideous combinations of Abstract, Singleton, Factory, etc. I much prefer Go's concise/pragmatic naming style.

6. I don't do much code generation, can't comment.

7. I do miss ternary sometimes, but I have seen it abused with very long statements in other languages. I would note that "else" has become a code smell in Go, it's more normal to assign a value and then change it.

8. Sorting. I like that not everything needs to be an object in Go. Having to add a few extra lines of code the rare occasion I need to make something sortable is much better than a project full of Java class/getter/setter boiler plate for what should have been a struct.

9. Yes, dependency management is a mess. No argument. Looking forward to dep becoming official.

10. I do sometimes miss generics, but I started writing Java before it had generics so I can live without them :P. I think they can lead to readability problems when overused.

11. append is a bit confusing, but hiding how it works should be considered "magic." linters will help you here.
> I find typescript to have one of the most sane and still strict type systems of all languages that doesn't fall into the extreme functional spectrum

MLs (OCaml, F#, Reason) are hardly "extreme functional spectrum".
It's a real shame that we've chosen with ST3 to build rail to the suburbs instead, deferring the much-more-important task of rail between the neighborhoods for the next generation.
After reading responses and reflecting a bit I guess rust got it mostly right. Undefined behavior is bad, so Rust defined it. Overflow is apparently a problem worth checking for. I don't understand how people are overflowing 32 and 64 bit integers, but OK it's common enough. Having the ability to declare overflow/wraparound as being OK is a good thing so long as it compiles down to the same add or subtract instruction and doesn't add overhead. Rust claims to have zero overhead abstractions, so I'll have to try this some day.

TL;DR the decisions made in the design of Rust seem reasonable.
> No, it's not portable. Yes, it's necessary. And that's ok.

Indeed, and it may be necessary to have an analysis tool skip over that code, but it applies to only a tiny minority of C code.

Interesting skim-read, that paper. I agree with the author's lamentation that we so often pretend there's nothing we can do about C's safety issues. Even configuring GCC to check all dereferences for NULL, strikes many people as unusually rigorous.

Dev+debug builds in particular should have as many runtime checks as possible, but for no obvious good reason, that's just not how we do things.
Yet another problem is that for an unpopular language it is easy for its developers to introduce incompatible changes. If one does not have resources to fix the codebase, it is not much different from the developers abandoning the language.

Elm still at risk of such changes, witness fundamental change to it's event subscription model after 0.16.

Of cause, such incompatible changes may happen even with popular languages. But at least you know that you are not alone and there will be companies that support your version. Like, for example, the case of Python2, still supported and even installed by default on many systems instead of python3.
With the huge exception being Lisp-based languages (closure, scheme, etc....). Heck, Lisp was the first functional language and first one that made full use of dynamic typing.
It's normal unless you are not able to consistently overcome it to achieve your goals. Basically, like any disorder, its not technically a disorder until it prevents you from living your life.

I was diagnosed with ADHD at about 12years old. I refused treatment all through high school until I was 30 when I realized I had gotten nowhere in life. I had substance abuse problems and a criminal record.

I'm back in college now. I have hobbies, goals, and no desire to turn back. My anxiety is gone as well as the impulse to self medicate. I've gone through several state mandated drug/alcohol/anger management classes over the years, so the cognitive behavior mechanisms were there, but when I finally told a doctor my story, and how I felt, I got treatment and it changed my life.

You can't diagnose yourself and trying to is unhealthy. It manifests doubt and can make things worse by compounding negative emotion.

If you're just being lazy, grow up. But if you are unable to will yourself to do/focus on the things you want/need to do, if you feel you are "suffering," even a little bit, ask for help.

You are important. Don't waste time guessing.
Next steps: leverage web workers and GLSL?
Idiomatically, underscores are reserved for files that are given special treatment, like architecture-specific code or test files. It is not strictly enforced by the compiler, so theoretically you could cause this scenario, but if you write Go the Go way, it will not be an issue.
The intro video looks good. I will have to try this.

Currently I use Zim wiki.
Browsers also use them do display "expanded" code in the console and debugger.
Not to be confused with the Mill Computer Architecture: https://en.wikipedia.org/wiki/Mill_architecture, https://millcomputing.com/.
Transcript + explanation:

https://explainxkcd.com/1957/
I guess if you don't include IE11 as one of the "major browsers".

I wish that was the case. Yes, I know it is only receiving security updates -- but it will supposedly get those until Windows 10 is no longer supported (if I'm reading things right).

Unfortunately, that doesn't stop a bunch of people from using it. It still has a considerable amount more marketshare than Edge does (if netmarketshare.com is to be believed).
Even CompCert, the formally verified C compiler, had to make some concessions concerning the standard: it does not verify C per se, but CompCert C (http://compcert.inria.fr/man/manual005.html), which is very close to C99 but with fixed-size integers (32-bit), two's complement signed integers (so no UB in signed overflows), etc.

Otherwise, it is practically impossible to find some actually useful C code that is fully portable and compliant.

But I agree that analysis tools should be as configurable as possible, and report UB whenever they can. However, if the default settings lead to way too many false positives, the users might end up giving up before learning how to turn some of them off. It's a delicate balance between paranoia and usability. Even -Wall -Wextra -pedantic do not activate all warnings about detectable UBs, and that's about as paranoid as you can get in GCC/Clang.
Space pirates fencing it to retro-transport collectors on Planet 1.
This is also the first generation of the device. These things tend to scale up.
Hey, basically I was always fascinated in the business/stock market even as a kid, so when I grew up and started working (Sysadmin/Security space) I started investing in whatever mutual funds my bank would recommend and it took me few years to realize how bad this investment was with the front/back loads, too many fees, etc... After that I decided to invest myself, so I took the path of reading a lot of useless books on value investing, technical analysis, etc and was sill losing money until I realized, that nobody in tier right mind would publish their trading secrets and even if someone does, all the money pouring into the system will arbitrage it away rather quickly, so all those people are basically making money not from trading, but from selling the dream...

Eventually, I bought data, learned myself how to program with Python (I am not a developer, so my programs are quite rude you might say) and started back testing any trading system I can find, all were losing the the long run, but I got the feeling for the market and started testing my own ideas until I found my edge... Automating it was easy afterwards using the API from discount broker... Hosted in the cloud with redundant servers around the world, and still testing new ideas...

My system does not require daily intervention and does everything (buy, sell, sizing, stops, adjustments, exists) by itself, but I would check the logs once a week to make sure everything is working properly, I do also have monitoring in place to monitor my servers, my API providers, also I sent myself notification after buy, sell and other statistics - maybe a bit overkill, but I am a sysadmin by heart and the email and SMS are free :-)

I would recommend buying some data: the far back you can get, the better, rent small linux VPS, learn some python and start testing, it won't be easy, but if you have interest, it makes a great hobby, and who knows, you might find your edge, sooner than later and it is well worth it, the compounding will generate your FU money, and something you can leave to your kids to run after...

The books I would recommend are more for motivation and inspiration:

The Asian Saga by James Clavell, reading as a kid on how to rule your life, business and create a dynasty...

https://en.wikipedia.org/wiki/The_Asian_Saga

More Money Than God: Hedge Funds and the Making of a New Elite by Sebastian Mallaby - on how to rule the world :-)

https://en.wikipedia.org/wiki/More_Money_Than_God

A Man For All Markets by Edward O. Thorp - basically the father of quant/systematic trading and one of the greatest minds of our time...

http://www.edwardothorp.com/books/a-man-for-all-markets/
> now you're trying to solve mass transit and affordable housing at the same time.

Yes, that's exactly how it needs to happen. Transit works more efficiently in higher-density areas, and higher-density areas become more appealing when served by transit, and everyone benefits. The solution is obvious: upzone all the low-density neighborhoods within city limits, then build transit links connecting them.
depends how embedded the issue is. If the fix for it is going to break or expose other things, it could be that more time is needed.

I don't mind that 90 days is a soft deadline, at which point as long as they're showing determinable progress on the issue, all is well until it is patched. But disclosing the bug before a fix is in place exposes users to possible actors that wouldn't know of said issue previously (ie like WannaCry being based on leaked NSA offensive tools. Leaking effectively being an involuntary disclosure).
Oh it's you! I love the monokai scheme to the point where it's part of my ritualistic backup of ~ and has it's own dotdir.

Thank you! :)
I can one up that. From the headline alone, I was pretty confident that it was going to be a fun pseudo-scientific attempt to predict this guy's return.

http://www.imdb.com/title/tt0088172/?ref_=fn_al_tt_1
The US regulates "wear bars" on tires, which make it a lot more obvious when tires need to be replaced.

I'm not saying that government regulation is needed, I'm just pointing out that the purpose of this tire feature is to make it more likely that people notice tire wear, and don't die from accidents involving bald tires.
I have a pair of B&O speakers from 1988, with no reason to upgrade them. They still sound as good as new (and look better than newer speakers) after I installed new surrounds on the speakers.

You can choose to buy well and half things last a lifetime. So far these speakers have given 30 years of pleasure and I have parts on hand (a baggie with some extra surrounds) to ensure they last another 30 years.

You don't throw away your house when the paint peels, do you?
You might like something like this:

https://www.commitaction.com/
A friend of mine covered a scientific study with a solution to this problem. What it comes down to, is that you shouldn't program for money. Instead, look at it how the money enables you to be a programmer.

https://medium.com/@robwolfpetersen/the-passion-problem-and-...
Shellshock, Broadpwn were not originally reported by people working at Google, Heartbleed was also independently found by others.
> Lost sales because they might have bought a new PC with Windows?

Right.

> Odds are that the PCs already came with Windows,

So? MS still gets paid.

> so maybe he installed a newer version of Windows....

No. He was making copies of the original restore disks that the original owners had discarded.
is there ever a single "right way" to do anything ?
> JSON hasn't been designed for chunked interpretation. How would the client know when to start interpreting the received message?

Neither has XML and yet we have plenty of working streaming XML parsers.

> How could you tell the difference between a valid chunk or malformed response?

Same as usual, when it breaks.
When we migrated Parse from Ruby to Go, we started with two parallel efforts:

1. I built a Go implementation of resque. This let us swap any async process. Things that needed async tended to benefit from Go's speedup.

2. We also moved some internal APIs to Go in a sidecar server to help build up/validate core library implantations before replacing whole endpoints.
Project Zero remains one of the few true gems at Google. They do good work. They probably don't call out their own employer as much as they should (understandable, considering), but they do darn good work, and have made a significant impact in making the Internet more secure. Everything from competitors' operating systems to browser extensions has gotten their attention, almost seemingly at random.

I'd actually be super curious to know how they pick what they look into. Just a "hey, I wonder about this" while going about their day, or if they have some sort of agenda laid out for when to look at what software.
Or, the equivalent title: "Google gives Microsoft the standard 90 day window that it gives everyone"
Every day someone publishes their snowflake opinion on why Go is terrible. Every day, hundreds of highly productive engineering teams write millions of lines of Go, powering web services and developer tools you use on a daily basis.

So I'm inclined to side with the engineers actually putting the hours in instead of the talking mouth bloggers. If there comes a day when Google, or Uber, or Twitch, or Cloudflare comes out and says "Go was a mistake and we're starting to replace our old Go code with this new thing", then I'll start listening.
Super Seducer: A game to teach state-of-the-art seduction secrets
Quick, let's get some cryptonite /M$head¼s
I used a power series to approximate the radius of a planet to its mass for a webgl space game I'm making [0] where solar systems are randomly generated. I needed something to roughly approximate the size of a planet or star based solely on mass. Using the 8 planets + (sedna & pluto) and our star to generate the curve function I got a r^2 value of 0.989. [1]

I'm not about to make some scientific claim based on it but for my purpose (a neat game) using a power series to approximate mass was an extremely efficient and simple solution to my problem.

[0] http://thedagda.co:9000/

edit: if you have an xbox controller you can use this: http://thedagda.co:9000/?gamepad=true

[1] https://docs.google.com/spreadsheets/d/1GKPNNMJrZMaf8aQqgGD-...
Humans aren't "meant" for anything.
Not speaking from authority