Hello
General
Toys
Other
Blog Archives
Super Links
Copyleft

Unless otherwise stated, all original content on this site is licensed under your choice of the GNU FDL or the Creative Commons ShareAlike License.

GNU FDL Creative Commons License

Validate

Hopefully, this website is valid. You can check the XHTML, the CSS, and the RSS.

Valid XHTML 1.0 Strict Valid CSS Valid RSS

Stats

The Open Spectrum

I ran across a great FAQ explaining the Open Spectrum concept. It reminded me about this important issue that very few people seem to be aware of.

The basic idea is that the FCC no longer needs to regulate and dole out portions of the RF spectrum. With new technologies like frequency hopping and software defined radio, we can now make our systems very resistant to interference, to the point of making it a non-issue. As it is, only a very small portion of the spectrum can be issued without a license (e.g., by any consumer devices). If the entire spectrum was opened, we would see an explosion of technological benefits. Cheap, high-speed Internet access virtually everywhere and all sorts of devices that could communicate with one another would likely be the result. It's hard to say just what innovations might come about.

Fun Probability Problem

Zarkon. Attractive land of exotic flora and fauna. Planet with many historical sites relating to the transcendental explosion of 3042. World of marvelous cities filled with delightful gift boutiques. Zarkon, home to the most unintuitive bus system in the galaxy.

You, an intrepid space tourist, have stranded yourself here after hopping on the wrong pleasure barge at planet Chlorox. This is embarrassing. You don’t even speak Zarkonese.

Walking about the city in an effort to find a minimally exotic bar and a place to stay for the night, you discover a bus stop. You look around the stop for a schedule, even though you can’t read Zarkonese. There isn’t a schedule anyway. Thankfully, a bizarre, one-headed creature waiting at the stop happens to speak your language. It informs you that the busses do not travel on a regular schedule. "Oh. Well, has it been a long time since the last one came?", you ask.

"It doesn’t matter, the arrival of busses is a memoryless stochastic process," the creature replies. "The arrival times of past busses don’t tell you anything about when the next one will come. However, the average time between bus arrivals is 40 zinutes."

You mentally process this for a moment. "So I guess one could come right now, or maybe not until 5 zours from now," you say. "How long should I expect to wait for one, on average?"

"You tell me. I’ve never been any good at math."

You begin to think about the problem. "Hmm. How long do I need to wait? I suppose 40 zinutes. Wait, that doesn’t seem right. The busses are an average of 40 zinutes apart, but I could come to the stop at any point between them. It would seem that, on average, I’d come to the stop halfway between two bus arrivals. So maybe I should expect to wait 20 zinutes. But does that really fit with the bus arrivals being memoryless? If I come 20 zinutes after a bus arrival I should expect to wait just as long as if I came immediately after a bus arrival. Gee, now I’m really not sure what the answer is."

How long do you have to wait, on average? The answer is rot13’d below.

Gur rkcrpgrq jnvgvat gvzr vf sbegl mvahgrf. Guvf fbzrjung pbhagrevaghvgvir snpg vf n jryy-xabja cnenqbk / fhecevfvat snpg jvgu fgbpunfgvp cebprffrf. Fb jul vf gur rkcrpgrq jnvgvat gvzr sbegl mvahgrf?

Vg vf orpnhfr lbh graq gb neevir ng gur ohf fgbc qhevat bar bs gur ybatre vagreinyf. Gur nirentr yratgu bs gur vagreinyf orgjrra ohf neevinyf vf sbegl mvahgrf, ohg vs lbh cvpx n enaqbz gvzr, gur nirentr yratgu bs gur vagreiny gung pbagnvaf gung gvzr vf npghnyyl rvtugl mvahgrf. Sebz guvf cbvag, gur hfhny ernfbavat gung fhttrfgf lbh neevir va gur zvqqyr bs gur vagreiny nccyvrf, tvivat n svany erfhyg bs sbegl mvahgrf.

Gung jnf na vaghvgvir rkcynangvba; lbh pna qrevir vg zngurzngvpnyyl. Gur snpg gung gur ohf neeviny cebprff vf zrzbelyrff vzcyvrf gung vs lbh gnxr gur gvzr ng juvpu gur arkg ohf neevirf gb or n enaqbz inevnoyr, vgf cebonovyvgl qrafvgl shapgvba vf

cebonovyvgl qrafvgl shapgvba bs gvzr bs gur arkg ohf neeviny

Lbh pna jbex bhg gur erfhyg sebz gurer.

Necklace Puzzle

Today I encountered a tricky counting problem: ‘There are necklaces which consist of four white beads and four black beads on a string. How many such necklaces are distinguishable?’.

This sounds like a simple problem. I immediately thought the answer was eight choose four divided by eight divided by two. Eight choose four relative positionings of the black and white beads, divided by eight to indistinguish rotations, divided by two to indistinguish flipping.

Seems right, huh? That number is not an integer! Oh no! How can this be? One part of the trick is that rotations and flips ‘interact’ in certain cases. Here is an example: consider two necklaces which include the bead sequences BBWBWBWW and BBBBWWWW. There are sixteen (indistinguishable) ways to position the first one: eight rotations times two flips. However, there are less than sixteen ways to position the second.

I manually enumerated the indistinguishable necklaces and found that there are eight of them. Unfortunately, I haven't been able to find a combinatoric justification for this number. If you can think of a solution tell me tell me tell me!

String Synthesizer

I’ve been writing a string synthesizer lately. It’s done enough now for me to drop it; my curiosity has been satisfied. Satisfy your curiosity with this sound it created.

Find Out About Other People

I’ve added a page about people I find interesting. Some of these people are my friends, others I’ve never met.

Updates

I've posted some miscellaneous old bits on my page. We have the genetic algorithm robots, a dumb language, a bit about social security numbers, and few other things. Yes, I am putting off homework.

What I've Been up to This Summer

Whew! It's been a long time since I've added any updates here because I've been having a very busy summer. I've been in San Jose, CA working for IBM in their Extreme Blue program. My talented colleague Matthew Hammer is working on the same project here with me. Our project (GameGrid) has been to apply grid computing to massively multiplayer online games. You can see some press about it at eweek. Our project has gotten a bit of attention internally a IBM. We showed our results to Sam Palmisano (the CEO) and Dan Powers (the VP of grid computing) gave a demo of our system at the LinuxWorld convention.

IBM has been treating Matt and me very well. They put us up in some nice apartments and have sponsored a number of trips on the weekends for us and other interns. We also got to take a trip to NYC. Well, back to work for me.

Good Books

I've made a list of books I like. This is for people who have so much time they have already read all the books that they think might be good and need to get recommendations from somebody else. I wish I was one of those people.

They are shamelessly linked to amazon, but I really do like them. I only added the amazon links as an afterthought.

Drew Olbrich's Homepage

Drew Olbrich's homepage has a number of interesting things. This page clears up misconceptions about the distance between the earth and the moon relative to their sizes (it's probably a lot farther than you thought). This page helps you intuitively understand why a rotating 4D hypercube projected onto 3-space (then probably onto 2-space) looks the way it does. He made this ultra-simple 3D input device out of nothing but two joysticks, a ball, and some rubber bands.

Evolvotron

Evolvotron is an extremely cool program that makes abstract art with a genetic algorithm. It presents the user with a grid of thumbnail images, and the user clicks one. It keeps that image and replaces all the others using the mutated parameters of the selected image. You continue this process, and when you find an image you really like, it can render a big version for you. Definitely worth playing with. Here are some pictures it made for me:

1 2 3 4 5
PRIMES is Decided by a (Perl) Regular Expression!

I've been informed of an extremely clever primality test implemented as a perl regular expression. Try it yourself:

perl -e 'print "$num is prime.\n" if (1 x ($num = shift)) !~ /^(11+)\1+$/' 19
perl -e 'print "$num is prime.\n" if (1 x ($num = shift)) !~ /^(11+)\1+$/' 21

It is horribly exponential and segfaults perl 5.8.0 on my system if you give it a large number. Nevertheless, it is really cool. It works by representing the number in unary, then seeing if it can be divided into two or more equal groups of two or more characters.

Artificial Hippocampus

This is really cool. They've made an entirely electronic hippocampus. From what I understand, they took a normal hippocampus out of a rat's brain, hooked up electrodes to its input and output, and sent a huge variety of signals through it until they had a decent model for its operation. Then they implemented the function in a chip. `Ta-da!', just like the real thing. Now they are putting the chip in the rat to see what happens.

I want to get one of these in my head, but I would like the chip to just communicate to a computer which will perform the function in software. Then I can sit and my computer and tweak it, no doubt getting crazy drug-like effects. Of course, if I screwed it up, I might not be able to fix it.

Victory!

Today marked the end of a harrowing, ongoing struggle in my life. I'm not sure when it began exactly. I suppose it began about two months ago.

My coffee machine began producing terrible tasting coffee. It was an intermittent problem, so it took me a while to realize that the coffee was actually bad. I would just get up in the morning, make a cup of coffee, drink it, and think `Gee, I guess I don't like coffee as much as I thought. It tastes gross.'. Eventually, I had a decent amount of sleep before encountering another bad cup, so I had the presence of mind to realize that it wasn't me, it was the coffee. It tasted really, really nasty. It tasted like it was moldy or rotten or something. I supposed that my coffee machine was dirty inside, so I took it apart as much as I could and carefully wiped down all the internal surfaces that I had access to. After putting it together, I ran a pot of water through it to rinse it out. Sure enough, the next cup tasted fine. After a while, however, yet another bad batch came out, just as horrible as ever! I cleaned it again, it seemed ok again, and this cycle continued.

Every time I thought I had finally cleaned all traces of nastiness from my coffee machine and it shocked me several days later with another putrid cup, the feelings of fear, uncertainty, and doubt surrounding the machine grew. It seemed like my cleaning efforts didn't have any effect, and it produced nice or horrible coffee according to its own whims. I began to dread waking up and activating the machine, not knowing what sort of coffee it would subject me to that day.

After the machine produced bad coffee on several days in a row, reason returned to me, and I hypothesized that it might be malfunctioning in some way. After poring over its manual, I noticed something that had previously escaped my attention: coffee machines periodically need to be `descaled'. In order to descale a coffee machine, you need coffee machine descaler. Apparently, this is not a common item, because I couldn't find it in any store near my apartment. One day, I finally hopped on a bus and made a trek out to Walmart, where I bought some coffee machine descaler. At this point, I was beginning to feel like I was in control of the situation. Clearly, I had found the problem, since I had never descaled the thing. I had the descaler right there. There was nothing that machine could do to stop me from descaling it.

I descaled it three times in a row, and then ran several pots of water through it to give it a good rinsing. The next morning, I felt so confident in my solution that I was actually looking forward to activating the machine. Of course, the coffee tasted fine. There was no trace of anything unpleasant in it. The machine continued to make nice coffee for about a week.

I had almost forgotten about the whole matter when it nailed me again. This time, the coffee was worse than ever. It was unbelievably putrid. It tasted as if something had died in it. After throwing out the disgusting coffee, I helplessly went on with my day. Throughout the day, I alternately felt that the coffee machine had little wretched animals inside it, that the coffee machine was conspiring with other appliances, or that the coffee machine was under the control of some evil supernatural being.

Today, I woke up, and was face-to-face with the machine once again. But today I didn't feel helpless or frustrated. I didn't clean it. I didn't descale it. I picked it up, unplugged it, put it in a box in the corner, made a mental note to never take it out, and then went and bought a jar of instant coffee. I made a cup of instant coffee, and it tasted great. It tasted like freedom.

Turing Machine Simulator

I made a Turing machine simulator. You can play with it if you like. It's pretty boring right now. If I ever do anything interesting with it I'll let you know.

Battle Master

I've started playing a cool new game. It is Battle Master. It is a web-based massively multiplayer realtime strategy game. It is not a realtime strategy game like Warcraft, however; it is on a much larger scale, like Risk. It is realtime in the sense that if moving your troops from one region to another would take eight hours in real life, then it takes that long in the game. The best thing about the game is the fact that it is not very demanding in terms of time. In most massively multiplayer persistent world games, the most powerful players are simply the ones that play the most. In Battle Master, it is really only useful to play for about fifteen minutes per day.

Logicomix

Logicomix is an interesting project of Berkeley CS professor Christos Papadimitriou and writer / mathematician Apostolos Doxiadis. They are telling the story of the development of modern logic and theoretical computer science in the form of a comic book. The characters will include Turing, Gödel, Cantor, Russell, and many others. I find the idea very exciting.

A Google Graph Viewer

TouchGraph GoogleBrowser is a slick Java applet that combines an interactive graph layout engine with the graph of web pages defined by Google's 'related pages' feature. You enter an initial URL, and the applet fetches some related pages and adds them as nodes in the new graph. Then you can double click on nodes to find pages related to those nodes, and so on. It's really very interesting.