Author Archives: ColinM

ICPC World Finals: Day 3

Modulo 3. Damn.

Today was our first of two competitions. We competed in the IBM Java Challenge, which is, on one level, a PR stunt for IBM to promote their open source development platform, Eclipse. On another level though, it was a really fun competition where we essentially had to design an AI player for a game. The game was called “Code Invaders” though it bore no resemblance to Space Invaders. The basic premise is that 6 teams are put in a 1000×1000 unit piece of 2D space. You have a homeworld, a “SpaceShip” and 3 “drones.” The world contains Energy (in radioactive-iconed cans). Your ships have two weapons: bullets & “pulse” (a radially-expanding impulse that takes out 25% of an affected target’s energy). Your computer player has to use the drones & spaceship to score points, by either damaging enemies or collecting energy which you then beam to your homeworld. The competition was a lot of fun to work on, and was pretty cool because once you create your AI player in code, it is animated in realtime in a simulator, where you can visually see what your and your opponents’ ships are doing.

After we submitted all of our AI players before lunch, the judges checked to be sure they were within the rules, and then at supper, we had a live tournament to determine the champion. Regrettably, our player did not do very well. The reason? We were only allowing it to beam energy back to the home world once per every three turns. i.e.,
if (World.getCurrentTurn() % 3 == 0) { SpaceShip.beamEnergy(); }
We realized our error literally seconds after they announced the end of the competition. That was a bit disappointing, especially because we then tested the code again in the simulator, and found that it scored about twice as many points. Bummer. But it was a lot of fun anyway, and we are thinking about doing something similar at Madison next year, just because it was so cool. (The game wasn’t over-the-top exciting in and of itself, but competing in it was.)

The rest of the day was pretty tame. We got the problem for the Java Challenge at breakfast, and got an hour and a half to think about it before coding began. After the Challenge, we went to the IMAX theater and saw a short movie from 1987 about the Alamo. Somewhat interesting, but rather old… I had no idea they even had IMAX back then. For supper, as I mentioned earlier, they ran the Java Challenge contest live, and projected it on huge screens in this heritage museum nearby. It was pretty cool to watch, even though we did poorly.

After supper it was back to the CyberCafe for some more chess & wifi. I believe I forgot to mention that I lost last night to Ray, who plays amazingly, especially considering he just learned what pieces move what ways like two days ago. Tonight, Matt and I played on the big board, and despite me embarassing myself in front of the crowd watching by giving away my queen after no more than a dozen moves, I managed to checkmate him with a pair of rooks. I guess being in Bergman’s chess club freshman and part of sophomore year of high school did pay off. I even got to use the practice we once did on how to checkmate with only a rook and a king versus an opponent who has only his king, when Ray & Brian’s game came down to that.

I think that’s all the excitement we had today, other than playing games with the human sign posts. On the way back from the heritage museum, we decided to take a wrong turn in front of them to see if they would notice. They did, in fact, though they took it in good fun that we knew we were going the wrong way. Very good times.

Well, that’s it for tonight, as tomorrow is the big day. The competition begins bright and early at 8am, so I have to get up at 6:15. Boo. Wish us luck, and watch for live contest rankings at http://icpc.baylor.edu somewhere (they said there would be a link, but I don’t see it up as of yet… you might need to go to the World Finals page first, I’m not sure.) Look for Team UW-Madison Amphisbaena, and cheer us on!

G’night y’all.

p.s. We’ve gotten lots of IBM swag, including a mini retractable USB B -> USB A cord that fits my camera, but unfortunately it doesn’t seem to work between my camera and my mac, so you’ll have to wait on pictures until I get home. I forgot the cable. Sorry; I know you wanted to see geeks in sombreros.

ICPC World Finals: Day 2

Fastest elevator in the West

The elevator in our hotel drops from the 22nd floor conference area where we have our nightly “CyberCafe” to our room on the 8th floor so fast my ears pop. I’ll have to time it tomorrow.

Today was our orientation & practice day. After a pretty nice breakfast at which the coaches of South Dakota School of Mines & Technology came over to introduce themselves to “the son of an alumn,” we had our Opening Ceremony. Replete with a full orchestra, nonetheless. Felt like the Olympics, minus the part about the home countries actually caring. The Opening Ceremony wasn’t really much about us, the competitors, though. It was mostly about IBM and the ACM congratulating and thanking eachother at length. Not a total wash though, as IBM did show us some cool projects they’re working on.

Next up was lunch in Hemisfair park. The Baylor alumni staged a mini fiesta for us, complete with mariachi band. (Baylor is the university hosting the event, as they are the headquarters of the ACM.) They even forced some cheap sombreros on us. And by forced, I literally mean they walked around and put them on our heads. The Russians seemed to like them a lot. They also liked the straw cowboy hats we got yesterday. Not really sure why. Brings up an interesting point… I’m not sure how much the other countries here are enjoying the events that we’ve been doing, but for us in America, they’re a bit on the cheesy side. Especially the wranglers, who are literally dressed up as cattle wranglers, and spend their days pointing out the next direction we need to go to reach our destination. We wanted to ask the guy who directed us across the crosswalk half a block from our hotel where the hotel was, just to see if he was serious. Unforunately, I think he was. How retarded do you think I am, that I’m going to get lost on the next 200 yards to a 22-story hotel with Hilton Palacio del Rio in 20-foot letters on the side? Did you miss the memo that this is a competition of the smartest nerds in the world? Bah. Comic relief I guess.

In the afternoon we had two practice programming sessions and a brief informational meeting with Upsilon Pi Epsilon, the Computer Science honor society, which Madison does not have a chapter of. But they’re giving us money, so that’s cool. The first practice session saw us nearly disqualified for the second time. We had to write a simple program to sum the numbers from 1 to N, inclusively. It’s about 3 lines of code. We were too excited/distracted by the situation I guess, because it took us 43 minutes to get it right. Holy awful. The worst of it was, we accidentally read the wrong problem letter off the sheet… groups of about 10 teams were assigned to letters A-J, and although were were in group I, we submitted our solution to problem J. Then we got yelled at later for not reading the directions closely enough, which clearly specified in bold, italicized text, that we were not to submit solutions to any problem other than the one that our team was assigned. Oops. Our bad.

Then in the evening we had supper at the Alamo, got to tour that, watched a cowboy performer do lasso tricks & gun twirling. Pretty cool stuff. Only downside is that I managed to spill ice cream on myself. Twice. So I had to wash my “here’s your contest shirt, wear it for the next three days straight” shirt in the sink, and dried it with a handtowel, which was then returned to the hotel stained red. Sorry about that…

I think I’m going to wrap Day 2 up at this point, because I’m actually finishing this entry the evening of Day 3. I’m not doing so hot on keeping up to date it seems.

ICPC World Finals: Day 1

Bon Voyage, Bon Voyàge

that was from Anything Goes, the very first play I ever ran the soundboard for.

We flew down to San Antonio today via St. Louis for the Association of Computing Machinery’s International Collegiate Programming Contest World Finals (ACM ICPC). The trip was pretty quick and painless; both our flights left on time and arrived ahead of schedule, which was very nice.

On the travel: We flew a prop plane from Madison to St. Louis. That was the first prop plane I’ve ever ridden on, so that was pretty cool. Gave my half-awake mind the impression of flying to some remote destination reachable only by a small prop plane, which left me a renewed sense of wonder in the world. And then I fell asleep, with my neck at a rather awkward angle, so by the time we got to St. Louis I was a bit sore. St. Louis’s airport was a bit crummy and dirty without a whole lot of options for food. As a result, lunch was Burger King, served a la carte in the most confusing manner I have ever received food. The flight to San Antonio was nice. The jet engines were a auditory relief after sitting in the aisle right next to the prop going to St. Louis. Getting to the hotel was a nonevent until we had to check in… under Dieter’s name, who did not accompany us on the trip. That made for an interesting moment.

Afternoon & Evening:
We walked around the area near our hotel for a while before supper. Weather is definitely nice down here: 85 degrees when we got off the plane. We went through a park and a huge convention center across the street from our hotel, then saw a little bit of the nearby mall and riverwalk area. Unfortunately, I forgot to find a store to buy a razor, so by the time I get to do that tomorrow, I think I’ll be looking a bit rough around the edges… Good news is the people here won’t notice. No offense to us, and I don’t mean this in a demeaning way, but I’ve never seen such a collection of nerds in my entire life. Even with the foreign teams, it was pretty clear we were all the nerdier types.

After our brief sojourn through the neighborhood, we came back for a complimentary supper of Americanized Mexican food. I was hoping to get something more authentic, but at least it was good. All you can eat buffet = happy travlers.

Then came the excitement. We went to the registration booth to check in, and I nearly got our team disqualified. My horrible offense? I mixed up the order of pages in my copy of the reference library. The library is a three ring binder with 22 pages of notes that we have created on basic programming algorithms & ideas. We are all supposed to have identical copies, so that no one gets an advantage by having 75 pages of notes instead of 25. Since I had my pages in the wrong order (7-22, then 1-6 instead of 1-22), they were concerned about us cheating and instructed us that we had better fix it. Oops. Great start.

After dinner & registration, we hung out in the “CyberCafe”… aka “wifi access point, several dozen computer terminals running linux, a huge chess board (like big enough you can put both feet in each square), and a catering service to provide snack food.” So not really a cafe at all, but I can’t deny that it was connected to the net, so I guess the Cyber moniker is applicable. Unfortunately I got caught up in watching chess, and didn’t get this journal entry done up there where the internet is, so you had to wait until tonight. Oh well, you’ll survive. On the upshot, I beat Matt (the grad student coach who came down with us) in a game of chess, so that was a nice ego boost. I’m not ashamed to admit though that it was mostly luck, because I made some seriously dumb moves and gave away quite a few pieces.

All’s well that ends well I guess.

So, now tomorrow we have a lot of orientation type stuff, and then Tuesday starts the coding in earnest. Stay tuned!

Clockwise

Here’s the product of my Sunday evening. It’s a clock that ticks counterclockwise. But is it really counterclockwise if that’s the direction the clock is ticking?

Don’t take my word for it, see for yourself [422 KB MPEG4 (codec required) 4.97 MB AVI warning. I know it’s huge; I don’t have time to recompress; deal with it.]

So I’ll admit, I followed an online guide to making clocks tick backward. I happened to see the guide on hackaday.com, and thought it was cool. Then on Sunday my ICPC team and I were in the bookstore buying binders and other supplies for the contest next week, and Ray mentioned that he wanted a new travel alarm clock. So we looked at the clocks, and this one was only $5.50 or so, so I thought “why not? if I break it, it was only $6.” So I bought it, took it apart, made the appropriate modification and reassembled it. The longest part of the process was actually creating the new clock face to put inside it. I wanted one that would still accurately display the time, so I made one in the GIMP. It was harder than I anticipated because I had to measure out 6° rays from the center point to draw the dots so that they would actually line up with the clock hands. You can download my clock face in native GIMP format or JPEG, if you so desire.

A word to the budding clock modder in all of you: take the face off the clock first, as there are probably screws hidden behind it. Fortunately I realized this before resorting to breaking the back off when I couldn’t get the thing taken apart.

Oh what a night…

…late December back in ’63…

  1. If you like movies like the original Matrix (my personal favorite movie ever), or Ocean’s Eleven, go see Inside Man. Dumb title, great movie. Jared and I saw that tonight, and wow. I could not have better spent my $5.75. Plus the $0.75 I gave to Jared so he wouldn’t cry about having to carry around change. So, all $6.50 well spent. Go see it; it was amazing; I couldn’t ask for more in a crime/robbery movie.
  2. I finally beat Mason in a game of Racquetball tonight. It’s about damn time. Don’t get me wrong, I didn’t win the match. He beat me two out of three straight out of the gate, but I got the third game, and didn’t lose so terribly in the first two this time. That was the first time I’ve won a game this semester: how pathetic.
  3. Memphis sucks. I really needed them to win today, and they really let me down. Who ever heard of an NCAA Elite Eight game ending 50-45? Nobody. Lowest-scoring Regional Final since at least 1986, i.e., in my entire life. And the stats… I could cry it was so boring. UCLA was like 6 for 19 on freethrows in the first half, and even though they picked it up in the second half, both teams still played terribly. Quote from espn: “Memphis’ only field goal in the first 8:24 of the second half Saturday didn’t even go in the basket. Washington got credit for the points on a goaltending call.” Neither one belongs in the Final Four.
  4. Don’t create a semaphore in Windows with an lMaximumCount of INFINITE. If you do, CreateSemaphore will return you a pleasant ERROR_INVALID_PARAMETER (#87), and a NULL handle. Boo. Why can’t I have an infinite semaphore? And don’t give me lame excuses about the need to represent the count in datatypes whose bounds are finite. That’s just a lack of creativity talking.

That’s all for tonight.

Real Time Music Video Synthesis by Reconstruction

The world truly is full of wonder.

You have to check this out. A guy named Sven König, who I assume is from Germany, wrote some amazing software for creating music videos in real time. The idea is, you feed the system existing material (anything from existing music videos to someone giving a filmed interview). The system analyzes the input media, breaking it apart into sound/video snippets that are, say, as long as a quarter note in the input song, or an eighth note, a sixteenth, etc. It then creates a sound signature of each sample (I assume performing some sort of time/frequency analysis), and stores all the samples along with their signatures in a database. Then, when you run the software, you sing/talk/beatbox/make random noise into a microphone. The software now takes apart your voice coming in, and generates signatures in the same manner. It mathes those signatures to the nearest existing sound samples in its database, and plays back the sound/video clip corresponding to the closest match, instead of just playing back your own voice.

What ends up happening is that if you were to say “Hello” into the mic, the computer would break that apart into maybe “Heh” and “Low”, and search its databse for some moment in time in one of the source media you fed it at the beginning, where it sounds like “heh” or “low”, and play back those two clips in order, thus reconstructing output sound that sounds like “Hello,” but isn’t being said by you.

I’m not sure if that made any sense, but check out this video of Sven explaining his “sCrAmBlEd?HaCkZ!” software, and pay attention to the examples, and I think you’ll understand better. It’s a really awesome idea. I don’t know if just nobody’s thought about it before, or if nobody has done it completely, or if I just wasn’t aware of it, but as a sound guy, I think it’s one of the coolest things I’ve ever seen a computer do.

cat /var/log/messages

  • My 1GB SD card is full… my camera won’t take any pictures.
  • Birthday updates:
    • Here’s what my door looks like:


      How cute. I’m sure at the beginning of the year I checked “[X] Yes” under “Would you prefer not to have your birthday celebrated by the Hall?” Not that I mind, just that it’s kindof awkward having my door decorated when I had to introduce myself to someone on our floor just yesterday in the elevator, when she realized I had already keyed 9 and must live on the floor. Hrm…
    • In better news, despite being overjoyed every time I was gone for interviews over the past month, Nate (my roommate) doesn’t actually hate me, and, in fact, even devoted some of his precious relaxation time over Spring Break to making me a card to attest to that fact (in crayon, no less):

  • Eating lunch in Pop’s this morning, I overheard the girls behind me (not trying to eavesdrop, just unable to avoid hearing them, seeing as they were loud) discussing the different clubs and orgs that one of them was in. Props to her for starting up a club that was doing something with sending medical information to other chapters of the club in India, to spread real medical facts to impoverished regions there. The other thing I overhead before I left, which made me wonder and was more the point of this bullet, was that she wanted to join some co-ed business frat, for “all the hot, smart business guys” that would be in it. Do girls really go for smart guys? idk.
  • You can install Windows on an Intel-based Mac. When they finish up the video drivers for the x1600 in the MacBook Pro (and if they get 3D acceleration support somehow), that could make for a pretty cool laptop… OSX for normal use, but able to dual boot into XP when needed for specific apps or games. Maybe I’d even buy one in a year or two. We’ll see.
  • Bonus picture as I was cleaning out my camera:

    My sister Kaisa and I on Sanibel Island, FL, (I think) during our family vacation last summer.

I can take a hint…

I got back from the Engineering campus this evening to find a letter from my former employer on my desk. The letter read, in essence, “Thanks for applying and interviewing for the network analyst intern position, but we have given the position to an internal candidate.” Now, I don’t take any offense to that, despite the fact that on some level I could be considered an internal candidate. In truth, I had already decided to persue other options after having my on-site interview and learning more detail about the position being offered. BUT, I did find it rather humorous to receive the letter, given that I also received another letter over spring break, dated three days prior to today’s. It read, “Thanks for applying and interviewing for the network analyst intern position. After reviewing your resume, we are unable to offer you consideration at this time. These decisions are difficult, etc…”.

Yeah. I got the hint the first time. You’re not going to offer me the position. Thanks. No need to rub it in.

Interlude from Nate working busily at his Transport Phenomena homework: “Oh Hell No! I am not doing H parts!” That’s what you get for being a Chemical Engineer, my friend.