HN user

alschwalm

277 karma
Posts13
Comments35
View on HN

I've also hit this issue. About a year ago I made an effort to use blink, but after a bit of work I recall essentially discovering that any support was effectively abandoned. I wish they would remove the note in the FAQ about supporting multiple engines, as it doesn't seem to be the case.

  Location: Huntsville, AL, USA
  Remote: Yes
  Willing to relocate: No
  Technologies: Rust, C, C++, python, Xen, KVM, hypervisor development, Linux kernel development, IDA Pro
  Résumé/CV: https://alschwalm.com/resume/resume.pdf
  Email: adamschwalm@gmail.com
I am currently a technical lead for a hypervisor product. My career has primarily been focused on low-level security and performance for quasi-embedded systems, but I also have experience with reverse engineering and machine learning applications. I am passionate about using modern technologies like rust to improve the security posture of products and would like to continue to work in that area.

VirtIO is very usable via QEMU, without libvirt (naturally, because in the configuration described in the article, libvirt is just calling QEMU). It is usually as simple as `qemu-system-x86_64 -drive file=/path/to/my/disk,if=virtio`.

I'm concerned about self hosting a service like this as well, so I put mine behind an nginx reverse proxy that requires a client cert for auth. That way, an attacker won't even be able to reach the bitwarden server to try to get in (unless there's a vulnerability in nginx).

We were actually previously using vagrant (-libvirt) for our CI, but moved away from it to this because vagrant does not seems to work very reliably when run in parallel. For example image downloading doesn't seem to have a filesystem lock, so one would succeed and the others failed.

In general, we wanted to be able to spin up our test VMs under docker containers to eliminate issues with differences between our CI shell-runners. Using libvirt based tooling makes that pretty hard. Calling to qemu directly, on the other hand, makes this easy.

There are some other benefits as well such as having direct console access which is not provided by vagrant, but can be very useful for kernel tests.

Wait, what? I know that hw accelerated video decoding is generally not available on linux chrome, but I'm pretty sure that lots of other things are. From my chrome://gpu

    Canvas: Hardware accelerated
    CheckerImaging: Disabled
    Flash: Hardware accelerated
    Flash Stage3D: Hardware accelerated
    Flash Stage3D Baseline profile: Hardware accelerated
    Compositing: Hardware accelerated
    Multiple Raster Threads: Enabled
    Native GpuMemoryBuffers: Software only. Hardware acceleration disabled
    Rasterization: Software only. Hardware acceleration disabled
    Video Decode: Software only, hardware acceleration unavailable
    Video Encode: Software only, hardware acceleration unavailable
    WebGL: Hardware accelerated
    WebGL2: Hardware accelerated
But this is with an integrated GPU, so maybe things are different for discrete cards.

Hy is a great project. One unfortunate thing, though, is that no one has been able to successfully implement `let`, which makes writing idiomatic lisp almost impossible. I'm curious if anyone can actually prove it can't be done or is just very difficult (or too slow to be useful).

Author here. This is a pretty introductory post, but I wanted to do something basic before going more in-depth. The next part (hopefully!) will contain a tool release (in the form of an IDA plugin) for automating things.

When noexcept? 10 years ago

It is probably also worth noting that there is a good optimization opportunity when using noexcept move constructors. std::vector::push_back has a strong exception safety guarantee, so the normal behavior when the vector is at capacity is to create a new buffer and copy construct each item in the vector into it. If the copy constructor of any element throws, the original buffer is still in a coherent state.

If the type has a move constructor that is noexcept, then each element can be move-constructed without fear of an exception occurring. For many types, this is vastly more efficient.

Ripgrep code review 10 years ago

I'm a fan of the graphics as well. Does anyone know what they were made with? I see the org-mode reference at the bottom of the page, but I assume that doesn't include the images.

Sqlite Performance 10 years ago

Anyone have any thoughts on why removing the superfluous assignments had such a dramatic effect? That was a surprise to me.

How does gdb work? 10 years ago

I think just DIE's would be sufficient, definitely don't need accelerator table stuff.

I've actually considered looking more at the LLVM dwarf writing components. Do you have any experience with that?