I wonder how this would change if you only looked at highly rated chess engines. For example, is a rook pair really not as good as a queen or is it just that _humans_ aren't as good at using the rooks effectively?
HN user
wmsiler
Every time I see this project, I think it looks awesome and useful, but I hate that it's written in python. I love python and I use it all the time, but I hate to see so much effort and innovation going into something that can only be used by this one language. If this had been written in C, Zig, Rust or some other language that produces easily embeddable binaries with a C API, then you could have idiomatic APIs for lots of languages instead of having to repeatedly reinvent the wheel.
I don't mean that as any kind of insult to the people who work on this project -- I'm sure writing it in python is way more pleasant than writing in C. I'm just bummed that projects I have in mind that I intend to write in a language other than python can't use this.
Folks would rather feel good and virtue signal than really solve the problem.
The idea that people are using reusable shopping bags because they want to virtue signal and not because of any actual desire to do good is a completely baseless and needlessly pessimistic viewpoint. A much more reasonable and likely explanation is that most people can't fully assess the environmental impact of their decisions, so they make the entirely reasonable assumption that if they can avoid throwing away a dozen plastic bags every week, then that's probably a good thing. That assumption may turn out to be incorrect, but that doesn't mean they have the harmful motivations you are accusing them of.
I see this question getting downvoted, and some of the responses are strangely hostile strawman attacks based on what those posters are guessing this person "really" means. I think this is a perfectly reasonable question.
A few years ago, I got a PhD in pure mathematics (low dimensional geometry and topology). As someone who loves pure math and spent many years devoted to it, I've had many conversations with mathematicians about whether we should be concerned with practical applications. One common argument, which several people have made here, is that there's been a lot of math that found practical application long after it was done. That really only applies to a very small proportion of math. The vast majority of math done has still never found application. So arguing that we should do that math because it may have applications later is kind of like arguing you should play the lottery since there's a greater than 0 chance that you'll win. Also, from the (admittedly biased) group of mathematicians I've spoken to about this, very few seemed to actually do math in the hope that it would be useful later.
Instead, people do math because it's interesting, beautiful, and challenging. I would argue this Mersenne Prime search is almost more like recreation. I could be wrong, since I never did much number theory, but I don't think this is advancing any research. It's just a fun hobby for people who enjoy math. I think doing math for the sake of its beauty is generally fine. I do have concerns about the climate aspect of this particular project though. This is a lot of power being consumed just for recreation. This project may not be big enough to have much of an environmental impact, but in general, I think we should be more mindful of not wasting large amounts of computing power just for fun.
they chose to have children, and I chose not to
Up until the pandemic, my work schedule had almost never been affected by me being parent in any way. I chose to have kids knowing that my wife and I would be able to continue working without this significantly impacting our jobs (after the first several weeks after they were born, of course), and that has always been true until this. You are acting as though parents fully understood the pandemic would happen and would affect them at the time they decided to become parents.
This argument is like saying that a storm knocked down your neighbor's house, but not yours. So it's unfair that your neighbor get some leniency from work while he tries to repair it while you are expected to keep working. "He chose to build his house on that side of the street, so he has to deal with the consequences."
This isn't about giving extra slack to parents. It's about giving extra slack to people who were hit particularly hard by this situation that they couldn't possibly have seen coming. I was forced to return to the office even though I'd rather be at home. I have a coworker with no kids but who takes care of his mother who is very sick and at high risk for COVID. He gets to keep working from home, which is what I'd like to do. It's never crossed my mind to be annoyed with him for that.
There's a weird trend on HN. For proprietary products (e.g. slack) I rarely see them getting criticized for having a proprietary license. If you are fully open source, then of course they love you. But if you try to strike a compromise and give away a lot while still keeping some licensing terms to let you make money off your creation, then you'll be bombarded by complaints about your licensing.
you hit play in Netflix on your phone — how many people would have any way to tell how much of their data plan that used?
Instead of focusing on the client, what about the server? How happy would Netflix be to reduce their outbound traffic by 20%? I'm guessing it's quite happy.
Thanks for the response. That all makes sense. I assume the FaunaDB devs would have already tested and fixed all the scenarios they could come up with, so it's reasonable you'd want an outside party to come up with even more scenarios to examine.
From the post, FaunaDB initially had several issues, which they've generally resolved. Jepsen is open source, so I'm curious why a database company wouldn't run Jepsen internally, work out as many problems as they can, and then engage aphyr in order to get the official thumbs up. Given how important data integrity is, I would assume that any database company would be running Jepsen (or something equivalent) regularly in-house. If they are doing that, then how is it that aphyr finds so many previously unknown issues? And if they aren't running Jepsen in-house, why not?
Despite being written in Java, DBeaver does let you connect to a server, then pick which database you wish to connect to.
That repo doesn't encourage anything. It's presenting data that the author found useful for another project they were working on, which presumably did benefit from micro-optimization. You are right that micro-optimization is usually not needed, but the repo and its author never claimed otherwise.
This is not directly related to this article (which I liked), but instead to the topic in general.
I heard of a study a few years ago where researchers divided a bunch of teenagers into a few groups (each of which was quite large), and each teen was allowed to go to a website and hear a collection of songs (same songs for everyone). Each person could then vote on which was their favorite and, importantly, they could see how many votes that song had already gotten just within their group. The researchers wanted to see if the same songs were picked as the favorite across different, isolated groups. The result was that each group had chosen completely different songs as their favorite. These groups were large enough that they were probably all statistically similar. Once people in a group saw that some song already had a lot of votes, they were more likely to pick it as their favorite as well. This suggests that in the world of pop music, success may have more to do with luck and social influence than with talent.
Ah, I found a link to a description of the study: https://www.npr.org/2014/02/27/282939233/good-art-is-popular...
I'm sure they weren't recommending you read every line and grok the whole code base of each of your dependencies.
I don't know how helpful reading source is for determining whether or not to use a dependency, but I find it very helpful to have at least a small understanding of how my dependencies work:
1. I find it useful for debugging. If a coworker or I have used a library incorrectly, understanding how the library works can help us figure out why it isn't doing what we wanted. Also, my IDE lets me do step-through debugging through dependency code as well, which can be helpful.
2. It helps with determining the capabilities of a library. If I know how a library works, then I can make reasonable guesses about what features the library has (or could easily add). I find myself thinking, "I'd like to do X, and from what I know of how library foo works, that seems like something it should be able to do." So I can go investigate that.
3. It helps with knowing the performance characteristics of the library. Just yesterday, I needed to implement some stats logic in java. I found an Apache Commons class that does exactly what I need, but by looking at the source code, I found that it uses an O(n) algorithm, which is fine for the cases they are probably targeting. In this case, I need more performance than that, and it's not hard to write this as O(log n). So I wrote my own instead. If my IDE (Intellij) didn't give me super easy access to dependency source code, this would have been more painful.
I would dial this back a bit. Worst case scenario, the commenter you are responding to is committing confirmation bias by making negative assumptions to match their existing negatives beliefs. Confirmation bias is easy to slip into even if you know it exists, and this angry response isn't useful.
Best case scenario (which I think is more likely), they are simply interpreting this story in context. Uber has several ethics scandals under their belt including ones involving them gathering and analyzing data for unethical purposes (guessing which of their customers have had one night stands).
You are right that interesting knot theory does exist in higher dimensions. It is appropriately called higher dimensional knot theory. It considers spheres of dimension m embedded in n-dimensional space. When m = 1, you get a 1-dimensional sphere, which is a circle. There are restrictions on which m and n yield interesting math. Intuitively, if the dimension of the sphere is too small compared to the ambient space (i.e. m is much smaller than n), then there will be so much wiggle room, that any knot can be "untied" without crossing itself (i.e. every knot is the trivial unknot). If the dimension of m is too big compared to n, then there is not enough room to twist things around, and so again nothing can get knotted.
It's been a while since I've studied this, but I believe it's the case that the only time you get nontrivial knots is when n = m + 2. The most well known case, of course, is when m = 1 and n = 3. But for every value of m >= 1, there are nontrivial knots in dimension m + 2. I believe it is indeed a rich area of research.
Linear algebra is the sort of topic where it seems like you can always go deeper. I also got an A in my linear algebra class in college. When I got to grad school for math, I took the first year graduate course on algebra and saw linear algebra in terms of algebraic things like modules and representations. I decided that I hadn't really known linear algebra before, but that I did then. Then I took differential geometry, which involves studying infinite collections of vector spaces parameterizes by points on a manifold. I realized I still hadn't know linear algebra, but after that I certainly did. Then I took a functional analysis class, where we did infinite dimensional linear algebra, where a lot of the finite dimensional theory has analogues but everything is more complicated (e.g. instead of finite bases and dot products, you consider things like Fourier analysis and Hilbert spaces).
The same realization that I don't know linear algebra came when taking a Lie algebras class, and again when learning homological algebra, and probably a few other times as well. There are certainly lots of areas of math that I've never explored that take linear algebra in some other direction (for example, I don't have any idea what the applied math guys do with....).
It's really an amazingly vast subject, especially considering that it's usually just thought of as a tool used to study more advanced topics.
Unlike most of the other commenters, I'm not a huge fan of this article. From the article, it seems the author hasn't really experienced much, if any, gender discrimination at work. That's great; it really is refreshing to hear stories of women in tech who are judged purely on their merits, as they should be.
However, her two takeaways from her experience are, "your skills will speak louder than your gender," and, "to become a female developer, you only have to do what any other smart dev would do...[i.e. work hard]." I think the problem is precisely that many women have found these statements to be false. Many women that are smart devs have gone into the tech sector with good skills, but found that they are still judged unfairly by their gender. The fact that this women hasn't experienced that doesn't mean the problem doesn't exist for others.
Also, the claim that if you work hard and have good skills, then your gender won't matter has the (probably unintended) implication that if you do find others discriminating against your based on your gender, then you must not have the skills or the work ethic.
I really don't know to what extent gender discrimination exists in the tech sector, but I think we should be careful to avoid over generalizing from individual experiences and we should be especially careful not to suggest that discrimination only happens to the developers whose skills aren't good enough to overcome other people's stereotypes.
Your description is correct. And to call the y-axis the Betti number is a bit misleading. If you are looking at a barcode for 1-dimensional holes, then at a given radius, the number of bars over that radius is the first Betti number (at that radius). So Betti number counts the number of holes, but the barcode graph is keeping track of each hole's "lifetime" as the radius changes.
It was explained to me that the zeroth order Betti numbers have applications for clustering.
That is correct, so perhaps "uninteresting" was too strong :) The 0-th Betti number counts the number of connected components of the space. So if we are at radius, say, 1 and the 0-th Betti number is 3, then we know the data points can be put into 3 "dense" clusters. By dense, I mean that for every two data points A and B in the cluster, there is a sequence of data points that you could step on going from A to B where each step has distance at most 1. I don't know if that explanation made any sense.
The barcode is not usually showing the zeroth Betti numbers. It's usually showing the first Betti number, which intuitively counts the 1-dimensional holes in the space. For each radius, there could be lots of those (imagine several circles that all have a single point in common, then the first Betti number will be equal to the number of circles). At a given radius, there will be one bar over it for each 1-dimensional hole. If a bar is really long, i.e. the same hole exists for many radii, then we assume that it must represent actual structure in the data, rather than just noise.
You could do a barcode for the holes of any fixed dimension, but as you point out, the 0-th dimension case is relatively uninteresting, and as you get to higher dimensions, it's harder to visualize and interpret what is going on. So dimension 1 is most common.