May 28, 2007

Spoiled by Google Reader

I've grown so accustomed to navigating content via the "j" and "k" keys in Google Reader that i get mad at other sites that don't respond to keyboard navigation. I was just reading an on-line tutorial that had "next page" links and i didn't want to have to keep clicking the mouse. I also noticed it when using the documentation browser in Xcode to read a technical programming guide. I hope providing keyboard navigation shortcuts becomes more standard.

Posted by Matthew at 12:51 AM | Comments (0)

May 27, 2007

New bow tie catalog

I just got a new catalog from Beau Ties Ltd of Vermont. They have the best assortment of bow ties. I haven't purchased a new one in a long time but i thought Polka Pear looked ind of nice.

Polka Pear Bow Tie

Posted by Matthew at 07:39 PM | Comments (0)

May 22, 2007

Grad school beginnings

Yesterday i had my first learning experience as a University of Michigan student. When i was accepted to the Biostatistics department, i was also accepted to the Genome Science Training Program (GSTP). Hence, i attended Monday's GSTP annual retreat. The day focused on talking about the grant review process. The success of an active researcher is dependent on his ability to get funding. To understand how to write grant proposals, we acted out a mock grant review session. We evaluated previously written applications and decided whether to fund certain proposals or pass on them.

The fact that i was the dumbest person in the room made me both scared and excited. I shouldn't feel too bad because most of the students at the retreat have been a part of the program for at least a year and i haven't taken a single class yet. I quickly realized that i have a lot to learn. This is exactly the type of intellectual challenge i was looking for.

I also got a glimpse of just how much more focused my grad work will be on the who rather than that what. In the mock grant review session, we used the prestige of the principal investigator as a criteria for approval. A positive reputation is extremely important. To some one new in the field, it is important to work with mentors with the best possible credibility. Luckily for me, UM has one of the top three biostatistics departments in the country, so there is no doubt i will be working with the best.

Posted by Matthew at 11:53 PM | Comments (1)

May 18, 2007

Limit set visualization

I finally got a free moment to return to programming some more of the visualizations from the Indra's Pearls book. An example image can be seen below.

limit set

Just four relatively simple functions are used to generate this image. The image is drawn on the complex plane (roughly the lower left corner is -30-30i and the upper right corner is 30+30i). The image drawn shows what happens when you take any number and plug it into one of the functions and then repeatedly plug the result into one of the functions. If you do that enough times, eventually the values will lie somewhere along the shape drawn in the picture. We call the shape drawn the limit set of the functions.

The four functions that define the image were not chosen at random. They must posses certain properties in order to product such a well ordered limit set. The functions used for this pictures were created using "grandma's recipe" in chapter eight of the book. (Specifically using a trace for a and b of 1.91+.05i and the trace ab value from the quadratic equation where the minus sign is in front of the square root.)

This image required over 30 million points to be calculated and plotted. Even on a speedy computer, this takes a while. I was able to use some of the multi-threading techniques found in Advanced Mac OS X Programming to prevent the UI from locking up. Debugging multi-threaded apps is not fun especially when XCode likes to dump you into assembly code with little indication as to what error has occurred. Nevertheless, i did finally get it to work as i intended.

There are still some improvements i would like to make. The above image tooke just over 20 minutes to draw. Currently i only have one worker thread and i could see some improvement if i could make at least one more. The Advanced Mac OS X Programming book also has information in using distributed objects to have two machines doing work on the same data at the same time. It would be nice if both my laptop and desktop could share the work of drawing the image.

Posted by Matthew at 03:42 PM | Comments (0)