skysight-inc/HackerNews huggingface dataset:
Here's a more or less complete list of references for the known approximation and inapproximability bounds for TSP and its special subproblems.

http://cstheory.stackexchange.com/questions/9241/approximati...

One thing to note in particular is that general TSP has no non trivial approximation guarantee. Norvig's article might not stress this strongly enough, the guarantees he describes really depend on the triangle inequality. At least, I think the gap between what's possible for these two versions is deep enough to mention.

Another important note is that the TSP subproblem Norvig attacks, Euclidean TSP, has much better theoretical guarantees than a 2-approximation. In fact, the problem has what's called a polynomial time approximation scheme (for a fixed dimension) allowing one to efficiently compute an approximation that is arbitrarily close to optimal. The runtime of the algorithm is something like n (log(n))^c where c depends on both the accuracy and the dimension.
I did not twist your words. You also never said anything about legal drug use, so when I said "worst case" I was pointing out one end of a scale of possible interpretations. That you were talking about technically legal abuse of drugs is on the scale I describe.

I stand by my point: either you were suggesting that drug abuse might be a factor here or you were bringing up something approximately irrelevant. Either way, that's shitty. Let people have their time to pay their respects and mourn without you jumping in with your kids-eat-your-veggies hobbyhorse.
It seems to me that parents' income level itself correlates with a lot of things, such as the student's interests, their academic / intellectual preparation for college, "knowing the ropes" when they get to college, and having a safety net in case they get into trouble.
it comes down to trust. if i were to guess you lock the door to your house. why would you do something which limits the movement of people who want to be in your house. but at the same time you do not have problem giving access to your house to specific people (people you trust). it is same with countries just more complicated as now you are dealing with bunch of people rather than an individual.

visa free travel exists before countries agreed to trust each other for whatever the reason may be (economic/social/etc.). other countries can workout ways for travel but they do not think of it as a priority.
The ebook is a lot cheaper on the No Starch Press site, and DRM free, so if you're looking the ebook, buy it directly from them.
I know. It's not realistic to expect tiny non-profits like Microsoft to have the engineering resources of huge corporations like Mozilla. A man can dream, though...

If resources are such an issue, maybe Microsoft should go the Netscape path and consider making their browser open source? I'm sure many people would be interested in donating their time to help them support some of these tricky standards. I would love to help them get IndexedDB right! I know some other similarly minded people too.
Our company has a therapist
I like the Vatican passport design too. I wonder if the inside is written in Latin?
As with anything, "{insert-name-here} sucks" can be applied in plenty of scenarios. I consider myself competent in plenty of languages, including C# and Java. Recounting my experience with OOP languages, relative to the objections listed:

Regarding data objects to functionality: couldn't agree more, and that's why my data access libraries never contain anything of a functional nature within them. It's simply good practice, and makes for more maintainable architectures. Nothing about OOP prevents me from accomplishing this.

I've dealt with Date and Time objects plenty, and it turns out it's really no big deal. If you care about those things in terms of allocation to the heap and/or stack, there may be a point of consideration, but mostly it's just a matter of syntactical preference. It matters very little to any applications that I've participated in producing and maintaining.

Data-type definitions: the specific comment in the article refers to a location, as in a single file to locate data definitions. Again, this goes to code organization. Separation of concerns is good practice in many disciplines, and this is no different. If a person is sloppy with their code, it doesn't matter what type of language they use.

Private state: I'll refute the suggestion in the article that "OOP says to hide state." That's way too broad a brush stroke. The concept is encapsulation, and best practice says that the scope of state within an object refers only to itself. The article refers to system state, which is well beyond the scope boundary of a single object in OOP.

Again, these are all just tools to get a job done. How one uses the tool is the most important consideration.
This is completely wrong. In our area (Silicon Valley) it is common and expected to push hard and work long hours. It is an extremely competitive environment and unless you're forced to go home most people work late into the night.

Not making an effort and letting your employees know that you don't expect them to work nights and weekends means you are ignoring the societal norms in our field and most likely have engineers working their way towards burnout.
OOP isn't perfect, but I don't think this post addresses any actual problems.

> Since functions and data structures are completely different types of animal it is fundamentally incorrect to lock them up in the same cage.

That's one way of looking at it, but definitely not the only right one. OOP implies that there are objects, just as in real world, that can act by themselves, on themselves (or, in rare cases, on others). I can't really see how `user.addPost(post)` or `file.append(str)` is inherently wrong. By the way, what would the "FP way" of expressing this be?

> Everything has to be an object

Uh, I didn't get what the criticism was. How is Erlang way of defining time any better than https://docs.oracle.com/javase/8/docs/api/java/time/package-... ?

> In an OOPL data type definitions are spread out all over the place

Because data type definitions are secondary to class definitions. It's how the paradigm works. You don't think about data types, you think about how classes interact with each other.

> Suppose now I want to create some "time" object, where does this belong and in which object

Again, look at https://docs.oracle.com/javase/8/docs/api/java/time/package-.... This class only extends the base Object class.

> OOPLs say "hide the state from the programmer". The states is hidden and visible only through access functions.

That's not what OOPLs say at all. The state of an object is "hidden" from other objects, but programmer should have no problem accessing it (hopefully their IDE will help).

I'd also like to see how the author tackles UI programming in a stateless paradigm, let alone any performance-intensive tasks (for example, rendering in a real-time game).
This is a clear example of tyrrany of the majority.

The majority of people might not want to move state, which is fine, but they prevent other people from exercising their right to freedom of movement.

But this ends up being bad for everyone - if we are agreed that competition is good, this prevents competition between sovereign states for labour and population.

As an individual, I am stuck with whatever citizenship I was born into - and I have practically no opportunity to revoke my citizenship or try to claim a different or better citizenship. This is absolutely a derogation of a basic human right. I see it as no different morally than, for example, a caste system.
Let's say I can almost always understand automatic English<->German translations. It's decent in that regard. But it really is not a pleasure to read.

Personally I just read the English version, and I know my peers all do the same. I wonder how the use of automatic translation differs around the world.
Serious question: why is it unsurprising ?
> What is the difference between "messaging" and "function call"?

If the object supports the message, then it will execute some code. Otherwise it will just ignore it. This is a more dynamic approach than an explicit function/method call where the object must support that function.

You can think of e.g. Javascript events plus function calls (callbacks) that pass an object ("message") and a typeof/switch check as an equivalent.
FYI, this is Joe Armstrong (the creator of Erlang)'s rant on OO.

It's a pretty shallow article with hardly any substance that was written more in reaction to the fact that nobody is (was) paying attention to Erlang than an informed criticism of OOP.
Who wrote that,when and why should anybody care about what is being said?
I think it is interesting that this is essentially an somewhat subtle ad for investment banking for high net worth individuals.
It's a concept that's been done before: http://i.imgur.com/wteBl.jpg
It sounds like something Japanese people would do since apparently the commutes in Japan are horrifying long.

Those capsule hotels in Japan have been around for quite awhile.

I've thought of creating an apartment building of pod apartments it seems to be a Millenials thing to couch surf or share apartments.
Messaging is a protocol level abstraction, communication between entities [1]. A function call is a much lower level abstraction that does a <verb> to/with the data. One could have an entity that executes one function or many, or it could manage a whole sequence of events.

The Kay Object (KO) is more of an encapsulated microservice, like an Erlang process.

How would mail (SMTP) look if it was implemented via RPC?

[1] I specifically didn't use the word object because the Kay Object and the Java/C++ object are not comparable.
The first time I see a website translated so well to Italian.
"Oh, you know what Bill's doing, he's going for that anti-marketing dollar. That's a good market, he's very smart."
I agree, it's a family of closely-related implementation details.

You can also shrink the scope using visibility, get inherent namespace benefits for what would otherwise be loose functions, etc. The benefits are primarily organizational but organization in programming is a big deal.
I would love to see polygraphs calibrated with a simple game of hi-lo.
Pretty simple metric: Pick a number 1-1024, the questioner gets it right or wrong.
I hope that you're logically consistent and also consider other people who make their money by trampling on rights to be gutsy. for instance, gangsters, fraudsters, spammers... all have a similar business model in that they make money by ignoring the legal framework of their chosen business. certainly does take guts!
You think we'd be better off with Python, a non-typed language against a typed language?
Really, I like Python, but speed as well as typing is lacking.
I'm glad we have both languages.
It is used within the British NHS, which means that a standards body has determined that it is evidence based.[1]

See also: http://en.wikipedia.org/wiki/Mindfulness#Clinical_applicatio...

Personally, I've found it difficult to keep up the practise (meditating every day), but when I do remember it does improve things. Even as a one-off activity occasionally it is good for introspection, and identifying subconscious sources of stress allowing you to act on them.

[1] NICE aren't perfect, but they do a reasonable job.
but this also applies to those dual nationals who have no relsionship with the USA - I doubt that Boris Johnson found it fun to have to file another tax return when dealing with his late mothers estate.

BTW for non uk people Boris is going to be the next Leader of the Tory's and possibly PM within 5 years
Yeah, I was hoping for something like that.
These numbers seem to be incorrect, comparing to http://en.wikipedia.org/wiki/Visa_(document)#Visa_Restrictio...
My feeling is that the experience could be improved dramatically right now if instead of ever directly paying providers, we instead always paid the delta to the insurance company. My experience with provider billing offices is that they actively weasel and trick you into overpaying the negotiated rates and hope you don't go over the bill. And then they stall and "forget" to refund. Nothing ever makes sense until the explanation of benefits document is generated.

In other words--if we're not going to do single-payer, then it should at least be single-payer-per-patient.
JavaScript in a browser + DevTools offer a similar environment to Smalltalk + Squeak.

Sure, they're "similar", but at a relatively low approximation. The capabilities of the Smalltalk environments are simply on a different plane.

Manipulating the objects and meta/prototype objects are features that both languages allow.

This is sort of a bare minimum for all OO languages. Even Java with its rigidity allows for complex tricks with reflection and method body replacements for hot code reloading.
"Quit putting a goddamn dollar sign on every fking thing on this planet!"
What makes Scala more "practical" than Common Lisp, other than incidental matters of library support on the JVM?
Of course, that becomes just another brand gimmick, right?

It would be interesting to see what would happen if another company started using the same packaging to make a clearly inferior (or even just different) beer.

Last thought: reminds me of repo man (the one from the 80s), a great movie you should probably go watch right now, I mean come on, it's Sunday, relax.
wasn't this on front of HN like just a week ago?
You should take a look at the Reactive Manifesto [1] and the actor model [2]. My own personal and non-expert take is that message orientation is about the wholeness of the actors that pass messages. "Would you care for a drink?" is message oriented. Whereas many systems built on function calls are more like you jabbing me in the butt with a syringe filled with 20 ccs of alcohol.

[1] http://www.reactivemanifesto.org/

[2] http://www.infoq.com/news/2014/10/intro-actor-model
I was following the stream of tweets on Twitter last night for the fight as well. Clicked on a link through to a web interface of some guy's Periscope feed and he had a bit of the fight on. It was a great 6 seconds.

He was a journalist and I couldn't figure out how to find anymore from him (or maybe he was shutdown from the higher ups or got a warning from friends/colleagues).

Anyways, I spent some parts of last night trying to figure out what this Meerkat and Periscope was about (not yet a user). If anything, I could see how during big events this could be a big on-boarding method for these 2 services.

I haven't been this desperate to signup for service since begging for a G+ invite.
I'm surprised nobody posted this already:

https://xkcd.com/993/
Can you formulate more precisely (or by example) what you mean by "simply on a different plane"?
US State Department Site.
What type of characteristics constitute a positive result, for a situation like that?
I prefer this web site: http://www.doyouneedvisa.com/

It also gives you information about which passports a country allows:

Where can a US passport take you: http://www.doyouneedvisa.com/passport/United%20States

Citizens of which countries are allowed to enter the US without a visa: http://www.doyouneedvisa.com/border/United%20States

It's also fascinating to see the cultural divides like 'Western world', 'Muslim world', etc based on the passport and border information.

Another interesting thing is where the Israeli passport can take you: http://www.doyouneedvisa.com/passport/israel

The border of India is surprisingly restricted: http://www.doyouneedvisa.com/border/india looks like only citizens of Nepal and Bhutan are allowed without a visa.
So if "function call" and "message passing" are the same thing, why does Erlang support both?
This website claims its 168 countries: http://www.doyouneedvisa.com/passport/United%20States
I'm not on board with the tone do this article. evangelism is too strident by nature. this is essentially just as much marketing as someone trying to sell me something, but these people are trying to tell me how to think, which I find even worse.
Function call usually means static binding (call a specific address) or at best a virtual call (call address from a vtable).

Messaging is much more flexible - the receiver can have a custom dispatch function that looks at the message and chooses the implementation in a Turing-complete way (like "call foo if third argument is 7, bar otherwise"), logs the message, duplicates it to send to multiple implementations, serializes it to send over the network, whatever.

Obviously for this to be efficient, the underlying system often optimizes "sending a message" to "calling a function".
Who are we, as voters in democratic countries, to decide why they exist? We are to decide, by the very definition of democracy.

The visa requirements are not so much for the elites in rich countries; it's more for the general population - particularly in welfare states, the situation is that you can have open borders, or you can have universal welfare benefits for population, but you cannot have both.

Often it seems that it is actually the political and economical elite that wants to do away with immigration controls (to get cheap labor, for instance).
Assuming your friend lives in a democracy, and assuming your friend wants you randomly visiting, then if as you say your friend didn't vote on the immigration laws, tell them to be more active.

Have them write to their politi-critters. Get the law revisited. If enough of your friend's friends also agitate and your neighbors generally agree or at least don't oppose, the law will be revised -- problem solved.

If, on the other hand your friend is in the minority, and you being able to visit without immigration permition is still that important to them, they are welcome to emigrate to somewhere visits without visas are open to you.
Extended optional type for Swift
List of free cloud services/tools for mobile app developers
Review: UndoDB, a reversible debugger
I lived in a grape cooler on a grape farm for several months once (in the non-cooled part). It had a bathroom but no shower. I made one out back on a cement slab with a hose, a garden water wand and a tarp.
As an Irish citizen I was wondering which countries our British counterparts could get to that we couldn't :)

https://upload.wikimedia.org/wikipedia/commons/7/7b/Visa_req...

https://upload.wikimedia.org/wikipedia/commons/c/c2/Visa_req...

compare -metric AE -fuzz 5% Visa_requirements_for_British_citizens.png Visa_requirements_for_Irish_citizens.png comparison.png

http://i.imgur.com/QdCdb8r.png
To corroborate: http://www.heritage.org/research/reports/2008/08/who-serves-...
Here is my list, compiled after a lot of soul searching in my last job hunt. I recommend spending some time determining the kinds of things that are really important to you, and prioritizing them.

- Compensation: pay, bonus, benefits, PTO, perks

- Commute and/or openness to remote work

- Software development methodology, tooling, PM, environment (e.g. Joel Test)

- Role clarity for target position, and time likely to spend coding

- Company and team culture, team size, team consists of people smarter than me

- Company's organizational stability and steady growth (neither stagnant nor extreme)

- Institutionalized personal development/training, growth and advancement options

- Company's focus on tech, company's long term plans/prospects

- Future: will this position help me in my next job search?
I don't think we really did end up in an object-oriented world. I think we ended up with nominally object-oriented languages used in ways that are more struct-oriented than object-oriented.

I had the good fortune to do early Java work with a bunch of Smalltalk programmers, so I know you can write Java that is reasonably well object oriented. But I don't think I ever saw an intro-to-Java book that was any good in that regard.
My own personal view is:

- function calls: single recipient, return values, synchronous

- messaging: publish & subscribe, no return value, asynchronous

Also - using pure message passing "inside" a component is kind of painful, using pure function calls between components can be painful. Of course, this depends on your definition of "component"....
Messages and function calls are similar but interpreted at different times. In a OOP like Java the method is usually set at compilation. In Smalltalk or ObjectiveC the method is interpreted when the program is run. A class may not even know the method and either ignore it or handle it. Delayed binding gives more flexibility in designing class and increases the chance of runtime errors. In the olden days delayed binding made programs slower and executables larger. But that isn't much of an issue now.
Is there a tl;dr version in simple English?
No, it's not.

I'll check that test case again; we might have regressed something recently.
Schemaverse – space-based strategy game entirely within a PostgreSQL database
For instance, regarding "learning subjects". You believe that some change in eating habits has improved your ability to learn. Does your belief have a rational basis?

Subjects (let us call them "topics", to distinguish from "test subjects": people being experimented upon) are not some amorphous substance that you "pour" into your mind; they are all different. You also cannot erase a topic from your mind so you can fairly re-test the pouring after making some change, like diet or whatever.

If you have difficulty with a topic X today, you can find the same topic X easier after some passage of time simply because you were exposed to X, and let it "settle in your brain" for a while.

There is no way to to have a valid, objective test using the same person and the same topic, where we can determine that the same topic X became easier to learn due to some external factor, like not eating bread. The test is confounded by the subject's prior experience with tackling X: the "after" situation is different from "before" because of prior experience.

There is no way we can test different topics X and Y, either. If you have difficulty with learning topic X, and then some external factor changes (like not eating bread), and you have an easier time with topic Y, that doesn't conclusively show anything. The test is confounded by both similarities between X and Y (applicability of the prior experience with tackling X to tackling topic Y) and by their differences (difficulty in Y is unrelated to difficulty in X).

If you want to study this properly, you need large, random samples of people. You need control groups as well as test subjects. One group doesn't consume bread (or anything with glutent) and another does. Both learn similar topic in a similar setting. Does the test group show different progress from the control group? Different in a significant way? Even studies done at this level still have confounding problems that give us reason to be skeptical of their claimed results: such as improper sampling methods, lack of proper control over information leakage in experiments, poor accountability for the round-the-clock behavior of human subjects, and abuse of statistical methods to draw unwarranted conclusions.

Then there is the poor amount of data you have gathered (if we can call it data). How many times have you quit eating bread and observed the difference on learning or other cognitive tasks? Sounds like you've only done this once. You've done this once, and, what is more, you're biased: prior to the experiment you already believed the "gluten-brain" hypothesis already from your Internet readings, and were looking to confirm it. In honest research, even if we personally believe in a hypothesis, we must work on focus on eliminating the serious objections which tend refute the hypothesis, and not simply look for a few shreds of observations which suggest that it might be true. If we cannot eliminate the objections, we have to face the fact that the hypothesis may not be true after all.