• 0 Posts
  • 15 Comments
Joined 10M ago
cake
Cake day: Nov 07, 2023

help-circle
rss

With type annotations, this problem is mostly alleviated in practice, while still keeping the productivity gains of duck typing.


lspci will read the vendor and device id via PCI and use that to determine what the device is. You might want to make the output a bit more digestable / useful via lspci -s 03:00.0 -k -nn, but I’d assume the ids that match an 2070 will show up.

Could you please take the card out and provide us with a few pictures from different angles, maybe getting a good look at the actual chips?

I’d like to rule that out before chasing rabbits here.

Also, you could always run nvidia-settings, which will show information about an NVIDIA card using a different access method.

I’d still like to see the pictures of the card though ;)


I am aware of what you are saying, however, I do not agree with your conclusions. Just for the sake of providing context for our discussion, I wrote plenty of code in statically typed languages, starting in a professional capacity some 33 years ago when switching from pure TASM to AT&T C++ 2, so there is no need to convince me of the benefits :)

That being said, I think we’re talking about different use cases here. When I’m talking configuration, I’m talking runtime settings provided by a customer, or service tech in the field - that hardly maps to a compiler error as you mentioned. It’s also better (more flexible / higher abstraction) than simply checking a JSON schema, and I’m personally encountering multiple new, custom JSON documents every week where it has proven to be a real timesaver.

I also do not believe that all data validation can be boiled down to simple type checking - libraries like pydantic handle complex validation cases with interdependencies between attributes, initialization order, and fields that need to be checked by a finite automaton, regex or even custom code. Sure, you can graft that on after the fact, but what the library does is provide a standardized way of handling these cases with (IMHO) minimal clutter. I know you basically made that point, but the example you gave is oversimplified - at least in what I do, I rarely encounter data that can be properly validated by simple type checking. If business logic and domain knowledge has to be part of the validation, I can save a ton of boilerplate code by writing my validations using pydantic.

Type annotations are a completely orthogonal case and I’ll be the first to admit that Python’s type situation is not ideal.


I’m not talking about type checking, I’m talking about data validation using pydantic. I just consider mypy / pyright etc. another linting step, that’s not even remotely interesting.

In an environment where a lot of data is being exchanged by various sources, it really has become quite valuable. Give it a try if you haven’t.


I wholeheartedly agree. The ability to describe (in code) and validate all data, from config files to each and every message being exchanged is invaluable.

I’m actively looking for alternatives in other languages now.


Slight nitpick: Brymen handheld meters often have better specs in the handheld market, in particular when you are looking at a fixed price point.

You see a lot of Fluke meters around due to service agreement, as well as government and military contracts.

Don’t get me wrong, meters are fine, but there is no reason to spend that kinda money at home, unless the service manual of your washing machine explicitly states all measurements are to be done by a Fluke meter.


Is anyone in this reality content to be alive? Happy even?


I also currently use it for a new project since all needed 3rd party libraries are from a very specific domain and the project has a deadline, so writing and testing wrappers for Rust that would provide me with any meaningful advantages down the road are too costly to budget for before the deadline.

That could become part of a future refactoring, though.


They do make managed switches, but just to be completely clear, my comment was mostly hyperbole. I just found the general combination of security - mindedness and cheap Chinese hardware curious / amusing.


I was wondering… that tp-link probably negates anything remotely resembling security on its own. But yeah, you can update some of these noname boxes easily, others, not so much.

I have dealt with (in a professional capacity) Chinese manufacturers that are under the impression they do not have to provide a working build tree for the kernel, let alone firmware, so its a gamble if you’re not talking to a major Chinese name brand. Mind you, I was ordering hundreds of those boxes, so there was some leverage.


I can second that. We had some really good experiences with ClickHouse and its performance. If it fits the bill, it’s a very nice piece of software.


I started working with CUDA at version 3 (so maybe around 2010?) and it was definitely more than rough around the edges at that time. Nah, honestly, it was a nightmare - I discovered bugs and deviations from the documented behavior on a daily basis. That kept up for a few releases, although I’ll mention that NVIDIA was/is really motivated to push CUDA for general purpose computing and thus the support was top notch - still was in no way pleasant to work with.

That being said, our previous implementation was using OpenGL and did in fact produce computational results as a byproduct of rendering noise on a lab screen, so there’s that.


Hey, great that you chimed in, I agree with the points you’re making. As for my remark regarding amplitude, what I wanted to convey was: in the measurement scenario using the PhyBox smartphone app, OP should see an overall smaller signal envelope if the NAS was properly decoupled, compared to the previous plot.

As for your comment regarding the Nyquist theorem, PhyBox maintains a list of devices and their sensors so it would be possible to lookup the available sampling frequency. There are other factors potentially limiting the sample rate (e. g. switching offl microphone access for the app on Android), but it’s a good starting point.

https://phyphox.org/sensordb/

However, I think we agree this should be solvable without much theoretical effort.


Honestly, I think your approach using the MEMS accelerometer in your smartphone is fine - just make sure to tape the back of your phone firmly to the board to get a rigid connection. This will be of particular importance if you want to do any kind of tuning, as you might measure spurious frequencies if the device is not properly attached.

Smartphone accelerometers are actually used in civil engineering / industrial applications to determine frequencies of e. g. bridges or check for bearing wear. If you are interested, here are some papers:

https://www.spiedigitallibrary.org/conference-proceedings-of-spie/9804/98040C/Identification-of-the-operational-frequencies-of-300-bridges-using-smartphones/10.1117/12.2222097.short#_=_

https://www.scielo.br/j/lajss/a/ZnWZ8T86HHBLFvdksCh7g9s/?lang=en

https://www.mdpi.com/1424-8220/19/14/3143

https://www.mdpi.com/1424-8220/15/2/2980

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9824767/

That being said, the accuracy of the frequency readings is not super important for your application, as what you are after is pretty much only a reduction in amplitude. I would assume spinning hard drives show different responses to different vibrational frequencies, but I did not have the time to research this myself. However, here are two papers that explore what you are trying to do, which I will link since they also mention a few related papers that show the impact of vibrations on hard drives:

https://link.springer.com/article/10.1007/s00542-012-1592-z

https://content.iospress.com/articles/shock-and-vibration/sav00458

This would in theory incentivise to optimize dampening certain frequencies, but I suspect you will quickly get into the realm of overengineering / premature optimization, as the dampening might be good enough to tune out all relevant frequencies without simulations or tuning etc. However, it’s still certainly a worthwhile effort for educational purposes though.

As for a practical approach, I’d probably simply start out with some super cheap foam obtained at the nearest home improvement or crafts store and see how a sandwich using that affects signal amplitude. You could even introduce artifical vibrations using a DC motor with a weight mounted off-center on the shaft, which you can get ready-made for next to nothing on eBay (“vibration motor”, ~ $2).

If you want to get into tuning / experiment / analysis territory, I would like to include additional motivation. Not only might proper decoupling increase the lifetime of your drives, but it could also improve performance. I will include the following video as humorous proof of that:

https://www.youtube.com/watch?v=tDacjrSCeq4

P.S.: I firmly believe that research should be freely accessible, so I feel obligated to mention that all papers linked above are, if not available for free on their respective webpages, obtainable via a certain scientific hub.


I believe it doesn’t really matter much whether you want to protect the environment from vibrations of the machine vs. protecting the machine from vibrations of the environment - in both cases, decoupling the systems is what you want to achieve.

Eventually, you want to build a TMD: https://en.m.wikipedia.org/wiki/Tuned_mass_damper

I personally had to deal with the case of a large format CNC machine transferring stepper motor vibrations into an adjacent office via the wall-mounted brackets it was sitting on. People started to complain shortly after installation since the noise was very audible in the otherwise quiet working environment.

The solution involved placing the machine on a plate mounted via rubber decouplers (see https://www.dayco.com/en/product/decouplers) which in turn was mounted to a shop-built TMD using a rubber core sandwiched between two foam plates. The rubber core works as both mass and absorbs additional vibrations. It was built following a paper, but unfortunately, that was around 7 years ago and I’m not sure I’ll be able to dig the publication out again.

You can in fact simulate the TMD and do the tuning (see for example https://www.mathworks.com/help/simscape/ug/mass-spring-damper-in-simulink-and-simscape.html , though dedicated software packages also exist) but in all honesty, that will probably be overkill for your case.

Having your NAS sit on a 1/2" board of baltic birch plywood resting on a foam sandwich is probably going to do the trick in your case. You can easily create such a sandwich using foam, a rubber mat and some spray glue. Different foam densities will give different results and yield different “tunings” - you may have to play around with this a bit. I could imagine you’ll most likely even be able to skip the second decoupling step (rubber feet/decouplers), in the aforementioned case the second decoupling allowed for another set of frequencies to be dampened (via a different overall rubber hardness) but also brought overall amplitude down.

Don’t use super soft foam, as this will yield a wobbly base, something you probably want to avoid for your NAS. Also, make sure not to attach the base board to anything else apart from the foam, or you’ll transmit vibrations again. If you don’t like the appearance of the foam, you can build a small fence around it that goes up to the top of the base plate.

All that being said, there are also ready-made solutions like speaker dampening feet available: https://www.amazon.com/Tertullus-Speaker-Isolation-Feet-Anti-Vibration/dp/B09QC2L7N3

Most of them are made to decouple subwoofers, so they might fit into the frequency spectrum you specified. Those couls certainly be an affordable and rather quick way to solve the problem.