skysight-inc/HackerNews huggingface dataset:
Isn't this behaviour exactly the same as with commas at the end? Here, to comment out the first line you would need to edit the second. With commas at the end, to comment out the last line you would need to edit the second last. Other than that, no editing of other lines is required.

In fact, in a language like Javascript where extra trailing commas are allowed, it seems that this argument makes even more sense for commas at the end than it does for commas at the beginning. Then, there would never be a situation where you would have to edit a line besides the one you were commenting out.
Ayahuasca: A Strong Cup of Tea
"But if he signed it knowing the consequences then he should live them in my view."

Why? It is not immoral to break a contract. It happens all the time in good faith. The "wronged" party is only entitled to provable damages. Which as long as he isn't running away with trade secrets, or cold calling his old clients, then what provable damages are there?

Contracts are a civil matter. It is immoral to write a "punishment" clause into a contract and nobody should have to "live with them".
> I'd like to read people treating languages and platforms as tools and not as cargo cults. You don't read carpenters writing they'll ditch hammers for screwdrivers because the old cupboard they are fixing uses nails. You read carpenters debating the pros and cons of using hammers versus screwdrivers. And you read better carpenters that debate how cupboards are designed, because it is ultimately more important than whether they are glued, nailed or screwed.

The problem with this carpenter analogy is that it simply doesn't scale - a carpenter is not going to build a skyscraper. To build skyscrapers we need engineering - the practical application of science - something which is completely missing from our field. We call ourselves software engineers, but we're really software masons - we can do good work in small quantities, but we're terrible and building big structures - which is where many of our software problems lie.

You can't build a house on some land, and later turn it into a skyscraper either - because the foundations are perhaps the most vital part of the structure - they need to be designed with some knowledge of the size, shape and mass of the structure they intend to support. The approach taken in software development is the tacking on of new systems - building structures equivalent to say, the Kowloon walled city (unsightly and unstable).

To do engineering and science, we need math - and we have no sound way of modeling imperative languages/programs in ways that makes them useful as mathematical concepts. FP is math - so building up concepts in these languages is providing a richer set of math objects and abstractions which we can later use to build our large structures. Using FP doesn't mean we need to abandon imperative coding - it just means we should clearly mark the effects of such imperative chunks of code, so we can treat them mathematically.

Carpenters are still relevant in the construction of skyscrapers - but their responsibilities are only a small part of it - they're given clearly defined boundaries of when and where they should be working. This is really how we should be doing software - we need engineers and architects to build structures, using science and math, then assigning isolated environments for the "masons" (e.g, junior programmers) to work in - in such a way that a mistake by a junior programmer cannot bring the entire skyscraper crashing down. (Turns out this was understood in the 70s, because Unix pipes and processes are still the best approach we have to this day).

Of course, this doesn't mean it should be "my Coq is better than your Twelf" - we need to separate the math from the textual representations and even the execution models.
So, by disjoint unions, I'm going to assume you mean sum types, like a value that can be either a pointer or an error, but never both, and you use special keywords to access one or the other.

Sure, that's really useful - you guarantee that you can never access the unset half of the value. But it adds a lot of complexity, too. You need a way to declare values of this type - this means more keywords and/or more special syntax. You need a way to then access both halves of the values, so now you have to add pattern matching... that's actually a lot of complexity to add to a language that only has 25 keywords.

All that, instead of just doing what Go already does, which is to return two values and just have a convention of checking the error before the value... which works really well 99% of the time, and doesn't require all the rest of that complexity.
> But then again, the main reason for why Haskell hasn't attracted me has nothing to do with technicalities and everything to do with a vocal minority of Haskell users that I find totally repulsive.

This.

> The expression problem can be solved in Haskell in a straightforward manner using type classes.

Lol, WUT? No.

Btw, I think that you are actually trying to lecture Scala people about typeclasses just shows how clueless you are.
Do things like Disqus work?
The deeper purpose of networking.
App Store Optimization: Keyword Selection Tips For Mobile App
> I wasn't referring to external tooling, which I agree gains a lot from strong types (specifically because a load of programs have been forbidden, which makes their job tractable).

Careful. You also want to allow unsound choices in completion options, since the programmer could have made a mistake or is unaware of the more specific type needed to support some operation (especially if they are using code completion for discovery purposes). Sometimes the path between valid program A and valid program C is an invalid program B (think about editing code without the ability to create transient syntax errors...how horrible would that be!). Type theorists often get this wrong, because they are so focused on correctness :)

> When dependent types and proving correctness are mentioned, there is often an assumption that some magical ability is gained.

I thought magic was needed just to do the type checking. I don't think anyone who has gone through the program proving process would think it was easier (e.g. via F*), a lot of sweat is required to get those rock solid absolute guarantees.

> As for "reified types" affecting run-time behaviour, I would call those tags rather than types. For example, the class of an object is a tag, not a type.

This is only the overly narrow type theorist's definition of type. The class of an object is obviously a type/kind/classifier via the informal definition of type. In a statically typed language, it also happens to correspond 1-1 with the static type of the object as created, which is incredibly useful from a usability standpoint. Erasure likewise is pretty bad, and languages that don't erase (C# vs. Java) are much more usable.
25 Habits of Excellent Freelancers
Location: Russia, but hoping to relocate

Remote: Yes

Willing to relocate: Yes

Technologies: Java, C++, Compilers, Clang/LLVM, JavaCC, Clojure, Haskell

Resume: http://www.linkedin.com/in/ivanbabushkin

Email: $ echo am9ncm1zQGdtYWlsLmNvbQo= | base64 -d
Making code better with code reviews
More code does not mean less clear. I've seen some really hairy list comprehensions that I broke out into 3 loops and made them 1000x more clear, because you could actually follow what each conversion was doing.
Haka – Network security filtering based on Lua policy files
"4. No One in the US Has Been Prosecuted For Running a Tor Relay"

That's a bit of a misleading statement. I'll agree that there haven't been any people prosecuted because they ran a TOR relay directly but there has been at least one case where they prosecuted or at least harassed a guy on child pornography charges because he was running a TOR exit node and saw the activity coming from his IP. Perhaps that wasn't in the US but still.
Not sure why this was downvoted. I'm curious too.
Location: Vancouver, BC / Paris, France

Remote: Yes

Willing to relocate: Yes

Stack (pro): Ruby, Rails, Javascript (jQuery, AngularJS), Clojure, PostgreSQL/MySQL, Redis, AWS, Chef

Stack (personal): Go (Golang), Erlang (and Elixir), Rust, Docker

Resume: https://www.linkedin.com/in/xperez

Github: https://github.com/DuoSRX

Contact: jobs@xavier-perez.com

Other infos: http://xavier-perez.com

Full stack developer with a strong preference for the back-end part of web applications. I'm currently working for KissKissBankBank (the leading European Crowdfunding website) in Paris (France) but will be leaving the company and moving to Vancouver BC in August. I'm already authorized to work there, no boring visa paperwork for you!
I'm looking for the next big challenge, ideally in a small company or startup. I love to learn new stuff every day and work with a team of cool people.
You'll have to explain to me what you mean by composition if you don't mean foo(bar(baz())) or foo().bar().baz() Composition means putting things together, if you're not doing it on one line, then what's wrong with a loop?
My worry is that by using Tor at all you become a target for active monitoring, even if the content and destination of your Tor communication can't be decrypted.
The blob gang.
OMG. That is awesome. Thanks for sharing. What a cool idea. Looks nice too.
They are human. They've also been programming for over 30 years with numerous big successes that prove they know what they're doing.
Signs are on it.
>> Employment law in most countries recognises that it is not an even negotiating situation, and thus tends to put substantial restrictions on contract terms in recognition of this.

This is very important, and something that very often gets lost in discussions of employment contracts, minimum wage etc etc.

The prospective employee needs to make rent. The prospective employee needs to eat. These are very basic and powerful motivations and we (as a society) should not let business take advantage of these to low-ball on pay or impose onerous contract terms.
Original discussion from way back when:

https://news.ycombinator.com/item?id=4603204
At the expense of 50% malnourished children in India http://m.timesofindia.com/india/Every-second-Indian-child-is...
One can imagine the immune system being a kind of type checker for the body. Is it "static" or "dynamic?" Both! The "innate" immune system is basically fixed at DNA compile-time, while the evolutionarily later "adaptive" immune system is updated at runtime by exposure to pathogens.

I think it's unfortunate that we conflate strong explicit typing with static compilation. Common Lisp, for example, can be seen as statically typed; it can give you compile-time type errors. But you can also recompile at runtime; add new types at runtime; and so on.
Docs was google's only docs service, and subsequent acquisitions have been squashed into it (e.g. etherpad). Maps is google's only maps service. Blogger was more-or-less google's only blog service until recently, and I wouldn't count on it surviving much longer in the age of google+. Youtube happened the other way around, in that google killed google video and merged it into youtube.

Is play music more established than songza? I think yes, and google is unlikely to maintain both of them in parallel.
Considering this is shipping I'd say it's rather the other way around.

Versionpress sound like they're going to try something a bit smarter with the database file though.
When video games mix pop culture and surrealism
The new design is good, but thanks for keeping the old one up too.

The old design gave YC an identity in my mind, and differentiated it from the rest of the web.

It conveyed to me that YC didn't have to follow web trends to get people on their website. I visited the website for its superb content.

Rather than making text harder to "digest", the simple display of useful information appealed to me, and was a refresher.

Perhaps, this may not be the preference of many other users.
Chasing Life – Yabanci Dizi Tanitim
Indeed. This makes a complete mockery of the contention that HN doesn't have downvote problems.
Dating at Work Is a Dangerous Sport
US auto sales surprise with strength in June
There are several already.

Answer intentionally as vague as question.
It's a post-Snowden world, so I can't say I'm surprised nor that I think it's ridiculous. I also strongly suspect that EU will follow the suit shortly.
It sounds evil but balkanisation of the Internet is a natural result of the erosion of trust in corporations and other stewards of this medium. The NSA/GCHQ scandal only pushed it a little further. We all know that any great medium starts out as a bastion of understanding, sharing and common good until a bunch of trolls show up to ruin it all (ahem, reddit, ycombinator, digg, etc). Until that moment we enjoy all the freedoms that such a medium offers and we assume it is something of and unto itself, never to be destroyed. In the Internet's case the trolls were capital coming to understand how to modify the Internet to extract wealth and governments looking for a competitive edge over others using the Internets structural flaws to obtain that edge.

The erosion in this case is more harmful to many people than trolls showing up to reddit. So I think it's natural that people recede slightly from the idea a globalised common communal identity created by the Internet and look toward their national structures to protect them. As Snowden said in some QA "Our founding fathers did not say that all [US persons] were created equal". Until the irony of that statement is not cleared up internationally and human rights are absolutely universal balkanisation of the Internet will come. Russia, despite being an odd democracy, is only jumping onto a boat that already sailed in Brazil and other locations.
An equally interesting, and perhaps more useful, question I always follow that with is "What's the worst thing about workign here"... The cop out answer is usually 'it's a big company so you get some politics and inefficiencies'.. I suppose a good follow up would be; "how does the company intend to change this going forward?" or even "how does it compare to other places you've worked"
Looking forward to the co-location treehouse hanging desk, because you know... we all came down from the trees (o;

Hilarious post, I wish there was more on the blog.
internet of things standard are hard to match
I do wonder about technical solutions: are there any decent way to write sites that would:

1. Run in the browser.

2. Would be anonymous.

3. Would use an anonymous host.

4. Would encyrpt every private message, and would have clear differentiation between public and private content.

5. Would have an easy option to download an extension to offer greater security.

6. Would enable average programmers to build sites with it.

Is there something like this? And if not is it technically possible and what are the technical challenges ?
Crowdsourcing Help a robot out.
Very daring to just post a better alternative like that! It's exactly what I thought though, "So.. I never have to get any work done?".
That whole series was a great read. Having grown up after the SNES (I only have very vague memories of the N64 as a kid), I spent a good hour reading it and looking up wiki articles in between.

Those footnotes were annoying though. In-text they're numerical, but at the bottom of the page they're alphabetical. Wtf?
Songza is an 8tracks clone made by connected people in the valley, funded by connected people in the valley, and bought by rich people in the valley. Their product is not as good as the competition (8tracks, spotify, soundcloud cover everything, maybe rdio has some pretty slick features too), but still they did incredibly well...
It's weird. Most of their playlists are made by the songza team, I would love to see their numbers.

Anyway, if you're looking for crowdsourced playlists, I would just use 8tracks
It's sad that it's spiraling down to this but it is in practice no different than what the US is doing. There's no free speech without privacy so this looks like a "choose your dictator" kind of thing.
Why United Airlines Will Track Tiny Animals From Its Jets
Given that the EFF's advice is specifically intended to help sex workers hide themselves from the government this is of relatively little relevance.
Europe has similar law (personal data should not leave Europe), but it is not as widely enforced.

Edit: since I am getting down voted let me explain.

> The EU Data Protection Directive requires that personal data a company collects can not be moved somewhere where the consumer will have weaker protections than in the EU.

Practically it means that data can not be moved outside of EU, since they would be under different jurisdiction. For example court in EU must approve all data disclosures. If data are in US the disclosure could bypass courts in EU, there could be even gag order.

Simply put, the EU can not enforce its law in foreign countries. Safe Harbor and similar are nice in theory, but it still does not put them under EU jurisdiction.

BTW: Irish Google got sued already for sharing data with american mother-ship.
"The problem with Go is that it wasn't designed to implement any large projects"

What? Uh no. That's exactly what it was designed for. Big projects at Google. It has been stated by the creators of Go multiple times.

The simplicity of Go helps in many ways that are not immediately obvious. You always know how memory is laid out in a struct, so you know how much memory you're copying with every instruction. You always know when you're generating garbage, so you can take steps to avoid it when it matters. In general, everything your code tells the computer to do in Go is very obvious, so you can actually reason about what your code does on the small scale and not just on the big scale. And yet, it does this without the added unsafety of C, and without all the enormous complexity of C++. And it does that in a way that you just can't achieve with Java's "everything is an object".

That's why people are flocking to Go. Because it has Java's ease of writing with C's ease of tweaking, and yet fixes a lot of the inherent problems in both languages.
where the FSB can easily access it without those pesky court orders - this is part of Putins crackdown along with banning certain words from use period.
Ousted Tinder Cofounder Sues For Sexual Harassment
Quote from Kyrgios before the game:

"Between us, we have 14 Grand Slams, so it should be a great game".

The guy's got a great future.
Do you have the link for that? Thanks
Energy companies hit by cyber attack from Russia-linked group
What My Kitten Did This Morning Now I've No Office
It is not exactly what you are asking, but the answers are about the same as if you asked "Why can't everyone just use X?"

Beyond the language and deployment factors, languages are optimized for different human factors. Some languages give up a lot of expressive power and flexibility in order to optimize the performance of large teams of developers with relatively poor code discipline. But for me personally on my side projects I prefer to have features like stronger static guarantees, less boilerplate and more expressive power. It seems hard to reconcile these different approaches in a single language.
The Features module in Drupal 7 is a semi-workaround https://www.drupal.org/project/features
but I've hated Drupal a lot because of this. Too much stuff is stored in the DB.
Should every turing complete language fit?
Utah is an extreme right wing theocracy. Whatever happens in Utah is most certainly _not_ the work of unions.
i am.
The EU laws allows for data to leave assuming you follow guidelines that makes sure the EU laws around privacy are respected in the country the data is exported to.
Aside from the politics, this causes me to have 2 questions:

1) Are there any cloud file storage systems along the Drive/DB lines in Russia that apps providers can integrate with?

2) Not that anyone here knows the answer, but will the cloud storage providers implement data routing that complies with these rules (I guess yes, if the money is worth it)?

If anyone here is interested in country specific SaaS integrations (Germany, Brazil and Russia, for example), my email in profile.
LOL, double stealth. That gets me every time. Is this blog actually written by jgc, or just inspired by his original post on here? I see he submitted this item, so presumably he wrote it.

EDIT: here's the original: https://news.ycombinator.com/item?id=4166183
this is so adorable
> it sounds a bit oxymoronic, at least on practice. I'm yet to see a normally functioning system written using "safe system programming language".

Just some examples of operating systems that worked for several years in certain circles.

Xerox Star systems coded in Mesa.

Lilith coded in Modula-2.

Spin coded in Modula-3.

Oberon coded in Oberon.

AOS coded in Active Oberon.

Ethos coded in Oberon.

Original version of OS/400 coded in Modula-2.

Mac Lisa and initial versions of Mac OS coded in Object Pascal.

VME in Algol 68

The real time systems driving lots of trains, planes, helicopters and medical devices running Ada code deployed directly to firmware.

> i hope you don't mean Unix here because Unix has nothing to do with either "text based" or "GUI based" - it is completely orthogonal to that.

I sure do.

UNIX System V does not offer any GUI interface.

POSIX does not offer GUI support.
I think it's fair to say that 'everything is an object' was always a bad idea. I'm a little surprised that it took Ruby devs that long to realise that (Java devs still seem fine though).

My favourite example is the 'Utility' module that almost every project ends up with at some point. Why would that ever be an object? In C++ you'd open up a namespace and trow a bunch of free standing functions at it. Doesn't have to be more complicated than that. Classes are supposed to be one method of abstraction (among many others) that programming languages offer to us to structure our code.

The real problem with OOP aren't objects though. It's inheritance. Complex inheritance graphs are probably the best way to couple supposedly independent parts of your code as tightly as possible. And they're notoriously hard to wrap your head around. I guess a good example are component based scene graphs (again, in C++). Whenever you're implementing some sort of graph, chances are you start by writing a class called 'Node'. That's fantastic as long as you stop the chain there. Each individual object in your scene should be a subclass of Node that has any number of independent components (mesh component, audio component, AI component, what have you) attached to it. Favoring composition over inheritance is always a good idea as far as I'm concerned and I'm happy to see languages like Rust adopting it.

I don't want to get into the whole TDD thing right now. All I'm gonna say is that assuming your code didn't break anything because all tests passed is a risky business and testing JavaScript UIs might not be as useful as you think. Having said that, Cinder (http://libcinder.org) had a bug in it's matrix multiplication code not so long ago that could have easily been detected with unit tests.
Wow. Did you make this? Put some contact info on your page if so! Implement history and labels and you have me as paying customer. No joke.
I would guess he is referring this one: http://www.codeofhonor.com/blog/the-starcraft-path-finding-h...
Why is the Future so Scary?
That might be true in theory but tell it to torrent sites, shut down without ever touching a single bit of pirated data.
I blogged about building a ultra-basic Chrome extension which could be used like this:

http://colinramsay.co.uk/2014/06/30/chrome-new-tab-reminders...

The way Chrome lets you override the new tab page via an extension is ridiculously simple.
Sounds safe.