skysight-inc/HackerNews huggingface dataset:
If you don't like frameworks, just inject dependencies manually. It's very simple, it scales to hundreds of classes and then you can migrate to DI (but probably you won't reach that line ever, microservices are here to stay).

class Service1 { ... }
class Service2 {
private Service2 service2;
void setService2(...)
void afterPropertiesSet() { requireNonNull(service2, "service2"); }
}
main() {
Service1 service1 = new Service1();
Service1 service2 = new Service2();
...
service2.setService1(service1);
...
service1.afterPropertiesSet();
service2.afterPropertiesSet();
...

I used setter injection and afterPropertiesSet callback. It allows not to worry about construction order and loops. Also it allows to fail fast if dependency not set. And it's compatible with Spring, if you ever decide to use it. But using constructor injection is even simpler and for applications with few dozens of services that might be a more clean approach.
YC has always suggested somebody you know well, as in a prior colleague.
Perhaps someone should make a documentary about it. :)
The engines in those wear out after a time. A home owner can use the same saw for years, but a pro using it for a full workday will replace it every few years.
This is based on assumption that class is a unit of testing. For me, unit testing is about testing units with meaningful functionality which is often a set of classes - a module or a component. So dependency injection should be a property of such unit which is many cases is not a class...
There is a difference between refusing to fall for manipulative writing and lack of empathy. Since we're already on such a personal level, I advice you to concentrate on your Torrent download and Crypto hobbies, instead of lecturing others about empathy.
Does this mention what the actual game changing algorithm was?
I wish the article would be more nuanced with statements like: "higher levels of electromagnetism caused cellular changes in the crabs". This will just be used as 'evidence' by the electromagnetic hypersensitivity and anti-5G folks.

“We found that exposure to higher levels of electromagnetic field strength changed the number of blood cells in the crabs" - is it the EMF or rather physical inactivity that reduces the cell count?
We have tests, and static types, because developers are people and people make mistakes.

You can't say "we simply don't allow bugs!" because it's a lie. Why rely on a another person manually checking for silly mistakes when the computer can do it for you?
I don’t know much about Nim, does it have a mandatory gc, like go? How good is Nim’s gc?

Those who have written some Go and Nim, home does the code look like vs go?
Customize your PS1 in Mac/Linux with emojis and animations
Wasn't tRAS always around 2-3x tCL?
Bee Battles: Why Our Native Pollinators Are Losing the War
Looks cool but I don't like the idea of pushing a library on the user when they would most likely not use that kind of navigation anyway. Ever wonder why your browser is using 16Gb of RAM? This is why.

If the user is already using the keyboard to navigate, it would be better for them to install an extension like Vimium (which I think is vastly superior because it affects the whole browser.)

With this navigation I would potentially have to do more than 10 key presses to reach what I am looking for and with Vimium I have to press at most 3 no matter where on the page I want to go.
Disclaimer: I'm the author. This is the first time I've used Alice & Bob outside cryptography: they're together at last, rather than sending messages to each other, and I hope they're happy together in cake-filled bliss.

In all seriousness though: it's hard to come up with names for analogies. It's hard to come with analogies period.

What are the best examples you've seen? And what are the worst?
The studio was right. Nobody these days wants to see a B&W movie except for cinephiles.

I've opined before that new viewers would be attracted to older movies if they'd use AI to colorize them. Sacrilege! I know, I know, but colorizing an old movie is not a destructive process. I don't see an actual problem with redoing older movies to be more watchable by a modern audience.

(One could also add a decent soundtrack to silent films, not those godawful squeaking violins or somebody doodling on a pipe organ. And bring in some foley artists! and some voice actors to dub the dialog and get rid of the title cards!)
The U.N decided in 1947 to divide Palestine to two nations: one for Jews and one for Palestinians. The Palestinian and the entire Arab world did not accept this and went to war against the Jewish state. Though their rhetoric was very aggressive, arguably genocidal, they weren't successful at all despite Arabs outnumbering Jews by about 50 to 1.
They lost, and indeed 750K Palestinians became refugees, which was avoidable and is indeed tragic. Note that the Palestinian "refugees" of today are being held hostage by Arab countries like Lebanon, Syria etc and not given citizenship. Despite being born there, their parents being born there etc. Still refugees. On purpose, so the refugee problem never goes away. This is truly shameful but for some reason only Israel gets the blame.
.
Now the story continues: The Palestinians want to reverse what happened 73 years ago and allow the Palestinian "refugees" (we are mostly talking about children and grandchildren of the original refugees) to "return". To do what - live in one big democratic state with the Jews? Not very likely. And even if that was their true wish, which is doubtful, I don't see why we need to create one disfunctional state to bring "justice" to people who are mostly now dead.
This dream, this right, this fantasy (we each have our own interpretation of that) is what keeps the conflict going. If the Palestinian forfeited this wish there would be peace. But I really don't think they can, their identity is now too much involved with returning.
Now you could say the same about Zionists: if they just give up and return to their homes in Arab lands or Europe etc, or accepted life under a Muslim Palestinian rule, there would be no more problem. The one difference is that Palestinian Muslims have maybe 30 Arab states where they share the same religion and culture.
Jews literally have nowhere to go. The only country where they feel mostly safe (and even that's now deteriorating) is the United States, which doesn't seem to keen to absorb millions of refugees.
Who remembers literally having to remember dozens of phone numbers off the top of your head? With no internet to look it up one would either have to have a phone book handy or remember numbers in your head. Which is funny because one of the main numbers I remember learning was the movie theater movie line where you could get info about what movies where playing.
Also not yet, unfortunately. I wanted to hold off on that until hearing some more thoughts from users.

If you're interested in following along, I try to be open about working on Felingua over on Twitter: https://twitter.com/ianjakobs.
The US had some strong reactions against guns, but not because of violent deaths. They only started restricting gun ownership when they were used by militant groups to oppose the tyranny of US imperialism and its white-supremacist police.

The first anti-gun laws in the US (under Raegan i believe?) were precisely designed to disarm the Black Panther and other militant organizations, who were patrolling the streets of popular neighborhoods to prevent the police from murdering "random" people. Their self-defense technique worked, and that's precisely why it was banned, and to this day we still have the police shooting killing peaceful people.
> Instead, there would have been systems of credit, where you give me chickens now and I give you apples in six months. No money changes hands, but it's possible to keep track of who deserves to have some apples.

That is called "barter".

Unless all the transfers/debts/values are being tracked in terms of apple's, then apples are fulfilling at least one aspect of money: unit of account.
This is a good play by Valve - clearly learning from what the community have done with ProtonDB and previous attempts with Big Picture/Steam Machines.
Because government is tyranny, and is fundamentally incompatible with freedom. Some may have a nice colorful "human rights" coating, but that's just a facade that never holds scrutiny.
Both your examples are the same static typing. One just has better IDE integration than the other.
A static class method is exactly the same as a free-standing function, it's just in the class namespace. I don't see why you think that means you can't have function composition.
>> They are disabled to understand metaphors, no?

No. I think the problem here is that some metaphors are used so often that people forget it is a metaphor and take it literally. You seem to inject the meaning (physical?) "disability" into the word "handicap"... are you aware, for example, of the practice of handicapping race horses, i.e. inserting weights into their saddles?
This, a hundred billion times this. It’s been a nagging, cavernous hole in the explanation every time I hear the overly simplistic “barter system was replaced with the eventual invention of money”. It not only denies the existence of more sophisticated systems of barter that include any sort of “futures” being bartered, “pigs now for part of my apple harvest in a couple months”…

It also denies the existence of any systems where “money” is simply just the “most convenient commodity to barter with”. If everyone has these handy similarly sized hunks of gold and trade them cause it’s more convenient than carrying a chicken, that doesn’t mean “your using money”. If I’m happy not having gold and can simultaneously function in the “local economy” entirely with my chickens, I may use “gold”/“money” purely as a temporary item of escrow. I give gold to a shepherd to deliver sheep to my barn but he gives back the gold and takes some of my chickens when he leaves after the delivery… basically the “obviously money replaced barter cause it’s better” is a bullshit story that no one seems to give a shit trying to find evidence and I’m kind of sick of it.

/rant over

So where are the serious historical, evidence based research economists to be found? Id love a well researched history that had some evidence of past social behaviour with respect to barter/money.
>Many of them take aim at people's sex or race, but not in a challenging way.

I don't think you have to be too challenging funny.

This scene still makes me smile a decade later:

https://www.youtube.com/watch?v=Y9lYVwNEf48
You should respect comedy more, it's way harder to do than drama.
Not much extra height. They are barely thicker than the last generation.
If there are any GPL apps in the App Store, it's only because Apple is terrible and inconsistent in enforcement of their own rules.

App Store developer agreement requires you to license your app to Apple on Apple's terms, including geo restrictions, max number of installs, and other things that are incompatible with GPL.

https://www.fsf.org/blogs/licensing/more-about-the-app-store...
https://www.fsf.org/news/2010-05-app-store-compliance/
My current solution is Navidrome[0], which is a similarly lightweight music server (also written in Go and FOSS [1]), with a similary nice Web UI that works well as a responsive webapp / PWA.

Probably the biggest difference however is that, instead of a custom API, it supports the somewhat-standard Subsonic API, which makes it usable via a large collection of native clients. It also has a few more features like multiple user accounts, etc.

TBH, the overlaps are big enough that I'm not seeing the space for Euterpe. I suppose the installation is a little bit simpler if you don't use Docker?

[0] https://www.navidrome.org/about/

[1] https://github.com/navidrome/navidrome/
I think you misunderstood his point- in a system without money, you can directly barter (ie I give you an apple for your your orange), or adopt a ‘credit’ based system (ie I give you an apple today, and when I need a favor I’ll ask you for one - like the Godfather, for example).

What the book ‘Debt’ discusses is that credit based systems were the norm, not bartering.

In fact, iirc even bats have been shown to keep track of who shares food with them, and to share excess food with a less lucky partner, provided that partner continues to reciprocate.
An interesting comparison is formula 1 cars. Peak performance and parts that can be changed in seconds while still running. Even average modern cars have hundreds of parts that a lay person can reach with simple tools. Apple are obviously making a trade off (close it down for reduced size and better weather/water sealing) but then they don't get to pretend to be an environmentally concious company as that is antithical to their design goals.
Presumably because Backblaze's margins are far too low for Apple, so Apple would have to do "Backblaze, but overpriced", which could look bad - or be content with low margin.
Chaotic JavaScript Patterns
Curious to know what your use-case is for this feature
Yes, I personally would like to see Chinese and Japanese. I would happily pay for Grammarly-like daily use tool as well, in fact, for Chinese. From what I know, there is no such tool for Chinese language whatsoever.
The universe works differently at different scales the same way water looks different at -5 oC and 120 oC. However there is an underlying theory that can explain both.

Finding that theory is hard to find for our current knowledge and capabilities. But extrapolating that this will remain so will not age well.
Just like Ken Griffin
Brave has a JS toggle built into the address bar. It even separates trackers from regular scripts, and allows temporarily toggling them on and off independently.
Nim is the most readable language I've ever seen. I've dabbled with Go, but Nim is almost like pseudocodes+types. Highly recommend you take a look and try it out! You can use libraries like https://github.com/planety/prologue or https://github.com/treeform/pixie to create something quickly and fun(compile times are faaasst!).

And Nim does not have a mandatory GC, you can go as low-level as you want, but in case you don't want that you can choose from several great GC's(a capable soft real-time GC and Boehm for example).
Or you could combine the best of both worlds and take a look at the shiny fancy ARC/ORC deterministic memory management: https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc...
Yeah. Java's design mistakes directly lead to these design patterns being used constantly to work around the limitations of the language. It's such a drag.

Even if you have static methods, you still need to use this stuff because they are methods, not functions. Classes aren't objects so they can't implement interfaces or be passed around as parameters. Gotta make things like singletons and factories because of this just so you can essentially pass a function pointer around. There's names for stuff that in better languages just happens naturally without people even thinking about it.
I agree with that. I despise all the DI things where I can't "goto" to the definition of the actual dependency that was injected, but only to the interface. So frustrating. It makes understanding what is going on so difficult for me.
The comment section seem to hate on Redis Enterprise, but FYI ReJSON and RediSearch are open source and are good addons / plugins.

Why implement a JSON parser in your code when redis can take care of it? And with search added you don't have to keep track of multiple ordered sets or secondary indices. You and insert a JSON and do all sort of operations on it (basic No-SQL operations).

I think it improves dev-ex a lot. Can't wait for Redis + JSON + Search to be production ready
That's just a way to make them work in the existing ecosystem (in C++ lambdas for example are just function objects with overloaded operator()).

The final is to avoid some mistakes, but they are still effectively closures.
I'm conflicted between

- this looks very useful, and

- "parse, don't validate" has proven to me to be a far better approach for all my use-cases.

I guess validation that is language/consumer-agnostic is more useful in a big-tech context? Or maybe the advantage is to put constraints on data that you are sending to a system out of your control?

Keen to hear opinions of people that worked with similar tools.
It was settled by a jury of amateurs. The judge was replaced at last minute, by someone whose wife allegedly worked as a lobbyist for Google. Huh?
Tailscale Joins the Synology Package Center
A good selection, but yes some of them are not recent, already over, or they started a long time ago and kind of get a free pass.

And Ted Lasso is actually feel good (s1) or not really a comedy anymore (s2) ;)
They could be profitable at the drop of a hat, they'd just have to slow down their growth. This isn't rare for tech companies that IPO, in fact, these losses are rather modest for the level that they are operating at.
Working with the Vision Framework in the Playgrounds
Tangential: did anybody find success with typed Model.objects methods with Django?
Don't worry, it's conductive glue!
In FP everything is an argument anyway, but in OO land .. you always have to come up with a new concept to overcome the many limits.

That said, I think Scala did that, separating module/package level parameters and functional parameters can help designing/thinking.

my 2 cents
> But there is now zero reason to ever run Linux as the main OS on your desktop.

s/Linux/Windows/ /s

More seriously, i don't understand your point. Just because you're happy with Microsoft's practices doesn't mean free distros are all "a joke" or "irrelevant". Many people use GNU/Linux as a daily driver and we're more than satisfied.

Personal opinion: i just don't understand the appeal for Windows. MacOS at least has some design/UX guidelines which you can like or dislike but they're consistent about... Windows has just so many anti-patterns i don't have enough fingers to count. The only times i ever needed windows was because of phone-related crapware, and even then Wine was more than enough. Why would i need Windows at all?
Here is an older CDC article [1] that has some stats. This covers March 2020 to March 2021.

[1] - https://www.cdc.gov/pcd/issues/2021/21_0123.htm
The C64 mini runs on an ARM processor, so that doesn't count in this context. Also I just learned that the processor in the C64 had two coprocessors for sound and graphics (?). So maybe that also doesn't count.
Java is an amazing language ... but somehow all the ills of J2EE are blamed on Java. Back in the 2010s itself there were a lot of frameworks which were supporting both declarative and code as config. But, it is fashionable to shit on Java.
and passing a factory is just call-by-name/call-by-need.
Being cash-flow positive does not necessarily imply being profitable. The one is a day-to-day indication on whether or not you are able to make ends meet without outside funding, the other one is the basis on which you will pay - or not - taxes. It is absolutely possible to be cash-flow positive but not yet profitable, especially while growing.

There are many reasons why cash-flow and profitability can be out of step with each other, for instance, you might have capital expenditures that are going to influence future years' books, you might have an interest carrying bank loan, you may have invested money into acquiring users whose lifetime value is larger than the cost to acquire them but you haven't broken even on that yet, it's possible to have the reverse and so on.

Accounting for all this - and doing so properly - is not as easy as it may seem to be for an outsider or someone who is used to just sell their own hours, where you can immediately see the difference between income and costs and label that profits.

And even there the situation can get more complex, for instance, if work is done in one year but the invoice is sent in the next. Profit wise you are booking that money in the year the work was done, even if the actual cash only lands in the next. Pre-paid services are even more complicated (here you typically partition a chunk of the income month-by-month until the total amount is accounted for).
> Sadly jumping from the block oriented programming

Jesus, that is what I call a trip down memory lane! I wonder what happened to my RCX.
It certainly helps if you plan on going public at any point in the future.
I wish 34" iMac Pro M1 Max.
That’s what a task is.
Google’s app privacy briefings go live in the Play Store in February 2022
Nice! I was wondering if implicit parameters were equivalent to dynamic scoping. It seems to be the case.

more on the topic:

http://blog.ezyang.com/2020/08/dynamic-scoping-is-an-effect-...
Always happy to see my articles (or in this case, rant!) posted on HN :)

This was written after comparing a ~300K SLOC Go project to it's original ~800K SLOC Java project at work, that we've rewritten over the course of a year or so.

In the Go version, test coverage is floating around 90-95%. Performance, and memory use especially, is drastically better. This is from lessons learned, where a large part of those lessons meant reducing this type of 1990s XP/Agile/SOLID style of constant indirections and pass through classes.

Yes, the main files where startup allocation happens are huge, but it's all in one file (per service) and can be easily grokked with IntelliSense and general code navigation features.

In the Java version, every folder had a large section of subfolders with files that pointed to other files that perhaps did something besides calling other objects. Startup was horrible, memory consumption was high and tests were somehow more verbose than Go (which are already a mouthful).

I want to point out that I love SmallTalk, and feel that this style makes sense in that environment. For Java/Microsoft Java, this style is IMO not worth the effort for neither developers nor codebase.

Interesting discussions in this thread already, thank you <3
I'd argue you are proving the point of the P and GP.

Being handicapped (at something) does not make one disabled. Words have more than one meaning they also have context. The fact I cannot speak French, for example, is a handicap to me when I am in France but not when I am in England.

Assuming that the listener/reader has some level of comprehension (and things are not literally lost in translation) my personal experience of situations like this is often more of a problem of the listener/reader's insecurities.
Cute, but the Legos are crazy expensive. What you save by using a Pi, you lose by buying Legos.
I assume requiring a very specific compiler version would still satisfy the letter of the license. The compiler is publicly available, so you could replace the LGPL part. You get no promises about being able to replace or even maintain anything else.

BTW, Rust's objects/rlibs may contain bitcode and a high-level form of generic/inlineable code, so they should be much easier to reverse/decompile than an optimized binary. If the goal was to keep the non-LGPL part closed, it won't work well.
Would you use this product?
This is a chrome extension we have been working to launch soon. A brutal honest feedback on the product would be appreciated.
All of these articles omit just about the most important part of DI. And I admit it can be subtle, but the biggest thing DI solves is just initialization order.

You can call it "Static Initialization Order Fiasco" in C++ or just general dependency handling, but a big problem in any sort of bigger server or framework is just setting up all the parts that make it run. If your handler A depends on B and C which in turn depend on D, E and F each of which can have their own dependencies, writing and maintaining the correct boilerplate that sets them up along the critical path is a problem best left for the fricking computer to figure out itself.
DI is just passing arguments, but there is another term used along with that, which will better clarify why DI is needed, which is IOC (Inversion of Control).