I ran into the same thing with Kinesis. The Kinesis API has strict limits on batch size, message size, and rate limiting. Any client writing to Kinesis must deal with all of these constraints and handle errors properly.
I briefly looked at localstack to see how they implemented the Kenesis api and other than a `KINESIS_ERROR_PROBABILITY` option to simulate rate limiting, they did not implement any of the constraints.
Thanks for pointing this, I am adding a few extra validations in v 18 (to be released in a few hours) feel free to raise an issue, this is an open source project but I do review each PR and I keep the code as clean as I can... And yes we do use AI but we know what we are doing :)
One interesting thing with zram (which OS X also does by default) is that certain memory leaks... effectively don't. I have a little raspberry pi where I have zram enabled. If I make a string in python and keep appending 'a's to it, eventually zram just soaks it up:
$ zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 3.8G 2.3G 13.2M 17.2M 4 [SWAP]
If the effectiveness of mining is represented as profit divided by the cost of running the infrastructure, then a CPU that someone else is paying for is worth it as long as the profit is greater than zero.
A "receiver" has been one of the standard options for making bookshelf speakers work for more than 50 years. A receiver is also not expensive. You can get a basic used one for under $100. I paid $30 for a perfectly working 5.1 Denon receiver with HDMI.
Your problem is that you aren't even using "Modern" AV stuff. If you were, your speakers and TV would both have HDMI Arc ports. Arc has been a thing since 2009.
> That's harder than it sounds though because you have to navigate the menu blind using short and long button presses with the one button.
Receivers are big because of the amplifiers. AV receivers have to drive lots of channels. They are all 5.1 or 7.1. But stereo receivers are also huge.
I suspect that some of this is tradition because there are small solid state amplifiers. I'm surprised no one has made a small receiver for 2.1 system cause would be pretty common.
If you open a standard sized receiver up, you'll probably see that 50% the space is empty for airflow, 25% of the space is for a large heatsink because they're passively cooled to minimize noise (thus the need for airflow), and 20% of the space is really big capacitors.
They do make half size receivers, but they typically only have half the power output. The space savings comes from removing space for airflow and the heatsink, and using smaller capacitors for less heat and smaller power output.
If you only need 2.1 output and a quarter of the power, there are offerings that are basically the size of the minimum amount of ports: 2 pairs of speaker terminals, a pair of RCA terminals for subwoofer out, a HDMI port, a optical port, and power. But then it's not really a receiver and more just of an amplifier+DAC because they only have one HDMI input/output, having space for multiple HDMI ports or speaker terminals basically increases the size to the offering above.
They're big mostly because consumers demand a lot of big connectors on them.
Sometimes I see cheap "amplifier only" designs that are about the size of a small 2U rackmount, but then you usually give up a lot of inputs and controls; they seem to be used either as PA amplifiers or as "extra room" units in the weird whole-house audio systems that apparently thousands of people had at one point and all dumped in the Goodwill.
Usually receivers are intended for passive speakers, a lot of the bulk is for housing and cooling amplifiers.
If your speakers are active and don't need an amp, you can use a HDMI audio extractor, those are pretty small (mine is about half the size of my phone)
I briefly looked at localstack to see how they implemented the Kenesis api and other than a `KINESIS_ERROR_PROBABILITY` option to simulate rate limiting, they did not implement any of the constraints.