skysight-inc/HackerNews huggingface dataset:
Here's my rebuttal of this rebuttal. For the record, I think OOP is wrong in the sense it had some advantage over the procedural programming, but that has since been superseded by functional (and type/category theory) approaches.

In some sense, OOP tends to conflate too many concepts into a single one, a class (or an object), to the point where it is harming the clarity of the code.

Ad objection #1: The post doesn't explain, why would you want to model the "natural clustering" of functions on pieces of data, why is not just adding an accidental complexity. Clusters of function and data types do tend to happen, so what? (In fact, they tend to happen differently for functions and data types, which makes encapsulation problematic.)

Ad objection #2: This has not been refuted.

Ad objection #3: I think this is pretty much a complaint about subtyping polymorphism, which yes tends to be a problem (AFAIK nobody really gave a good semantics to it). For example, a GUI container element needs to define a type of it's elements so it could define how to deal with them. It's difficult to use composition there, because you need to define certain functions on those elements, and many classic OOP languages (Java) do not let you add an interface to an existing class. Parametric polymorphism (and its enhancements like type classes) solves this problem much better, IMHO.

Ad objection #4: One of the problems of OOP is that modules also tend to be modeled with classes (see for example public/private access controls). But modules are a third distinct useful category of things, aside from functions and data types. OOP conflates these things into a single entity, an object (or a class).

I found in practice, much more useful is to have modules as a separate concept, and explicit import/export controls on the module boundaries. That is, do not tie access controls to functions or data types themselves. This makes modularization easier, because there is an additional layer (module definition) where you can override existing exports and imports.
I’d like to question the premise of the financial impact of this... figures like “$400m/hour” are being bandied around as a measure of the lost trade. But this isn’t necessarily lost trade - merely deferred trade.

So surely the financial impact should be proportional to the interest you’d pay on $400m/hour?

At ~3% interest, we’re talking less than $1m/day.

And so solutions that involve destroying the ship look less attractive.
Google’s top security teams unilaterally shut down a counterterrorism operation
Uh, that's worse than I expected. The Egyptian Air Force has some Mil Mi-6, but their max slung load seems to be 8 tons according to Wikipedia.
That's exactly what i was also looking for :)
Caprover is awesome for personal projects, but lack enterprise features.
Ask HN: Are unpopular books worth reading?
My dad has a bunch of old business & nonfiction books that I pulled out of his library.

They don't have many ratings online and I'm just wondering... should I even give them a shot, or read the more popular books of today?
Looks like they did get a copy, but FTR, XCC != CC. XCC is my abbreviation for X-Debbugs-CC, which means that the Debian bug tracker forwards your bug to additional folks. If you use XCC then they get the bug number but if you use CC then they don't, at least for the initial bug submission, obviously for post-submission bug mail you are CCing the bug number.

https://www.debian.org/Bugs/Reporting#xcc
Show HN: Commandline tool to resolve URI Templates expressions as in RFC 6570
Mother of All Demos – Douglas Engelbart
nonative speaker, by I thought that term "gizmos" excludes actually useful devices
One issue I have with (pure) OOP is the way that methods are associated with a single type (and its subtypes). What about operations that don’t naturally belong to any one type?

For example, binary operator overloading. With unrelated classes `C` and `D`, should the implementation of `+` to handle `C.new() + D.new()` be added to `C` or `D`? Conversely, if both `C` and `D` define an implementation of `+`, which one should be preferred?
I've always viewed tips as a way to let customers decide the merit pay for employees. Does NL have the uber star rating tied to tips? It was a way to make the star rating meaningful. It used to be everyone gave five unless it was terrible service, so uber made you put money where your rating was.

Edit: I remember the public transit being quite good so maybe NL doesn't have uber? I also remember waiters not being very easy to find to ask for anything.
> Theoretically the combined horsepower of all these [4] Pi's should stack up and deliver better performance than writing code on my M1.

If that is the case, then M1 should be the slowest CPU Apple has used in the past 10 years.
very hard to measure.
some goods like food expire. scary to think what about the livestock.
other goods lose value due to delays, etc.
You say that like the web hasn't been. Hell, even if everything always worked properly, there were not XSS attacks, and users weren't easily fooled, the web would still be full of malicious actors in the form of tracking and advertisement.

Remember, we invented pop-up blockers because advertisers abused it, and we've been in an arms race with those assholes ever since. Tracking and ads in desktop apps came from the web ecosystem and now we're stuck with it.
Some goods are perishable. Modern logistics can have very tight deadlines.
I'd much rather open source native apps than open source or proprietary web apps (or proprietary native apps).
Hmm, they probably could be. But it may be difficult to recruit and retain good ones. Coops tend to have a compressed salary spectrum, which is good for lower wage workers like taco drivers, and bad for higher wage workers like programmers.
Off topic I know, but it is not necessary enterprise consultants who push for buzzword-compliant fads. Individual developers generally likes to work on exciting new stuff and might also consider what looks good on the CV. Developer driven startups certainly seem to be just as fad-driven compared to enterprises which are generally more conservative.

That said, it is an important observation that widely used technologies are judged on the reality of their use, while less popular technologies are judged on their potential. For example Java is judged on the quality of the code people see in the real world, developed and maintained over long time by developers of varying skill, while Haskell is judged on examples written by experts to showcase the benefits of the language.
FTA: "Long-Form/Podcast: Noor Khan, a pacifist descendant of Indian Royalty became a famed World War II spy for Britain’s Special Operations Executive."

Looks interesting; bookmarked.
Podcasts are published using RSS - so I wouldn't say RSS is a relic if it's being used for a good chunk of modern media.
> where you can't require any `npm` packages

You just have to introduce a build tool like ncc (https://github.com/vercel/ncc) which will bundle your app into a single JS file.
Old SCUBA tanks didn't have gauges, they had a reserve tank with enough air to get you to the surface. You'd realize you were running low (which I'm sure was terrifying) then hit the switch and slowly surface (you don't want to surface quickly when diving).
If you’re not familiar with the LockPickingLawyer on YouTube, you should look him up. Specifically, the videos where he shows how quickly and easily someone with no skill and easily obtained items can open a standard police car shotgun lock.

Now consider: if that’s the bar for securing a police firearm, how well will this kind of tech be safeguarded?
How to Create Widgets with WidgetKit
Anecdotally, whenever I give money to unhoused people asking for it on the street these days they all prefer cashapp. Or perhaps that's just because there are a whooooooole lot of newly-unhoused people who still have smartphones with a data plan...
My copy of the GoF book does not have that sentence as the only one on it's page, however there are only two guiding principles mentioned in chapter one, the other one being:

"Program to an interface, not an implementation"

and this actually comes before the other one about composition.

Inheritance (i.e. implementation inheritance) creates tight coupling between classes, whereas interfaces exist to prevent that happening, ... they are quite different constructs.
Some of the twitter ecosystem works fines with typelevel style. Finch, in particular, comes to mind
I guess the idea is to contrast dyi bsearch vs dyi hash table - but it's a bit odd to mention bsearch is in the standard lib, then not use it?

> Here’s how you’d do it in C (with and without bsearch).

Juding by random hit on the net - it would've been quite straightforward to use the stdlib version?

https://www.tutorialspoint.com/c_standard_library/c_function...
Split it into many micro-helicopters, each deployed and scaled independently?
There are lots of use cases where you need a PDF document, without letting the user print to PDF it manually. For example sending PDF invoices per email, or generating reports and uploading it to a Dropbox directory.
> It's not stuck for mysterious reasons related to a long history of humans cruelly exploiting other humans.

It's not?

I thought the boat is stuck because it's too long and the canal is too narrow, and the boat is too long because people want to move more and more things by boat so they can sell more things, but they don't want to pay for more boats. So they kept making longer boats until they made one that's too long to fit sideways. (At least, that's what I heard.) And sometimes, in heavy winds and storms, boats turn sideways.

Even if this boat is unstuck, there's a good chance another boat will be stuck, soon.

Maybe this isn't directly about humans exploiting humans, but the motivation to build a boat that is too long because it is cheaper and hopefully won't get stuck seems like the same motivation for human exploitation - it's cheaper, and you can do it, and you can usually get away with it.

It would cost more to think in advance and say "Hey, we don't want any stuck boats here, the boats all need to be short enough that they won't get stuck. Come back with two boats." It would be safer, but people don't want safer, they want cheaper.

But yes, I like that the only thing hurt is the river bank. I am much happier that a boat is stuck than that, say, people who sew shirtwaists are stuck in a building on fire.
Serving a single file over HTTP with Rust and Go
>Until 2018 card purchases required hand signatures, 15 years after Europe switched to chip-and-pin.

Wow. That's really surprising.

I haven't had to sign for a purchase in years. In fact the last time I did it, the idea of a squiggle being any kind of verification felt dodgy.

I can't read the rest of the article but they mention the duopoly of Visa and MasterCard (and I guess Amex is the only other issuer?) causing a stagnation.

Is that changing?
Aha, OK, I didn't realize the copter itself was included in the 19 tons.

I also saw someone mentioning 40 feet containers weighing up to max 9000 lb (ca 4 tons), but not sure it is a relevant or applicable number.
"Obligatory c2.com reference": https://wiki.c2.com/?ClosuresAndObjectsAreEquivalent

"""
The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures."

Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.

On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened.
"""
From what I recall, its 25%
The eternal conflict between the "single consistent idea" and the "Swiss army knife" approach to tools.
Perishable goods go by plane though. Containers are often held up in ports for weeks due to customs checks. I’d expect the vast majority of sea-shipped goods to be non-time-critical and unharmed by waiting for a couple of weeks.
I asked a similar question of someone who worked on these systems at Instacart, and the answer was that story inventory is often innacurate or incomplete. The stores just haven't needed the degree of accuracy before.

There's also a fun integration problem: food manufacturers essentially lease shelf space and then the manufacturer handles all the inventory/restocking, and the store itself doesn't know or care what's there. So now you have to contact a bunch of third parties to learn what's in the store.
As an aside R.I.P. Joe Armstrong.
Had anyone succeed in looking up the motivation behind the reserved space idea in ext filesystems, e.g a commit message from the time this feature was introduced? I've tried but failed miserably, got lost in many different git repositories.

One fun fact I learned though - one of the reasons is "for quota file". Since ext stores quota information in an ordinary file, there could be an issue where user fills up a disk but the information about it isn't written in quota file due to lack of space.
Fintech has been in America for a long time. Anywhere from Paypal (with all its faults) to Simple (acquired by BBVA Compass) to Stripe to Square and it has been around for a while. What is missing is the standalone challenger banks and that is because of the onerous banking regulations, and the litany of KYC and AML regulations that box out poor people (they are unprofitable due to the heavy regulations) from the financial ecosystem.

If we lowered or removed the regulatory burdens (especially at the federal level) then innovation would blossom and VCs would fund every challenger to the incumbents.
Meteor Shower
I actually don't understand why this isn't the best option right now. The east bank is mostly empty, and the channel is pretty shallow. You could probably construct a 1km detour within a few weeks with relatively low cost. Seems like a good way to hedge the bet of getting it unstuck.
Looks cool! Seems to be focused on web-applications, though. Can this be used for general purpose as well?
For programming one can do fine with much cheaper then a $2k laptop.
Eat me: The cell signal of death
Dynamite. Lots of it.
Or a nuke.
Naval Computer and Telecommunications Station Naples, Italy
> I find these posts that somehow the market will fix it, and clearly if it hasn't then it's a non-issue, to be facile.

You're part of the market, if you don't believe it's a non-issue, fix it. If you're right, you'll get rich in the process.

Saying "the market won't listen to the customers" is an easy out and very unlikely, because those companies want to make money and if there was "that one simple trick" to sell more and make more money, chances are extremely high that they'd use it.
I've definitely experienced some scary bugs caused by runtime bytecode injection (from a tracing library). I didn't bother tracking it down further than identifying it was at the intersection of some slightly strange type and the tracing. Caused VM errors when this method was called but only when the tracing was configured.

Not saying it's not interesting to experiment with things like that, but there are non-trivial associated, if you ask me, to depending on it in production.
A paricular point people don't get is that Java joined functional programming instead of beating it.

The Hotspot compiler was based on a research runtime for a functional language. Type inference is basically the same as ML family languages. With heavy use of Lambdas and higher-order functions some of my Java looks like ML. If i want to have functions like

maybe(x, f1, f2, ...)

that works (emphasis) like the maybe monad my codegen writes the boilerplate out to arity 30. (Funny the codegen lets you write Java in a Java DSL that looks like typed S-expressions.)
I guess if you’re this convinced that you have uniquely thought up and proved this idea the only thing left is to phone them up and let them know you’ve got a solution ready to go! There’s a phone number on their website.
Show HN: We made a 3D landing page for our product
US primacy is a self-fulfilling threat generator
and Elm https://elm-lang.org/
Yes May be. A full-stack developer is an individual that works with all the levels of internet development, which involves business logic, data modeling, MVC, API, user experience, user interface, understanding the requirements of customers and enterprise, and even more. Being sophisticated development specialists, full-stack programmers are able to frame and create attractive and challenging sites and software. They are multi-talented specialists having the capability to work on all of the development aspects which range from front end to backend. Full Stack Classes in Nagpur provides you the best trainers that take care of the database and may even move towards handling debugging and testing software.
https://www.sevenmentor.com/full-stack-classes-in-nagpur
It’s like arguing that buying quality ingredients for a meal, and fking up the cooking is somehow the mistake of that expensive Italian pasta.

Also, you seriously argue that availability of a great kernel is somehow a bad thing??
I'd be curious the relative power draw -- is the performance/watt actually better?
Except this is closer to a mathematical theorem than a law like say, boyle's law. You might be able to re-write an algorithm so it has a larger portion that's parallelizable, but that's the only way to get around it. You can't just keep adding parallel computers and enter a qualitatively different regime.
Imagine being a Smalltalker and still missing the underlying context of Joe's article - specifically, around the actor model (as used extensively in Erlang) being substantially closer to OOP as intended by e.g. Smalltalk than to the popularized inheritance-heavy brand of "OOP".

You can see this in the objections:

> Objection 1 - Data structure and functions should not be bound together

...and yet the usual way to store data in Erlang is to make it an argument of a function repeatedly and recursively calling itself.

> Objection 2 - Everything has to be an object.

...which is the case in Erlang/OTP, when you consider that everything is a process a.k.a. actor a.k.a. object. And just like with Smalltalk, these objects communicate via messages.

> Objection 3 - In an OOPL data type definitions are spread out all over the place.

...as they are in Erlang, because (barring some bolted-on approaches like records) data type definitions exist entirely as patterns to be matched.

> Objection 4 - Objects have private state.

...as do Erlang's processes.

That is, while maybe Joe didn't pick up on it at the time (per comments on that article: https://news.ycombinator.com/item?id=26586829), it's clear that said article was more a complaint against OOP as popularly envisioned, with all its classes and inheritance and such - not against the notion of object orientation entirely, which Erlang happens to implement, even if it might've been by accident.
The Trials and Tribulations of Batch Processing
Humor aside, I found this a fascinating view into what computing was like earlier, and the mind-boggling advances that have made our present computing environment possible. I believe that we need to study the history of computer science in the same way that writers and architects study the great works of their past.
What If the Great Depression Started Tomorrow?
This is a new private satellite from Satellogic.
I guess the best spy images this days are obtained with droned but that's a whole different budget
If you stick to a reasonable middle-ground of scala it really shouldn't be hard to teach. I do like the FP community but that style has gone a long way towards mythologizing scala as an impossible language to teach.

In my experience it's clearly considerably simpler than Rust or C++ to become productive in.
Well, the law of salvage wouldn't apply since there's no "peril at sea" involved - the ship and its crew and its cargo are in no imminent danger. They are stuck, but there's no damage or destruction expected to them that would justify salvage. Losses by ship inactivity or blocking the channel are out of scope for salvage, since these are costs to someone else, and salvage law applies when you rescue the property of the ship owner/operator, it refers only to value of ship and cargo and (recently) environmental damage like oil spills (if it would be the liability of the ship operator).
I don't think criticizing the repetitive nature is absurd but maybe it's fruitless. My meta point isn't really to make people feel bad about taking part in these debates but to question whether we can get more out of them.

And whilst I agree that new people learning about things can be an effective trigger for rehashing these arguments I don't think all the people who so happily engage in them are new to the argument. In fact I think the constant rehashing of them is mostly the cause of new people learning about the argument in the first place. So in that sense they could be useful (if the argument is actually useful).
> I wonder if there are secret SpaceX launches? Is such a thing possible?

No, it is not possible. Even you you managed to sneak a launch by the 7 billion people on the planet, Russia, China, and the USA all have satellites with sensors built to detect just such launches.
I love this paper. Beyond including an interesting contribution, they give a fantastic introduction to the underlying ideas and algorithm that forms the background. Even if you only have time for the first few pages, it's a worthwhile read.
But could anybody digitise it?
I think so too and there seems to be some distinction but I‘m not eager to ask the captain whether he has a boat or ship stuck in the suez canal: https://blogs.scientificamerican.com/expeditions/on-the-impo...
It was incredibly common to see Windows installs utterly compromised by ActiveX controls doing god-knows-what, to both the infected computer and every other computer on the corporate network.

The damage to individuals and the economy in terms of lost productivity and compromised personal information directly attributable to ActiveX's "compromise my system by design" nature is incalculable.

To compare that to Javascript is rather spectacular.

If you want to argue that Javascript has been able to wreak more damage over time precisely because it's not as objectively insane and immediately destructive as ActiveX, well fine. It could be said that Javascript is Covid-19 to ActiveX's ebolavirus. Ebola is so wantonly destructive that it kills many of its victims before they have a chance to infect others, whereas Covid's less-awful nature has actually allowed it to harm more people over time and is now probably here to stay, like influenza.

Flash was an abonimation, yet you could disable it with barely any consequences. Same with ActiveX.

This was very nearly not the case.

IE/Win had close to 100% market share at one point. We were a hair's breadth away from a future where you could, in fact, not disable ActiveX without shutting yourself off from much of the web, like Javascript today.

South Korea was actually there for a time. If you wanted to spend money online, various regulations meant running ActiveX was a requirement.