Of Colorspaces and Image Compression (Part I)


The art of lossy compression consists almost entirely in choosing a representation for your data in which you can easily figure out what data to destroy. That is, if you’re compressing sound, you must transform the waveform into a domain where you can apply a psychoacoustic model that will guide decimation, that is, the deletion of part of the information, part of the information that won’t be heard missing. If you’re rather compressing images—that will be our topic today—you must have a good psychovisual model that will help you choose what information to destroy in your image


The model can be very sophisticated—and therefore computationally expensive—or merely a good approximation of what’s going on in the observers’ eyes (and mind).

But let’s start with the beginning: representing color

Read the rest of this entry »

The wireless keyboard, again (part deux)


For last week’s entry, I wrote a small script to monitor my wireless keyboard’s activity, logging keys, and mode changes. This week, let’s have a look at the data we can grab, and what we can do with it.


So, after grabbing keyboard activity for a bit more than a week (from 2014-10-12 22:47:31.059636 to 2014-10-20 08:45:06.733120), we’re ready to preprocess the logs and extract useful information.

Read the rest of this entry »

The wireless keyboard, again.


So, again, I got a Bluetooth keyboard. This time, I’m pleased with the fact that it will, in principle, never need to have its batteries changed. It’s solar. I got the Logitech K760.


So of course, I set out to test it a good while before concluding whether or not it would be charged enough to keep up with me. But how much typing do I do in a day? Well, let’s find out!

Read the rest of this entry »

Pruning Collatz, somewhatz


I’ve visited the Collatz conjecture a couple of times before. I’ve played with the problem a bit more to understand how attractors work in the Collatz problem.


So what is the Collatz conjecture? The conjecture is that the function

C(n)= \begin{cases} 1&\text{if}n=1\\C(\frac{1}{2}n)&\text{if }n\text{ is even}\\ C(3n+1)&\text{otherwise} \end{cases}

Always reaches one. But the catch is, nobody actually figured out how to prove this. It seems to be true, since for all the n ever tried the function eventually reached 1. While it is very difficult to show that it reaches 1 every time, it’s been observed that there are chains, let’s call them attractors, such what when you reach a number within that chain, you go quickly to 1. One special case is the powers-of-two attractor: whenever you reach a power of two, it’s a downward spiral to 1. Can we somehow use this to speed up tests?

Read the rest of this entry »