# Jan Krüger's blog

Creative Engineering and randomness

# Development

## dmsetup-tc: now works on 64 bit systems

Well, this is embarrassing. I thought I had done everything to avoid portability problems. But in trying to avoid them, I stepped right into them, doing something that by now I know very well not to do. Oh well, here’s an updated version of dmsetup-tc (which you can use to mount TrueCrypt®-encrypted Windows system drives/partitions on Linux). It’s no longer really necessary since the Linux version of TrueCrypt® added support for this back in version 6.

## Open source licenses quick reference

There are a lot of open source licenses. Even if you look at only the OSI approved ones, that’s still a list of 67. And, of course, they are all different in subtle (and not-so-subtle) ways. Can you keep all the small details straight in your head? I know I can’t. That’s why I just made a quick reference page: HTML version: http://j.mp/opensource-licenses PDF version: download (A4 paper, 46 KB) It focuses on just a few commonly used licenses (at least from what I can see), but covers more criteria than the other comparisons I’ve seen so far.

## mod_gnutls and StartSSL level 1 certificates: the problem (and solution)

Update: This patch is pretty outdated. There have been major rewrites in mod_gnutls since then. I’m not sure whether the current version properly supports subjectAltNames; I don’t use mod_gnutls myself anymore.

Yesterday, I wrote a small patch against mod_gnutls (that’s the GNU alternative to mod_ssl, and it’s leaner; and it supports SNI (server name indication), whereas even the version of mod_ssl in the upcoming Debian squeeze release doesn’t). It took me quite a while to figure out the problem in the first place, and I guess it’s a bit of a corner case, but I can’t imagine I’m the only person who might run into this problem, so here is an explanation.

## Host your own (di)graph pastebin

I just had some time to procrastinate away, so I built a little open source graph pastebin web application called Instagraph. It’s based on GraphViz, PHP, MySQL and Apache. At least the first three need to be installed on your web server, and the fourth one is necessary unless you tweak your way around using the included .htaccess file (which makes use of mod_rewrite).

I’ve been wanting to write something like this for ages. Often enough I want to explain concepts in IRC and find myself struggling to present all the relationships between different things in an understandable way. Now I can just use a private Instagraph instance to make a nice picture that will speak a thousand words for me. Awesome.

Instagraph is woefully underdocumented but shouldn’t be too hard to set up. It’s also extremely simple and has no user interface to speak of.

## Stereo Pan 2.0: now with "subtle mode"

Oh well, better late than never. I present to you the next version of Stereo Pan (announcement for previous version), introducing a second mode of operation: the subtle mode. It’s called that because its effect is more subtle. Duh. A great property of it is that it doesn’t distort the sound if the output is downmixed to mono. If you downmix to mono while using Stereo Pan in its normal mode, you get a flanger-style effect on the sound.

## My first journey into writing VST plugins: a stereo expander

So perhaps you noticed that I’m a musician and also a coder. What better than to combine both of those and write software I can use when making music?

My first project for this was writing a VST plugin (VST is a trademark of Steinberg Media Technologies GmbH and it’s basically an effect interface supported by a large number of DAW applications) that does stereo expanding. What’s that, then?

A trick that’s well known among musicians and mixing engineers for making something sound fuller is to record the exact same thing twice and then superimpose these two takes. A special case of that is putting one take in the left stereo channel and the other in the right. If you do that, it will sound a lot “wider” in the song, and it will also dominate the overall sound of the song a lot more.

Sometimes, though, you’re short on time or don’t have two takes of something handy (or it’s actually impossible to get two takes). Enter stereo expanders! They basically pretend that you recorded two takes, and pan them left/right for you. I’ve got one right here for you, and it’s free to download.

Dear users of browsers other than Firefox, I’m not talking to you now. Sorry. Dear remaining readers, have you ever disliked having to a) remember all of your different passwords for all websites or b) store them on your local computer so you can’t get at them from other places or c) use the same password everywhere even if that makes the impact of security issues a lot worse? I used to go with option b) but I didn’t really like it. Now I’ve found something else; allow me to share.

## Using TrueCrypt®'s encrypted system partitions from Linux, now with less bugs

Take note if you had problems using dmsetup-tc, the program I published last month that allows you to use TrueCrypt®’s encrypted system drives/partitions (also called the “pre-boot authentication” feature) from Linux environments (and possibly other Unices). I have found a few rather embarassing bugs in it that made it rather unusable in pretty much all cases (it’s actually really astonishing that it even worked for myself…). So if previously you got a cryptic message like “fatal error: Success”, now would be a great time to try again.

## How to use TrueCrypt®-encrypted Windows system drives on Linux

Update: I made this program in 2008. In the meantime, some other guy appears to have written his own, apparently much more complete re-implementation. Feel free to check it out here: https://github.com/bwalex/tc-play – chances are that if that one works for you, I won’t be updating dmsetup-tc anymore.

TrueCrypt® is a multi-platform on-the-fly drive encryption tool. It allows you to encrypt all your data in a filesystem and still use everything normally. On Windows, it supports encrypting the system (boot) partition (or the entire boot drive); you can even make TrueCrypt® encrypt your existing partitions live and continue working (though the I/O performance sucks until it’s finished encrypting everything), pause and resume the encryption process (even across reboots). In short: it’s rather useful.

Even though TrueCrypt® introduced Windows system encryption in version 5.0 in February 2008 (that’s five months ago), its Linux version still doesn’t support accessing these encrypted partitions at all (it does mount “normal” TrueCrypt® volumes though). Since I recently encrypted my entire Windows drive but couldn’t live without the music files stored on it, I now humbly present the result of two wasted nights: a solution.

## HOWTO: encode a string into a complicated-looking trigonometric function

Today’s glance at reddit.com yielded a blog posting by a fellow who calls himself “Poromenos” and who recently wasted his day by designing a function made up of sines and cosines that encode the string “Hello world!”. “Hey”, I immediately thought, “I can do that too! I’m an expert at wasting my day, after all.” Only I decided to go a step further and write a program that generates this sort of function. I’m lazy, remember?

## Git cheat sheet, extended edition

A few days ago, I posted a cheat sheet for Git (just as last time, Git is a really cool revision control system). Let’s face it: it was ugly. Not something you would actually hang up where other people could see it, was it? Here’s the remedy, which also works on both A4 and Letter and is more detailed.

## Git cheat sheet, take two

Update: Since I first posted this, I have created a new and (in my opinion) better Git cheat sheet. You might want to have a look at that one.

Today I came across Zack Rusin’s Git cheat sheet (just so we’re on the same page: Git is a really good distributed revision control system). I quite like the idea but unfortunately, Zack’s design is fairly useless to me because

• the colors don’t print well on black and white;
• it’s designed for Letter paper. Letter paper doesn’t exist around here. Give me A4.

While trying to change Zack’s file to address these issues, Inkscape kept crashing on me until I finally gave up and just started from scratch (in – don’t tell anyone – OpenOffice.org Draw). This is the result: Git Cheat Sheet (A4 PDF version)”).