In an earlier posting, I presented a recording that I did of the new Russian satellite Yubileiny, also designated RS-30. I finally found my spectrogram code, and made a picture of the resulting recording. It's kind of big, but click the thumbnail below if you want to have a peek:
The image consists of 27 spans, each of about 30 seconds. You can see that every five seconds, my program corrects for the doppler shift, perhaps causing a break in the morse line. It's relatively easy to read the morse code off the resulting image.
Platypus is a system that can convert scripts (shell, Python or even perl) into something that looks a lot more like a real Mac application. I have a number of potential uses for it to pretty up some of my scripts, so I'm bookmarking this for now.
I've seen a bunch of movies lately. Rather than give details of each, I just thought I'd give a single line review of each.
Iron Man: I was wildly entertained, but inexplicably couldn't tell you why afterwards, other than to say that Robert Downey Jr. is great onscreen.
Chronicles of Narnia, Prince Caspian: Snoozefest, lots of shots of people walking in front of CG imagery.
Speed Racer: Underrated, yes, lots of visuals, but enough story to make it tolerable.
Fido: A funny, quirky movie which answers the question "what if Ward and June Cleaver owned a pet zombie?"
Indiana Jones and the Kingdom of the Crystal Skull: Not genuinely bad, but pales by comparison to the original three, keep expectations low (think "National Treasure" rather than "Raiders") and you might have fun.
The new A&E remake of The Andromeda Strain: Every element added to the original blew chunks, a catastrophe of a script, ludicrous beyond the measure of things. It needs a second line to describe just how mind numbingly terrible it was. Or even a third. Did you guys have writers? Really? The tagline is "It's a bad day to be human", but it should have been "It's a bad day to remake Andromeda Strain".
Well, by the time I got home tonight, there was going to only be a single low pass of the Yubileiny satellite to the west out over the Pacific ocean, but I decided to give it a try anyway. It's maximum altitude for this pass was about 16 degrees. I started this recording pretty much at AOS, but didn't start receiving until the satellite cleared about 4 degrees. Not bad really: my horizons are pretty high here. I tracked it on 435.315, and switched over a couple of times to see if it was sending on 435.215, which has also been mentioned on the amsat-bb mailing list. No dice.
But I did get a chance to try out my super simple Doppler tracking program. I have a satellite prediction library written in Python, so I coded up a simple Python script to track a particular satellite, and automatically send Doppler corrections out a serial port to my FT-817 so that it should update the frequency every five seconds or so. As you listen, you'll hear the Doppler going down, and then the radio tunes and the frequency of the received signal hops back up. I was using the elements for OBJECT A as they were posted to the amsat list, which matched pretty well: I didn't twiddle with any offsets throughout the pass.
Anywho... here's the recording (faint for the first minute or two, but then picks up):
The Phoenix probe to Mars should land today around 6:00EDT. It's a lander designed to dig in the Martian top soil to look for sub surface ice that the Mars Observer's data indicates is just below the surface in the northern polar regions. It will subject this soil and ice mixture to a battery of scientific tests, hopefully which will give us some clue as to the possibility of biological viability in the Martian biosphere.
Update: It's down safe! Congratulations to the NASA team.
I attended the first one, I've pencilled in the next one on my calendar.
The Russians, in commemoration of their 50th anniversary of their launch of Sputnik, the first artificial satellite, commissioned a small satellite called Yubileiny which apparently launched in the last day. Members of the amsat-bb list have been picking up CW telemetry and some digital signals from the bird. It sounds really interesting, and includes a 2m uplink receiver and a 70cm downlink transciever. I haven't had time to go over the details of the bird, but it sounds very interesting. I've added the orbital elements to my own program, and find that in about six hours, we'll have a 70 degree pass, so I'll try to pick it up, if not today, then in the next few days. It has a fairly high 1500km orbit, so it stays above horizon for close to 20 minutes, and has a wide footprint which seems intriguing. More when I find out more:
Addendum: From their website:
With the help of equipment that is installed on the satellite, radio-amateurs all over the world will be able to receive information on the history of space development and domestic cosmonautics achievements. The spacecraft is expected to work in the cyclic operation: every 4 minutes spoken messages, video pictures, and signals imitating call-signs of the first artificial satellite will be transmitted over the radio channel at the international frequency range of 435 MHz.
Addendum: I recorded the CW beacon as it came over on its last pass. Didn't hear any of the other kinds of data it is supposed to be sending, but maybe I just caught it at a bad time, or its cycle was distrupted. In any case:
Addendum2: Gary asked about some of the details. I am using my own satellite software code to predict passes, written in Python and based on the Plan13 algorithms of G3RUH. The orbital elements for the sats were posted on the amsat-bb mailing list. I've heard that one of these two (fairly close) objects is the satellite:
OBJECT B 1 32954U 08025B 08145.10200117 .00000024 00000-0 10000-3 0 23 2 32954 082.4959 138.5618 0019422 319.0397 040.9226 12.42638976 61 OBJECT C 1 32955U 08025C 08145.10180017 .00000010 00000-0 00000+0 0 20 2 32955 082.5031 138.5641 0019114 306.5063 053.4208 12.43247202 67
I found OBJECT C to be the closest. I was monitoring the frequency that was mentioned on the list, which is around 435.315, which will begin about 10khz higher at the beginning of the pass. If you listen to the above MP3, you can hear the frequency dropping as the satellite approaches. As yet, I haven't heard that there will be any uplink capability for amateurs. I've also heard that others are recording FM based transmissions which might include slow scan tv or the like. I'll keep an ear open for it later, and let you know what I find out.
Well, all this reading about the board game Hex made me want to play. Six is an interesting, capable hex player available for Linux. It's really very slick, it plays on any board size from 4x4 to 14x14, and at multiple difficulty levels. I've only played a few games, but have already learned a lot. Here's the board from one of my 10x10 games where I played white. I lost, but I thought I did okay in defending.
I'm already learning a lot. One of the neater things about Hex is that since pieces don't move after you play them, the entire game is right there.
Work on my checkers program
milhouse has stalled a bit: I have a problem in the transposition tables that is fighting against my endgame database attempt, and it's subtle enough that I haven't had time to work it out. I've been relaxing by reading some more about other board games, and have begun to read a bit about attempts at games with very high branching factor like Go and Hex. I frankly don't have the brain power for Go, so I thought I might think about hex a bit more. It's just about as simple a game as you can get, and yet has deep strategy that seems more intuitive to me. Some useful information is stored on the HexWiki.
I've bitched before about CSI and their use of "video enhancement" to read displays and the like using low resolution security cameras reflecting off objects. It's interesting to see what is actually possible using this basic idea though. Link courtesy of Bruce Schneier's security blog:
As we get closer to the Wall-E premiere, you'll probably be seeing this animatronic version of Wall-E in various promotional spots, and eventually deployed at the theme parks. One of my good friends at Pixar, Tom Duff helped work on the software to help control him (a very cool project) and so it's good to see him out in the world. Check out:
Wall-E Spotted in LA! from Blink on Vimeo.
I think it's very cool.
If you take the decimal expansion of 1/19, 2/19... up to 18/19, and write out the first 18 digits of the decimal expansion of each, you get:
0 5 2 6 3 1 5 7 8 9 4 7 3 6 8 4 2 1 | 81 1 0 5 2 6 3 1 5 7 8 9 4 7 3 6 8 4 2 | 81 1 5 7 8 9 4 7 3 6 8 4 2 1 0 5 2 6 3 | 81 2 1 0 5 2 6 3 1 5 7 8 9 4 7 3 6 8 4 | 81 2 6 3 1 5 7 8 9 4 7 3 6 8 4 2 1 0 5 | 81 3 1 5 7 8 9 4 7 3 6 8 4 2 1 0 5 2 6 | 81 3 6 8 4 2 1 0 5 2 6 3 1 5 7 8 9 4 7 | 81 4 2 1 0 5 2 6 3 1 5 7 8 9 4 7 3 6 8 | 81 4 7 3 6 8 4 2 1 0 5 2 6 3 1 5 7 8 9 | 81 5 2 6 3 1 5 7 8 9 4 7 3 6 8 4 2 1 0 | 81 5 7 8 9 4 7 3 6 8 4 2 1 0 5 2 6 3 1 | 81 6 3 1 5 7 8 9 4 7 3 6 8 4 2 1 0 5 2 | 81 6 8 4 2 1 0 5 2 6 3 1 5 7 8 9 4 7 3 | 81 7 3 6 8 4 2 1 0 5 2 6 3 1 5 7 8 9 4 | 81 7 8 9 4 7 3 6 8 4 2 1 0 5 2 6 3 1 5 | 81 8 4 2 1 0 5 2 6 3 1 5 7 8 9 4 7 3 6 | 81 8 9 4 7 3 6 8 4 2 1 0 5 2 6 3 1 5 7 | 81 9 4 7 3 6 8 4 2 1 0 5 2 6 3 1 5 7 8 | 81 ------------------------------------------------------+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81
The sum of the rows, colums, and it turns out, the main diagonals is 81, which means that it's a magic square. It's not hard to see why the rows and columns are sum to the same, but the diagonals are a bit trickier. Anyway, just something to think about.
I doubt I'll ever need this, but I still think it's kind of neat. I2C is a two wire serial bus that is used in many microcontrollers to access peripheral devices using only a couple of wires. This hack notes that most modern graphics cards communicate with monitors in a similar way using a technology called "DDC". This allows your graphics card to simply ask the monitor what resolution and scan rates it supports. The hack is to use the DDC stuff to talk to I2C peripherals. I think that's pretty cool.
Well, in a fit of productivity (or what passes for productivity when you are working on useless pet projects), I decided to get the Chinook 6 piece endgame database working in my checkers program. How hard could it be? They give you code to access it after all. A few simple adaptations, and....
Well, it's not that simple. The code is dreadful. I mean really bad. First of all, it's not even ANSI C. I haven't seen K&R style declarations in a maybe fifteen years, and haven't written any non-ANSI C in twenty. But
protoize does a pretty good job of fixing that up. There are a slew of warnings, but those aren't really difficult, you just tidy up the code a bit, and it's clean.
Of course, it still doesn't work. That's because (sorrow of sorrows) they wrote the code in a very unportable way. This drives me crazy. They use the "long" datatype all over the place, but as written, I am pretty sure that the code will fail horribly if long is 64 bits. Which, of course, every machine I play with these days are. And there are a few "signed/non-signed" issues, and the fact that lseek doesn't return a long anymore to confound you a bit. And, of course, the interface routines are all written to accept board positions in a format which only the Chinook guys could love, and it took me way too long to create an adapter to make it work.
But I think it does. At least, it seems to pass some preliminary tests:
milhouse, a checkers program by Mark VandeWettering. transposition table enabled, 4194304 entries, 96 Mb used quiescence extension enabled 165 puzzles in the puzzle library sanity checking sizeof(long) = 8 initializing Chinook endgame database... ... creating table ... using database DB6 ... allocating 48132029/47004 entry index ... initializing 2...3...4...5...6... database ... allocating 16384 buffers ... initializing 16384 buffers milhouse: puzzle 164 LOADED puzzle 164: First Position, white should win, but it takes 92 moves.. Color is set to white. White +--------+ | - - - -| |- - - R | | - - - -| |- - - - | | - - - -| |- w - - | | - - w -| |- r - - | +--------+ Red milhouse: db Chinook sees this as a win for white milhouse:
This is the classic First Position, which it sees as a win for white. Unfortunately, it doesn't actually play the ending very well. It won't lose it as white (ever), but because of search horizon issues, it won't find the winning line either (it's 92 moves long, so that's not suprising, but still).
I really can't put off creating an endgame database for my checkers program for much longer. I've been studying the so-called "First Position" for a while, and it's basically hopeless to find the way through to the win for white from this position:
White +--------+ | - - - -| |- - - R | | - - - -| |- - - - | | - - - -| |- w - - | | - - w -| |- r - - | +--------+ Red
What's so difficult about this? It's a very, very tricky position. As Jim Loy says, "The procedure: Force the piece to advance by immobilizing the king. The king and piece cannot both fit in the double corner, so the king is forced out, where his situation is hopeless." Easier said than done! Try following his analysis all the way through. Milhouse can't even seem to find the right winning combination from Figure 8, falling into a draw by repetion where it can't make any headway in self play.
Here's a link to the "perfect play". 93 moves. First Position with Optimizations
Addendum: During play against the novice level of Chinook, I ended up on the losing side of a 4 on 3 king endgame. But here's the thing: Chinook seemed to take a very, very long time in converting the endgame into the more manageable 3 on 2 endgame. It does point out a problem though: the endgame databases contain only whether a given move is a win, loss or draw. In many cases, all possible moves are still wins, but you may not actually make any headway in reaching the endgame. For instance, check out the following position queried from the endgame database:
All available moves for white are wins (not too hard to believe, since white is up a king), but the question remains which move should I make? If you can't see a "conversion" (an exchange or capture which simplifies the position) in your search depth, then you aren't guaranteed to make any headway towards winning the game, and you kind of march around, hoping to stumble into the winning line.
You can build a database which stores the optimal move at any given position, but of course that takes more memory. Still, I think the 5 piece subset, and probably the 6 piece "perfect play" endgame databases are pretty reasonable given modern machines. That's where I'm heading.