Most of that stuff isn't necessary just to replace Plex, the OP's saying them Jellyfin started them on a journey they're presumably enjoying, not that they needed everything there to replace it.
I think you're right the bar is still too high for most folks, although I will note that I think it's dramatically lower than it used to be. A lot of the tools are all-around way easier to deal with, tailscale makes a lot of "personal cloud" use-cases much more feasible, and then coding agents (I'm using claude code) dramatically reduce the labor costs of getting this stuff all working and fixing it when something goes wrong.
Yep you nailed it. That’s all I was saying. None of those things were critical to Jellyfin working.
But I will say for the size of my music library, Jellyfin was not quite as good as plex and was the impetus behind my switch to navidrome for audio.
And navidrome isn’t the best for audiobooks so I’m in the process of testing good audiobook hosting platforms.
So the reply wasn’t wrong either. Plex is just easier for a lot of folks, and that is why I don’t have any ill will towards their changes. They just aren’t for me.
It's not that postgres can't handle large tables, it's more that many of the ways it uses system tables aren't particularly optimized for them being large, so you're operating outside the territory the table/query design was probably built for.
Like most things postgres it'll probably still work better than it has any right to for a while, but it'd be extremely unsurprising if it caused you unexpected problems at some point. (And if it does, they'll likely excitingly novel and you'll probably have to dig pretty deep to understand what's going on.)
The Little Schemer was what finally got me to internalize how to solve problems recursively. I'd taken a couple of college classes and could do it some already, but it took a lot more thought than solving those same problems in other ways.
About a third of the way through The Little Schemer, things just clicked, and what had been hard became pretty instantly easy.
Some of that was it building on existing knowledge, but I found the structure very helpful. The narrative is really just the glue around a well-designed series of incremental problems.
As a separate path, I finally learned to internalize recursion by building a R7RS Scheme (and a good chunk of its standard library) and spending a year doing projects for fun in various Schemes and Standard ML.
I'm not saying every dev needs to do this but if you do want to get better at recursion, reading this book isn't the only path (good news for me because I really didn't like The Little Xer format).
> The narrative is really just the glue around a well-designed series of incremental problems.
I felt like The Little Schemer should have given those (nicely incremental) problems more real-world context. I worked my way through it and was frequently left wondering "OK, that's clever - but why should I care?"
Clearly a lot of people find the book useful, I might be the odd one out, but I was mostly left scratching my head.
Postgres doesn't natively support multi-master. (Although there are a variety of open source/proprietary offerings that add support for it to various degrees.)
I think it's unfortunate the first/often only exposure people get to FP is a build-up-from-the-foundations approach that emphasizes recursion so much, I think it leaves most students with a poor understanding of why functional paradigms and practices are practical and useful.
I've written primarily in a functional language (OCaml) for a long time now, and it's very rare I write a recursive function. Definitely less than once a month.
In most domains, almost every high-level programming task involves operating on a collection. In the same way that you generally don't do that with a while loop in an imperative language, you generally don't do it with recursion in a functional one, because it's an overly-powerful and overly-clunky tool for the problem.
For me the real key to starting to be comfortable and productive working in a functional language was realizing that they do actually all have for-each loops all over the place: the "fold" function.
(Although actually it turns out you don't end up writing "fold"s all that often either, because most functional languages have lots of helper functions for common cases--map, filter, partition, etc. If you're solving a simpler problem, the simpler tool is more concise and easier to think about.)
This is not the same thing, but you might be interested in taking a look at the excellent online Terra Mystica implementation (https://terra.snellman.net/) if you haven't seen it already.
It's a web interface, but the underlying representation is text-based, and you can type in the commands directly if you want. This leads to some nice features--for example, you can plan your moves several steps ahead of time, and you get a game log for free.
Yeah, in my experience having a pure text interface proves to be a very complex design challenge but it enables so much cool stuff. One interesting side effect is that it makes writing bots quite simple.
One nitpick: the guide says "If you're curious why it's important to not have a phone number on your account, see the security key FAQ", but the linked security FAQ doesn't actually appear to say why it's important.
The answer is that SMS is not a secure second factor (it's easy to hijack and eavesdrop on), and in some cases when you give a service a phone number, it becomes possible to take over the account with just control of the phone number.
There was an article floating around on HN a while ago about someone basically stating that an attacker was able to call their cellphone provider and use social engineering tactics to transfer their account to their own number. Ultimately circumventing second factor auth via SMS and gaining access to their Google account. I believe it was from an actual Google employee. So they were able to recover the account quickly.
Much better than SMS, but not as good as a security key, because if you can fool someone into logging in to an impostor site, you can get their email account.
It would be a reasonable backup in place of (or in addition to) Google Authenticator.
> We were also able to get in contact with an outstanding Verizon employee who understood the urgency and impact of our situation and shepherded our case through the byzantine halls of inter-carrier communications. We had control of the phone number back by 2 PM (which, if you’ve ever tried to get two phone companies to talk to each other, is a significant achievement. We were initially assuming we wouldn’t be able to regain control until the following week).
How in the world is a random guy supposed to do this sort of thing? Anyone have any tips for people who get into these situations and who aren't already BFFs with C-level executives of phone companies or something like that?
These are indeed answers, but they aren't the real answers.
The real answer for "why not a smartphone app" is "because code generators are just as phishable as passwords". In the real world, that's how people are being compromised, not by elaborate phone exploit pivots but by phishing pages. It also speaks to why phone authenticators are acceptable backups to tokens.
The real answer for "why not SMS" is "because both teenagers and intelligence services can get a phone number redirected; your phone number is not your phone."
Obviously, you don't PIN-lock a U2F token; the answer to "what if it's stolen" is "whoever stole it probably doesn't have your password, which they'll need in order to use the token, so if your token is stolen remove it from your account and then fish $17.99 out of your couch cushions and buy a new one".
Code generators are super phishable and that is the whole reason to abandon them in the medium term. In the short term however they are all we have for most websites so protecting the secret in a hardwre token is as good as we can get.
No matter how much you protect the secret though, not getting phished is left to the hopefully paranoid user, which is for sure not ideal, but we are probably years out from TOTP being replaced with U2F for most sites.
TOTP via hardware tokens is a stopgap.
Great comments though. Will update to reflect them.
Code generators are indeed phishable, which is why your primary login factor is a U2F token. Meanwhile, because of the way phishing works, if you go log in of your own volition to your Google Mail account, the TOTP code provides about as much security as the U2F key does.
The idea behind the U2F/TOTP stack is to minimize your exposure to phishing attacks and at the same time minimize (to practically zero) the odds of you being locked out of your account. It accomplishes that nicely, which is why most of the other experts we talk to have U2F/TOTP/backup-codes as their Google 2FA stack.
I use it on my laptop and am generally very happy with it, although I don't do all that much technical work there and certainly wouldn't want it to replace my primary workstation. (I'd be dearly sad if I had to give up xmonad.)
But it's made my laptop a far more pleasant place to get work done if I need to do so, and generally works far better than I was expecting it would. I no longer feel compelled to run a VM on my laptop to get real work done.
You can have Goodreads do something like this, in the newsletters and other mail section you can check the 'send me the monthly new releases email', 'only send this to me if it includes an author I've read', and click the customize button and deselect all of the genres.
And then you end up with an email which has new releases by authors you've read before.
I generally have no use for most of what Goodreads does, but this combined with the ability to pull my Kindle purchases in automatically is pretty useful.
I think you're right the bar is still too high for most folks, although I will note that I think it's dramatically lower than it used to be. A lot of the tools are all-around way easier to deal with, tailscale makes a lot of "personal cloud" use-cases much more feasible, and then coding agents (I'm using claude code) dramatically reduce the labor costs of getting this stuff all working and fixing it when something goes wrong.