• 6 Posts
  • 92 Comments
Joined vor 3 Jahren
Aquileo | cake
Cake day: 10. August 2023

Aquileo | help-circle
  • Actually, unlike on Windows, fwupd itself contains the code to flash firmware on various types of devices, and all the manufacturer provides is the firmware file itself.

    On Windows you can (apparently) provide an arbitrary installer yourself instead. That said, theoretically a UEFI upgrade could mess with your system since that firmware ends up running on the main CPU itself.

    It is also conceivable that you could have rogue firmware on some other device that can mess with the system via DMA (direct memory access). But then we are talking full on hacking, and likely unreliable across different kernel versions etc. Notably monitors don’t have such access. Enabling the IOMMU should also help protect against this (since that restricts what RAM addresses each peripheral can access).



  • For me this is a killer feature. For a start, we value atomic commits, where each commit does one small standalone thing. This makes review easier, as well as going back and looking at history to figure out why something was done the way it was. An easy to read history is critical at a large company. Commit messages are often muliline and long and describe the why and why not other alternatives that were considered.

    But this also means your PR branch should have clean history, and editing said history is absolutely encouraged (even mandatory). We use azure devops and flawed as it is, the review UI handles this case well. I believe github is far worse at handling force pushes.

    Review, design review and even CI runs takes time, so I often need to start building on top of a PR before it is fully finished and merged. Because I work in a sector where we have actual certifications (safety critical systems, think things like brake controllers, medical devices, etc) this means “move fast and break things” just isn’t an option (nor should it be). This also slows down the PR workflow. Even after the C++ code built, you can expect a few hours to run the test suite with full physical simulations. And review can take days for larger and more critical changes.

    So yes, many branches have more than one commit. And it is not uncommon to build upon yet to be merged branches (with the knowledge that small things will need to change as the followup is being rebased on top of changes of the original PR).









  • Vorpal@programming.devtoSelfhosted@lemmy.worldOpenWRT router
    Aquileo | link
    Aquileo | fedilink
    English
    Aquileo | arrow-up
    2
    ·
    vor 7 Monaten

    Yeah, the Flint 3 seems like a worse overall router when it comes to computational power and chipset. The only thing it has going for it is WiFi 7 (instead of 6) and 2.5 G ethernet on all ports. The Flint 3 is also more power hungry, which isn’t great given the high energy costs in Europe.

    Most people don’t benefit from WiFi 7 (WiFi 6 is already good enough for almost everything) and if you want more than 2x 2.5G ports, consider getting a (managed) switch to extend the router with.










  • I think a lot of modern software is bloated. I remember when GUI programs used to fit on a floppy or two. Nowdays we have bloated electron programs taking hundreds of MB of RAM just to show a simple text editor, because it drags a whole browser with it.

    I love snappy software, and while I don’t think we need to go back to programs fitting on a single floppy and using hundreds of KB of RAM, the pendulum does need to swing back a fair bit. I rewrote some CLI programs in the last few years that I found slow (one my own previously written in Python, the other written in C++ but not properly designed for speed). I used Rust, which sure helped compared to Python, but the real key was thinking carefully about the data structures used up front and designing for performance. And lots of profiling and benchmarking as I went along.

    The results? The python program was sped up by 50x, the C++ program by 320x. In both cases it changed these from “irritating delay” to “functionally instant for human perception”.

    The two programs:

    And I also rewrote a program I used to manage Arch Linux configs (written in bash) in Rust. I also added features I wanted so it was never directly comparable (and I don’t have numbers), but it made “apply configs to system” take seconds instead of minutes, with several additional features as well. (https://github.com/VorpalBlade/paketkoll/tree/main/crates/konfigkoll)

    Oh and want a faster way to check file integrity vs the package manager on your Linux distro? Did that too.

    Now what was the point I was making again? Maybe I’m just sensitive to slow software. I disable all animations in GUIs after all, all those milliseconds of waiting adds up over the years. Computers are amazingly fast these days, we shouldn’t make them slower than they have to be. So I think far more software should count as performance critical. Anything a human has to wait for should be.

    Faster software is more efficient as well, using less electricity, making your phone/laptop battery last longer (since the CPU can go back to sleep sooner). And saves you money in the cloud. Imagine if you could save 30-50% on your cloud bill by renting fewer resources? Over the last few years I have seen multiple reports of this happening when companies rewrite in Rust (C++ would also do this, but why would you want to move to C++ these days?). And hyperscalers save millions in electricity by optimising their logging library by just a few percent.

    Most modern software on modern CPUs is bottlenecked on memory bandwidth, so it makes sense to spend effort on data representation. Sure start with some basic profiling to find obvious stupid things (all non-trivial software that hasn’t been optimised has stupid things), but once you exhausted that, you need to look at memory layout.

    (My dayjob involves hard realtime embedded software. No, I swear that is unrelated to this.)