342 karma · joined March 31, 2020
For example, take this line from IBM's refutation of Google's Quantum Supremacy experiment: "64 PiB of disk space are required for 53-qubit circuits, and 128 PiB for 54-qubit circuits. Both fit within the 250 PiB available on Summit."[2] If you have to use over 50% of the total disk space on one of the world's strongest supercomputers, you're probably going to run into some major issues once we start hitting the 55, 56, 57, 58, etc. qubit territory. And although this is a moving goalpost, the supercomputers clearly aren't going to get better faster than adding single qubits onto the current chips. Already Rigetti is announcing an 80-qubit quantum computer, and IBM is making an 127-qubit computer.[3]
So, IMHO we are far past the point where quantum computers have to prove themselves superior to classical ones, at least on designed tasks. I don't think we should compare failed P vs NP proofs (which, IMHO is a problem we're anywhere from 5 to 10000 years out from solving).
All this being said, I do have to agree with IBM on the value of the term "Quantum Advantage" versus "Quantum Supremacy". Quantum computers have not yet demonstrated a significant advantage in terms of cost on any problem, but I'm optimistic they will in about a decade. Probably in problems that are already naturally fit to quantum computers, like studying interactions between particles in quantum physics. Also for the record I'm a layperson with just an unusual interest in this field, so it's easily possible I've missed some incredibly important central problem that everyone is being quiet about.
[1] https://arxiv.org/abs/2007.07872 [2] https://arxiv.org/pdf/1910.09534.pdf [3] https://arstechnica.com/science/2021/06/quantum-computing-st...
You would think that it would eventually lead to some stopping point, but there are additional funnels and issues. For example, finding professors in university to teach software engineering is hard, because all of the people graduating from their universities in software engineering know they can make much more money in the industry than in education. Places like Stanford or MIT (who are already trying to be selective on purpose) can afford it, but community colleges or even high schools can't give them 1/3 of what they would make otherwise.
IMHO building teams that work together well is far more indicative of success than individual high performers, and as a result the economic impacts will not happen to individual "10X" performers but rather teams, organizations, and companies that can harness the network effects (i.e. what we see right now, where companies like Facebook, Google, Amazon, Apple, etc. are more dominant than individual people).
Starting off from the beginning: The last thing the world needs is more hero-worship. The idea of a "softwarenova" is somehow even more self-absorbed than "rockstar" or "ninja". It is completely antithetical to open source principles of collaboration, meritocracy, and community. We should strive to include as many people, and as many differing viewpoints, to the creation of software as possible. This is both in the name of diversity and inclusion as well as correctness and reliability. Creating people who are "above the common masses" can only hurt this goal. To the (hypothetical) interviewee's credit, she doesn't like the term.
Secondly, this idea that things in our universe are somehow prematurely over constrained, while in the design universe you work with design briefs and things are looser. The problem in the real world is that things are too often underspecified - Either in terms of latency, or availability, or security, or correctness, or even in what problem you're trying to solve. I find this extremely confusing to be coming from someone who has worked on F# and functional programming. Functional programming has such a strong emphasis on types, and eliminating classes of errors via types. I think if the author went to work in a software shop using C# or Java or any non-functional language he would instantly recognize how this loosey-goosey approach leads to software that is utterly unmaintainable.
Thirdly, while I do agree that a great number of problems are ill-defined, that is not because they are wicked. Wicked problems imply novelty and uniqueness, but the vast majority of software is simply executing some CRUD operation on a set of data. It isn't unique or novel, there are clearly correct and incorrect answers, there are alternative solutions available, etc.
My imagined universe is almost the complete opposite of this one, that is, instead of thinking of software engineers as designers, we should think of them as mathematicians. (Or at least, that is the mental model that would help the world the most). Software should be formally verified, and be proven to be correct rather than aesthetically divined to be correct. We should seek to maximally specify software, much further beyond the way the industry is currently working. We should overwhelmingly reject the notion that certain people have a gift to work on this, and others do not, and instead seek to bring everyone we can up to a level of technological literacy. We should standardize as much as possible to make software easier to use, rather than having this boutique approach. We should avoid thinking that age has anything to do with how well someone can program, young or old. In other words, the field of software development needs to grow up, badly. If the field could live up to the title of "Engineer" things would improve dramatically.
S<U> map(S<B> b, (B -> U) func) { //stuff}
Which allows you to do things like: Optional<Integer> i = 4;
(Integer -> Float) func = (i \* 2.5);
Optional<Float> f = map(i, func);
This ability becomes much more powerful when you're parsing some file. Imagine you're parsing some JSON of people, and you're using https://schema.org/Person as the type. So the JSON contains things like additionalName, affiliation, birthPlace, email, gender, image, etc. and each of those are typed respectively - a Name class, Affiliation Class, Location class, Email class, Gender class, Image class, etc. Now imagine that the service you're calling may fail to return certain values.In java, it's idiomatic for libraries like Gson to return null on the fields that aren't returned - so if you try to get a person who doesn't have an additionalName, the additionalName field in the Person object will be null. It would be nice if it could be an Optional<AdditionalName> instead of just an AdditionalName to force the null check, but then the library becomes extremely painful to use. You would end up having to call additionalName.get() whenever you just want the name. If you have HKTs, then you can operate on the fields and ignore the fact that they're technically Optionals.
It's also generally recommended in Java to not use Optionals in fields in classes, or to express the optionality of a value in a constructor. If you do, you have to wrap values in Optionals to make the object, which harms readability.
HKTs can become even more powerful with types other than Optional/Maybe. Either, Monad, Future, Comonad, IO, Functor, Applicative, Task, etc. You would be surprised how many design patterns in Java end up being just a simple combination of these types that are much more ergonomic with HKTs.
1. Vastly improved signal-to-noise ratio 2. Better relationship with code reviews
For 1, in most CR systems you can mark the comments as resolved once their fixed. They don't even have to show up once they're fixed. That should improve the signal-to-noise ratio. In addition, nobody should really just be glossing over any comment, regardless if it's a nit or if it's a serious change.
For 2, I still think that you should try to not take code reviews personally. Perhaps it's more a sign of the environment or the company these CRs are happening in? That "zen-like acceptance" isn't something that just pops out of nowhere, it's something that has to be developed and built. Strangely, when I get a bunch of nits on my CR, it actually generally makes me happy. It's proof that the other developers on my team couldn't really find anything wrong with the code I wrote.
Of course, I'd still love to have 0 comments instead of a bunch of nit comments, so I 1000% agree with using automated tools to lint code, ideally in multiple places (before build, before commit, after commit, before merge, after merge, ...). I think it also helps focus reviewers on giving more meaningful feedback.
Of course, I appreciate concise writing and if it were 100 unedited rambling pages it would never be posted on HN or read by anyone. But admitting that seems to be antithetical to the entire point of the blogpost. It just seems like the article doesn't even believe in the idea. It also feels like there wasn't a whole lot of thought put into the post, and I guess that's evidenced by the fact that the art class anecdote doesn't have a source.
The blogpost also ignores all of the issues related to being prolific. Imagine a would-be-weightlifter who has awful form, but does a ton of reps. Not only is their exercise near worthless, it could be potentially dangerous. Or in music, where you could accidentally continually practice a bad habit instead of taking the time to find a mentor and learn how to practice correctly. In software, you could potentially produce something that is buggy and insecure by default. If the code were then included as a dependency in larger projects it could be a cause for a security disaster. I think there's more to high-quality work/practice than just doing it more often, even if that ends up being the most important part of getting good at something.
I was trying to download Postman to test something out earlier this week, and not only is there no button on the webpage to go to downloads, but even when you download the app it still prompts you to sign up/log in with a tiny greyed out link at the bottom saying "Skip signing in".
If you want to really drive sales, stop with this user-hostile adversarial bullshit and start putting my needs first. For me, this article is still putting the companies needs first.
I do see the rise in single-parent households being an issue, but there's something confusing about that. I would expect kids to "act out" more if there was more psychological pressure on them, but the rates of things like teenage pregnancy and underage drinking is down over the past decade. This is in contrast to rates of depression increasing dramatically, even by 50% (around 8% to 13% in about a decade) in that exact age group (12-17).
Finally, as a young person myself, my (relatively recent) experience of highschool and being a teenager was quite the opposite - it's not that adults aren't holding them accountable, it's that they are holding themselves hyper-accountable. Both in the fact that they are comparing themselves to world-class performers on social media, and that there is now a permanent record of their social interactions online which can lead to politically correct woke mobs going after them. Being young in the US feels like walking on a tightrope while there's an earthquake going on.
That's not to say that the loss of faith in institutions, especially the news, isn't a big deal, but personally I think this problem is 10 to 100 times bigger than that. It's an economic collapse, a pandemic, growing income inequality, climate change, the effect of technology on our minds, what we put into our bodies, and a thousand other things I can't even begin to name.
The more I read and think about the world today, the more I think that mental health is the problem of the 21st century, and that the previous list of issues is actually all secondary to the problem of mental health. There are enough resources and enough intelligence to solve all of those problems and more if we had the will.
1. Not clear how likes proxy to "success" in terms of dating. Some people are just looking for one night stands, while another might be looking for something more long term. If women are consistently looking for something long term, and have to get to at least the third/fourth/x-th date to have a "success", then it makes sense for them to be pickier than men who only are looking for the first date.
2. Not clear how this extends out into the general "Dating Economy", it's quite possible that there is a certain pathological case of people who get stuck in the dating sphere for an extended period of time who end up distorting the statistics. Compare this to the fact that 50% of marriages end in divorce, but that's mostly driven by people who get divorced multiple times, and first marriages have a much higher success rate. Among people who actually do settle, it may be that women have more inequality in their dating market then men do.
3. We're not mentioning that women aren't swiping as much because for them there is a serious fear of being assaulted when going on a date, while for a man that is greatly diminished.
"There are 3 billion Spanish speakers worldwide"
But then you learned that only 500 million were really fluent, and the rest ranged from broken Spanish that was enough to get by in a Spanish speaking country to people who were forced to take a Spanish class in highschool and never used it again.
I think this concept of "fluency" in games is probably a more useful metric. The question is, if I dump you in front of a game that you've never played before, but it conforms to the language of video game design, how quickly can you beat it? I would imagine that someone who only played Candy Crush would not understand how to move their camera around in a 3D environment, for example.[1]
You could extend the metaphor further, for example Spanish is spoken in many different ways around the globe, and therefore some people who speak one dialect of Spanish can't understand another dialect of Spanish. The same could be true for games, and we would need to classify and understand these dialects.
[1] https://www.youtube.com/watch?v=ax7f3JZJHSw Interesting video talking about what games are like for a non-gamer, shows an example of not understanding how to move the camera and the player at the same time.
I also seriously question these sorts of projections, especially out as far as a decade. There's so many variables and unknowns, and I'm not certain how the IRS arrives at this conclusion, and it's not clear what assumptions they're making in their projections.
What I really need is a recent comprehensive source on how COVID is affecting the economy. Right now all the information is coming in piece-meal and I have no idea what to make of it all.
Or maybe these iPods were used for multiple purposes at the same time. Anywhere where you needed a non-suspicious device to do something extra, you could get one of these custom iPods.
I don't think its possible to fool the regulators, but even if it was possible there are dramatic consequences for lying. Volkswagon tricked regulators into thinking their car didn't emit as much as it really did in 2007-2015, and ended up having to pay 33.3 billion dollars in fines and returns[2]. Volkswagon stock went from a high of around 27 to 12. 5 years later, it's only recovered to around 16. The massive lawsuit that would be formed if Tesla's (or other automated car maker) car was found to be unsafe would likely be even larger. Furthermore, it would crush the self-driving car business semi-permanently. VW at least still gets to make environmentally safe cars, Tesla and Waymo's main value proposition is dead in the water.
Basically, even though there are incentives to lie and cheat, I think the incentives to try to make something that is safe is far, far greater. And while I'm sure there are Google cars driving the same route every day, I'm sure there are also tests being done in all sorts of conditions all over the planet. I think that practically, socially, and politically speaking, we can use billions of miles driven. The stakes are way too high to lie.
[1] https://en.wikipedia.org/wiki/List_of_self-driving_car_fatal... [2] https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal
I've also seen studies trying to show the opposite, or trying to show that there is no causation either way, so I don't think there is anything resembling a consensus on this issue at all.
Given a set of clauses C_1 ^ C_2 ^ ... ^ C_n where each clause is an OR of 3 logical variables, find assignments to each variable to maximize the number of clauses satisfied.
The algorithm is to just assign each variable randomly. For each clause, there are 8 possible assignments, and 7 out of 8 make the clause true. Therefore, randomly assigning them gives you a 7/8-approximation.
What makes this so fascinating to me is that the difference between a (polynomial) algorithm that gets 7/8 right and one that gets 8/8 right is the difference between a child randomly guessing and solving all of the world's most important problems in a single algorithm. It could be worth trillions of dollars. Of course, it's probably impossible and therefore P != NP.
I imagine there's a similar parallel in being a "hacker". When a hacker is a kid, they're rebellious because they're intelligent and bored in their schoolwork[1]. And they like to take things apart and figure out how they work, and they're not totally understood by the rest of society that just wants them to settle down and conform to a set of social rules. I imagine that that kid would find the identity as a hacker to be empowering. And I think that is empowering because it's finally saying to this kid that his behavior is actually useful and good for the world, if he can harness it in the right way.
One final small point: I don't think that people necessarily always "consume" video games. Building games, like Minecraft/Factorio/Terraria/Starbound/Oxygen_Not_Included/Satisfactory/Stardew_Valley don't seem particularly consumptive to me. I struggle to identify competitive games as consumptive either. If I play a game of soccer with friends, I don't say that I'm "consuming" the game of soccer. So why shouldn't the same apply to Fortnite? Then there are single player games that don't fit the builder profile. But a lot of single player games aren't necessarily consumptive either. Recently I've been playing Dark Souls 1, and while some of my experience in that game could be called consumptive, I don't think all of it does. A lot of that game is figuring out how it works, building a strategy to combat a boss, and what I'm doing there is not exactly consumptive.
[1] Just like gamers: https://youtu.be/fJOm1zXvVcs?t=277
The usage of "energy" here is a metaphor for how the dopamine system is invoked in the brain. Introverts have less dopamine released in a social interaction than extroverts do, and that gives the impression of "tiredness" or "having less energy".