875 karma · joined December 12, 2010
On the basis of that experience, I'd certainly have the LSX/LS50 on my shortlist if I was looking for speakers in that size.
I don't follow FreeBSD closely, but if memory serves there was a concern, particularly in the early days of the ZFS port, that their implementation couldn't be counted on to release RAM fast enough, if the system suddenly came under significant memory pressure. Hence the advice was to always run with more-than-sufficient RAM to minimize the likelihood of getting into low memory situations. I think this is a significant part of why FreeNAS considers 8GB to be the minimum supported configuration.
So it seems to me that this isn't really about ZFS's RAM requirement, rather it's about hedging against the volatility of the RAM requirements of other software on the same box, in case ZFS can't back off fast enough.
These days I run ZFS on Linux, and I remember about 4 years back spinning up some bulk data processing job that was configured to use 14GB of RAM, on a 16GB box, and watching ZFS's ARC RAM use drop in a single second from 5.5GB to 0.5GB. So I'm satisfied that for my purposes, on ZoL in recent times, this isn't an issue I need to worry about.
One thing that bothered me was how cumbersome the queries become once you start having to concatenate and coalesce a whole bunch of columns together. Postgres has a variadic function called "concat_ws" which ought to be useful here, especially as it implicitly coalesces NULL inputs to empty string. However, it's not declared to be immutable, so can't be used in an expression index.
The solution (from Erwin Brandstetter's answer on Stack Overflow) is to use an immutable variant of this, constrained to only handle data of type "text".
https://stackoverflow.com/questions/54372666/create-an-immut...
With this immutable concat function in place, and a trigram expression index making use of it, the WHERE clauses become a lot more concise, for example, the clause in the final query of the article reduces to just:
WHERE immutable_concat_ws(' ', asin, reviewer_id, reviewer_name, summary) ilike '%' || input.q || '%'Long live the Grauniad. (That being a nickname given to The Guardian due to its tendency for typos.)
Used to use Ubiquiti Edgerouter, until it failed. The Smart QOS feature was pretty good. Used to use Unifi for wifi, but always struggled with clients getting stuck communicating with the most distant access point.
(Edit: In case it's relevant for some, I should also list: a Draytek 130 to adapt perculiar UK PPPoA broadband to PPPoE.)
Added bonus: repeat this process monthly to ensure you stay up to date!
No doubt the metallurgist was grossly irresponsible here, but I do wonder whether they might be making a song and dance about this one aspect to distract from a whole chain of careless practice.
And yet, the goal of the language is to enable activity at the liberal end of the axis.
So maybe there's a more subtle goal: you have to enable someone to make a mess, but also equip them to get out of that mess into something more structured, as and when that becomes useful.
As a counter example, spreadsheets are wonderful for making a messy solution to certain kinds of problems - but how do you then it them into a spreadsheet that isn't a mess? I don't know that I've ever seen that happen - it seems like the right means of abstraction and combination to enable that to happen just don't exist in spreadsheet-land.
More in the realm of traditional business IT than what HN is focused on, the database is often the point of integration between several different systems, with views and triggers providing the means of abstraction at the interface boundry.
Of course ideally all such systems would only ever profer perfectly valid data, but in practice ...
To cope with this, in the same transaction that you're increasing the length of the varchar, you will also need to drop and recreate all such dependent views (and any other views that depend upon those views, etc).
This is not fun.
In comparison: increase the maximum length of the check constraint, job done.
I'm a PC tech who grew weary of figuring out which panels need to be removed, cutting myself on sharp metal edges, trying to distinguish between the five different types of screws needed to hold the various internal components in place, having to remove the CPU cooler and (what feels like) a quarter mile of cabling to be able to replace the power supply, etc, etc. And as it happens I've just replaced my old HP Z600 with a Z620.
Only issue I've had is that if it's a J1900 Celeron CPU, ensure you have the machine set to boot via UEFI before installing. (IIRC there's an open issue for FreeBSD installations failing to legacy boot on J1900 boards.)
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/b...
https://ariadne.space/2021/05/20/the-whole-freenode-kerfluff...
I'd guess NPR's view is along the lines that, well, the filter's already there, and we like the way it sounds, so we keep using it.