Repairing the Washing Machine
Prelude
Computer programming and other things I find interesting.
Prelude
History
I’ve been instrumenting Neat VNC, noVNC and wlvncc to track end-to-end frame latency for the last couple of days. It is surprising how good a job noVNC actually does of decoding and rendering into a canvas element. The figures that I’m seeing are comparable to wlvncc, which is written in C!
The C programming language does not have a garbage collection, or any other kind of built-in resource management. For this reason, we who use C often find ourselves contemplating the best ways for managing object lifetimes. The following is an account of two methods that I use. Namely: reference counting and weak references via the observer model. Note that I have not tested the following examples…
I was in want of some little utility program for testing rendering jitter and judder. There are websites dedicated to this such as testufo.com and they have the right idea; i.e. that we humans (at least some of us) can quite easily detect skipped frames in an animation with side-to-side movement. I’ve been using weston-simple-egl up to this point, which renders a rotating triangle. It’s easy to…
Software development is a craft. We tend to call it “engineering”, but most of the time, it feels more like plumbing or carpentry. Most of the time, completing a task does not require any inventiveness. Sometimes we fool ourselves into thinking that we are more than a craftsmen, engineers even, and in order to verify our bias, we try to be clever where no inventiveness is required. This only…
Yesterday I finished some changes to my VNC server that will offload some of the damage checking to the GPU. This doesn’t really improve performance much but it does put c.a. 10% less load on a single CPU core on my system. Generally, my CPU isn’t very loaded, except when I’m compiling code. I don’t play computer games, so I imagine that my GPU spends most of its time sleeping. It is probably also…
I’ve been developing a VNC server for wlroots based compositors such as Sway and Wayfire. It’s called wayvnc and it’s accompanied by a new VNC server library called NeatVNC. It attaches to a running Wayland session, creates virtual input devices and exposes a single display via the RFB protocol. The project has provided me with interesting problems to work on for a few months now and there are…
Introduction Recently I’ve been working on a lock-free message queue implemented using shared memory. Some of the criteria I’ve set for it are that the queue…