Monthly Archives: August 2009

Cheap Arduino Wireless Communications

As part of my slow, arduous march toward doing a high altitude balloon launch, I acquired some super cheap wireless modules from sparkfun.com. Sadly, I haven’t had time to play with them much, but here’s someone who has. I am more interested in using these tiny transmitters as back up beacons, but the information is still quite useful.

Hobby Robotics » Cheap Arduino Wireless Communications.

Micro-Rendering for Scalable, Parallel Final Gathering

Thanks to Kevin Bjorke for pointing out this paper. It combines a couple of interesting features to create a point-based renderer that efficiently uses the GPU to render scenes with global illumination. I’ll have to read it more carefully when I have time.

Micro-Rendering for Scalable, Parallel Final Gathering.


httpv://www.youtube.com/watch?v=Z9u8EdFbmiI

A little statistics puzzle…

I hand you a deck of cards, which you shuffle, and deal me a random 5 card poker hand. I announce that I have an ace in my hand. What are the odds that I have a second ace in my hand?

Now, play the game, and deal me another hand. I announce that I have the ace of spades in my hand. Now, what are the odds that I have a second ace in my hand?

Explain.

Addendum: This is known as the “paradox of the second ace”. It is usually expressed as a bridge problem, with 13 card hands, but I misremembered it, so here it is a poker problem. Solve the bridge problem if you like.

Addendum2: The paradox is easier to understand if you limit the size of hands (say to two cards) and the number of suits.

The telescope turns 400 today…

glassesOn this day in history, 400 years ago Galileo Galilei demonstrated his telescope to a group of Venetian lawmakers. In March of the following year, he would publish his most famous work, Siderius Nuncius (commonly rendered in English as The Starry Messenger). This invention ushered in the modern era of astronomy, and quite literally changed our view of the universe and humanity’s place in it.

While Galileo’s telescope would be considered relatively crude by modern standards, it had an influence for hundreds of years. On the right I have a pair of field glasses that are actually a pair of Galileian telescopes paired together, dating back to roughly the start of the 20th century (I think). As binoculars, they basically suck (very narrow field of view) but they are a cool relic to have on your desk.

Another HTML 5 video test…

This is just a test. If you are running Firefox 3.5, you should get a video window that allows you to watch a Superman cartoon encoded in Ogg Theora. If you aren’t running it, but have a Java enabled browser, you should get an applet which plays the same video. If you have neither, you should get a message lamenting your condition.



P.S. I haven’t verified that Java playback works. Safari on my Macbook tries to load the Theora video, but appears to fail (Safari appears to only support h264 encoded video, retarded).

Addendum: Ah, it does work on Safari, but only if you install these Quicktime components. Kind of annoying, but it’s nice to see that it does work.

Addendum2: Shifted the clip to be one I made of my betta fish. It’s shorter, and will thrash my server less.

A simple, short puzzle

How many coins do you need to remove so that the centers of all remaining coins form no equilatoral triangles?

How many coins do you need to remove so that the centers of all remaining coins form no equilatoral triangles?

Here is a simple puzzle that came from Martin Gardner’s The Colossal Book of Short Puzzles and Problems. Here we see ten circles arranged in the classic triangle bowling configuration. The question is “what is the minimum number of circles that can be removed such that there is no equilateral triangle formed by the centers of the remaining circles?”

I was originally having difficulty convincing myself of the optimality of my answer, but I am reasonably certain of it now. Still, it took a bit of pondering to justify. I’ll let you all sit on it for a day or two, then give my reasoning through it.

Addendum: If you found that easy, try to answer the same question for the triangle with sides of length 5. And then length 6.

Random bits…

Well, pseudo-random, but reportedly cryptographically strong.

01110 10011 01100 01000 11101 11001 11010 10011 00000 10011 11111 11001
10101 11100 10011 10110 01010 01100 01000 00010 11110 01100 11010 11000
00011 11111 10001 00111 01011 00101 00011 00111 01000 11111 10011 01001
10000 10101 10001 01011 11111 00100 11010 10000 00110 11111 10111 11011
00011 11001 11111 00011 11010 01001 01011 00010 10101 10101 10010 10100
11010 00010 01010 11110 01011 01001 11101 11100 00100 11011 00010 01110
01010 00100 10001 10001 00000 00100 10010 10000 10001 10110 10010 10101
10100 11000 10001 10000 00001 01001 00100 00100 11001 11010 01110 10000
01111 00100 11111 01010 01001 01100 01000 10010 10110 01000 00000 11001
01001 10011 11100 10010 00111 11001 10100 01011 01010 00110 11001 10001
10011 01110 00010 01111 10101 01111 10110 10101 00010 10000 11010 11001
00001 01101 00100 10010 00000 10000 01011 00011 00110 00110 01011 10111
01100 01010 11011 11010 10001 01000 00010 10010 00100 01011 11001 01011
01111 11111 01110 11100 10101 01110 01010 10100 00110 11111 11101 00100
01111 01011 10001 00000 10010 01111 11110 00100 11100 11001 10001 10011
01001 11101 11100 00110 01100 01011 00100 10000 10110 00000 10100 00001
01100 11111 00010 11000 00111 11101 10110 10101 11110 00110 10101 10100
10001 01101 11011 11000 10001 10111 00100 11000 01010 10111 01010 01010
01001 00110 11111 01110 01100 11110 10100 01011 01000 00100 10010 11000
01101 10001 11100 00100 00100 01001 10100 01100 11000 11100 01101 10111
00011 11101 11001 10010 10111 10000 11000 10100 01000 10101 11010 01001
10101 11011 11101 00000 11100 01011 11100 11110 01101 00110 10111 11100
01001 11000 11101 11110 01100 10101 11011 01110 00111 10101 01000 11111
11010 11000 00100 00111 01001 11011 01100 01101 11000 11101 00010 00011
10101 00011 10000 10000 11000 00111 01010 01000 01111 10101 01011 01110
01111 01001 11011 11000 01011 10110 10100 00001 11110 00011 00111 10011
11111 11101 01000 11100 01010 01000 00010 01111 10101 11101 11010 01100
11100 11101 01100 11101 11101 11010 01100 01101 00110 11100 11011 01001
01001 01110 10100 01011 00000 11110 00101 00000 10111 00101 10101 00111
10011 11111 11100 11011 00101 10100 11001 10110 01011 10010 00000 10100
10001 01110 11000 11010 11110 01010 10011 11011 00010 01010 11011 00011
10111 00010 10010 00001 11110 11000 00011 01001 00110 00010 10000 01000
00100 11000 10000 10110 11010 11011 00010 00001 10100 00101 01011 00000
00001 10000 10000 10111 10110 10111 01110 00010 00101 01001 10110 11000
00001 10001 01101 00111 01010 00001 11100 11110 11111 10001 10110 01111
01001 00010 10011 10100 00011 10101 01100 00001 00000 01111 10111 11010
00110 01110 10001 00010 11111 11000 01100 11010 10011 11000 01000 00101
10000 00011 00001 10110 10001 00000 10001 00101 10010 00110 01101 00011
10110 00110 00101 00110 11100 11101 00011 10010 01011 01011 01000 11100
10100 11001 00110 00101 10110 10011 11001 01110 00111 00110 00000 11010
10011 00010 10000 10110 00000 01101 01111 10111 10010 11010 10001 01101
11000 01010 01011 00011 01010 01110 00011 01011 11010 00110 00101 10011
00110 10001 10001 10101 00110 11011 01111 11100 00111 00011 11001 11010
11000 11101 00000 10101 00110 01110 00110 01110 01100 00001 01001 01011
10100 01110 10000 10101 00001 10101 00101 11010 00100 10101 00111 00111
00110 11001 10110 00101 11111 01011 11110 10101 00001 11000 00011 01011
11111 01110 00011 01110 00110 10111 01111 01111 00011 01000 01101 11010
00110 11110 10000 00101 11111 11001 10111 10100 01010 01111 10010 11101
11110 01100 10101 01100 00000 10101 10110 11110 10110 11001 11001 00000
01111 10101 01000 10001 10000 11101 01001 01100 11100 11001 11010 00011

Interesting number theory underlies this: check out this wikipedia entry for the Blum Blum Shub random number generator.

More volume rendering…

Well, I thought I had the rotation thing figured out, but I still seem to be missing something. But I did muck around a little bit, thresholding the image in a couple of different ways, making the pair shown below. The one on the left contains mostly the bones, with all the flesh transparent. The one on the right, the exact opposite, with the bones removed and the remaining flesh showing up. I thought they made an interesting pair.

both

Volume Rendering: Going boldly where all have gone before…

Image from CT data downloaded from http://graphics.stanford.edu/data/voldata/

Image from CT data downloaded from http://graphics.stanford.edu/data/voldata/

Okay, this is a bit gruesome, but I’ve been dusting off some old papers that I never really understood on Fourier Volume Rendering, and testing my understanding by writing some simple code that takes in a volume dataset and uses the fast Fourier transform to convert it into simulated X-ray pictures. The data set that this picture was generated from was downloaded from this webpage at Stanford, and consists of CT scan data of a cadaver. The basic code works! Given a bit more work, I should be able to do arbitrary orthographic views.

The math for all this is described quite admirably by Tom Malzbender’s paper Fourier Volume Rendering.

Addendum: Here is the raw data slices:


httpv://www.youtube.com/watch?v=UrwnuEtNUKc

Addendum2: Here is a link to some more interesting volume datasets.

Addendum3: Here’s my attempt at rotation. It doesn’t really work right yet. I think I understand why.


WSPR signals heard from E51EME

I still check my WSPR station logs each morning when I wake up. This morning I spotted the callsign E51EME, coming from grid square BG08. I’ve come to realize that many of these spots which include only a four element grid designator are spurious bad decodes, and I didn’t recognize the prefix (I’m not much of a DX-er). But still, it decoded multiple times:

Timestamp Call MHz SNR Drift Grid Pwr Reporter RGrid km az
 2009-08-12 12:16   E51EME   10.140137   -22   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 11:44   E51EME   10.140136   -20   -1   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 11:32   E51EME   10.140137   -18   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 11:24   E51EME   10.140136   -17   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 11:14   E51EME   10.140137   -15   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 11:06   E51EME   10.140135   -12   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 10:56   E51EME   10.140137   -12   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 10:44   E51EME   10.140135   -10   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 10:32   E51EME   10.140137   -11   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 10:12   E51EME   10.140137   -11   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 10:04   E51EME   10.140136   -14   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:56   E51EME   10.140137   -17   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:44   E51EME   10.140136   -18   -1   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:34   E51EME   10.140137   -18   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:24   E51EME   10.140136   -20   -1   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:16   E51EME   10.140137   -19   0   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 09:04   E51EME   10.140136   -19   -1   BG08   5   K6HX   CM87ux   7649   30 
 2009-08-12 08:52   E51EME   10.140136   -19   0   BG08   5   K6HX   CM87ux   7649   30 

A quick trip to QRZ.com verified that this was indeed a real call, Bob Sutton from Raratonga, in the Cook Islands. Very cool.

E51EME in Raratonga, the Cook Islands

E51EME in Raratonga, the Cook Islands