skysight-inc/HackerNews huggingface dataset:
The title is misleading then. It should read "Y Combinator will expand outreach to minorities", not "Y Combinator to recruit more black engineers".

If you go with the original title it suggests one of two things:

1. Y Combinator has avoided hiring black engineers up to this point and will now stop (which I know is untrue)

2. Y Combinator will specifically hiring black engineers over other races (which sounds like a bad idea)
(If someone had told me 10 years ago, for example, that relational databases were soon to fall out of vogue for hierarchical/document databases or key-value stores, I would have said history seemed to be against them, but here we are.)

Those who don't learn from history are doomed to repeat it.
Yup! When I was in college I ordered 3 for me and my biochemistry-majoring roommates. We mounted one of them on the wall right across the toilet.
Jeremy, you make some great points here and I agree with you on most of them -- it's just that Underscore doesn't seem like the right place to start the battle.
I agree, but them down voters don't agree.
From a "cold hard cash" standpoint, it's a really good idea.

For example: Africa is currently going through a mobile phone revolution. Want to see staggering growth numbers? Look at mobile banking in Nigeria and Kenya. Look at what Sproxil is doing to combat counterfeit prescriptions.

Hell, in lots of places mobile phone air time is becoming as important as local currencies. Think a lily-white Stanford graduate would see a market in top up cards? I bet you they wouldn't!
I can accept everything you have written here - my feelings towards semver are very similar to your own. I feel in this instance what transpired was a deviation from what you have written - I went to start a new project and 2 of the dependencies I installed (out of 10) had problems, this release changed a lot of stuff that affected many of the dependent modules.

>If the asshole responsible...

If anyone was the asshole it was me, however I truly believe that underscore is better off and I would like to thank you for all the work you have put into it. :)
Can someone outline who the people arguing against Jeremy Ashkenas are?

It would make a big difference if they were ordinary users, vs maintainers of other important libraries of pieces of software.

While everyone deserves their say, this issue seems somewhat subjective, and a package maintainer shouldn't have to pay undue attention to individual users who don't necessarily represent the whole community.
Yes, Orbiter was great. It's sad that it's not really developed anymore. For those who don't know, it's like Kerbal Space Program, but using real ships and without Kerbals. It gave this distinct feeling of "the real deal" when you played it.

I remember my friend telling me he actually googled down some US Space Shuttle maunals and used the real checklists when launching in the game.
Even if the established/widely accepted standards of ethics made human testing in lieu of any animal testing the clear ethical choice, it still would not be practical.

Think about it, how would you work on potential cures of ebola in the (several times many year long: http://en.wikipedia.org/wiki/List_of_Ebola_outbreaks) gaps between ebola outbreaks? Deliberately infect humans to be used as test subjects? Put all research on hold until the next outbreak came around?

You'd be able to find plenty of human test subjects for diseases like malaria or HIV, but for many diseases you would rapidly exhaust your supply of sick humans.
What you describe with composite numbers would not work: data structures like IBLTs make sense when you want to store a small set S from a large universe U, and you want to use a number of bits that is linear in S and sublinear in U.

In your example, just storing the static lookup table with one prime number for each key in the universe costs about |U| log |U| bits. Furthermore, each cell needs to store a product of these numbers, and even if you can bound with k the number of keys colliding in the same cell, you need k log |U| bits for each cell.

This is very inefficient, and if you think about it you can achieve the same functionality with a standard hash table, which takes less space. In general, every time you think "I could use prime factorization to store sets", there is usually a more efficient solution, probably involving bitvectors.

The usage scenario of IBLTs is quite different from the usual scenario of storing key-value mappings: it is useful when you have an algorithm that adds and delete keys, and at any time during the execution of the algorithm the number of distinct keys can be arbitrarily large, but you know that at the end of the algorithm the number of distinct keys is "small". With a standard hash table, you would need a space that is proportional to the maximum number of distinct elements reached during the execution of the algorithm; with IBLTs you only need space that is proportional to the final set size.

A toy example is the following: someone tells you a set of n numbers, and then tells you again all the numbers in the set except for k; you want to return the k missing numbers. With a hash table you would need O(n) space, with a IBLT you just need O(k).

To achieve this, they use a standard trick in Bloom-like data structures (and perfect hashes, etc.): the property that there is always a cell with exactly one element; this property is preserved when you remove that one element, so there will be another cell with exactly one element, and so on, until you can retrieve all of them. This property is guaranteed with random hash functions with the right table size, and can be proved by showing that the hypergraph induced by the hash mappings is "peelable", which is a generalization of a standard graph with no cycles, i.e. a tree: in a tree there is always a node with degree 1, and when you remove that you leave at least another node with degree 1, and so on.
this argument supports reaching out to everyone who might have experienced educational and social disadvantages not just potential black applicants.
Ya, unfortunately, humans don't react well when you question their worldview.
Sure, but chargeback rates are low enough (somewhere between 0.2% and 0.4% of revenue for online merchants, much much lower for brick-and-mortar) that it's inconsequential when comparing it to flat rate $30. Additionally, 3% is about as high as VISA rates go -- WalMart, McDonalds, and the rest pay lower.
MBA Essentials – free courses
It depends on what package manager you are using. NPM would allow tablething to use 170.0.0 while leetapp used 180.0.0. Most of the discussion about underscore has been in the context of NPM. Of course your point still stands, because underscore is available in many other package managers, and is very often used without a package manager at all...
Is haystack open sourced anywhere?
Documentation in Agile: How Much and When to Write It?
Unfortunately not. It is so closely tied to our applications.
I feel for you. Same thing happened earlier to me with Google Web Toolkit.

Frankly, it soured me on the whole third-party framework idea, seeing how it was impossible to predict which one will retain support over the years.
if one of the technologies ever becomes obsolete you can always start writing new components with newer tech and integrate it with your existing app, without having to rewrite it.

This is the kind of snake oil that's been sold to developers for decades. We never (collectively) seem to learn.
And what's wrong with that? There should be outreach in many directions.
I'd like to see more of these surreal mundane-but-apparently-life-changing headlines:

PolyView Wants to Change the Way You Change the Channel on Your TV

LeftFootRightSock Wants to Change the Way You Tie Your Shoelaces

CordSucker Wants to Change the Way You Gather Your Vacuum's Power Cord
> For most of software history, version numbers indicated the relative progress and change in a given piece of software. A major release (1.x.x) was major, a minor release (x.1.x) was minor, and a patch release was a small patch. You could evaluate a given piece of software by name, and get a feeling for how far away version 2.0.1 was from version 2.8.0.

> But Semantic Versioning (henceforth, SemVer), as specified at http://semver.org/, changes this to make a mechanistic understanding of a codebase more important than a human one. Any "breaking" change to the software must be accompanied with a new major version number.

I'm about 80% sure you're mistaken on this. I don't have a spec document or an example to back me up, but I've been slinging code for almost 30 years now, and cut my professional teeth on a big Unisys mainframe. Before version numbering in software became totally subjective, they were used to indicate break/change/patch, as described in semver.org.

It was later on that software projects started to move away from that, mostly shareware and desktop software in the 90s, and only recently that projects like Firefox entirely lost the plot.

The reason that "semver" used to be so popular, as you note, is because it made enterprise IT manageable. Developers don't think about that much anymore though; they just expect big IT departments to roll out nightly updates and then deal with the fallout the next day.

(I'm not piling on or picking a fight, I don't use Underscore, I don't have a horse in this race. I'd welcome cited corrections or opinions from even older developers.)
Ikea's catalog now uses 75 percent computer generated imagery
Why is it not the right place? Why do people even have to update underscore--just keep with the older version. They also have a mostly drop-in replacement in lodash (well, last I've seen, at least). So I think it's a perfectly good place, it's not a library of "shiny new features", rather a staple that most people probably don't need to update, and even has an alternative.

And you don't fight battles without a deal of incoveniencing. The mere fact of the publicity this is generating makes it a fair ground to fight that battle. Which is to say I can see his position, despite liking semver myself--though it could be distilled into a better standard and that could be a net positive long term on software development that far offsets the man-hours now being lost.
Which works oh so very well.
I don't think it's quite a fair comparison. They talk about how no one got charged in the girl's case. But the person most likely to get charged would be the instructor, but he's dead.
Wow that was pretty fast, by OpenBSD standards. nginx was just added to base a release or two ago. Thanks.
Clever Launches New Instant Log in Feature
I don't quite get what you mean. The author's example is a GET request on some web service, are you arguing we should always be using queues instead of a request/response models when talking to external services?
Maybe someday we can say goodbye to Matlab. So many toolboxes to replace, though.
i think the point parent is trying yo make is. Even if you follow that advice there its not going to give you a bigger advantage. If there is evidence of that i would love to see it, otherwise I think we are in confirmation bias land :)
Negative shift operands in C++
I appreciate your thoughts as always. I'm sure this is frustrating for you because you have a bunch of users yelling at you to do something in a way you don't agree with, and it's not like they pay you for the right to do that.

A couple comments:

> Node doesn't follow SemVer, Rails doesn't do it, Python doesn't do it, Ruby doesn't do it, jQuery doesn't (really) do it

Node does (because it's <1.0.0 where semver's rules are different). Everything else you list is older than semver, so short of a time machine or a radical change to their long-established versioning policies, there's not much they can do.

> the responsible way is to set aside five or ten minutes, every once in a while, to go through and update your dependencies, and make any minor changes that need to be made at that time.

That works fine for your immediate dependencies. The reason why I think things like semver are important is that the above doesn't work at all with transitive dependencies.

If my app uses foo which uses bar which uses baz and the maintainers of baz decide to make a breaking change in a minor version, I'm not in a happy place when that wolf in sheep's clothing appears in my dependency graph. I'll see that my app is broken, but unless I want to fork bar and maybe foo and start mucking around in code I've never touched before, my options are pretty limited.

I don't think semver is perfect, but I find it does make transitive and shared dependencies a lot more reliable to work with. I'm willing to sacrifice human-meaningful version numbers to get that.
crazy to imagine the costs of 50 terabytes of storage in 1997. (also the pace at which those assets were probably loaded, sheesh)

if anyone has any clue, i'd love to know what the equivalent cost for that storage would've been.
It was thedaveoflife who made explicit his understanding that a label of "transaction security auditing" implied altruism. He's not really answered queries as to how that's the case.
It sounds like the maintainers reasoning is "pretty much every version is going to break something somewhere"
I would say instead, if you take the best offer, somebody else is determining your past. That's because the salary you receive becomes your past when you use it to negotiate the next offer.
You don't need to allocate pthread_mutex_t instances on heap, you can include them into the struct directly -

struct foo
{
pthread_mutex_t bar;
...
};
I worked while I was in high school at one of the Meijer's superstores and they had a company song book. All the younger employees thought it was stupid. A case of billionaires making us sing odes to them.
Davetiye
I really liked this article. The author gave real substantive answers to almost all the questions.

I would have liked to have more detail on his critique of the "guess and check" approach to science. My own opinion is that there is a very good reason why scientific progress follows the pattern he describes, of new theories being based on either new experiments, or in depth analysis of existing theories.

The reason is that science relies on belief in objective reality, and yet we don't know what objective reality is. So in order to reason about what the universe really is, the best and only starting point is our current model(s) of physics.

The moment we make an assumption about what reality is that isn't based in physical theory, we are liable to be wrong. For example, Newton was criticized for his theory of gravity, because people knew that reality was composed of little machine-like objects, interacting at a microscopic scale. There was no room in this worldview for Newton's "occult" force of gravity which acted at a distance.
I'm more of a c++ programmer, but I think i can chime in on the mutex/pcond being "part" of the struct. Essentially, OP means that why arent they on chan's stack? In the struct you have pointers to mutex and pcond which means you have to malloc them. OP is suggesting they not be pointers.
Pointing out problems that a certain group is facing does not automatically make people outside that group privileged. I think your comment was meant sarcastically but this error is usually done.

I am also "white" and in 25-49 group (towards the upper end, though), grew up in a different country, had my first home PC during the second year of MS degree with money earned from giving private lessons. None of my friends in the 80s had PCs. I am still struggling to bring my coding skills up to par caused from such a late start. I was not "privileged" in any way or form.

I'm now volunteering at a poor neighborhood high school in Chivago, teaching them Python and helping the FRC Team do the programming. I don't for this because I felt sorry for my privileges, I do it because it's the right thing to do.

Certain aspects of life may be correlated with skin color, we still shouldn't lump the two together.
Ukraine Crisis Russia – Railway Station Set on Fire by Militias in Donetsk
I agree that it's not straightforward, but there are lots of industrial processes that take as long as growing a plant. Scaling physical production is always a huge problem. There have been years where it was difficult to manufacture the flu vaccine in the required quantities, and I believe that generally involves incubating the vaccine in an egg.
For nothing? So something that is used only temporarily is worthless? If you didn't have to write boilerplate or your own functional library because underscore existed at some point, you had a net gain in productivity and was able to release your own code faster, regardless of whether you eventually end up switching.
Another view:

Of all the recent ideas of how version numbers should work, SemVer has this advantage: I know how to interpret version numbers.

But when FF 31 becomes FF 32 and Chrome 37 becomes Chrome 38, what will that mean? (I honestly don't know. Can anyone explain?)
Every date-based Firefox update breaks compatibility with binary add-ons (ones that link to the libxul.so C++ library). According to both SevMer and traditional library versioning practices, incrementing the major version is the correct thing to do in this case. I'm not sure why you say it has "lost the plot."

Application software has generally used version numbers in different ways from library software. It's tricky for products like Firefox that are both application and library.
What eps means is that, currently you have a pointer to a mutex in your struct:

struct chan_t { pthread_mutex_t* m_mu;... }

And initialize it like so:

pthread_mutex_t* mu =
(pthread_mutex_t*) malloc(sizeof(pthread_mutex_t));
pthread_mutex_init(mu, NULL);
chan->m_mu = mu;

eps's suggestion is to put the mutex directly in the struct:

struct chan_t { pthread_mutex_t m_mu;... }

and initialize it by passing its address to pthread_mutex_init:

pthread_mutex_init(&chan->m_mu, NULL);
chan->m_mu = mu;

that saves some mallocs and dereferences. If you are new to C, the notion of taking the address of fields in a struct may be unnerving, but you get used to it :)
Rubiks Cube in CSS
interesting to see what Squarespace is going to do in response to this
You guys should consider donating to the International Anti-Poaching Foundation[0][1] which fights these poachers. The founder, Damien Mander[2], is an Australian ex spec-ops sniper who is using his military experience to train the park rangers since they, unlike the poachers, tend to be poorly equipped and trained as well as understaffed.

[0] http://www.iapf.org/en/

[1] http://en.wikipedia.org/wiki/International_Anti-Poaching_Fou...

[2] http://en.wikipedia.org/wiki/Damien_Mander
Henry Kissinger on the Assembly of a New World Order
> #include <pthread.h>

That is not "pure C". "pthread.h" (POSIX threads) is not part of the C language standard, it is a system-specific header commonly found on UNIX systems. Windows has a different threading system for example.
America is the best place you can go. Yes you have to work twice as hard, but if you don't like it, perhaps think about moving to another country.
Made me immediately think of: https://www.youtube.com/watch?v=yXUhQnOYR54
Increased centralisation, due to economies of scale for miners, is bad. Peercoin offers a reward for operating a node (provided you have a balance of Peercoins), due to its proof-of stake (POS) hybrid mining scheme. Bitcoin's reward for operating a full node is having access to the network, but you don't have any say in what transactions are confirmed unless you run a miner.

Peercoin seems better from this point of view, because it provides a method to reward decentralisation. Economically, I have no idea. The POS blocks pay you a % of your balance, inflating the currency, but at a much smaller energy usage ( a fraction of one cpu)
The struct is currently storing a pointer to the mutex (which was allocated with malloc). The call to pthread_mutex_destroy does not free that memory.

Valgrind is your friend :)

http://valgrind.org/docs/manual/quick-start.html#quick-start...
You know what they say...opinions are like assholes...
Semantic versioning means less for a product like Firefox or Chrome than for a library like Underscore that thousands of other pieces of software rely on.
To be fair, banks may also be grossly overvalued. Their market valuations are entirely dependent on large government bailouts (although Wells Fargo was certainly in good shape relative to their peers in 08.)
Version numbers attempt to compress an awful lot of information into one totally ordered number. I'm really looking forward to seeing the approach in https://thestrangeloop.com/sessions/towards-annex-a-fact-bas...
If people are unaware of YC, perhaps they are not of the caliber we want creating next-generation startups.
Related to issue #1805 (https://github.com/jashkenas/underscore/issues/1805) and other hn post (https://news.ycombinator.com/item?id=8244700).
> You can literally go through each of the 23 profit models in the book and ask, "What would my product look like if I applied this model to it?" If you spend 2 minutes on each model, I bet that you'd have some excellent ideas in just 45 minutes.

Completely off-topic, but since you phrased it this way, I want to capture it and make a point.

This is a very good practical advice to follow literally. That is, take a clock and think about a particular business model for those two minutes.

It reminds me of a following quote:

"(...) another good question to ask yourself straight out: Did I spend five minutes with my eyes closed, brainstorming wild and creative options, trying to think of a better alternative? It has to be five minutes by the clock, because otherwise you blink—close your eyes and open them again—and say, "Why, yes, I searched for alternatives, but there weren't any." Blinking makes a good black hole down which to dump your duties. An actual, physical clock is recommended."

( http://lesswrong.com/lw/hu/the_third_alternative/ )

If you think about it (let's say, for 15 seconds ;)), it's surprising how rarely humans sit and actually think about something even for real five minutes. I try to use this technique whenever I face a hard question/problem. It doesn't take much time, and it's actually surprising how much you can come up with in those 5 minutes.
Türkiye'nin en hesaplı düğün davetiyeleri sitesi.
What's cost of the new construction? Maybe 5-10 million? What's the upfront costs of all the miners? Maybe another 2-3 million? What's the electricity costs to run the machines per month? Maybe a few hundred thousand?

Even at 90K/day, this guy has a gigantic hole to crawl out from under before he starts to sniff a profit. That's assuming that 90K is a constant for the next 6-8 months. What if his production slows down or the market swings down in a day and he loses a few million?

BTC is anything but stable, and any way you look at it, it's a huge risk.
> Node does (because it's <1.0.0 where semver's rules are different)

You might've missed the paragraph preëmptively responding to that (it was added in an edit).

SemVer says that you shouldn't be pre-1.0.0 if you're actively used in production anywhere. Node has been out for years. Treating the current versions of Node as pre-1.0.0 is a joke.

From the semver.org FAQ:

> How do I know when to release 1.0.0?

> If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you're worrying a lot about backwards compatibility, you should probably already be 1.0.0.

Node definitely applies.
Working at a large pharmaceutical, I can assure you this is real. There's a governance structure that rivals the size and budget of a medium sized business' entire software team's.
38 years and still counting ;)
Got it, that makes more sense.