skysight-inc/HackerNews huggingface dataset:
Similar progression here.

It took a long time before I realized that a lot of the changeability that come with writing aggressively SOLID code is actually a self-fulfilling prophecy: Some tightly intertwined chain of steps that might have been implemented as five consecutive (albeit tightly coupled) statements gets blown out into 10 or 15 modules and abstractions spread across as many files. All this added complexity was invariably designed to make it easy to change the code in a way that is not actually how you ended up needing to change it, so the end result is that it increased the difficulty of changing things: Instead of editing 5 lines, you now need to edit 10 files. And, since the logic is spread across 10 files whose members are, thanks to the magic of Java's access control facilities, all public, and whose connections to other parts of the codebase are all, thanks to the magic of dependency injection, loose (read: not explicit), it's hard to even understand the scope of impact of those changes without relying extensively on an IDE.

I've since taken a big turn back toward procedural programming. Object-oriented and functional techniques have their place (and the best procedural languages will let you use both), and I've learned a lot from working in both paradigms. But most of what I learned is that no amount of abstraction can replace the KISS principle.
That's the future of all internet connected appliances. We're already seeing it with cars, at some point it will be affordable enough to include in TVs, fridges, ovens, anything that might want to phone home.
I strongly agree with this, but if are using an inversion of control pattern for your business logic vs. I/O, then interfaces are often needed to prevent circular references. If using multiple compilation modules, this becomes evident because the code wouldn't even compile without the interface! When using this design, interfaces can sometimes be required more often than not.

That's the litmus test I use to determine if I need an interface: Will the code compile without it? If not, the interface is declared alongside the code that depends on it, and the implementation is in a second compilation module which depends on the first. Inversion of control.
> Some documents indicate the OSINT officers take what appears to be a broad and overly-permissive attitude when collecting logs, sometimes scooping up content from individuals who may have no clear relationship to the violence at all.

This is public information, and very useful to figure out who to interview after a shooting to learn more about the crime and victim. Saving more data instead of less, just in case, seems sensible, and not overly-permissive at all.
Yes, the secret is to write software that is composed of several modules that operate independently. Java's culture is to write a big ball of classes that are combined to everything you need. In other languages you can create different programs that compose to provide the desired functionality. This was the original "aha" moment of C and UNIX designers. Even though C is a brittle language, it allows the decomposition of systems into small programs thanks to files and filters.
Build a Toy Redis Implementation in Ruby
Notable signers:

David Heinemeier Hansson, @dhh (Ruby on Rails)

Tatiana Mac, @TatianaMac (Self-Defined Dictionary)
I'm not advocating anybody do that, but it's a fun experiment to think about. I've been intrigued about WebAssembly more than ever when I read a comment here on HN that the specs very generic allowing it to be used even outside the web.
It's probably more because of the concentration camps.
Discounts are used to get a foot in the door for possible expanded role and future business calling it "Political" does not make sense.

Now government discounts are common way if you are expanding to Federal or State government clientele. For Enterprise the discounts will have a different name or flavor thats about it.

If some one prove a case that a rabid anti-immigration activist salesman or executive gave this service pennies on dollar to ICE, you can argue for walking back on this contract, otherwise its Enterprise Sales doing what it is supposed to do.. make it rain and improve top-line.
> Also, did you know that unassisted GPS takes minutes to establish a lock even in most good cases; it is only because of the tower-provided assistance that GPS can resolve in less than a minute, ever.

Then how does every GPS device without a network connection work? I'm no GPS expert by my understanding is that GPS lock can be attained far more quickly if the device caches satellite position data and uses that to assist. That's why a Garmin watch may take 3 minutes to lock on first use (or after departing an international flight) but will subsequently lock in seconds after that.
I agree this is a big problem, I just think the current title is misleading.
This is my main complaint with OOP. It's not a feature of OOP explicitly but I've only seen it in OOP codebases. And the most complicated, awful, snaggletoothed codebases I've had to unravel were all like this - heavily laden with abstractions that weren't really necessary.
Good question! A typical Metaflow workflow at Netflix starts by reading data from our data warehouse, either by executing a (Spark)SQL query or by fetching Parquet files directly from S3 using the built-in S3 client. We have some additional Python tooling to make this easy (see https://github.com/Netflix/metaflow/issues/4)

After the data is loaded, there are bunch of steps related to data transformations. Training happens with an off-the-shelf ML library like Scikit Learn or Tensorflow for training. Many workflows train a suite of models using the foreach construct.

The results can be pushed to various other systems. Typically they are either pushed to another table or as a microservice (see https://github.com/Netflix/metaflow/issues/3)
An eCommerce framework is never going to have a small footprint, for one example. That's why Java or other strongly typed/structured languages get used in enterprise software.
Too bad they couldn’t just order new 757s. A great airplane.
oh wow, Signed Exchanges are worse than AMP!

"make sure you are visiting mybanksite.com" is no longer safe.
Using StringBuffer may be premature optimization. Java compiler will replace simple String concatenation with StringBuffer automatically [1] and you do not need to polute your code with StringBuffer unless you really find that to be performance bottleneck.

[1] https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.htm...
Java not having operator overloads as a design choice explains the majority of your complaints.

Generics are built around type erasure and as such generics treat the type as Object at runtime. Primitives cannot be treated this way. The reason its not a simple fix is because the language designers are not willing to break compatibility to make this happen.

The style complaints are an artifact of Java being a popular corporate language but there's no reason you need to write Java this way.
Regardless of this opinion on the author's understanding, don't you agree it's a little shifty that Apple is the only entity that can obtain the user's location after providing a user experience that gives the user the impression that they've disabled all location services...?
I wonder how different Google would be if they were able to diversify their revenue to not rely so much on ads.

AMP = faster page loads = more pageviews = more ads served

AMP shouldn't need to be enforced to achieve a faster internet. It's not just Google that knows more pageviews = more ads = more revenue. Publishers know this too, and therefore publishers themselves have the same incentive to reduce page load time as does Google.

It's disorienting to see Google frame AMP as something that's for the good of the user. If it is, it's only a side effect of also being good for Google's business model.
Real people aren't moving to Firefox or Brave, they are moving (or have moved) to the Facebook mobile app. It has instant articles, (https://instantarticles.fb.com/) an amp-like lightweight way to load news stories, all hidden inside Facebook's system. Don't worry about searching for news, Facebook will just give you whatever it feels like.

Then there's Apples iOS only "News" app. Who knows how that works.

AMP is clearly a far more open competitor to the above. It is saving news publishers from themselves.
socialdemocrat didn't claim no corruption, simply not the same degree.

Corruption in Europe is different, and often more subtle, than in the US (have lived and worked in both) but I do feel that over the 30 years the US has really gotten a lot worse compared to the EU countries.
They certainly don't represent me. Governments need to function, and they need software to do it.
I guess if you "can't tell" the offending internal app not to collect the data, it "hasn't been told not to", and thus the title is incorrect. But wow, that is quite a literalist view of the issue.
"Track" is a bit of an oversimplification: they also imprison US citizens who they suspect might be foreign, along with the actual foreigners, of course.

ICE releases teen US citizen wrongfully detained for over 3 weeks:

https://nypost.com/2019/07/24/ice-releases-us-citizen-18-wro...

ICE wrongly arrested over 1,000 US citizens in recent years:

https://thehill.com/latino/385261-ice-wrongly-arrested-over-...

U.S. Citizen Who Was Held By ICE For 3 Years Denied Compensation By Appeals Court:

https://www.npr.org/sections/thetwo-way/2017/08/01/540903038...

How ICE Works to Strip Citizenship from Naturalized Americans:

https://theintercept.com/2018/02/14/ice-denaturalization-nat...

U.S. Citizens Targeted by ICE: U.S. Citizens Targeted by Immigration and Customs Enforcement in Texas:

https://www.cato.org/publications/immigration-research-polic...

And that's not touching upon some of their more grievous ethical violations.

ICE is effectively a way for the executive branch to do away with due process.
Unfortunately, it is my experience that DuckDuckGo excels on the desktop (lots of facts and technical questions), and falls short on many mobile use cases ("best cafes in Some City," assistance with shopping or goods, maps, etc).

I use it on my phone anyway, but I wind up using `!g` all the time.

(yes, I made this same complaint on the DDG topic just a couple days ago)
It sits on top of our own IP database which is 6 figures in lines and is written in C++. Java has fancy bells and whistles when it comes to IDE's, but that's all they are.

I just think it's foolish to think Java is the only language that can handle large codebases. I mean just look at the linux kernel.

EDIT: Removed comment about processing capabilities because it's irrelevant to the discussion. I left my original comments about lines and the IDE though.
> How many average people are walking around saying "I've quit the web! It's too slow!"? Nobody.

Everyone did. It's why web apps are dead & buried, and native apps rule the world. Nobody talks about cool web experiences anymore. It's why we're all talking about the experience of viewing a search result instead of the experience of browsing the web.

Entire areas that started exclusively on the web are now dominated by native apps, like social.

The web only exists for long-tail, rarely used content. That's the actual area it occupies now. Google, with AMP, are optimizing for the usage the web has left. It's a realistic approach to the web.
> I recommend simply not building AMP pages at all, but instead working to build high quality, performant websites which gracefully handle device size changes and lack of javascript.

Doesn't matter. Google will penalise against not AMP sites. Let's not pretend there's a choice if you want people to find your content.
Most elements of that power set are not valid.
Seeing that you use "woke" as a slur, I take it you are pro-ICE?
You don't? Then why are you commenting here?
A Chinese airliner? I’d feel safer on a 737 Max flown by a powered parachute pilot.
But could quantum computing accelerate AI workloads such as graph traversal/rewriting?

Iff quantum computing is only useful at breaking encryption, I don't see the point in funding quantum computing research.
It is, but most people are at least slightly narcissistic. Most people get at least a little bit of validation & happiness from obtaining a "better" job title. Also, it's not really just the plain title itself, but the trust the company has in you that it represents. Being able to say to somebody, "I'm VP of ____" gives you some cachet in today's middle/upper-middle class.

Sure, there are also people who couldn't care less what their title is, but I can't help but feel that most people would find the possibility of a 'better' title at least moderately motivating.
Well I will take this small piece of credit in return for all the times your comments have blown my mind. :)
What is the difference between actively pursuing sales with ICE and companies selling arms to Saudi Arabia or investing in Saudi oil, or actively pursuing sales with China such that the NBA apologizes for pro HK messaging from a player and Overwatch stripped all winnings from a winner of a tournament for pro HK messaging?
Even if I agreed with you, wouldn't that mean that the immigrants would be treated even worse than you claim they're being treated now?
So it was ok for IBM to help the Nazis conduct the Holocaust?

It's convenient to pretend there are no lines, but there are always lines.
If Google has an option for logged in users to bypass AMP pages, I would not blame Google. They stubbornly refuse to do this, thus it is Google that is ruining mobile browsing for me.

(I would have written an iOS Safari extension that bypasses AMP years ago if Apple supported such a thing…)
Annotations are frequently abused. They are useful in some cases but in other cases it would be easier to just call a function. It is more transparent and easy to understand, you don't have to figure out how the magic works when something fails.
Oh, that's why I've never really had any trouble with AMP - I've been using DDG for years.

Posts pasted from other people frequently have AMP - guess I should suggest a better search engine to them.
I sometimes wonder if IDE users realize you can do 99.9% of the same things with simple tools. Personally I don't want my editor magically updating the codebase because there will be edge cases and I don't want magic happening in the background when those edge cases arise. In practice I'm sure the class name change has likely not given you issues in a long time or maybe ever, but that doesn't mean edge cases don't exist and when they happen to someone it can be at the worst times and add significant troubleshooting to an unrelated problem.

edit: further learning those simple tools has a more generic application to other problems while the IDE magic will likely go until there's an issue to be understood and you're depriving yourself of learning generally applicable tooling to trade a slight inconvenience for magic that has the potential to cause great inconvenience and once that magic from the IDE bites you and you learn how it works - you've learned something with no general application to other problems.

edit2: since I can't reply in-line

jcelerier - I _could_ do that with CLI tooling and depending on the language it would be trivial. However, I would _never_ do that because changing the method/function name to suit my context would be very unlikely to avoid making other code less readable. That's a huge anti-pattern that your IDE is making easy.
Further, consider the implications for language design when making language design decisions that require a specific type of IDE magic to be considered a reasonable language design decision. I have a hard time believing relying on the IDE lock-in is good for the community of that language.

philwelch - I genuinely don't know the answer, but what happens when you change a class name -> forget you do it before saving the file -> go to another file and try to change the class name there but have a typo -> go back to the original file and save the change?
I would bet the typo'd change goes unchanged and now you're left scratching your head since that magic has always worked before.
Alternatively, because the border concentration camps run by ICE are far too similar to other concentration camps throughout history. People only have 8 working hours each day, and I certainly wouldn't want my limited working hours to contribute to the efficient management of concentration camps.
Zulip has an option to let people move other peoples messages into threads after the fact.
Good to know. The plant asset costs must merely be staggering instead of eye-bleeding. ;)
Control flow is not boilerplate, that's the application logic.
The Shape of Cyber Five 2019 on Amazon
America has a generally worse track record for women's rights than Europe. It boils down to the fact that the American attitude of "we were created equal and I can too achieve just as much as a man if you will just get out of my way!" is a broken mental model.

European women asked for help with carrying the burden entailed in bearing and raising children. They asked for things like maternity leave. America is the only wealthy, developed country on the planet that still lacks a strong national maternity leave policy.

American "rugged individualism" is a delusion. It always has been. It serves the needs of women especially poorly.

Once a woman gets pregnant and has a child, she needs other people to help her raise that child, like it or not. We can't do what some mammals do of hiding the kid up under some bushes while we go get food.

Society as a whole has to make it easier for parents to do right by their kids. America has an atrocious track record in that regard.

And women like me are the ones that get ROFLstomped in the process, often while very much benefiting other people. I spent a month playing nanny for my sister and her child. She got a serious career. I still am failing to pull that off.
Alternatively, if you do tell the offending internal app to stop via the system toggle, it stops.
I agree, it’s verbose. That being said, The boilerplate often helps when reading unfamiliar code. More importantly, the IDE support is fantastic, especially on large codebases.

An example: if I want to refactor a simple thing like Rename a method called “doFoo()” I can do this trivially.

Now, this seems simple but it’s not - I only want to refactor uses of this particular method, NOT any other methods that happen to be called “doFoo()” on unrelated classes or interfaces. Moreover, I want the refactor to intelligently work on everything, including inherited classes, abstract classes and interfaces, while correctly ignoring the stuff i mentioned previously.

None of this matters much if you have a small codebase and a fee developers, but on a huge codebase with many developers, all that boilerplate lets people quickly understand new code and easily refactor that code while being sure they did not break anything.
https://a16z.com/2010/12/16/ones-and-twos/

This is often inherent in the organizational structure of big companies. To the extent that there are visionaries in a big company, they're usually not anywhere on the executive team, or even anywhere that the CEO comes in direct contact with. If they were, they'd clash with the CEO's vision, which first of all would be confusing and inefficient for the organization and second is a power contest the CEO would win. So if the board wants to appoint a visionary from within, they usually need to reach several levels down in the org hierarchy, to someone who's run an innovative division semi-independently but been protected from overall company politics. If they elevate this person to CEO, everyone above them in the org chart will quit, as they've now been passed over for the top job.
You'd be in luck, the Shadowserver Foundation is essentially a proxy for the FBI.

They control various seized assets seemingly unrelated to their publicly stated mission, like libertyreserve.com. Shadowserver used to host the seizure page for liberty reserve too.
Another developer here. I also call for ignoring the SJWs
incidentally:

1. used when a person has something more to say, or is about to add a remark unconnected to the current subject; by the way.

2. in an incidental manner; as a chance occurrence.

That quote seems pretty misinformed, code has to be a lot more connected to the machine to be runnable that that quote would have us believe.

Otherwise this would be valid code:

Ask the user their name. After they enter the name, load a game. Use some cool graphics.

That being said, perhaps that will be possible in 100 years. (Yes the first line may be possible in 10 years)
Sounds like typical banter after securing a sale. In the same way people might use the wine bottle emoji when closing a deal with a brewery.
Another 43 developers and that’s more than the article says are calling to cancel
Well it does get worse. Lots of apps/programs run in python. I want `python goodprogram.py` to have access to certain things but not `python badprogram.py`
They separated thousands of families with zero plan for tracking them.

Tell me how it could be worse because of software.
in complex systems the devil is most often in the details

The devil is sometimes in the details, but it's not in all the details. The sun is an incredibly complex system. But you could tweak an incredibly number of small variables and yield very little noticable change. An oncoming tsunami is an incredibly complex system, but the devil is in the overall brunt of the phenomenon.

It's a valid criticism to say an argument doesn't get at the meat but merely picks at the scraps. It's easy to frame such nitpicking in a misleading way -- by pointing out so many details that are not quite right you can sow doubt in the overall conclusion. And that's the accusation that's being made about this Economist article.
I think it has to with the human rights issues that are supposedly being violated by ICE at the moment. Human rights issue such as: Separating families, criminalizing asylum seeking, concentrating people of certain ethnicity in camps, etc.
ICE aren't "the Nazis" and immigration enforcement isn't the Holocaust.
Wouldn't ranking results by size of page have pushed sites towards more mobile friendly lightweight pages?
Why? Are they unsafe?
But but Apple has spent millions branding itself as the privacy focused alterative to Android. Is it really possible that Apple lies about how privacy friendly their products are? Are we all to trust the Apple apologists who'll jump through hoops to excuse these findings?

Were we, the users, holding the phone wrong and causing antenna-gate? [1]

Were our tight pants to blame for the bending iPhone plus models? [2]

When Apple purposefully slowed our 1.5 year old iPhone to a crawl, after an iOS update, was it us hastening the degradatiom of the measily iPhone batteries? [3]

[1]: https://www.pcmag.com/encyclopedia/term/62034/antennagate

[2]: https://youtu.be/qkNlfMC1lzE

[3]: https://www.bbc.com/news/world-europe-42615378
For me the main advantage of Windows Defender is the business model. It's in Microsoft's best interest to keep Windows virus-free as much as possible. It's in commercial anti-virus vendors interest to keep machines as virus ridden as possible.
It doesn't matter how good or bad the technology is, or whether it's convenient or profitable to use it. AMP is a brazen attempt by Google to use their monopoly to take control of the web. The current version of AMP is not their intended final destination.
There's nothing stopping you from writing uncoupled classes that work like small modules and maintaining them in one repository. Tightly coupled classes are a code smell even in Java, I wouldn't say it's the languages fault, more that the language is used more often in enterprise software and so all the frameworks/libraries/tooling is geared toward monoliths.