Category Archives: Computer Science

Minnesota court takes dim view of encryption

Sigh. Things like this really depress me. Minnesota court takes dim view of encryption | CNET News.com

A Minnesota appeals court has ruled that the presence of encryption software on a computer may be viewed as evidence of criminal intent.

From the PGP FAQ:

Who uses PGP?
People who value privacy use PGP. Politicians running election campaigns, taxpayers storing IRS records, therapists protecting clients’ files, entrepreneurs guarding trade secrets, journalists protecting their sources, and people seeking romance are a few of the law abiding citizens who use PGP to keep their computer files and their e-mail confidential.

Businesses also use PGP. Suppose you’re a corporate manager and you need to e-mail an employee about his job performance. You may be required by law to keep this e-mail confidential. Suppose you’re a saleswoman, and you must communicate over public computer networks with a branch office about your customer list. You may be compelled by your company and the law to keep this list confidential. These are a few reasons why businesses use encryption to protect their customers, their employees, and themselves.

PGP also helps secure financial transactions. For example, the Electronic Frontier Foundation uses PGP to encrypt members’ charge account numbers, so that members can pay dues via e-mail.

Whether this individual is guilty or not, this seems incredibly ill-conceived.

Context Free

Example PictureCourtesy of Mark Lentczer, have a gander at Context Free, an implementation of Chris Coyne’s design grammars. This puts me in mind of Alvy Ray Smith’a graftals or L-systems which I first read about 20 years ago.

After a few minutes of playing, I came up with this:

Brainwagon Receding

A few minutes more hacking resulted in the following branching structure (click on it to waste my bandwidth and download the 2000×2000 image):

Braintree

More fun with reflecting balls

After yesterday’s post, I decided that I’d like to try to make some better reflection maps. So I shot this image of my office reflecting in a Christmas tree ball. The image is pretty noisy because my office isn’t brightly lit. (Addendum: I also had the camera set for outdoor white balance, which makes the overall image look pretty crufty. I just shot a different image, and got this better image, which has a magenta hue, but isn’t yellow orange at least.) I then cropped it to a square containing just the ball, and passed it through my unwarping program:

Cylindrical Projection of My Office

I have a different version of my program that produces a cube map, which is perhaps more intelligible (click on it for a bigger version):


Cube Map of My Office

It appears that the quality is pretty much limited by the poor surface of the reflecting ball. You can see a lump in the ball causes the book in the foreground to have a distorted outline.

Still, fun stuff.

Relating FFTW and Split-Radix | Lambda the Ultimate

Two subjects I’m fairly interested in, metaprogramming and the Fast Fourier Transform, are combined in this paper from lambda the ultimate. Basically once they had identified a number of axioms, their system generated two different and well known versions of the code, one of which was identical to the number of FP operations in FFTW, a particularly good FFT implementation I’ve used before.

Basically just good geek stuff.

High Dynamic Range Imaging

St. Peters, courtesy of Paul DebevecI’m tinkering a bit with high dynamic range imaging lately, and decided to code up a simple tone-mapping program so that I could begin to display them somewhat reasonably. On the right you can click to see the tonemapped version of Paul Debevec’s high dynamic range environment of St. Peter’s Basillica. I implemented the simplest scheme in this paper, and it seems to work well, and is adaptable to hardware implementation via hardware shading technologies.

United States Patent: 5,533,051

Apparently you really can patent nonsense. In United States Patent 5,533,051, we get the following intriguing claim:

A second aspect of the present invention which further enhances its ability to achieve high compression percentages, is its ability to be applied to data recursively. Specifically, the methods of the present invention are able to make multiple passes over a file, each time further compressing the file. Thus, a series of recursions are repeated until the desired compression level is achieved.

Any first year computer science student taking any kind of discrete math should be able to tell you what is wrong with this claim.

From a comment on Slashdot.

Is Software Engineering an Oxymoron?

SD Times – Is Software Engineering an Oxymoron?

The problem, then, is that programming has changed from the study and implementation of algorithms to the study and creation of complex documents.

I just thought it was a nice quote.

I agree only in part with Holub’s article though. He thinks that computer science is turning into a liberal art, and that it’s problematic that the curricula of universities doesn’t change to reflect that change. I think its also problematic that mathematics and analysis are being weaned out of computer science. Computer science needs mathematics and analysis more than ever.

Online computer science archives

Those gents over at Lambda the Ultimate have a nice list of online computer science archives. I read stuff like this for fun, so I thought I’d archive this here so I can find it again.

Incidently, does the following character: — λ — look like a lambda to you? In Bitstream Vera Sans, it looks like a delta in Firefox at certain sizes. Bizarre.

Update: How ’bout this character: λ? Still looks bad to me… This is with the direct Unicode specification, rather than λ…

3D Raytracing Chip Shown at CeBIT

A Classic Raytraced Scene

One of the first scenes I ever raytraced, back in 1986 or so…

Slashdot is running a story on a German group who is showing a 3D raytracing chip at CeBIT. This group has apparently constructed an FPGA based raytracing accelerator board, and is trying to convince companies like nVidia and ATI that they should adopt their techniques and built raytracing-based game accelerators.

I think their work is interesting, but I’m skeptical.

Raytracing is a very powerful and flexible technique, but it’s an awfully big hammer to crack nuts with. It does have one major advantage: the work that it performs is sublinear in the size of the input scene, rather than the linear time normally taken by object-order algorithms like the Z-buffer. But the constants are remarkably high, and the fact that naive raytracing tends to probe the scene in fairly arbitrary ways makes caching of only limited utility. In looking at the test images they produce, they appear to have lots of aliasing and lots of sharp shadows, which helps ease these problems significantly.

Ultimately, I remain interested, but unconvinced. I’ve seen at least one company start quickly out of the gate, only to be smacked by the cold hand of reality.

But hope springs eternal!

Gratuitous cool link from the thread: Castle Wolfenstein in 5K of Javascript.

Elementary Crypto Lesson

I’ve been interested in codes and cryptography for quite some time. I find them at the fascinating intersection of history, mathematics and computer science: all topics that I like to read about and experiment with. Let me give you a basic crypto lesson, with a moral at the end.

Let’s say that all your messages are coded just with capital letters, and you remove all spaces. This gives you an alphabet of (suprise!) 26 letters. Let’s say that you wish to encode a message. You think to yourself: golly, I know what I’ll do. I’ll convert each letter its corresponding number in the range of 1-26. That will make it confusing! So my message HELLO will translate into

8-5-12-12-15

But that doesn’t seem very hard. People could crack that pretty simply. What to do… what to do…

Well, I could scramble the letter order. Perhaps if A was represented by 13, and B by 8, and so on, they couldn’t figure it out. But if you do cryptograms in the newspaper, you know that even with a modest amount of code text, you can crack these things pretty easily using frequency analysis and the like.

Let’s go back to our simple code again. Imagine that we had a second text, the same length as the first that we could use as a key. To encode we add the two numbers together, and if the result is greater than 26, we subtract 26. That will certainly jumble up the frequencies, preventing some kinds of analysis, and since the key is long, techniques for polyalphabetic ciphers won’t really work either.

But there is a serious flaw. Imagine that you could guess a word in the cipher text. Perhaps if the message were addressed to me, it would contain BRAINWAGON or even worse VANDEWETTERING. You could try to subtract these words out of the cipher text, and if normal words popped out the other side, you would have a partial decrypt of both the message and the encoding stream. This may seem difficult if all you are used to is normal substitution ciphers, but in fact it is dead simple to break.

One way to avoid this problem is to use what is called a one time pad. If the encoding stream is truly random, then when you can’t recover the encoding stream (it is, after all, perfectly random). One time pads are perfectly secure, with the caveat that you can never, ever, ever reuse a one time pad. Why? Because then you could subtract the two messages, the one time pad data drops out, and you are left with the simple, easy to break case listed above.

Why the cryptography lesson? Because Bruce Schneier (author of the excellent book Applied Cryptography) points out that no less than Microsoft makes this exact error. When you save a Word document, it reencodes it with precisely the same stream, and therefore if you have access to multiple versions of the same document, you can recover the entire document with elementary cryptanalysis.

This is one of the reasons I like open source: you can audit software to find errors like this, and work to correct them quickly.

Anyway, if you like cryptography, privacy and information issues, subscribe to Bruce’s Cryptogram. It’s good stuff.