Dromanova Update

Emusic seems to be fooling with the format they deliver to their downloader clients. It seemed to switch to an XML format, then go back to the obfuscated format. In any case, I updated Dromanova to handle both cases:

You can see the mercurial repository here, or download the script itself here.

COPS and HPDC Best Paper Awards

The paper I presented at the COPS 2008 Workshop, “Social VPNs: Integrating Overlay and Social Networks for Seamless P2P Networking” won the workshop’s best paper award. This was joint work with Renato Figueiredo, Pierre St. Juste, and David Wolinsky.

The SocialVPN project uses social networking to build P2P VPNs. It makes it trivial to communicate, play games, share music, etc. with anyone in your social network with any IP-compatible software. You can find the slides here. Below, you will see a photo of me giving the talk:

Giving the SocialVPN Talk

In addition, a related work: “Improving Peer Connectivity in Wide-area Overlays of Virtual Workstations” by Arijit Ganguly, David Wolinsky, and Renato Figueiredo. and myself was presented at HPDC 2008 by Arijit Ganguly. This work also won the best paper award.

Congratulations to my co-authors!

Free Software and Digital Music

Recently I suffered a logorrheic episode about Free Software. In the mean time two things have changed:

  1. I have installed Rockbox on my iPod.
  2. Amazon has released a non-free GNU/Linux client for their MP3 store.

With Rockbox, I’m using free software when I use my iPod, but there are other benefits than ideological purity. Rockbox supports many players, so I can easily buy a new mp3 player and get the same features I’m used to with my current device. The main feature I like with Rockbox is that the device maintains its own database. To install music on it, I only need to copy the files. My Ipod appears as a normal USB disk. This means I can use rsync to automatically keep my iPod as a mirror copy of all my music. When I go to a new machine, I can use rsync to copy all my music off just as easily. In this way, my Rockbox-powered iPod becomes an exact mirror of my music collection. Since I’m using Emusic (and now Amazon) to buy mp3s, keeping backups is very important to me.

The second question is the acceptability of Amazon’s downloader program. It is non-free software, but I’ve allowed it. The reasoning is the following: it enables a single transaction. When that transaction is over, it gets out of the way. I don’t need to use the program ever again. If in the future, Amazon does something to violate my rights, I just uninstall the program and keep using all the old mp3s. I don’t really see this as materially different from using their web page (which has javascript on it and as such executes code on my computer).

As a practical matter, I will only buy mp3 albums from Amazon when it is cheaper than buying the CD used (including shipping).

15K (9.321 miles) in 64:50 [or my first non-PR]

On January 19th, I ran Florida Track Club’s Newnan’s Lake 15. The full results are online as well as pictures from Richard Ritari. I came in 20th (out of 167) overall, and 3rd in my age group. I should say I was really fourth in my age group but since my fellow 30-34 age grouper Ed Dunne won overall with an excellent 55:42 time, he is removed from the counting for age group awards.

This is the first time I did not get a personal record (PR) at a race. This is due to training mistakes on my part. Like many athletes, I have a hard time admitting when I am injured. I got a minor injury prior to my last big race (Micanopy half-marathon). I was pretty happy with Micanopy, but it greatly exacerbated my piriformis syndrome. I did take a lot of time off running after Micanopy. I was starting to feel a lot better, so I figured, why not race 9.3 miles. Turns out, that was a dumb idea. Here is a plot of my pace as a function of distance:

You may note that around 6 miles my pace starts to slip, and after 7 miles it really drops. At that point in time, I was thinking about walking because I was in some pain. Like many a foolish runner, I wasn’t brave enough to put my health before the embarrassment of not finishing a race. Fortunately, it doesn’t seem to have caused major problems, but I definitely start to feel some discomfort when I get over 5 miles or so now.

Now, I’m doing everything I can to recover. You name it! Stretching, strength training, cross training on the bike, stairs, swimming, self massage, active release therapeutic massage, yoga, and even…. acupuncture. I’m looking for anything at this point: placebo effect, real effect, who cares: I’m just looking for effect. So far, things seem to be going well, but I’m definitely going to focus on shorter distance running until this heals up.

My current theory is that I’ve injured a ligament near the piriformis and also injured the sciatic nerve. Both ligament and nerve injuries just take time to heal, and clearly, I’ve not given them enough time yet. Like almost all runners (or even all athletes), it’s really hard for me to take it easy while I recover, but I try to tell myself that everything I do to heal is really part of my running. When I’m swimming, I’m running. When I’m stretching, I’m running. When I’m doing yoga, I’m running. All is one.

Two somewhat related notes. I got the data out of my garmin 305 using Garmintools, a free software package for interfacing with the Garmin 305. I recommend it if you run GNU/Linux and have a 305. Secondly, I did link to the photographer Richard Ritari’s site, but I can’t even view it properly because his site now uses flash to view simple pictures. I guess this is due to some quasi DRM-like idea of trying to make it hard to keep thumbnails of his images. I bought one image from him in the past, however, I doubt I would again. In the past, the digital download cost 40 dollars. It seems he is no longer even offering them, instead you must buy a 4×6 or 5×7. Just a note to photographers out there: it’s 2008, I’m not buying prints anymore. Charge me 10 dollars for the digital download (of pictures he has already taken and stored), and I will buy every picture he takes of me. In the mean time, he’ll be getting zero dollars from me.

Why Spam Filters Suck

I was asked by Brendan I. Koerner why spam filters suck. An excerpt from my answer appears in this month’s Wired magazine.

One thing they didn’t mention which I think bears repeating is why spam filtering is so hard. Here is what I said:

Spam filtering is an adversarial problem. You want your email spam free, but
spammers want you to read their messages. Most technological problems don’t
have this aspect. The spam problem is more similar to automated crime
fighting than building a better search engine, for instance. As text spam
filters have increased in accuracy we’ve seen spammers move to image (jpg and
gif) and pdf based spam.

Spam classification is hard. If you hired a human to do the job, you may not
get better results. Certainly some messages are easier for a human to
classify than a computer, but the reverse is also true. Bill Yerazunis,
author of the spam classifier CRM114, estimated his own classification
accuracy as 99.84%, which was worse than his software did:

http://crm114.sourceforge.net/wiki/doku.php?id=news

I suppose I was asked due to my research in spam filtering based on social email networks, work which has been in the news before (Slashdot, New Scientist, Nature News).

EEL 6935, Information Theory, Spring 2008

Starring you!! (pretend there is a little graphic of a finger pointing at the screen in the place of this momentum stopping text).

I extend a very warm welcome back to school to our fine University of Florida students. This semester, some of you will have the dubious honor and privilege to learn Information Theory in a course conducted by myself. This subject is dear to my heart and I find the material to be quite beautiful. I look forward to sharing my enthusiasm and knowledge of the material with you. To put in a vernacular more accessible to today’s youth: I’m totally pumped about this semester!

Please take a look at the website for this Information Theory course. There is also a Google Group for the course. Please join the group and introduce yourself.

See you in the classroom!

Vegans, Monks and The Devotion to Free Software

For many years I have strived to use only Free Software. There is a certain conceptual purity in adherence to that rule which appeals to me. However, in that time, I’ve identified a few problems I haven’t satisfactorily solved. I’m writing this in the hopes of stimulating some discussion or comments that might give me some new insight.

Definition of Free Software

Free Software is software that grants four specific freedoms: freedom to run for any purpose, freedom to modify and study, freedom to make verbatim copies, and freedom to redistribute your improvements. Explaining these ideas to people can be difficult. Other than price, most people don’t understand why they should care about Free Software. Very few see any connection with Free Software and liberty. The cynic in me would say that actually very few are willing to make any meaningful sacrifice for liberty.

An argument for using Free Software is that proprietary software leaves you as a kind of tenant, never really owning the system that is governed by that software. You might have bought your computer, but the current and future performance and feature set is governed by the copyright holder, who only licenses you to use the software but not make any non-trivial changes. As we have seen, software is appearing everywhere: in your car, in your home electronics and appliances, even in your credit cards (those that are smart cards). In the proprietary picture, you have no right to control or change these systems. Meaningfully exercising your constitutional freedoms increasingly involves the use of software. These arguments were laid out by Richard Stallman, the founder of the Free Software Foundation, who anticipated these problems more than 20 years ago (FSF on Wikipedia, FSF philosophy).

The Goal of using only Free Software

Today, it is relatively easy to use (almost) exclusively Free Software. Ubuntu is a distribution of GNU/Linux that is easy to install and use and comes with almost all the utilities many users need, including an excellent web browser (Firefox) and an office suite (OpenOffice). Those using Free Software today aren’t making a big sacrifice. Generally, there is a minor inconvenience of dealing with minor incompatibilities with proprietary software users. I would argue that the benefits of Free Software, such as not having to pay, not having to deal with license keys or copyright violations, automatic management of all the software installed on the system, outweigh the difficulties for most people. For someone who can program computers, the benefits are even greater: you can add new features to your favorite programs and even share those improvements with others legally.

Is using only Free Software more like being a Vegan or a Monk? Wikipedia defines veganism as “a philosophy and lifestyle that seeks to exclude the use of animals for food, clothing, or any other purpose.“. One could make the analogy of Free Software purists as Vegans. Those that only care about zero price (so called Freedom 0), might be compared to vegetarians. Being a vegetarian might be a bit difficult, but being a Vegan can be a real challenge. You have to be really sure that no hidden ingredient in some food might be an animal product. There is some similarity with verifying that your software follows all the four freedoms. For instance, try explaining to your Mom why the program Pine is not okay, even though you can run it for zero cost and get the source code.

Being a Vegan is a challenge, but approximately one in 100 or so choose to do it. On the other hand, being a Monk (or Nun) is something virtually no one chooses (outside of Tibet where almost 1/3 of the population are monks).

The Siren Call of Conceptually Simple Rules

I should state right off the bat, that the idea of a simple criterion for what is wrong or right is appealing to me. It may be naive, but I would like to identify some set of rules or conditions that would qualify software as “Kosher” to use. I suppose it is likely that such a quest will not be successful without spiraling into absurdity. Even Veganism, which seems like a simple rule, could be argued to be harmful to the plants, and so Fruitarians go further and only eat ripe fruits. When it comes to diet, I myself follow a somewhat arbitrary simple rule: I don’t eat Mammals. I acknowledge that there is some absurdity here and that there must be many non-mammals that I would eat that perhaps I shouldn’t (on some basis) or some mammals I don’t each which perhaps I should (on some basis). But the rule is very simple, useful, and therefore, to me appealing.

In order to find a good set of rules and in order to avoid complete absurdity, one should start with the motivations for the rules. I want to maximize the utility of technology and maximize my personal liberty. These two goals conflict: when using proprietary software utility may be increased at the cost of liberty (I can’t exercise some subset of the four freedoms). As a programmer, access to source code and the right to modify it also increases utility. So for me, it’s tempting to limit myself to software that only grants the four freedoms. But let me discuss some problems with this I have identified.

Where is it hard to follow the pure Free Software Ideal?

Here are a few challenges for Free Software purists:

  • Cell phones
  • Game systems
  • Portable media players
  • Drivers/firmware for PC hardware (such as video or wireless cards)
  • Flash, which has become very common on the web, does not currently have a fully capable Free Software replacement (see swfdec and gnash). However, Adobe does provide a flash plugin for GNU/Linux at zero cost.
  • Social software with large user bases, such as Skype.

All of the above have software or firmware that is updated after the unit is sold to the end user. In addition we could be more strict and consider:

  • Home video: DVD players, cable boxes, television firmware
  • Car software (e.g. the console in my Prius has a touch screen which controls climate, audio, and shows fuel economy statistics)
  • Software running on web pages (javascript code or the flash code driving a web page which is executed by your browser).

Personally, I am willing to use a cellphone that runs proprietary software because I have found no free alternative to replace it. When Openmoko, a free mobile phone platform is ready, I’ll almost certainly switch to that. In the mean time, my Treo becomes a sort of thin-end-of-the-wedge for proprietary software. Since the phone is already non-free, I am willing to install non-free programs on it such as Google’s Map application for the Palm OS, or their Java Gmail client.

I’m willing to use audio, video and gaming devices such as DVD players, Slimdevice’s Squeezebox, original (non-iphone/ipod touch) iPods, and the Nintendo Wii. Unfortunately, due to the disaster that is DRM, many media devices are especially hell-bent on denying users their rights, but I only purchase devices that I feel do not curtail my rights. I own a ReplayTV PVR, which automatically skips commercials and whose manufacturer sued to the brink of extinction. The argument I’ve constructed for the “media exemption” is that media content is primarily expressive and not primarily functional, so as long as the system does not do non-trivial DRM (note the wiggle room), I allow it. I am currently not willing to use the iPhone or iPod touch, since these machines are too close to general purpose computers and I think present too much of a risk to my freedom (since Apple maintains totalitarian control over those devices). If I were a purist, I could replace the firmware of my iPod with some free firmware such as Rockbox.

For my computers, my rule is that any non-bios code that runs on my CPU must be Free Software. I am willing to load the non-free firmware to my Intel wireless card, but I am not willing to run non-free ATI drivers for my graphics card. The difference is subtle, but real. These days, even hardware can be described and emulated by software. The firmware for my wireless card, in this picture, is basically hardware that can be modified after it is sold. I could disallow this exemption, but then we’re left with an absurdity: if Intel had made burned the original firmware into a read-only memory on the card, it would be okay. I admit the firmware exemption is shaky. The same argument could be extended to a Dell computer: Microsoft could burn Windows onto a ROM in principle, so why not just run Vista (of course, practically that would never work since the volume of code is so large with an entire OS that it could never work securely for years without updates). The CPU rule means I can’t run Adobe’s flash. This is a minor inconvenience but the Free Software programs gnash and swfdec can both show Youtube videos, even if they can’t view all flash programs and pages. The policy here is very close, if not identical, to the Debian GNU/Linux policy for what goes into the main section of their software distribution (another convenience: software is okay to run as long as it is in Debian main). The bios exemption is due to the fact that BIOS software is quasi-firmware like: it is rarely if ever updated and stored in flash or ROM. If possible, I will use LinuxBIOS to replace my BIOS, but currently the motherboards supported are rather limited.

I don’t use Skype on my computer, there is no need. I can run Ekiga and call anyone using standard SIP compatible software or hardware. I may be willing to use Skype on some device other than my computer, such as a dedicated skype handset. In this case, it’s like using a telephone. Obviously there is some bizarre cognitive dissonance going on with this issue.

An interesting inversion comes on the web. On the computer, I allow non-free hardware (the designs for my CPU and motherboard are not available to me), but insist on the code running on the CPU to be Free. On the web, I insist on the virtual hardware (the Java/.Net/Flash virtual machine) to be Free but the software (the page or service) is allowed to be non-free: I don’t expect the four freedoms to apply to all the javascript that might be embedded in a web page. I have no real argument for this except practicality and simplicity. Web code is sandboxed, so it can’t really be used to deny me control of my own property. Instead, it is like a representative of a service that I don’t own. Secondly, disabling javascript would render a very large subset of the web unusable.

Conclusion

In the course of writing this, I’ve rediscovered that practicality motivates my usage of Free Software. Clearly I use a lot of non-free software, less than the vast majority of computer users but none-the-less I do use non-free software. However, like most people I prefer to have more freedom if given the choice, and like most people, some trade-offs I’m willing to make and others I’m not. That doesn’t mean that every choice is okay and equal, it just means we have to accept a little grey, and be willing to continue to wrestle with the issues and make choices. A guiding principle for me is to always try to gain freedom, and try hard to avoid backsliding into a state of less freedom. By elevating the previous idea above some idyllic notion of purity, one avoids inviting total ideological collapse due to minor violation of principle.

I should make it clear, almost all of the ideas here originated elsewhere. Most came from Richard Stallman, various participants of the Debian project (such as Bruce Perens), Code by Lawrence Lessig and countless others who have contributed to the debate over Free Software and Free Culture.

13.1 Miles (21.08 Km) in 1:26:18 (6:31/mile)

On November 10, 2007, I ran the Tom Walker Memorial Micanopy Half Marathon in 1:26:18. I was pleased with my race that day. As usual, I had loftier goals, but I’m very happy with the results. I came in sixth place overall and second in the 30-34 age group. The results of the race are at the Florida Track Club page. Professional photographer Richard Ritari took pictures of the Micanopy Half Marathon which you can view online. There are a couple good ones of me, but his system is not easy to link into, but I’ll try: [2.5 miles, 12.5 miles].

I got the data out of my Garmin 305 and took a look at my speed as a function of time. I plotted the speed in minutes per mile (so lower is faster) averaged over 0.25 mile intervals.

plot of speed vs. time

It’s clear that something went wrong at about mile 9.5 or so. My pace slows for the last 3 miles of the race. I realized I had slowed a bit, but I didn’t know how much. I’ll keep a better eye on time next time. Also, I’d say I probably started my kick a little too late considering how much faster my last quarter mile is (5.5 minute/mile) than the second to last quarter mile (6.5 minute mile).

I also have a photoset on flickr for this race.

Crossing the finish line

Finding Deadlocks in .Net code, or CSLint with Cecil

While developing Brunet, we have had several headaches finding and removing deadlocks from the code. We wanted a tool to help us find deadlocks before they cause a problem, and we found CSLint by Konstantin Knizhnik. CSLint works on .Net binaries (not just C# as the name may imply). It looks for cases where locks are acquired in ways that could result in deadlock (a cycle exists in the graph representing the locks). Unfortunately, CSLint used an old library for parsing .Net binaries which does not support .Net 2.0.

Over this past weekend I have ported CSLint to use Mono Cecil. You can find my changes in the cslint-cecil mercurial repository. You can find a zip file with a recent version here for the time being. In the future, I’ll probably set up a better page.

This code is licensed under the MIT/X11 type license. I welcome contributions. The code can be improved a lot. It would be nice to have more test cases to see if we are really generating a good list of candidate loops. Also, currently, the output is a bit confusing as the loops are reported multiple times. It would be nice to improve that as well.

The measure of a runner

On October 19th 2007 I had a my lactate threshold and VO2max tested. To those that don’t want to click on those links, the lactate threshold measures the intensity of exercise I can do before my body can no longer process lactate before it starts building up (and causing me to feel fatigue). The VO2Max is the maximum rate my body can utilize oxygen. I had this test performed at the UF and Shand’s Sports Performance Center.

The test is pretty simple. They put me on a treadmill and have me wear a mask that measures my oxygen consumption. Every three minutes they prick a finger, take blood, and increase the speed of the treadmill by 0.5 mph. When I finally give up, the test is over. I thought I’d be all macho, but the treadmill only went up to 10 mph, so after that they had to simulate faster speeds by raising the slope of the treadmill, and I wimped out after about 1.5 minutes on the second inclined speed (simulated 11 mph).

The results of the test were that my VO2Max is 59.5 ml/min/kg. According to a chart I found, this puts me on the low end of track and field athletes. Moreover, VO2Max is only 20-30% trainable. So, I might not be able to increase that number very much (certainly getting to 85 seems to be out of the question).

The results of the lactate threshold test were somewhat better. The tester said that they would take the lactate theshold to be 4 mMol/L. For me, that occured at approximately 89% of my VO2max, which means, that even though my VO2Max is not that high, I can run at a very high percentage of my VO2Max. This implies I would be much more competitive at longer races, such as half or full marathons. According to the last paragraph of this page, my lactate threshold is at the level of elite endurance athletes.

There is a third metric called running economy. This is like fuel efficiency in your car: per unit mass, how far can you go on a unit of oxygen? My running economy is about 193 ml/kg/km. According to this page, my running economy is above average. Getting it into the 170 - 180 range would make it excellent. Running economy can be improved by training. Interestingly, I often do long runs at about 8.5 miles per hour (about 7 min/mile) and my economy is about 183 at that speed, which is very good, but still not excellent.

It seems the two areas I should focus on are running economy and VO2max. To do this, I plan to do more long runs at faster speeds. My lactate threshold is pretty high, so I should be able to do long runs at around 6 minutes per mile. Additionally I’ll be doing more interval training. I plan to do intervals of 4-5 minutes in length to make sure I’m stressing my VO2Max. Hopefully I can push up both of these two metrics.

Unfortunately, it seems I have a mild case of Piriformis syndrome, which is limiting my training right now. Hopefully I’ll recover soon and be back to training 100%.

Here are some plots:
lactate_vs_vo2per
running_economy
hr_vs_speed
vo2_vs_speed
lactate_vs_speed

Addendum 11/3/2007: Nova ran a program which you can view on their website: Nova Marathon Challenge. It covers about a dozen people going from a sedentary lifestyle to running the Boston marathon after about 9 months of preparation. The program discusses some of the physiology and metrics which I mentioned above.

Brunet: a remarkably great P2P library

While I was a post-doc at UCLA, I started work on a library to implement P2P protocols, which we called Brunet. Unfortunately, Brunet has never been publicized as well as it should have been. This post is an attempt to bring some attention to it.

Brunet is a Free Software (GPL licensed) library for P2P networking written in C# and developed using Mono, but it also runs on Microsoft’s .Net platform. Here are the basic features of Brunet:

  1. Network transports are abstracted as Edge objects. We have TCP, UDP and TLS/SSL transports now.
  2. Completely distributed UDP NAT traversal (TCP NAT traversal is a to-do item).
  3. Implementation of Chord/Kleinberg/Symphony type ring topology for routing.
  4. DHT implementation.
  5. Both packet based and RPC based communication primitives. New protocols
    are easy to add using one or the other of these approaches.
  6. XML-RPC bridge to allow calling or serving RPC methods with XML-RPC clients or servers. We have examples of this using standard Python.
  7. Distributed tunneling system to maintain topology in the presence of some routing difficulties (untraversable NATs, BGP outages, firewalls, etc.).

We have deployed Brunet on PlanetLab for over two years. You can see information on some of the running nodes on our node statistics page.

Brunet is used as the basis for our IPOP (IP over P2P) project. IPOP builds a virtual IP network which allows nodes to communicate even if some of them are behind firewalls or NATs (as is often the case these days).

The WOW/Grid Appliance project uses IPOP and Brunet’s DHT to produce self-managing grids for large-scale, wide-area grid computing. You can download images of the grid appliance for many virtual machines/hypervisors to try them out yourself.

We encourage outside use of any of the above projects and we welcome code contributions to Brunet. If you are interested in any of the above projects, please join our ACISP2P Google Group. You can download the Brunet code using Mercurial. You can also browse the Brunet documentation online.

Publications

:

  1. P. Oscar Boykin, Jesse S. A. Bridgewater, Joseph S. Kong, Kamen M. Lozev, Behnam A. Rezaei, Vwani P. Roychowdhury, A Symphony Conducted by Brunet, arXiv:0709.4048v1
  2. A. Ganguly, A. Agrawal, P. O. Boykin, R. J. Figueiredo, Wow: Self-Organizing Wide Area Overlay Networks Of Virtual Workstations, Journal of Grid Computing, Vol. 5, No. 2, pp. 151-172 2007. [bib]
  3. Arijit Ganguly, Abhishek Agrawal, P. Oscar Boykin and Renato Figueiredo, “IP over P2P: Enabling Self-Configuring Virtual IP Networks for Grid Computing”, In Proceedings of the 20th IEEE International Parallel and Distributed Processing Symposium (IPDPS), Rhodes Island, Greece. [ppt talk, pdf talk]
  4. Arijit Ganguly, Abhishek Agrawal, P. Oscar Boykin, Renato Figueiredo, “WOW: Self-Organizing Wide Area Overlay Networks of Virtual Workstations”, In Proceedings of the 15th IEEE International Symposium on High Performance Distributed Computing (HPDC), pages 30-41. Paris.
  5. Arijit Ganguly, David Wolinsky, P. O. Boykin, Renato Figueiredo, “Decentralized Dynamic Host Configuration in Wide-Area Overlay Networks of Virtual Workstations”. In Workshop on Large-Scale and Volatile Desktop Grids (PCGrid), 03/2007

5K (3.11 miles) in 18:32 (5:58/mile)

Since I am out of Gainesville this weekend, I could not participate in the Dog Days 5K race. Instead, I ran in the 2007 Paws For Life 5K-9 Road Race in my mother’s home town of Wake Forest, NC (google map of Wake Forest).

I had hoped to run a sub-18-minute 5K this race, but I did not make my goal. I ran 18:32, which is less than 5:58/mile, and I came in second place (the winner was at 18:02). A couple of notes about this race. First, I went out too fast. I should have ran the first mile in 5:32 according to my calculations, but I ran it in about 5:20. I ran the first 1/3 of mile at about 4:40. I think the my early error cost me in the end. Secondly, there was a very long hill in the middle (which I guess was about half a mile long). I was on track for time even at the end of the hill, but it took more out of me than I thought. At that point, I let the number two runner pass me, and decided to focus on the time. I probably should have stayed with him since running with a person can be easier than running against the clock. Lastly, I started my kick at the end a little late.

So, next race, my plan is to go out a little slower than I think I should for the first half mile or so, since I almost always go out too fast. Secondly, I want to try to find a runner that is a little faster than me, and not let him get away from me.

I’ve updated several photos to my Flickr photoset: Paws for Life 5K 2007. Here’s a humorous photo of me after the race:
me appearing to spit out my drink

PS: My Mother took the photographs. Thanks Mom!

Update 12/3/2007: I got the data out of my watch to plot my speed as a function of distance (in miles/minute, so lower is faster). You can clearly see the big hill in the middle of the race (it was about 1/2 mile) and it’s major impact on my speed.

speed vs. time plot

Channels of Communication

If one considers the channels of communication available to humans today one might make the following list:

  1. face-to-face
  2. videoconferencing
  3. real-time voice
  4. voicemail
  5. Instant message/chat
  6. text message
  7. email
  8. postal mail

The above list is ordered from most to least “occupying”. Efficiency suggests that we should use the least occupying method that will do the job. Doing the job usually consists of meeting two goals: deadlines and interactivity. In the above list, the first five channels are synchronous (both parties communicate at the same time) and the last three are asynchronous (one sends a message, later the other party receives it).

The asynchronous channels generally have a problem of reliability; it can be hard to tell if a message was lost or just ignored. Indeed, with spam being an ever growing problem, email has become less and less reliable as messages are sometimes mistaken for spam and never read by their intended recipients.

My guideline for picking a mode of communication is to start at the bottom of the above list and keep going up until you hit the one that can do the job. Postal mail would probably only be used for packages or messages where the physicality of receiving something would be meaningful.

There has been some coverage in the news of the claim that email is for old people. I think part of the issue is that older people (or rather people in the work force as opposed to students) are generally dealing with a larger volume of messages which would not be workable over IM. The people you need to communicate with are not always available to communicate with you at that time, in such cases asynchronous communication (like email works best).

Update 12/4/2007: I found this post on communications channels by Tim Bray. He extends and quantifies some of the issues above.

Once a year

Lots of things happen once a year on various dates in September. I’m one to reminisce so it’s a good month for me. I get a string of dates this time every year: 9/9: Mother’s birthday and friend’s anniversary, 9/10: Brother’s birthday, 9/11, 9/12: friend’s birthday.

There are lots of such dates this month: 6, 9, 10, 11, 12, 17, 26, 28, 30. They include births, anniversaries, and tragedies.

To those celebrating a birthday, I hope it is a warm and glowing one. To those celebrating an anniversary, may the reminder of this day strengthen your love. As for tragedy, let’s remember we’re built for the climb, and our defeats give meaning to our triumphs.

EEL4834 Lecture Online

The lecture I recorded on Friday to be shown today (while I am away at an NSF workshop), is now online.

You can watch it here.

Update 9/12/2007: If the quality of the above is not crappy enough for you, I made an mp4 version which you can put on your ipod. I recommend following the slides with the pdf version posted to the forums. Also, the real time use of the python interpreter is very hard to follow in the video (due to the low resolution), that’s why it pays to come to class.

Back in Gainesville.

I’m back in Gainesville. Let me say, the security at Ben Gurion is tight. They totally turned me upside down for about an hour, LITERALLY. They emptied everything from my all my bags, x-rayed every device I had separately, wiped the little bomb-detection swab over every square inch of all my luggage, inside and out. It was totally insane.

I noticed something interesting; all the people doing the screening were attractive young women. Maybe it’s a coincidence (but there were five of them), but I wonder if there is some psychological aspect that would address. Perhaps people are more comfortable with women going through their bags, perhaps people are more compliant, who knows. Finally, after all of this, they did escort me through the metal detectors so I wouldn’t have to wait in line. That was nice of them. Of course, by that time, we were old friends. We were having discussions on the universities of Israel, history of Israel, the new terminal, what discounts they got when flying, how often they find embarrassing things in the bags (every single day, usually more than once), etc…

After twenty four hours of travel I arrived just in time to teach my two hour class today. And still, I had nothing but unbridled enthusiasm for our young minds of tomorrow. That’s the kind of dedication and commitment to excellence for which I am known (in addition to my staggering humility).

Update: they did not literally turn me upside down. They searched me for literally one hour. Thanks to Arijit Ganguly for pointing out this humorously imprecise language.

Heading back to the United States

I leave Israel tonight and will arrive in Jacksonville, FL tomorrow at 8am. It’s been a wonderful trip.

Thank you Yossi Weinstein for helping me get around Haifa.

Also, a very big thank you to Tal Mor for supporting my visit and for the invitation to the workshop.

I look forward to my next trip back to Israel.

Slides from Cooling Talk at Safed

Here are my slides for the talk I gave today: Cooling and Compression: Cooling as a Bridge Between Physics and Information Theory.

I hope these will be of use to others. I used Latex Beamer to produce the slides. The latex source for the slides is here.

Some of the results in this talk are new. I am preparing a paper on the subject. I welcome any comments/criticisms/suggestions.

Greetings from the Holy Land

When I flew into Ben Gurion Airport[wikipedia entry] to go to the Safed Workshop on Cooling and Thermodynamics of Quantum Systems, I spent the first night in Jerusalem. I had a chance to see a bit (by running 12.5 miles in the morning) and then I did some walking around in the Old City, which apparently has been going strong since the 11th century BC.

Here’s me in the market:

Me in the Old City in Jerusalem


Some random people:


Random humans in the old city of Jerusalem

The market was really interesting. They sold everything there: meat, clothes, electronics, spices, toys, pets, and everything in tiny little shops. The streets (which really aren’t streets, they are more like corridors) are PACKED with people, many tourists, but many really appeared to be living their daily life.

The downside as a runner is that both Jerusalem and Safed are very hilly cities. I’m just sure I’m going to injure myself here, but so far so good. I’ve been meaning to do more hill-work, so maybe it’s a good thing.

Out of the country

I’ll be attending the Safed Workshop on Cooling and Thermodynamics of Quantum Systems starting on August 26th. I’ll be staying on a few days to collaborate with my colleague Tal Mor.

I should be in touch with email, and to a limited degree cell phone, while I’m gone.

I’ll be returning to the US on the morning of September 6th, which is easy to remember (9/6), and also the reversal of by birthday (6/9).