Last night I went out with my FT-817 and a little voice recorder and tried to pick up COMPASS and CUTE on 437.275Mhz as they passed over my location. I had been told that compass sounded a bit chirpy, and indeed, there was no mistaking it when I heard it: each code element ranks up in frequency. Still, it wasn't hard to figure out that it really was COMPASS:
Slugger Frank Thomas got let go from Toronto, and got resigned to come back to Oakland and smack some balls around for us. I couldn't be more tickled. It's the first inning in the A's versus the Angel, and big Frank comes up and smacks a ball to right that Vladimir Guerrero misplayed, and Frank motored to a triple.
Damn, I'm glad he's back on our side.
The Sabernomics blog has some suggested rule changes that might serve to speed up the game. I haven't blogged about a baseball related topic in a while, so I thought I'd toss my two cents worth in.
First of all, I'm not certain there is a pervasive problem with baseball games taking too long. How long is too long for a baseball game, and how did you decide? To me, baseball games have a certain pace. Yes, some of them are rather plodding affairs, but perhaps no more so than other sports such as football or basketball. Those games have a system of timing and timeouts that are supposed to keep the game moving, but the reality is that as the game should become more exciting, timeouts slow the pace down. Defenses are reset. Challenges to plays on the field are issued. Intentional fouls halt play and result in an official handing the ball to one side or the other.
Even if you accept that perhaps a 3 hour 9 inning game is too long, it's not clear that any rule changes need to happen to change it. There are some pitchers that are just insanely slow and dawdling, and others work a a reasonable clip. Mark Mulder pitched a lot of games in 2:20, and a few memorable ones below two hours. It's possible to manage without any rule changes. Section 8.04 says that the pitcher has to deliver the ball within 12 seconds of receiving it from the catcher, with the penalty being a called ball. Obvious delays are supposed to be punished by the umpires. Some guys really dawdle out there on the mound.
The linked post suggests a few other good ideas. I think eliminating the 8 warm up tosses might be a good idea, but in any case, the rules say that the 8 pitches should be completed in less than a minute, and that the league is free to limit the number of warm up tosses further within the rules. I don't think it's a bad idea to limit these, but I think the deeper problem lies in the number of pitchers substitutions that we see late in games. You don't see starters pitching complete games anymore: you have middle relievers, and setup guys, and closers. The idea is that by doing things this way, you limit injuries caused by overpitching, but I think that as a result, we see people throwing harder earlier in games (often with mediocre control), and so I'm skeptical that this practice has reduced actual injuries among pitchers.
I think that it's important to allow batters to step out of the box. Baseball is really two games, the game that's played between the pitcher and the batter, and between the ball and fielders. The first phase requires a careful balance between the pitcher and the batter. Requiring a batter to take a pitch that he's unprepared for shifts that balance (as, it must be said) is allowing pitchers to pitch very slowly. I'd be loathe to change this balance too much.
Eliminating unlimited time outs probably wouldn't help that much. Yes, it's kind of irksome when the pitching coach trots out slowly, then back, only to have the coach pull a pitchers a few seconds later. But the crowd usually turns pretty strongly against such delaying tactics (at least by the visitors), just as they do about feeble attempts to pick off runners.
Eliminating arguments? Frankly, they don't annoy me at all. They are almost always the result of a close play, and are to a first approximation never overturned, so there isn't a huge advantage to pursuing them for a long time, since they aren't going to change the outcome. I am dead set against any kind of instant replay rules in baseball, because just like timeouts, they slow the pace of the game by introducing an element which doesn't happen on the field.
Well, the satellite launch that I've been waiting for happened. On the first pass I thought I was setup to record the Delfi C3 telemetry, and even thought I heard a signal, but it turns out it was probably just a local birdie. The second pass of the satellite cluster was only a 9 degree pass, and this time, I decided to focus on SEEDS, which I had heard was actually heard during the first pass. I recorded the following, just using my voice recorder:
I can read out the letters S E E D S rather easily, so I am pretty sure this is it.
Addendum: I ran the audio through my crude spectrogram code, and got the following picture of one of their telemetry packets...
Each vertical column represents 1/50th of a second of audio.
Addendum2: Here's the same image, but with the decode overlaid.
If I read the telemetry documentation correctly, this is a G0 mode message, and D19 indicates that the lithium/ion batteries are at 4.1volts, and the bus voltage is very nearly 5v.
While trying to find out if Python included some built-in capabilities for dealing with BCD numbers (it appears not) I encountered this rather interesting page about decimal arithmetic.
The news is that satellite AO-16 has gone quiet. We've been assured not to panic:
Hello all, There are reports at http://oscar.dcarr.org/ that AO-16 has gone silent. Should this be the case, there is no cause for alarm. Over the last month AO-16 has gone from full illumination (0 minutes of eclipse) to over 250 minutes of eclipse. Since the bird has no fancy housekeeping code running, a reasonable explanation is that the battery voltage dropped low enough to put the bird into a protected (and silent) mode. Over the next few days I'll work at collecting telemetry and restoring the voice mode operations of AO-16. Please refrain from transmitting to the satellite until further notice. On behalf of the AO-16 Command Team, Mark L. Hammond [N8MH]
I might actually get to constructing an endgame database for checkers sometime soon. To start, I decided to try to write code to reproduce the table that appears in Schaeffer's paper on solving checkers. It basically is just a five nested loop that computes a big sum of some fairly obvious combinatorial terms. So, I coded it up in python, and ran it. It produced the numbers I was expecting, but slowly. Really slowly. Unacceptably slowly. Like well over an hour before I killed it.
Part of the code computes the binomial coefficients. I put in some code to memoize those numbers (don't recalculate, just look them up in a dictionary if you've computed them before). Bam! 2 seconds later, and I had the following table.
N possible positions ------------------------------ 1 120 2 6,972 3 261,224 4 7,092,774 5 148,688,232 6 2,503,611,964 7 34,779,531,480 8 406,309,208,481 9 4,048,627,642,976 10 34,778,882,769,216 11 259,669,578,902,016 12 1,695,618,078,654,976 13 9,726,900,031,328,256 14 49,134,911,067,979,776 15 218,511,510,918,189,056 16 852,888,183,557,922,816 17 2,905,162,728,973,680,640 18 8,568,043,414,939,516,928 19 21,661,954,506,100,113,408 20 46,352,957,062,510,379,008 21 82,459,728,874,435,248,128 22 118,435,747,136,817,856,512 23 129,406,908,049,181,900,800 24 90,072,726,844,888,186,880 ------------------------------ 500,995,484,682,338,672,639
I heard via the amsat-bb mailing list that RS-22 was still transmitting telemetry, but might be interrupted by low batteries during eclipse period. I haven't tried to listen to any Russian satellites, so I thought I'd give it a try. My satellite prediction software yielded this data for this morning's pass:
RS-22 will be visible from grid CM87ux starting in 00:00:26 at 17:39:54 17:39:54 +0.1° 178.2° ? 12.7°N 121.5°W - AOS 17:40:00 +0.4° 178.4° ? 13.0°N 121.6°W - 17:41:00 +4.4° 180.3° ? 16.6°N 122.4°W - 17:42:00 +9.3° 182.9° ? 20.3°N 123.2°W - 17:43:00 +15.3° 186.7° ? 23.9°N 124.1°W - 17:44:00 +23.5° 192.9° ? 27.5°N 124.9°W - 17:45:00 +34.8° 204.8° ? 31.1°N 125.9°W - 17:46:00 +48.2° 231.5° ? 34.8°N 126.8°W - 17:46:39 +52.1° 261.9° ? 37.1°N 127.5°W - MAX 17:47:00 +50.5° 278.9° ? 38.4°N 127.9°W - 17:48:00 +38.1° 311.1° ? 42.0°N 129.0°W - 17:49:00 +26.0° 325.2° ? 45.6°N 130.2°W - 17:50:00 +17.3° 332.4° ? 49.2°N 131.6°W - 17:51:00 +10.9° 336.7° ? 52.7°N 133.1°W - 17:52:00 +5.9° 339.6° ? 56.3°N 134.9°W - 17:53:00 +1.7° 341.7° ? 59.8°N 137.0°W - 17:53:28 +0.0° 342.5° ? 61.5°N 138.1°W - LOS
So, I fired up my FT-817 and my digital voice recorder, wandered outside, and sure enough, picked it up easily. I recorded a bunch of it, and about 2/3 of the way through, realized i had my cables misrouted and I wasn't actually recording. I shuffled quickly, and got a few code groups as it was Doppler shifting away.
I've been entering puzzles from various checkers books that I have lying around as test cases for my checkers program milhouse. Oddly enough, I found the following puzzle to be fairly interesting. White is to move and win. The answer to solving it (as obviously contrived as it is, it would be very, very hard to get this position in a real game) occurred even to me, as much of a complete novice at checkers as I am.
Of course, as easy as the answer is, it is pretty hard for normal alpha-beta search to find the appropriate winning path. It requires a 28 ply search (fully 14 moves) to find the rather obvious win. Milhouse scores the position as -1169 (nearly twelve men down) with its normal default 15 ply search), and takes 9.4 seconds. To search to the required 28 ply takes a long time. Minutes at least, I killed it.
But I have other search strategies programmed, including Aske Plaat's MTD(f) algorithm.. I'm not certain exactly why it works to well in this case, but it finds the 28 ply solution in just 0.554 seconds.
On the 28th of April, a PSLV-C9 launch vehicle will carry a bunch of tiny cubesats into earth orbit. Mineo Wakita posted a list of their frequencies to the amsat-bb, which I am reposting here. Ultimately, the Delfi-C3 sat will probably be the most interesting to amateurs (it includes a linear transponder) but getting telemetry and the like from the others could be fun too. Archived here for my later consumption:
Launch 28Apr08 03:53UTC Launch Vehicle: PSLV-C9 Preliminary TLE 1 00000U 00000C 08119.17443982 .00000000 00000-0 00000-0 0 0013 2 00012 97.9497 178.9014 0004270 015.5590 198.2466 14.79780033 00004 --------------------------------------------------------------------- Satellite Uplink Downlink Beacon Mode Callsign CUTE1.7 1267.600 . . 9600bd GMSK JQ1YTC CUTE1.7 . 437.475 . 9600bd GMSK JQ1YTC CUTE1.7 . 437.475 . 1200bd AFSK JQ1YTC CUTE1.7 . . 437.275 CW SEEDS . 437.485 . FM,CW,Talk JQ1YGU DELFI-C3 . 145.870 . 1200bd BPSK DLFIC3 DELFI-C3 435.570-530 145.880-920 145.930 FM,CW COMPASS-1 . 437.405 . 1200bd AFSK COMPASS-1 . . 437.275 CW AAUSAT-II . 437.425 437.425 1200bd AFSK OZ2CUB AAUSAT-II . 437.425 437.425 9600bd FSK OZ2CUB CANX-2 . 437.478 . 32Kbd- VA3SFL CANX-2 . 2407.650 . 256Kbd GMSK VA3SFL ---------------------------------------------------------------------
QR-codes are a kind of 2D barcode that you can see around from time to time. I wanted to bookmark this code generator, just for fun.
As part of my ongoing checkers work, I downloaded the Open Checkers Archive and wrote a simple bison/flex parser to read in the data. I am not illiterate when it comes to bison and flex, but it's usually long enough between uses that it takes me an hour or two to tinker these things together. But, an hour or so later, and I've got a simple parser that can read all the games. It doesn't do much of anything with the games at the moments, but having a parser allowed me to gather some really simple statistics about the archive. There are 22621 games in the archive, and totalling 1158096 moves. There are 276921 single jumps, 25405 double jumps, 2406 triple jumps, and just 7 quadruple jumps. There are 3626 wins for Black, 4803 wins for White, and 14192 draws.
I don't know exactly what I'll use this for quite yet, but I'm sure something will come to me.
Read about a system called WebSDR on the softrock mailing list, and boy, is it ever cool. It is a software defined radio that is hooked to the internet. Multiple listeners (17 at the time I was on) can separately tune over portions of the 40m and 80m band, and have the sound streamed to their local machine via a nifty java applet. It's very, very cool. Well done!
I dusted off my copy of Schaeffer's book One Jump Ahead: Challenging Human Supremacy in Checkers and reread the description of the match between Arthur Samuel's checker playing program and Robert Nealy. Samuel's program managed to beat Nealy, who advertised himself as a master, but in fact he makes a number of rather questionable (I'm being kind) moves that suggest he wasn't really all that he said he was.
As part of my testing, I dusted off this particular position from the game as a challenge for milhouse to work through. Nealy is playing white, and moved 32-27. This is widely considered to be a terrible move: Schaeffer claims that the game was a virtual draw to this point, after this move, Chinook was capable of doing an 11 ply search that put it into its end game database and assured a win for Black. Interestingly enough, when confronted with the same position, milhouse made the same choice! It views the scores for all the possible alternatives after an 18 ply search as:
Puzzle Samuel Checkers v. Nealey loaded. Color is set to white. +--------+ | w - - -| |- - w - | | - - w w| |w r - - | | - - r -| |- - - - | | - r - -| |- r r - | +--------+ milhouse: annotate 20-16 : -43 21-17 : -201 22-17 : -73 22-18 : -9985 26-23 : -193 32-27 : -5 32-28 : -116
The move 20-16 is the preferred line. I don't find this too surprising that milhouse gets this wrong: I don't have a very strong evaluation function here, and in particular I don't give any special bonus to protecting the rear ranks. I obviously need some additional work. Playing the game out at 18 ply doesn't follow the historical line: we end up with a pretty standard draw type situation.
Addendum: Martin Fierz has the entire game online. On move 25, Samuel's program moves 2-6, and it appears that with an 18 ply search, milhouse greedily takes the same move, which Fierz labels as "awful". Lots left to do.
Addendum2: In the same position above but with a 22 ply search, milhouse returns the correct 23-18 move, although it still doesn't see it as a win.