This is the same problem with cheating on tests and homework. By making getting a higher education degree mandatory for entry level jobs to be able to afford a normal life, people are incentiviced to get the degree, not the education. By tackling this particular case of students with fake disabilities, the universities will hurt people with real disabilities. Same thing with anti cheating measures that affect people that don't cheat.
The root case of all this is making degrees mandatory on our society.
Yeah, I do something similar with org-node (org-roam alternative) where every capture templates has an inactive timestamp at the end before the tags.
i.e. Idea: Build minesweeper in the terminal with Ratatui @ [2025-02-05 Wed 18:01] :@someday:
And then I capture it in a daily note (or very rarely refile it) that has an org-id. Then everything gets connected with links and backlinks.
I keep the usual CREATED in the properties drawer empty in case I want to turn that heading into a node for linking at some point.
Though I'm still figuring out some things about my approach as I go. One thing is clear, org-mode can be adapted to quite a lot of workflows regardless of their weirdness or efficacy.
Git gives you a full history of changes which is convenient for many other reasons. I also do sometimes put dated and less often timestamped entries when desired.
This is less a guide on how to do fp in Javascript, and more of a tutorial on how to implement a pure-functional-programming language in Javascript.
Javascript can do some functional programming, but it's not Haskell or OCaml. If you try to use it like that it quickly becomes a big mess and one that is not performant at all. You want to do pure, functional programming? Then write Haskell, or Elm, or Purescript.
I'm saying this as someone that loves fp, but is trying to get rid of a considerable chunk of fp-ts on a big codebase at work.
As a wise man once said, don't fight the language. Doing this deviates from Javascript semantics. It's a hack that is not actually helping people learn fp.
Also, please, don't do monads in Javascript! Monads are a solution for pure languages to deal with effects. Javascript can just do effects as it is!
> But the reason it is an integrated system—and not just a collection of useful programs—is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically found, wrote, or found people to write everything on the list.
First of all, I mostly use Alpine for Linux servers, so I guess that should be referred to as Busybox/Linux according to this?
Second, the work done to make an integrated OS on desktop is not done by GNU anymore[0], it is done by the GNOME/KDE dev's.
[0] Also, what does "integrated" even mean in the context of a UNIX-like OS. Doesn't that sorta defeat the point?
> I guess that should be referred to as Busybox/Linux according to this?
I don’t know how you could come to that conclusion. The linked page basically says the opposite of that. The Linux project is a project to write a kernel (created to replace the existing MINIX kernel). The Python project is a project to write a programming language (for many operating systems). The GNU project, on the other hand, is to create (and integrate pre-existing parts into) an entire operating system, from the bare metal to the desktop. It’s more like the Debian project in that respect, except that the GNU project themselves write, or asks others to write, a lot of the non-existing components. Debian on the other hand tries to not do much software creation themselves, and has chosen to use the existing parts of the GNU system components combined with the Linux kernel to make a complete and working operating system.
Fair point. I feel like you could make a case for $DE/Linux on desktop, $COREUTILS/Linux on server and Android/Linux on mobile then whenever greater precision is needed.
That said, how often do you need to distinguish between the Coreutils in use? If you say Linux server, unless you specify something out of the ordinary, everyone will assume you have GNU or Busybox coreutils - which doesn't matter that much, you can do pretty much anything with either afaik - and whatever server software is in use. Or on desktop, you can just mention the distro in question and everyone will know or be able to find out all of the above. Why specify every single time?
Honestly you probably should prefer to specify by distro, and use the userspace+kernel convention only when you specifically care or it matters for some reason. If I say Fedora, I probably don't need to say "Fedora GNU/Linux", since GNU and Linux (as well as RPM and systemd) are implicit in "Fedora". On the other hand, "Debian" usually means "Debian GNU/Linux" but Debian has a living HURD version (Debian GNU/HURD) and a basically-dead FreeBSD version (Debian GNU/kFreeBSD), and experimental work has been done to allow replacing its coreutils with... I think the Rust rewrite? So there it can be useful to specify.
And, of course, the other reason is because we are Hackers and hackers love their pedantry;)
That entire page can basically be summarized as "The GNU components in Linux distributions are becoming less significant each year, but please call it the 'GNU system' anyway because we like that name better."