• 1 Post
  • 198 Comments
Joined 2 years ago
cake
Cake day: December 23rd, 2023

help-circle

  • Tamo240toProgrammer HumorSenior devs...
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    I feel like there are two concepts be at confused here. ‘Mocking’ is just replacing an actual implementation with one that reports its usage, so calls or lack thereof can be asserted to occur, and tests can fail if that condition is not met. They usually allow setting side effects and return values on a per call basis also, to inject different behaviours for covering different code paths easily.

    The question is then how do I get a class like DatabaseWrapper to call into an underlying mockDB instead of the normal realDB? The answer, in static languages is dependency injection: the db object must be constructed externally to the wrapper, and passed in in such a way that any object with the same interface is acceptable.

    This allows the tests to pass in a mock with the same interface, and have the class being tested accept it. The class will then run as usual when its methods are called, but we can make assertions about how it uses its dependency. In some languages, such as python (and it seems JavaScript as well) this can be bypassed by monkey-patching the private member dynamically after the object has been constructed to be the mock instead of the real.

    Personally, I don’t think this leads to good design. Dependency injection also allows for a nice port and adapter pattern, were in the future we might replace our SQL database with a MongoDB one, and we have to rip up the application, instead of just implementing a new db class that meets the interface, and injecting that into the wrapper instead.


  • Tamo240toProgrammer HumorSenior devs...
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    While my experience is mostly C++, I assume these mocking libraries are similar in allowing you to create a class that can report it’s own usage, and allow for arbitrary returns values and side effects, which is incredibly useful, especially in conjunction with dependency injection.

    What patch lets you do is directly overwrite the functionality of private member functions on the fly, which if Java/JavaScript can do I’d love to know, I thought this was a uniquely Pythonic magic.




  • Tamo240toGitI made my own git
    link
    fedilink
    arrow-up
    1
    ·
    6 days ago

    This is a pet project I’ve been meaning to try for a while, especially to get some more rust on the github, but I was caught up on whether it made sense without git compatibility.



  • You’re welcome. I think calling it the output of an ‘AI model’ triggers thoughts of the current generative image models, i.e. entirely fictional which is not accurate, but it is important to recognise the difference between an image and a photo.

    I also by no means want to downplay the achievement that the image represents, it’s an amazing result and deserves the praise. Defending criticism and confirming conclusions will always be vital parts of the scientific method.


  • Most of what you said is correct but there is a final step you are missing, the image is not entirely constructed from raw data. The interferometry data is sparse and the ‘gaps’ are filled with mathematical solutions from theoretical models, and using statistical models trained on simulation data.

    Paper: https://arxiv.org/pdf/2408.10322

    We recently developed PRIMO (Principal-component Interferometric Modeling; Medeiros et al. 2023a) for in- terferometric image reconstruction and used it to obtain a high-fidelity image of the M87 black hole from the 2017 EHT data (Medeiros et al. 2023b). In this approach, we decompose the image into a set of eigenimages, which the algorithm “learned” using a very large suite of black- hole images obtained from general relativistic magneto- hydrodynamic (GRMHD) simulations


  • Its not hard to find that there are legitimate academic criticism of this ‘photo’. For example here. The comparison you made is not correct, more like I gave a blurry photo to an AI trained on paintings of Donald Trump and asked it to make an image of him. Even if the original image was not of Trump, the chances are the output will be because that’s all the model was trained on.

    This is the trouble with using this as ‘proof’ that the. Theory and the simulations are correct, because while that is still likely, there is a feedback loop causing confirmation bias here, especially when people refer to this image as a ‘photo’.





  • Tamo240toRPGMemes @ttrpg.networkRiver River
    link
    fedilink
    arrow-up
    50
    ·
    2 months ago

    Reminds me of

    Torpenhow Hill is a hill in Cumbria, England. Its name consists of the Old English ‘Tor’, the Welsh ‘Pen’, and the Danish ‘How’ - all of which translate to modern English as ‘Hill’. Therefore, Torpenhow Hill would translate as hill-hill-hill hill