skysight-inc/HackerNews huggingface dataset:
I drank 4-5 cups (5 oz) of coffee each workday for quite a few years now. Somehow I only associated the whole thing with work, so it didn't even occur to me to drink coffee on the weekends. The end result was two days of constant sleep with headaches and general grogginess, followed by a workweek of OK-ish performance.

I am now at week two in the process of quitting, because I'm getting increasingly concerned about being in the withdrawal zone as well as being "fully caffeinated". The first week was much worse than the second one. Hopefully I get back to my old self soon.
Mike Acton is also a game programmer. Maybe it's just because of the sources I tend to read, but I do think the game industry is leading the way here and I hope others will follow. Perhaps it's because of the focus on performance, but I think any industry could benefit from that. I curse the lack of attention to performance in modern software development every time the Twitter app takes multiple seconds to load on my 2 GHz smartphone.

> maintenance is comparatively less important

I don't agree with this. Certainly maintainability is less of a concern for the gameplay code specific to each game, but game development also encompasses engines and tools which span multiple titles and are used for many, many years. Also, the trend toward free-to-play and subscription games is making maintenance more of a concern even for single titles. World of Warcraft, Team Fortress 2, League of Legends, Clash of Clans; these titles are going to be maintained for years to come. Valve Corporation recently transplanted an entire game (DotA 2) from one game engine to another, while people continued to play.
And they burn cheaper fuel
https://medium.com/@webseanhickey/the-evolution-of-a-softwar...
Two days ago there was a fairly long discussion about a similar argument ("The sad state of Docker")

https://news.ycombinator.com/item?id=12364123 (217 comments)
I don't know. Poor countries are often poor because of corruption. International courts might aleviate that and reassure foreign investors. Might introduce corruption at a different level though.
That's great for Europe as they can access the US market however it means the US cannot access the European market. I am sure that selling your products abroad is much more preferable to importing goods.
The GoF book is a dictionary. When it came out, we all got names for patterns we use when appropriate.
The thing that must die is over-reliance on formalisms where they don't add value.
(Because there absolutely are places where they do.)

Having the taste to use the right approach for each job is what sets experience apart!
And yet invariably it's refactoring into a ton of small functions. Round and round we go...
Did they perhaps mean "modular" in the sense of the computer being composed out of a set of standardized modules, with none of the modules having been constructed for that computer alone?

Not just component-wise upgradability or ease of assembly, but rather eliminating entirely the concept of doing one-off "integrations" to create new products in the line. In other words, doing with their computer parts what IKEA does with furniture parts: designing and manufacturing only at the component level, then feeding all the finished components into a shared pool of resources, where products are then simple assemblies of resources from the pool.
It would be fair if the source of the allegations wasn't likewise tainted.

Russia engages in propaganda, and this is abundantly obvious; it would be nice if those claiming such were forward and honest about their own ethical deviancies and the actions of their own state. It is tiresome to hear but one side of the concern from the media.
> The issue is that at least for many scientists and mathematicians, mathematical abstraction and code abstraction are topics that oftentimes run orthogonal to each other.

Excellent observation. I'm an ex-physicist and on the few occasions that I had to use computers the only thing I cared about was how computer functions mapped into the mathematical abstractions that I cared about. Everything else was just noise.
Laugh. Better yet, trade in,covered,calls and actually,learn what they are used.for. They are great for.obfuscating positions, I'll.give,it,that.
I couldn't agree more!
Oh, I beg to differ. I don't have to listen to the crap at home, in the car, or in my headphones. But I'm assaulted by it during a few commercials, in autoplay videos, in movies, in bars. Luckily it isn't the fashion to play music in stores here like it was in the states: There, I got assaulted by it at work. For hours and hours. It was quite a blessing working nights and being able to turn off the freaking music.

But for the most part, you are correct. And all folks have to do is have a couple of listens to different sorts of music to get over the hump. After that, it becomes much easier to enjoy. I still listen to some mainstream or quasi-mainstream stuff at times.

Sidenote of interest: There was a small movement of surrealist rap.
Yep. Not to mention that the guy makes it look easy, which means that he must have lots of experience with it.
Then it's a good thing I was asking Cozumel, who does care and believes it to be significant, instead of someone who doesn't care.
Most of BART's above-ground stations are not located in a foggy city.
Why is there a gyro? for proper sunlight to the solar receiver?
I do wish the TPMS tied into the OBD so that I could actually measure it electronically. It doesn't on Hondas, maybe it does on other makes?
Supersingular Isogeny Diffie-Hellman Key Exchange
The article keeps confounding free will with authority over society, and morality itself. But these are all different (see footnote * ).

Harari complains that "Dataism" (and email) makes us "... tiny chips inside a giant system that nobody really understands". But individuals always were just small parts of a great ecosystem that nobody understands.

But even with SMTP, we are still big enough to live our lives well for ourselves and loved ones. We can also try to improve society -- but the results will be small and unpredictable.

He shows the same confusion of indivdual freedom with social control when he says:

> in a humanist society, ethical and political debates are conducted in the name of conflicting human feelings,

Well that's a pity, because in a liberal society, they should be debates about human rights. Your feelings about gay pride or religion should not give you authority to control others, but your rights might set some bounds.

As far as I can tell, Harari has learned that modern biology is starting to see life and the mind as an information system. He accepts this science, but doesn't like it. So he tries to build some confused link to the Big Data giants.

Now there a good reasons, well known at HN, to disaprove of those guys. But Harari's reasoning is not even wrong.

*: e.g. The RC church emphasises individual free will, claims its own temporal authority, and teaches that God is the ultimate moral authority.
That's incredibly common in enterprises. the fad is to move enterprises to an ITIL model where work is done by a mix of matrixed in-house and outsourced teams, the overhead of "best practices" becomes important.
This is not the first time Gabriel has expressed anti-TTIP views (https://www.rt.com/news/344785-ttip-germany-bad-deal/).

However, Merkel for example is for the deal, so it's hard to say what the outcome will be. A lot of local politicians want to push the deal through, but talks have stalled and there is some opposition from the public as well.

Interesting to see the final outcome here. Hopefully the obviously bad can be stripped, while retaining any good.
I'd be interested to hear if he has also looked into any parallels with the pre- and post-telephone generation. I'd imagine that was a similar in many ways, particularly since public airplane transportation came of age in roughly the same era.
Nice piece of sarcasm.
Do You Believe in God, or Is That a Software Glitch?
> That seems like a really bad thing.

A bad thing for whom? In developing countries, governments regularly treat investors unfairly because of corruption. Not sure about EU countries.
The primary problem for poor countries is lack of access to western markets.

European and American companies can sell their products cheaper in Africa than african farmers can in their own countries. African farmers have very little access to western markets because of toll barriers.
Getters/setters are important when the data structure is used from a different linkage unit than where it is defined, and binary compatibility across versions is important.

That doers happen, but usually in fewer cases than most intermediate programmers realize. Instead, they see cases where it is used for real (like winforms or Direct3D) and cargo cult it into all code they write.
Fox News may very well be an instrument of the GOP, but the same cannot be said of the New York Times and the Democratic party. There are no serious observers who believe the two publications are equivalently rigorous.
> Languages that make it easy to define "local" functions that operate on implicitly captured state can help

You don't even need that. In many languages, you can have {}-delimited blocks which cause variables inside of them to go out of scope when control flow exits them. I've used that to great effect in Perl to keep intrinsically large functions maintainable.
Interview with Erik Hurst on the job market, labor force participation, and more
Unless you're using it to compartmentalize CI jobs on Travis or Jenkins, don't use it in production (do use it in development for standing up local dev environments quickly). We do, and it's a wasted layer of abstraction.

I predict the Docker fad will end in 2-3 years, fingers crossed.
KPMGVoice: A Radical New Way to Meet Customer Demand
There are many places in the world that are practically impossible to operate a business in without violating the Foreign Corrupt Practices Act (obviously assuming you simultaneously operate in the States).

In those places, there exists a very clear and desperate need for such arbitration.
The negative edge is what allows Donald Trump to be a viable candidate for President of the United States. It allows people with extreme views who before would have not had close contact with more than a handful of people with similar views (and then often only through inefficient means like a monthly newsletter and its letters column) to find each other and effectively organize in groups large enough to have an impact.

The same goes for the anti-vaccination folks, the "climate change is not real" folks, the anti-fluoridation folks, the anti-bike lane/trail and anti-public park people [1], and more.

[1] Yes, they are real. Bike lanes and public parks, they believe, are part of a UN agenda to make cities more attractive so that the population will concentrate in the cities, which will make it easier to impose martial law and confiscate guns. Before the internet this would have been a total joke. Now those people can organize, and show up in large groups at city council meetings considering parks and bike lanes, and get those projects killed.
This article itches me on so many levels. It is not wrong directly but it is definitely not the truth either. I expected more from someone who claims to be a scientist.

The main issue I have with the piece is the oversimplification of the equation to such an extend important variables of the equation are removed without mention or explanation of their removal.

An example would be project size. Yes for FizzBuzz globals are fine probably and FizzBuzz enterprise shows beautifully that overengineering is a thing (https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...). All of the authors statements would hold here. We all agree and smile. But the same architectural choices make sense in many large enterprise projects. Take the comment on large number of small files for example. This gives less merge conflicts (amongst many other things). Yes you working alone on your tiny project won't notice but try working in a single large file with 100 devs committing to it. Good luck with the merge conflicts! Large methods? Same issue. Everybody has to change code in that one method, merge conflict. Inheritance? Nice thing if you build an sdk for others to use and want to hand them a default base version. They can extend and override your virtual methods to get custom behaviour. No code duplication which you have to maintain and keep in sync! Wow!

Next up I would like to address the difficult naming. Everybody nodding that that was bad. Nice to write it down. However, from a scientist I would expect a disclaimer that this was based on personal experience with programmers and not the ground truth for pprogrammers or cite a credible source. I'd say there is only a small fraction who do that. Disclaimer on this is that both programmer and scientist should work together if one side does not understand the naming conventions for the project.

Simple-minded care-free can give you a prototype which is the scientist job. Enterprise programmers (who often are computer scientists) give you your product.

Tl;dr stop comparing apples and oranges. Or as a true scientist at least describe context and omittance of various variables. O, and share your gdamn ugly code so we don't need to read your papers and implement it ourselves from scratch. That's the true waste here ;).
It says it could be a Kardashian Type II civilization. Scary thought.
And for a slightly more modern twist, folks are taking the stuff from that, mixing it, and making new music from it. My spouse is one of those people.
How to run multiple versions of your iOS app side-by-side
I have gotten the exact opposite impression. Maybe 25+ years ago when many Westerns on the hard left naively celebrated communism and the Soviet Union, but the only people who seem to sympathize with Russia are those on the alt-right who wish that the POTUS had the chutzpah of Putin when dealing with foreign adversaries.
The cost to add it is often much higher, once the code has high fan in (lots of code paths depend on it).

I am definitely a fan of not over engineering, but I'm more of a fan of thinking. Think about your problem and your use cases, and about your own ability to predict the future. If you can predict future changes with high probability, then go ahead and design for those. If you're not a domain expert, you probably can't predict the future at all (and you probably grossly underestimate how bad your predictions are), so you should stick to the bare minimum.
I think the fundamental problem is that programmers have been taught that "abstract = good" in all things.

How often do you hear someone say they "abstracted" a piece of code or "generalized" it, without anyone asking why? Or how often do people "refactor" things by taking a piece of code that did something specific, and giving it the unused potential to do more things while creating a lot of complexity? The problem with "abstracting" things is it means behaviors that were previously statically decidable can now only be determined by testing run-time behavior, or the key behaviors are now all driven from outside the system (configuration, data, etc.)

Also by making things more flexible, your verbs suddenly become a lot more general and so readability suffers.

Kind of an aside, but whenever I see code where a single class is split into one interface and one "impl" I've taken to calling it code acne (because Impl rhymes with pimple). If you're only using an interface for ONE class it's a huge waste of time to edit two files! The defense is always something like "well what if we need a mock version for tests". Fine, write the interface when you actually do that.
You put them up to illustrate the consequences of a change to the planet-naming rule. I dismiss those consequences as irrelevant to the issue given how our culture is already so accepting of similar situation ... just in simpler words.
It sounds like you want a language like Haskell. Abstractions are based on mathematical (algebraic and category theoretic) abstractions with well-defined laws. The language has immutable semantics and admits equations reasoning. Using libraries like Dimensional has made me better at physics; many fields of physics play fast and loose with units and dimensions and aren't even aware of it.
As someone who feels like I always complain about quality, I feel like I don't know how to actually write quality code. All code eventually turns into a nightmare. A lot of the code I see by coworkers and myself is super hacky. I really wonder if we're all just terrible programmers or if that's the natural evolution of code.

Apart from having a mentor, what are the best ways to learn about code quality l? Books to read for example that I can then use to look at my own code and fix it? I really have no idea when making decisions what ends up being the best over the long run.
I've really enjoyed your link-sharing lately. Thanks for spreading knowledge :)
Who says I oppose all laws?

I simply said "democratic will of the people" is a terrible justification for a law and can be used to justify all sorts of horrible things.

Similarly, on the safety issues which you bring up, I think you are also being hypocritical. If regulating safety is your goal, then either you should a) support banning gay sex, which is extremely unsafe and spreads disease to unwilling participants, or b) it's just another cheap excuse to pass laws against people you simply don't like.
I've hit subscription model overload at this point. I've long-since stopped using most of the software and services in my life which are subscription based. I'm likely to just go back to an encrypted text file, and cutting & pasting passwords.

You are not netflix, and I am not your personal ATM.
Of course, that too. I guess most of my point was to handle the pragmatic "but you'll break everything" objection. You can't quite dismiss this out of hand on principle alone, as much as I'd like to.
I think the article makes a decent case for "simple bad code" for small projects. In a bigger project, this approach collapses, but in small to medium sized ones, you can do fine, and the uglyness of the code is "shallow", as I like to call it. That is, the problems are local and done in simple straightforward ways.

The "software engineer" code he describes sounds like the over engineered crap most of us did when getting out of the clever novice stage and learned about cool and sophisticated patterns which we then applied EVERYWHERE.

I guess some never come out of that phase, but the code of real master programmers is simple and readable, only uses complex patterns when truly needed, and has no need to show off how clever the author is in the code.

You know, the people who made it necessary to invent "POJO" (http://www.martinfowler.com/bliki/POJO.html).
> but why does it matter that these are not part of TTIP? If CETA

The tinfoil hat summary is that the US is trying to push through its own policies worldwide, one dominated by lack of regulation, lack of work protection and lots of protection for investors and people with money.

If they would be able to strick similar deals worldwide, US companies would be able to move production to wherever it is cheap, and no workers right exist, while having the investors money covered in case the corrupt dictatorships screws them over.

Any new deal signed which mandates workers right, environmental protections, and doesn't put investor-money above human lives, is detrimental to this global power-grab effort.
We are not talking just "a government agenda" -- as far as I've seen, the whole democratic world (not only USA and Sweden) say something quite similar regarding Russian propaganda.
Depends on market, and depends on time of year, of course.

At least over here (Finland) the problem with wind and solar energy is that when you actually need electricity (say, a cold winter morning), both solar and wind power output are locally zero.

To alleviate this, you need a grid, and energy storage, and spare capacity.
UITableView Basics Part Two
Because sometimes those choices have a large effect on the amount of work/mental tax in the future - for example, if you know that a new feature will have to interop with yours in the near future and the cost is low to implement the right extensibility point now, it would be absolutely stupid not to - I would call that bad engineering that costs time & effort.

Obviously one doesn't want to go down the rabbit hole too early, but the other extreme is just as bad.
I agree except (to be pedantic) I think Node is misplaced—it's just a runtime with a tiny standard library, nothing to do with MVC. I've actually found Node to able to be simple and nice by mostly using streams and a couple of small libraries—something most Node programmers ignore.

I actually think another problem is that programmers spend too much time following what the "big players" do and mistakenly apply that stuff to their so-called trivial work. I've wasted hours trying to sift through code from companies who thought they needed Facebook/Google-tier infrastructure with stuff like Relay/GraphQL. A simple CRUD Rails/Django/Phoenix/Node app would've been fine.
How very American.
Philosophy of Home Automation
Same reason a 32GB iphone costs hundreds more for the next level of storage. And why 64gb is pretty much the largest offering. 64gb isn't enough? Pay for more icloud storage. Yet you can buy a 128gb sd card for $30.
Are you seriously saying that the best code is an untestable mess of big God classes?
Because in my experience this is by far the type of code written by inexperienced programmers.
Abstractions and interfaces are the best way to make a system testable and extensible and it has nothing to do with using a pattern just because you read about it in the gof book 5 minutes ago.
And using public fields in a non trivial project is a sure receipt for disaster.
Mobile phones allow you to connect with your tribe. The Internet allows you to connect with the entire species.
I'll throw in a mention for Xojo:

http://www.xojo.com

Xojo used to be called REALbasic, and it's a cross-platform 'Visual Basic' with support for Windows, Mac, Linux, iOS and Raspberry Pi. I tend to use it for internal tools that need to run on both Windows & Mac, and find it's great for getting to a prototype stage very quickly.
In his excellent book [1], Andy Hunt explains what expertise is with a multi-level model [2], where a novice needs rules that describe what to do (to get started) while an expert chooses patterns according to his goal.

So, "best practices" are patterns that work in most situations, and an expert can adapt to several (and new) situations.

[1] https://pragprog.com/book/ahptl/pragmatic-thinking-and-learn...

[2] https://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisi...
Only someone who didn't read the article could misinterpret my comment.

> and tried to help.

That is probably even true! As I said in my previous reply, YOU SHOULD HAVE READ THE ARTICLE! People like you writing comments without knowing the topic - the bane of Internet discussions.