skysight-inc/HackerNews huggingface dataset:
There is a very interesting theory that claims one of the major factors leading to the start of WWI (not II) was that Germans could not change their mobilization plans to anything softer than outright invasion of Belgium because there was no easy way to modify the railway schedules on which mobilization plans rely:
http://www.ae.metu.edu.tr/~evren/history/texts/taylor1.htm

So once they were forced into some kind of escalation, they had to escalate all the way. Other countries did not realize that (obviously) so they kept putting pressure on Germany with escalations on their end.
How to Build a Great Product – Lessons from Snapchat, Slack and Instagram Pt.3
The old yarn I'd heard for years is close to this.

Make it work.
Make it work right.
Make it work fast.

In that order.

Now it could be argued that "work right" can be read as "make it (work right)", or "(make it work) right", or both, but I think the point of this saying is that the "fast" part should always come later.
One of the lessons I've learned (that this article echos upon) is that you should _always_ factor the "long term cost" of adding a feature.

When I first started building TrueJob (job board software), I'd add in all these really cool features that made my app -- and at the time, they felt really useful. But over time, people weren't using them, so I built more features.

But then the old features I had built broke, so I had to fix them. And then they lagged behind the quality of other features I had written them, so I had to update them. And after doing this 5-10 times (as the software evolved and I dramatically increased the complexity of my application), these features that no one used really were painful to keep coming back to, but now enough loud users were using them that I couldn't remove them.

It made me really value the projects where we polished and did just a very few things, but did those very very well -- it lead to higher customer satisfaction, and less pain in the long run for us.
>China is not really "trading" with Africa, are they?

Well, aren't they? Not goods for goods, but they pay with money and infrastructure for resources like minerals and so on.

At least they are not having them as colonies, plundering, invading with their armies, or directly installing their own lackeys in power, yet -- as most Western powers have done in the 18th, 19th, 20th, and 21st centuries...
Exactly. Sure you don't directly elect them but they still face public scrutiny because nobody wants to be the swamp that some senator makes campaign promises to drain. Every few years (not nearly often enough IMO) an agency learns that lesson the hard way.
Indeed. Others have argued that although both spy on everything and everyone, at least the US is a (nominal?) democracy, while China is a dictatorship. True enough. But if there are bombs falling on your head, that doesn't matter much. Which of those two counties has invaded dozen of countries over these recent decades? One shouldn't be surprised that someone from South America, Africa, or Asia would prefer China over USA.
Some other formulations:

- Occam's razor https://en.wikipedia.org/wiki/Occam%27s_razor

- "Simplicity is the ultimate sophistication" (Leonardo da Vinci)

- "Less is more" (Mies Van Der Rohe)

- "Make everything as simple as possible, but not simpler" (Albert Einstein)
Some will let you specify files or directories to exclude. Others let you enable/disable one rule at a time.

It took us about 18 months of gradual chipping away to get our codebase to pass a linter, enabling one rule or class of rules at a time.

We're still working on test coverage. The key is to make sure all new code is covered (enforce in code review) and then very gradually backfill the rest. Add reproduction before fixing a bug. Add end to end coverage before a refactoring.
It's no different than stuff like not trusting browser input or avoiding a massive session when you're working on a Web app: it's simply basic best practice stuff that you don't even have to think about if you have an idea what you're doing.
So long as the software will only be shipped after all three stages, it's a useful metric to go by, I guess. It prevents you getting overwhelmed by the myriad amount of decision-making that writing software is. And also, so long as you accept the fact that you will need minor or major redesigns by the time you get to the "fast" version that is production ready.
Simple means that there is less to go wrong, but not necessarily correctness. A seemingly simple implementation can also hide a lot of behavioural complexity behind abstraction layers. The program might not crash, but it might not behave properly either.
I'll add that the significance of the formula is it's similar to

a*b + a*c = a*(b + c)

which you ought to remember from school as "factoring/factorization". Except in this case, " * " is replaced with "V", and "+" is replaced with "->". In mathematics, you call that a "distributive law". Some more examples are

a^c * b^c = (a*b)^c
p/\q V p/\r = p/\(q V r)
(pVq) /\ (pVr) = pV(q /\ r)
Think about it in terms of each choice you make.

I have a simple solution and a complex solution. Does the simple solution meet the requirement(s) before me? If so, I prefer it. Let's move on to the next requirement and consider my options again.

The alternative might be to look at your requirements, but choose a complex solution (over a simple one) because you think it might meet other requirements, either ones that have not yet been identified or ones you think are likely to happen in the future.

Are there times that the more complex solution wins? Probably. Consider you want to write a blog. You know that you can create an HTML (text) file and slap it on a web server and your blog has started. But if you've done this before, you might also know that you can throw WordPress on your server for a little more up front pain. You know you want comments and word clouds and date/time stamps and navigation. So you choose the complex solution. (You also know that you know face potential security implications, upgrades, dealing with users causing trouble with comments, having the PHP/MySQL infrastructure/hosting requirements...) Maybe you just wanted to dump your thoughts to the internet. Maybe the text file approach was better...

It may just be another way to say "avoid gold-plating your software."
According to whom? Not to the persons themselves if you ask them.

Some will agree to that, most wont. So hardly "true to all people" except if qualified ("according to my philosophy of life and not their actual sentiments on the matter").
Yep, you can do that. This weekend I made a shortcut that goes through your calendar, finds the next appointment, and then picks your maps app of choice to load up directions into.

I took it another step further and am working on a version where it looks at the prices on Lyft and Uber, presents you with the respective options, and calls a ride to your next appointment. Shortcuts in iOS 12 are a real fun little thing to play with, the most fun I've had programming in a while.

Happy to send it to you. I looked for your contact info but couldn't find any way to contact you, but feel free to reach out in my profile if you want.
I think you do whatever it takes to achieve correctness.

If simplicity helps achieve correctness, then great.

But correctness is not always simple.

Most people think there is a leap year every four years. They are wrong.
This generic expression indicates why "correct" comes first. "Simple" has it as a dependency. ;)
as I understand it, both simplicity and correctitude are requirements for most programs, but imo the article talks about the design, the writing process, where you should focus first on writing a program that's not more complex than it needs to be, because you are likely compromising the other parts too. this doesn't mean incorrect code is acceptable.

in any case, I think it's also worth mentioning that the article is probably talking about "incorrect" as in "accidental bugs", not as in "purposely ignoring the complexity of the problem". with the idea of preventing over-engineering rather than dismissing the specifications of a valid solution
The OP's advice, if applied in CPU industry, would be disastrous. Modern desktop/server CPUs are incredible complex... in order to drive maximum performance. Pipelining, OOO execution, branch prediction and speculative execution: these are all features that introduce tremendous amount of architectural and design complexity. In many cases, they also harm correctness, because they can lead to functional and security bugs.

And yet, if you try to compete with Intel with a CPU missing the above optimizations, you will get absolutely creamed in the marketplace. No one, not even those touting the importance of simplicity and correctness, will buy what you're selling.

Today's free market is too complex for these overly simple rules. Choosing between simplicity, correctness and performance, is a complex tradeoff that needs to be made on a case-by-case basis. Trying to find shortcuts to avoid these analyses may feel liberating... but you're ultimately only shooting yourself in the foot.
“Everything should be as simple as it can be, but not simpler” aka Occam's razor.
Why Are Young Billionaires So Boring?
I wonder how many people were introduced to this story from that scene in "Jaws"...
Two thoughts:
1. It's likely that IVF will soon allow people to screen for conditions like Huntington's prior to implantation.
2. Your suggestion makes it sound like a life lived with Huntington's isn't worth living. If you had the choice, would you choose never having been born over 40 healthy years? Only 100 years ago, this was longer than the average lifespan.
It sounds about the same.
How do you know how far to simplify if you don't pay attention to correctness? Simple has correct as a dependency.
It's also regulated in the US - I don't think you should take the current controversy to indicate that it's not.

"In 1987, OSHA established a Federal standard that reduced the amount of formaldehyde to which workers can be exposed over an 8-hour workday from 3 ppm to 1 ppm. In May 1992, the standard was amended, and the formaldehyde exposure limit was further reduced to 0.75 ppm."

https://www.cancer.gov/about-cancer/causes-prevention/risk/s...
You realize you just said freedom, equality, and justice aren't worth defending?
Sadly Docker is replacing Docker Swarm by Kubernetes
You can apply this rule to the structure of your codebase/class: make a lot of small, focussed classes rather than one big class that does everything.

This way you can easily debug it, replace the logic of 1 class without breaking your whole application.

One of the best advices for me was: your function must do one thing only, and do it good.
Edge cases? You mean we can't test for leap year by simply checking if the year is a multiple of four?
> The mass surveillance was a result of the wide sweeping Patriot Act after 9/11.

As if the three-letter agencies never tried to cripple encryption before September 11th, 2001...
Kim Jong Un, North Korea, and Nuclear Deterrence
Like the Stack Overflow survey, this one does not distinguish server-side/client-side JavaScript, making it look far more popular than it actually is when considering the data in context of server-side technologies.

If 100% of the servers were running PHP, the results would likely be 50% PHP, 50% JavaScript.

These survey writers need to modify their question, or add another one specifically requesting server-side tech so JS can be accurately compared with server-side only languages.
http://www.lmgtfy.com/?t=i&q=x+rays+of+fat+people
To be fair, spying on leaders and destabilizing national security threats is their job. They wouldn’t be a very good intelligence agency if they didn’t do that.

The question is more about building in faults intentionally, versus exploiting accidental faults. The later is fair, but the former is very troublesome. I haven’t seen any evidence of the first one. In fact, when such attempts have been made — primarily in encryption — they’ve been routinely shutdown. See Clipper Chip, and most recently NIST coming out against against the very ecliptic curve coefficients it suggested, and then going on to say not to ever trust NIST coefficients in encryption.
Airbnb is using misleading price tactics [video]
I get what you mean, but your word choice is off. The "electorate" means the people represented by the elected official, not he officials themselves. i.e. the electorate is the public
Emissary.io and Accelerating Learning
Laws of Distributed Architecture and How to build scalable applications
See if you feel that way when it's your bike that gets stolen. Especially if it's your primary mode of transportation.

Petty crimes like this ruin otherwise helpful ideas. In my city I've come across a number of Bird scooters that have been vandalized, had the GPS ripped off to presumably steal them for personal use.

If nobody does anything about that, an otherwise great idea that could seriously help people get around more easily and reduce traffic and pollution will simply not work, because we allow some people to get away with being assholes.
I think clear is the most important. Most software projects I've worked on in the past decade have gotten a lot of assumptions wrong. The projects that were able to turn around quickly were the ones that could find busted logic and fix it.

I've been using rspec-inspired testing frameworks to help with this clarity. Whenever I implement some early business logic, I assert that the logic I wrote does what I expect in words using rspec style tests (I've been writing a lot of JS lately so I've been using Jest). The kind that read like sentences: "the tax component applies 2% tax to all purchases above $400." Even if the logic is initially incorrect, being clear in our incorrectness lets engineers and (more importantly) product people quickly identify incorrect assumptions.

The logic to apply that tax in this example may not be simple. Often times, business logic can't be simplified any further and needs to be a bit thorny. In those cases, clarity of purpose is much more beneficial than simplicity, and I've found writing rspec style tests, and forcing myself to translate what the logic is doing into words, helps immensely with clarity. It clarifies my thoughts before shipping code, and it clarifies our business assumptions as a whole when that code is running in production.
Nissan Admits Internal Emissions-Test Results were Falsified
React isn't really anything like 90s UI libraries. It is, however, very much like the fairly recent native immediate-mode GUIs that have come out (https://github.com/ocornut/imgui, https://github.com/PistonDevelopers/conrod, etc).

The core feature of React is that your UI is a pure function of your application state. In (e.g.) the Win32 UI, you would receive events, and then need to manually transition your current UI state to the new UI state (hide this button, disable this input, etc).
I have a sense that what happened to Detroit is about to happen to Silicon Valley. Detroit once had some of the highest median salaries (and home values) in the nation. Then Japan came and decimated what had become a fat and lazy domestic auto industry. China could easily do this to American chip makers, removing a key cornerstone of Silicon Valley's tech leadership.

Meanwhile a lot of newer innovators in areas like software and custom hardware have already gone elsewhere. People are rationally concluding that the benefits of Silicon Valley are outweighed by its insane cost of living and that those same benefits can be obtained in other ways, so they're doing their work elsewhere. I personally know of several startups that maintain fake Silicon Valley mailing addresses while being located in places like Southern California, Denver, Indianapolis, or Nashville. They keep the address for its silly prestige value since if it says "Palo Alto" on your contact page people who aren't knowledgeable think it means you're cutting edge.

Another big benefit of the Bay Area -- namely one of the most interesting cultural environments in the world -- has also been largely priced out and decimated by the local real estate bubble. That eliminates yet another draw. People might pay a lot to live in a fascinating city full of cutting edge culture and interesting people but not to live in a glorified office park.

I see a future SV tech scene that's largely hollowed out and dominated by social media, an industry toward which the public is becoming increasingly hostile as they realize it's all about surveillance and mass manipulation. Chips go to China and newer startups go to cities with saner costs of living.
Certainly don't gold plate.

But simply meeting requirements is only doing the minimum possible. Now in a government job, that's okay.

But in a real job, if you see where the simple solution is OBVIOUSLY wrong for certain likely cases not considered in the requirement, then THE REQUIREMENTS ARE WRONG, or incomplete and this should be pointed out!
I use the Tradier API for Trading and data for my algo program. I tried to do it with Interactive Brokers before and did not get too far
Global Stock Market Capitalization to GDP Is Signalling Recession
I am quite surprised AFWall+ was only mentioned once in this thread. Have been a happy user since KitKat for same reasons... Peace of mind on my customized terms.
The OPs advice would probably be dissapointing if applied to making a curry too. It's fortunate he regularly used the word software throughout the blog, really.
Whoa, that's a bold statement.. Taiga doesn't have the air of overengineered, slow monster that JIRA has become.
Bet on Bitcoin price built on ether smart contract
I wonder how much of the data generated isn't true of non-Chinese people. NPR goes into detail on why diverse clinical trials are necessary: https://www.npr.org/sections/health-shots/2015/12/16/4596667...

> The blood thinner clopidogrel, or Plavix, doesn't work in the 75 percent of Pacific Islanders whose bodies don't produce the enzyme required to activate the drug. For them, taking the medication is like taking a placebo.

> People with epilepsy who are of Asian descent are supposed to get genetic testing before being prescribed the seizure medication carbamazepine, because the drug can damage the skin and internal organs of patients with a certain gene variant.

> And, says Oh, "African-Americans and Puerto Ricans don't respond as well to some of the most common asthma controller medications, and that's really a tragedy since these two groups are the most affected by asthma in the United States."
Ubuntu lockscreen bypass by removing hdd, devs say fix unlikely
Autocrack – Hashcat Wrapper to Help Automate the Cracking Process
I'm the editor of the Chip Hall of Fame: if you follow the link in the citation where Pixar/Toy Story is mentioned, it takes you to a whole Spectrum feature about the development of Renderman :) But this article was intended to be tightly focused on the creation of the NV20, and how it enabled real time shaders, so I didn't have room to do more than mention Pixar in passing!
>>I enjoy trying to solve problems and coming up with a high level solution, but I get stuck for hours on details or miss vital parts of the algorithm so often it becomes a drag.

Even those people who invented these algorithms took years to do it. How do you expect yourself to do this in minutes?

Ability to not solve leetcode problems is a very bad proxy to measure anything with regards to your skills in delivering software.
The simple thing to do then is to call an `isLeapYear` function that abstracts any complexity.

Abstraction allows you to hide complexity and make it a simple, reusable part again.
Easy to get to the comments if you want: Three dot menu -> Open in browser.
Why is my submition 'dead'?
Hi,
I just tried to submit a new post from a blog about PDF internal objects - but it was immediately dead.

Can someone please explain why and how this became dead?
Is it because I'm a just registered user?

Here is the post in case anyone can or will unkill it: https://news.ycombinator.com/item?id=17489959

Thanks a lot!
i think they are being very opaque about their plans and this is hurting their credibility.

They built the ability the launch k8s clusters through the docker tool. There are almost no tweets or posts about Swarm instead, their blog is full of kubernetes posts (https://blog.docker.com/). Even their coolhacks section is about "kubeflow". Top rated session at Dockercon was kubernetes.

i really hope they open up more and talk about their future plans and engage with the community.
Great observation, which links to something I have been trying to communicate for some time: the biggest "sin" of the US is not that it has illegaly invaded countries, or killed civilians, or spied, or stolen. The biggest sin is that it has squandered a huge moral, technological and economical lead, and instead of having lead with it for a fairer and multipolar world, it has, at every opportunity, tried to profit from the relative weakness of the "adversaries".

Now nobody believes in anybody, because when it was needed, principles were traded for strategic advances.
Rules are half of the equation the population must feel the rules are reasonable.

Gerrymandering is perhaps the most blatant example, but it's mostly a question of feeling the next election will be fair. If things are down to a coin toss of votes then you can feel it might flip next election. But many US elections don't even have someone running for the opposite party.
I don't know enough to confidently do the proper calculation, but I know enough that I'm certain it's more complicated than that.
You haven't yet answered any of my questions. Since this doesn't seem like a conversation but more like you trying to take my comments in the most ungenerous way possible, I'm going to stop here. But if you want to answer some of my questions and discuss the massive challenges around changing the global dev culture I'll be happy to continue.
I wouldn't. I'd learn a trade. Not to be facetious, I'm serious. I love programming. I never played video games, I spent my free time learning basic and then assembler in the late 80's. At the time, I was custom cabinet maker. I eventually become allergic to the 'smell' in oak, causing health problems. I had to give it up. I was busy 8 hours a day. I made decent money. Theirs a certain satisfaction at the end of the day and being able to point at something physical and say 'A good days work'. I began contract programming and eventually into full time employment.

Flash forward about 30 years. I'm still writing code professionally. I rarely write code for just enjoyment anymore. Those carpenters, cabinet makers, plumbers, electricians.. .trades people, make the same or more than I do. Their unionized. They can work practically anywhere and make the same amount of money. Not just in major cities. It doesn't see many radical shifts in technologies, unlike programming that is a life long learning because of advancing tech. Its VERY likely you will find your skill set obsolete without a real concerted effort of constantly upgrading. I wont even get into the culture which IMO is fostered by those writing the cheques and even your peers. Nor the moral issues that you will inevitably face - something few programmers ever talk about. It's a real kick in the happiness meter when something you write is designed solely to put many people out of work.

My opinion, my real opinion, is that if you find yourself writing code 'for fun' even if you don't know what your doing, pursue it. If your only in it for the career. Turn and run like hell. You'll be burnt out in 5 years and starting over.
All four of those are great! But if they are wrong, then it is still wrong no matter how simple.

Like saying leap years occur every four years. Simple!
Running app Polar Flow exposes locations of spies and military personnel
here's mine: http://itskrish.co/

my 'blog' is the writing tab (on mobile you just scroll down), i'd like to think the few things i've written about are decently novel/unusual :)
Browsh: The modern text-based browser