> the Norwegian Data Protection Authority strongly doubts that Meta's proposed ‘consent’ mechanism, often dubbed ‘pay or okay’, complies with the GDPR. The EDPB’s decision is therefore important to avoid Meta's infringement continuing while the company is exploring its options.
It's for the UI, yes, since they're not my accounts, I'm just tech support for them ;-) I've seen there is an hledger-web, but there's a bunch of reports and workflows already set up in Gnucash and switching would involve learning new things and I'd rather spend as little time as I can on accounting and taxes. (OTOH adding a script to enable "git log -p" took like ten minutes.)
I store the .gnucash file in git, and after editing things in Gnucash I run a script that exports[0] it to a hledger file in the same directory and commits both. So `git show` gives me a readable view of what changed, but the accounts are still usable by non-nerds.
I was in a similar position using Python at work. At first I learnt Ocaml on the side, which was really fun, and taught me to work with types instead of avoiding thinking about them as I did with C++. Then I got a job where I got to write "simple" Haskell – picking up Haskell after Ocaml was no problem, mostly just felt like a change of syntax. It's been fun, and for the domains I've used it for (mainly combining data from various sources, analysing, predicting), a very good fit. Also used it for web stuff with IHP lately, which has also been a success.
The Haskell ecosystem is somewhat larger than Ocaml's (more support, users, learning materials, libraries). The difficulty with Haskell is mostly that it makes abstraction so easy that you can be tempted to make your code too abstract. But if you can manage to KISS, it can feel like a safer, cleaner, faster Python. Haskell doesn't require you to code in pure functions, but it will let you know through the types that a function is not pure / is "in IO", and it has lots of features to let you easily do things purely that you would otherwise do in IO. That may lead to more of your code being pure in the end. F#'s main advantage is access to the C# ecosystem, though at the cost of possibilities for null pointers when calling C# libraries / .NET API's.
> The value isn’t in the pure execution time, it is in everything around it.
Especially for those of us who get paid for developing, designing, supporting, architecturing, meetinging, catering, conferencing and maintaining everything around it :-)
There's kind of a race-to-the-bottom[0] wrt. decentralisation.
It'd be better for the internet as a whole if we don't always pick the most popular (so when your email's CDN goes down you can still communicate on chat, when CNN goes down you can still read BBC). But as an individual I have strong incentives to pick the one everyone else picks, because that's presumably the most stable/documented/lowest cost due to volume.
* isSpace handles tabs, but looking at a single byte at a time it won't handle all the multibyte space symbols you can have in unicode. If you read further down, they rip out the remains of unicode handling for further speed improvements.
* Looking at a single byte at a time, it presumably only handles the "C" locale :) They don't say what locale GNU wc was tested with (if it's not LANG=C, that benchmark should be re-run)
* --max-line-length? no. But I'm guessing GNU wc isn't benchmarked with that option on (can't find the invocation in the blog post though)
* data State { ws, bs, ls } keeps count of words, bytes (more honest than calling it characters) and lines.
I remember reading a story about someone who got fired from some Silicon Valley tech job, and they almost immediately revoked their key card, so they got stuck in the staircase and had to wait for someone to hold the door open so they could get out of the building. (As if getting fired wasn't bad enough, you have to beg favours from random passers-by.)
For those times when you click a link to a paywalled article, http://unpaywall.org is a pretty handy Firefox extension that will redirect to a (legal) unpaywalled alternative site, if it exists.
A buffer doesn't have to correspond to a file, e.g. "built-in" stuff like Messages or Help or scratch. I often "C-x b asdlkfj RET" to create a new "scratch" buffer for quickly jotting down something or transforming something. I can of course save that buffer to file, or I can just kill it.
When coding elisp, you often use the (with-temp-buffer …) macro to do more or less the same thing :-)
Also, several buffers can correspond to one file: "C-x 4 c" runs clone-indirect-buffer-other-window which creates two views on one and the same file. This is not the same as splitting the window: The two buffers can each have their own, different narrowings applied. Say you have two functions defined in one file, they're almost the same, so you want to compare them. Now, clone the buffer, narrow the first buffer to the first function, the second to the second, and now you can run ediff on the two buffers :-) Or you can even open the same file in different major modes at the same time …
See also https://www.in-ulm.de/~mascheck/various/uuoc/ (via https://lobste.rs/s/rtvp2u/useful_uses_cat#c_0xpqkr )