skysight-inc/HackerNews huggingface dataset:
Linux on the other hand is heading in the direction of windows.

The reasons for this, in part, are the different mentalities in the Linux and BSD communities. The Linux community used to be quite adamant about how "Linux is not Windows" and sticking to their paradigms, but more recently they've been absolutely obsessed with pipe dreams of conquering the desktop, and have been completely undermining their technical workflow in the process. Instead of "Linux is not Windows", it seems companies and communities alike have decided to pander to a crowd that has no respect for computing and Unix culture, who are used to closed systems that hold your hand, and quality is suffering in the process.

The BSD people on the other hand, have stayed true to their heritage, and show no signs of compromise. BSD people also tend to be very familiar with Linux as well, whereas the opposite is much less common.
Its no longer the case. Although there mobile enterprise products moved away from YUI slowly over the past few years.
Plus their "market"-share is significantly higher than Wells Fargo's.
The author's confidence in common sense is touching:

> It's still too early to tell, but the fact that Keurig's “DRM” can be cracked with such ease doesn't seem to bode well for the company.

> So that's one reason Keurig might be in trouble: because it bet everything on imposing a technological barrier which turned out to be ridiculously easy to get around.

Err, so easily crackable DRM will not survive legal challenges? (I seem to remember a story, which my Google-fu is insufficient to recover, of someone embarrassing Jack Palance during an interview by showing him the complete DeCSS source ….)
did you even bother to read the conversation I had with blueskin_ before posting this? I clarified my position quite a lot, specifically against the particular straw man you've just raised.
Hey! Thank you for the welcome :)
It takes the same amount of effort to type "2.0.0" as it does "1.7.0" but the effects of this choice are obviously much larger. Why is it such a roadblock to not break everyone else's code?
Here's a link to Casey Muratori's presentation on imgui. Important context, IMO, since this is the genesis of imgui as an easily-identifiable "pattern" that many others have run with in various languages/environments.

https://mollyrocket.com/861
While that's not exclusively following submarine cables, it is of course the more practical and useful solution to the problem. Thanks.
Thanks for the kind comment. You've discovered the reason for the slight rebranding in the title, which is now Learn Web Development: The Ruby on Rails Tutorial. I feel that with this 3rd edition the tutorial has definitively transcended its original niche, and no longer principally constitutes an introduction to Rails per se.

This is also why criticisms of the sample app (e.g., a Twitter clone) are off the mark: all but the final two chapters are geared not toward a particular app, but rather to the general problem of web development. The last two chapters exist mainly to introduce some non-trivial data modeling, but once you have the foundation in place, you're ready to start building whatever kind of application you have in mind.
AUI is kind of screwed. I remember it looking like an intentionally leaky abstraction of YUI. I would have used it had it not exposed so much in YUI.

Liferay, meh they seem break stuff with every new release anyway :)
Well said.

After 20 years on the internet, the phrase, 'if you're angry, you've already lost' has stood me in good stead (after lots of practice...)
I am concerned the primary purpose of this being on the frontpage is shaming someone.

I'm a big fan of semver, but I also test whenever I do a rm Gemfile.lock; bundle install (I've only managed a fairly small nodejs app in production, but I'd be surprised if people really don't test something like that). So he did something we think is bad -- but plenty of beginning engineers do this all the time, and while the discussion on github is appropriate, I'm not sure it belongs here on HN. People shouldn't be afraid of making something useful (as underscore is) because of the potential for extremely public shaming.
That's a very interesting way of looking at it.
> try pitching such an amalgamation to management in an enterprise environment.

I remember being is such a "pitch" meeting once with relatively senior managers. They were discussing the difficulty integrating some components of a client side web framework, and I recall some developer excitedly announcing how some <insert random moniker> by <some random hacker> had come out just 2 weeks ago on Github that would solve all their problems.

The looks on their enterprisy faces was priceless.
Pixi.js ( http://www.pixijs.com ) supports WebGL with an automatic canvas fallback as well (and is also used as the renderer by Javascript game frameworks like Phaser.io and Panda.js).
I'm sure jbyers didn't mean that it shouldn't have been posted. Older posts are more than welcome here. It's just the convention to add the year in parens (and for commenters to mention when we missed one).

Hacker News is "news" in the sense that a used clothing store near my house is called "New To You" :)
A few of us in Homepage & Verticals are using ampersand.js
Please don't take the advice to downplay rspec.

I think you may be confusing RSpec with testing generally. The 3rd edition replaces RSpec with the default Rails testing framework (MiniTest), but it still develops a thorough test suite.
This is the most depended upon node module on npm, this is not some beginner engineer - I think this belongs here.
From the paper:

1.3 Applications and Usage Cases

* Database Reconciliation

* Tracking Network Acknowledgments

* Oblivious Selection from a Table
> It would have been useful to say that sympy means "symbolic Python" or, more generally, "a symbolic mathematics library". This means one can submit algebraic and differential equations to be solved, and sympy can solve a great number of them.

I'm not sure I understand this comment; SymPy here is the name of the program (http://sympy.org), not the author's abbreviation. Surely one need not explain the etymology of the name of a program in order to give a tutorial on it?

If, on the other hand, you meant that it is good to learn how to use any sort of symbolic mathematics library, not just SymPy, then that is certainly true—but the author's advice appears to be quite specific to SymPy.
This assumes consistent schema among all entries in the JSON input. What if the schema is not consistent?
I wouldn't use either of those if you need durability.
Well lo-dash is better anyways, dunno why people are still using underscore
In Paris, the stations offer you an economic incentive. Unlike in Manhattan which is comparatively flat, riders in Paris enjoy coasting down from Sacré-Cœur and not so much peddling back up again.

So vélib encourages you to ride uphill:

> Return your bike to one of 100 stations perched over 60 meters above the rest of the city, and 15 minutes of free riding is added to your account. Riding uphill is now a power-up. The free minutes are a bonafide reward, too, saving money on destinations that are often outside of the free 30-minute radius. More bikes make it back up the hill. Since the program was launched in June, over nine years of bonus minutes have been awarded.

-- http://globalmoxie.com/blog/velib-bonus~print.shtml
While this is sort of a silly argument to continue, I'll suggest that "function" is probably the closest example you've given in terms of how "isomorphic" is a technical word over a common use word.

And the use of "function" in computer science for things which are hardly at all functions is a source of massive confusion and pain in the interface between the two fields. I believe personally that it leads to an enormous amount of improper education and broken intuition.

Let me provide another example—variable. This one is far worse than "function" in the confusion caused by its poor appropriation into computer science. The concept of variable is extremely well-designed in mathematics crafted over hundreds of years of philosophical and mathematical debate... and then it also become a mutable slot in Algol and stuck to every mathematician's chagrin.

It's not a good idea to copy technical words and abuse them in similar fields. It'd be as though people in the airplane industry started calling propellers "rockets" all over. Rocket comes from Italian "rocchetto" meaning bobbin/cylinder and so the shape of a propeller engine fits that definition and words are just words right?

Certainly, but that's just unnecessarily confusing. The person who popularized that terminology would be rightfully considered a fool.
The only major version bump that matters is the one from 0 to 1. After that, the project is better served if its maintainers do not fetishize major version numbers, or any version numbers for that matter, and realize that they're there to facilitate automation, not to satisfy some sense of human aesthetics.
The title-as-submitted ("Underscore.js author breaks 100s of modules because of a disliking of semver") is unnecessarily personalizing and editorializing. I'd suggest a title of just the facts: "Underscore.js 1.7.0 breaks modules by rejecting semantic versioning". (The native title, "Fix the versioning", contains insufficient detail to convey either the important warning-to-Underscore-users nor reflect the issues discussed.)

This issue highlights an interesting philosophical split.

I suspect the same minimalist, intentional aesthetic that has made Ashkenas's projects so beloved equally drives his dislike of version-inflation, whatever its convenience is to downstream systems on autopilot.
If the purpose is to alert people to perhaps subtle bugs in their code, then clearly it's relevant to the engineers here.

But if your point is that we should publicly highlight mistakes (or things we don't like) in packages because we expect people to do better... then I guess I should step out of this conversation. I don't want to talk highschool about someone building cool things.
No, you're right, there's no quad reconstruction. I imagine you could have just used quads in both the WebGL and Canvas renderers to achieve a similar effect.
You probably could have reported this, but my gut tells me it's to protect against stupid users.
Y Combinator to recruit more black entrepreneurs
1) Semver is hard. I've got publicly used libraries with millions of downloads and sometimes people use it in ways I don't expect and this results in breaking backwards compatibility. Most large projects aren't, or can't be true semver. Take for example Rails. This is a great discussion over an area over why breaking semver may be better than keeping it in one case: https://github.com/rails/rails/issues/16497

2) Breaking semver sucks, and I go hulk rage mad when my shit breaks.
Minor correction - the method the paper describes to 'dump' the table is a bit different.

It sounds like you're proposing that they iterate through all possible keys, check if the key is in the table, and if it is, dump that key and delete it. This would take O(2^b) time, where b is the number of bits in the key. Obviously, for reasonably-sized b, this can get a bit out of hand.

The paper takes a different approach. It looks for a cell with Cs = 1. Cs = 1 means Ks and Vs represent exactly a key-value pair. Dump that (Ks,Vs) pair, then delete (Ks,Vs) from the table. In the process of deleting, there will probably be some other cell that goes from Cs = 2 to Cs = 1. continue from there. Eventually, you should get all Cs = 0. If you ever get stuck, you're unable to dump the entire list.

That method takes O(n), where n is the number of elements in the table, and the fastest you could expect to dump any kind of list.
Yes. Not that I had any plans to write node modules, but I sure as fuck don't want to now, lest somebody discover my work and start using it and then telling me how I need to do things.
Illegally parking in a red zone causes the exact same disruption regardless of how much the car is worth or how much the driver makes. I don't see how it is more fair to fine a poor person less for committing the exact same violation of the code. I don't disagree that the fees are outrageous. I just don't think they should be scaled based on income.
I agree, looks like a mod has changed it anyway.
Given that this doesn't work on Android 2.* stock browser (and I assume IE8), it would be good to see some kind of fallback - preferably canvas and if that's not supported then a table of the raw data, which would be better than the current blank space.
The larger discussion about whether or not package maintainers have a responsibility to minimize user frustration at the cost of their own opinions and practices is worthwhile.

If I'm the author of an unpopular module, where I am the sole user, and I don't like semantic versioning or some other facet of package management, I don't follow it. Should I be expected to change my stance just because other people begin using my project? At what point is my project's community large enough that maintaining a healthy ecosystem involves sharing some control over the practices with that community?

It also doesn't help here that rather than having a rational discussion, the author released what can only be described as a troll package, where every version change becomes a major version. Using that would be the height of insanity, as noted in the issue thread, because all libraries would need to update their dependencies and re-release with every Underscore-semver release, due to dependency version conflicts.
I sympathize with people who make hiring mistakes — and that's pretty much everyone who's ever made a hiring decision — but they still have to pay the people they mistakenly hire for the work they did. It is both the default mode of the law in most places I know, and also just basic professional ethics.
That's just the type of list that I've been looking for -- looking forward to the rest.
Just today I ordered something online and their account signup email was a sorely missed opportunity, the content for which was clearly trapped somewhere deep down in their ecommerce source code :(
A jolt of brief happiness, not unlike that produced by a sugar spike, may not be all healthy. It's addictive and conditions you to procure instant rewards more, at the expense of delaying gratification which is essential for having some control over your life over the long haul (habits, hobbies, relationships, projects all take concerted effort with non-imediate payoffs.) In other words, the easy availability of these jolts of brief happiness (and ones not associated with getting fat or spending money) may well set the user up for long-term unhappiness.

I'm disheartened to see many of my friends who were never gamers (hence mostly women) now fall prey to addictive social games like Candy Crush and that Kim Kardashian shit, which are things tightly coupled with Facebook usage. I happily find myself immune to their draw--my teens were spent getting on and off addiction to all sorts of games, including even dating sims, though most having far more depth and intellectual stimulation.
I personally don't see Apple or Microsoft as being that evil. Microsoft is less evil today than in the past. Google is kind of a complicated case. Facebook is sketchy but at least using them is a choice. Palantir is evil.
IFTTT is in an excellent position to help users and the IoT industry solve the problem of non-standardization of clouds/APIs. For now they just enable a lot of simple "recipes", but they can now go WAY BEYOND this and make the "everything app" that let's me view/control/mashup all of my devices and social media, etc. Having the huge ecosystem already nailed down puts them so far ahead of everybody. I would pay for this app, but many will not. They could be a great acquisition play for a company that wants to dominate at this layer and is late to the game.
I think the problem is that it completely halts development of anything that uses a module that uses underscore (or even a module that uses a module that uses underscore, ad infinitum) since many modules have their dependencies written in such a way that npm will install 1.7, despite it not being compatible. This seems important enough to be something of a public-shaming.

edit: Please comment saying why you disagree, rather than simply downvoting.
We could also submit a link to your issue on GitHub with the title "Engineer Mindlessly Updates Dependencies and Deploys Without Testing, Shocked to Learn Application Doesn't work."
Facebook did something similar. If I recall correctly, the case could be entirely inverted (caps lock key was on) and you could still log in. I believe they did this by storing 3 versions of your password hash (initial case, inverted case, and original case), and the permitting sign in if your submitted password hash matched any one of them.

Edit: I found the source for this. http://www.zdnet.com/blog/facebook/facebook-passwords-are-no...
This is a big one many people miss.
> as if this was the culmination of a years-long effort by Smokers Against Ebola.

In some ways it is though. Research using marijuana is currently illegal, even if it gets FDA approval. And if tobacco were similarly illegal, then this research also could have never happened.
What's Wrong with Journalism About College?
Totally agree, however I feel there is a difference between choosing to break semver for a specific reason rather than a complete disregard for it.

Semver should be based upon the public API - if a dependent module is using undocumented stuff then they should pin the version down.
You had any left?
> It also doesn't help here that rather than having a rational discussion, the author released what can only be described as a troll package, where every version change becomes a major version.

What exactly about Jeremy Ashkenas makes you think this was done as a way to troll people? He still took a lot of time to make release notes and note all of the changes.
> SymPy here is the name of the program (http://sympy.org), not the author's abbreviation.

It's not a program, it's the name of a Python library responsible for mathematical functions:

http://sympy.org/en/index.html

Quote: "SymPy is a Python library for symbolic mathematics."

> Surely one need not explain the etymology of the name of a program in order to give a tutorial on it?

It's useful to know what these terms mean.

> ... but the author's advice appears to be quite specific to SymPy.

Yes, no problem there. SymPy's abilities appear in IPython (http://en.wikipedia.org/wiki/IPython) and Sage (http://www.sagemath.org/) to some extent also -- I've been involved in these projects for years.

My Sage tutorial: http://arachnoid.com/sage

My IPython tutorial: http://www.arachnoid.com/IPython

My Python tutorial: http://www.arachnoid.com/python
The connection between a project's developers and its community is noteworthy and worth discussing.

As a developer, how you treat your user base is relevant, and has a real impact on the value of the thing you have produced. We have successful projects whose leaders vary wildly in style, from Linus's approach to kernel development to projects that delegate final code control to community contributors.

Talking about the human elements that factor in to technology has merit; talking about the best ways to handle a project's community has merit. It's not "talk[ing] highschool".
Sadly, Jeremy Ashkenas is not a beginning engineer. He's just acting like one (or just trolling and wants everybody to switch to lodash).
This feels like an overly abrasive response that makes me seriously question whether using Underscore moving forward is a good idea. I really hate to say that because I think Jeremy's projects are awesome.

This is the most depended on module on npm. Why are you so intent on alienating the package consumers? IMO, having a version 47.0.0 and such doesn't seem all that terrible to me, and is still just as human readable. Other groups are doing it and it's working just fine (ie Chrome).
A maintainer did that.
If a framework goes away because a clearly better alternative crops up, it is called progress :-)

In 2006, YUI was a step forward compared to the general state of JS frameworks. Today ReactJS is a step forward compared to YUI. When something supplants ReactJS because it's clearly better, I hope, nostalgia aside, few people will protest.
My point was to remind people that they simply shouldn't care. It's like getting mad at yourself because you don't look like that perfectly cut (and photoshopped) Abercrombie model.

It's not an accurate representation of reality. I don't use facebook outside of what is required for API usage on whatever random dev project I get thrown into this week. The people that are truly in your circle of acquaintances probably don't need FB to stay in touch.
I was referring specifically to the underscore-semver package, not the Underscore project as a whole. Using it in actual projects isn't feasible in any way, because it would require that your project and any project you depend on that also depends on underscore-semver specify the exact same version, or else we're back with the same problem as before. And since you won't be a package maintainer for everything your depend on in most cases, that isn't feasible.

He's not released a version that obeys semver, he's released a version that treats any update as a breaking change.
Florida College Opens a Library Without Books
Show HN: Chan – pure C implementation of Go channels
$100k is going way overboard, but I do think a nice kitchen with nice materials makes a significant difference in usability and comfort (a nice kitchen can be had for in the $10-20k range). I've lived in all three of: 1) an all-linoleum cheap suburban house; 2) a nice apartment where the kitchen had tile/stone surfaces; and 3) a recent prefab-via-IKEA wooden-countertop kitchen ensemble. Of those, #2 really was the nicest to use, followed by #3 and #1. Lineoleum and wood are just much less practical countertop materials than any kind of stone. They're fragile and mark easily, so you have to be really careful with knives and hot items. Of the two, linoleum is worse on heat-sensitivity, while wood is worse on picking up stains. Granite has the advantage of being hard to stain or mar, so even though I don't like the look of those black-granite countertops, they are nice to use and maintain. Marble can be cheaper in many places (esp. Europe) and imo actually looks nicer, but is more porous so has to be frequently resealed to avoid stains.

If a kitchen is cheap enough, granted, it could be a reasonable strategy to just treat it as disposable and replace the surfaces every few years, if you don't mind it always looking beat-up. I grew up in a home with all linoleum and we did exactly that right before we sold it: put in all-new countertop and floor when we were about to sell and then avoided using it to avoid marring it, so it'd look quite misleadingly nice for the realtor showings. But it wouldn't be my first choice in surface, if I had any spare cash.
https://www.npmjs.org/browse/depended

_ is the most depended on node.js module. Maintainer, Ashkenas, introduced breaking changes. By default npm will pull down these changes without prompting because it was designed to follow semver. Maybe npm is at fault. Maybe it's Ashkenas.

However, Ashkenas knows his change is going to break people and just doesn't care.
What would you use? And why not RabbitMQ durable queues?
I started a new repo and wanted to know why several of the dependencies were not working, only way to fix it was to manually change the underscore version number in these dependencies - obviously you wouldn't just push an update to production without testing it.
Pairs of RabbitMQ brokers, used in a Publish-One-Subscribe-Many fashion for availability.

Scaling RabbitMQ at SoundCloud: http://vimeo.com/69960105

Edit: usually with durable queues on SSDs

Edit: text version of the talk: http://blog.pivotal.io/pivotal/case-studies-2/scaling-with-r...