Adjust Linux Network Receive Window for Fast Networks

Simply execute the following command in your shell to increase the receive window buffers. That should improve the performance, especially from servers with a high latency.
sudo sysctl -w \
net.core.wmem_max=1075200 \
net.core.rmem_max=1075200 \
net.ipv4.tcp_rmem="4096 87380 8388608" \
net.ipv4.tcp_wmem="4096 87380 8388608" \
net.core.rmem_default=1075200 \
net.core.wmem_default=1075200

Booting Linux over the Network

Here's a quick how to.

Refreshing Linux Group Rights

Maybe I'm mistaken, but I think there is no other way to let your system know that you e.g. are now member of another group than logging out and back in. And I'm wondering - why? Can it be so complicated? We can reload, refresh everything, but for that you'd have to log out, which is especially annoying in X...

But that' wrong! You can work around the problem with newgrp. The program updates the environment variables so you can immediately use the group, at least in the shell started via newgrp.

The Essence of Open Source

Imagine your computer breaks down. It doesn't power on anymore. Now imagine you're not allowed to open it and the only person who may fix it would be the producer. It would probably take weeks for you to send it in, get the machine fixed. That's if the error was found and it got fixed. And then it might end up being pretty expensive. Because there's a monopoly on the repairs.

That's exactly how closed source software works. And that's exactly why you should prefer open source software. The more important the software, the more important that it's open source.

Pretending a Package is Installed by Creating an Empty Package with Checkinstall (for Debian-based Distributions)

After installing ffmpeg from svn with checkinstall, I had the problem that the also installed library libavcodec51 is not compatible with the one delivered with Ubuntu. But I could not simply uninstall it so that the manually installed version was used because that caused problems with libxine1-ffmpeg, which stopped kaffeine, amarok and other software from running properly.

Unfortunately, checkinstall's --provides option did not work as expected. So I had to find a way to have them use the manually installed version I compiled from svn and hiding that fact that my package manager. I had to let the package management system know the package was already installed.

So I ended up creating an artificial package that only has the same name and a similar package version, but no actual contents. Create an empty directory, place the following Makefile into it and execute the following checkinstall command. You may need to adjust the parameters for different packages, refer to the output of apt-cache policy somepackage for an appropriate version number)
Makefile:

install:
install -d /usr/local/bin

checkinstall commands:
checkinstall --nodoc --install=no --pkgname=libavcodec51 --pkgversion=3:0.svn$(date +%Y%m%d)-12ubuntu5
checkinstall --nodoc --install=no --pkgname=libavutil49 --pkgversion=3:0.svn$(date +%Y%m%d)-12ubuntu5
checkinstall --install=no --nodoc --pkgname=libavformat52 --pkgversion=3:0.svn$(date +%Y%m%d)-12ubuntu5
sudo dpkg --install ./*.deb
sudo ldconfig


This elegantly fixed the error "ffplay: symbol lookup error: /usr/local/lib/libavcodec.so.52: undefined symbol: av_gcd" and "ffmpeg: error while loading shared libraries: libavformat.so.52: cannot open shared object file: No such file or directory" for me.

Circumventing Censorship - Evading the "20th Century's Berlin Wall"

The New York Times presents the status quo in censorship evasion with examples of Iran and China. A quite interesting read. Don't expect a how to, though.

Mpeg Artifacts

I wonder why mpeg decoders always produce artifacts (bad blocks) when decoding a stream with errors. Shouldn't there be a much better way to handle stream errors? What about discarding the block, there should only be a little glitch then instead of a completely bad block.

The other, more difficult option would seem to be to try to find a block that would match the crc and replace the bad block with it.

At least the current situation seems to be less that optimal.

It seems a similar idea has already been patented: "(WO/2004/028160) DETECTION AND REPAIR OF MPEG-2 CHROMA UPCONVERSION ARTIFACTS"