• 1 Post
  • 19 Comments
Joined 1Y ago
cake
Cake day: Jun 27, 2023

help-circle
rss


Deprecation warnings should contain suggestions for alternatives.


IMHO the reality is more complicated than what’s described here.

  1. Open source is sustainable (in the sense that people will continue to do it), even without the maintainers getting paid, for better or worse. This is evidenced by the history and the majority of open source projects now.

  2. The bait-and-switch problem, which gets the maintainers paid, hurts the ecosystem in the long run, which relies heavily on the good faith.


Static websites can be beautiful and easy to use without being complex.

PG’s blog and HN can definitely use some CSS tweaks. I can’t remember how many times I clicked the wrong thing in HN.

On the other hand, it’s easy to get reader mode/custom CSS/alt frontend working for such websites, so maybe it’s alright after all.


The original “agile” is a reaction to the overly rigid planning and emphasizes worker self-management. It makes sense since the people who are closest to the work (the workers) know best how to plan and implement the work.

It immediately breaks down when a specialized management tier emerges and tries to push their own agenda, i.e. to sell themselves rather than do something meaningful.

At this point, whichever form is used doesn’t matter. The management, endowed with the power from above, will exploit the weakness of any agile-shmagile methodology to push their own agenda.


BitTorrent has partial seeding. So if someone extends a torrent with some files, the original one can still be used for seeding.

Another reason for the last bit being the slowest is because populars chunks are downloaded first.





Thank you for raising the question. I think it’s an important one to think about. I constantly hear about good things about the REPL experience of LISP family languages. You can set up a code fragment (the test in your example) to run constantly in the background as you edit. Then you can jump to the REPL anytime and interact with the state.

I myself am more on the ML-family side of FP, where you’d encode the expected behavior with an expressive type system and work with the type checker (the smart compiler) to implement that behavior.

One important thing to note is that the type checking process is also a fast feedback loop. The difference is that it’s often on the abstract level and you’re more concerned about the expected behavior instead of the actual behavior.

It’s harder to write, but the advantage is that you’ll have more confidence once it type checks.

Of course, the two styles are not mutual exclusive, just that the tooling ecosystem will often reflect the culture of that language family. And it’s easier to add a simple watch make task, but harder to go the other way around.







Salary and working hours have little to do with productivity though. It’s all about the workers’ negotiation power. We have many technology breakthroughs in computers that have nothing to do with AI and see where we are now.



At least for GDPR, if you are not storing users’ data, you don’t have to put a banner.


Take Rust as an example, composition implemented in modern languages is really a mix of both paradigms.

In the Advantages of Inheritance section, we can emulate the inheritance way by adding a IndefinitelyDoStuff type class (or interface). The type’s capability is extent by type class hierarchy and code duplication is mitigated by default implementation.

Inheritance provides a safer experience due to compile time guarantees […] the code simply doesn’t compile until you’ve updated all child classes

Similarly, adding that to the type class declaration will enforce implementation for each instance to be added at compile time.