LPBi14042 bicycle light

I’ve worked with electronics for a number of years now, but somehow I have not had occasion to do much reverse-engineering of existing circuits. But today I got the chance with a nice LPBi14042 bicycle front light that was acting up a bit. Here is the PCB: The PCB is nicely laid out and quite… Continue reading LPBi14042 bicycle light

Hacking a box of 240×320 displays with the ESP8266

For the last few days, I have been playing with some small displays we have lying around in Labitat. We have ninety-odd of them from an old donation, and I thought it would be cool to be able to use them for some fun projects. The displays are ET024002DMU with a built-in ST7787 controller. They… Continue reading Hacking a box of 240×320 displays with the ESP8266

FVWM and Java application window focus

I found the solution for a problem that has been annoying me for quite some time. I am using FVWM for a window manager. A few programs written in Java, most notably the Arduino IDE, will not accept keyboard focus. As soon as the window is given focus using normal window-manager commands, it immediately loses… Continue reading FVWM and Java application window focus

Improving replication with multiple storage engines

New MariaDB/MySQL storage engines such as MyRocks and TokuDB have renewed interest in using engines other than InnoDB. This is great, but also presents new challenges. In this article, I will describe work that I am currently finishing, and which addresses one such challenge. For example, the left bar in the figure shows what happens… Continue reading Improving replication with multiple storage engines

Understanding skew factors in Simplex/Improved Perlin Noise

[Here is a PDF version for readers whose browser does not understand MathML.] The Simplex Noise (or Improved Perlin Noise) algorithm uses a somewhat mysterious “skew factor” of 3–1 2 . I did not find any really satisfactory explanation for this factor in the descriptions of Simplex Noise that I read. But I managed to… Continue reading Understanding skew factors in Simplex/Improved Perlin Noise

Arduino to the max: 11x11x11 LED-cube

March 29 2014 is Arduino day, also in Labitat. This is a good opportunity to describe my LED-cube: This LED-cube pulls a number of tricks to get the most out of just a single normal Arduino Uno. A meager 16 MHz and 2048 bytes of RAM goes a long way with sufficient ingenuity and creativity.… Continue reading Arduino to the max: 11x11x11 LED-cube

No application changes needed: 10 times faster slave with MariaDB 10 parallel replication

Parallel replication is in MariaDB 10.0. I did some benchmarks on the code in 10.0.9. The results are quite good! Here is a graph that shows a 10-times improvement when enabling parallel replication: The graph shows the transaction per second as a function of number of slave worker threads, when the slave is executing events… Continue reading No application changes needed: 10 times faster slave with MariaDB 10 parallel replication

Using MASTER_GTID_WAIT() to avoid stale reads from slaves in replication

I have just implemented MASTER_GTID_WAIT() in MariaDB 10.0. This can be used to give a very elegant solution to the problem of stale reads in replication read-scaleout, without incuring the overheads normally associated with synchronous replication techniques. This idea came up recently in a discussion with Stephane Varoqui, and is similar to the concept of… Continue reading Using MASTER_GTID_WAIT() to avoid stale reads from slaves in replication

More on 40% better single-threaded performance in MariaDB

In my previous post I wrote about how I achived a >40% speedup on sysbench read-only using profile-guided optimisation (PGO). While this is a preliminary result, I though it was so interesting that it deserved early mention. The fact that any benchmark can be improved that much shows clearly that PGO is something worth looking… Continue reading More on 40% better single-threaded performance in MariaDB

40% better single-threaded performance in MariaDB

Continuing my investigation of single-threaded performance in the MariaDB server, I managed to increase throughput of single-threaded read-only sysbench by more than 40% so far: I use read-only sysbench 0.4.12 run like this: sysbench –num-threads=1 –test=oltp –oltp-test-mode=simple –oltp-read-only –oltp-skip-trx run And mysqld is run with minimal options: sql/mysqld –no-defaults –basedir=X –datadir=Y –innodb-buffer-pool-size=128M With modern high-performance… Continue reading 40% better single-threaded performance in MariaDB