Planet Acis

November 06, 2009

Pierre St Juste

C# Marshalling is no fun

I’ve been spending the past week working on Mac which is very close to FreeBSD, and I have been working on the simple goal of getting a MAC address for a network interface. I was able to find plenty of sample code on the net on how to do it, but they were all written [...]

by ptony82 at November 06, 2009 06:03 PM

May 13, 2009

Jiangyan Xu

Building a personal site harnessing the (free) power of the cloud

If you are like me and do not want to pay for web hosting; the server at your lab/department/company doesn’t have software good or new enough (due to administrative and maintenance reasons) to host a decent modern PHP/Python/Perl CMS/Weblog/Whatever platform; do not have to a database accessible to any usable web server you have access [...]

by jiangyan at May 13, 2009 11:42 PM

April 16, 2009

P. Oscar Boykin

Lock-free state pattern in C#

Summary: I describe a pattern for fast code, which is logically easy to understand, and can help avoid deadlocks in concurrent C# programs.

I like to avoid using the lock statement in C# for short bits of code that don’t block. This is partly based on an only loosely supported idea that Interlocked operations are faster for simple code. I often use the concept of a protected immutable state object as an inner class of my object. Then, my objects have only one mutable member variable if mutability seems necessary. To update the state, I use code like this:

State state = _state;
State old_state;
State new_state;
do {
old_state = state;
new_state = SomeFunction(old_state, arg1, arg2, arg3);
state = Interlocked.CompareExchange<State>(ref _state, new_state, old_state);
}
while( state != old_state);

The above code works logically as: read the state, compute the new state based on the old state, and then, if the state is still the same as it was when we did our computation update it. CompareExchange returns the value of _state when it is called, so by looking at the result we can see if we were successful, or if we need to try again.

I could encapsulate this pattern as:


class Mutable<StateT> {
protected StateT _state;
public StateT State { get { return _state; } }
//Use the delegate how_to_update to map the
//old state onto the new state and return the new state
public StateT Update(System.Converter<StateT, StateT> how_to_update) {
StateT state = _state;
StateT old_state;
StateT new_state;
do {
old_state = state;
new_state = how_to_update(old_state);
state = Interlocked.CompareExchange<StateT>(ref _state, new_state, old_state);
}
while( state != old_state);
return new_state;
}
}

Since delegates can (or at least once did) have performance issues, it doesn’t make a lot of sense to do the above for highly performance critical code, but of course, one should only obsess about that if benchmarking shows that a particular usage is causing problems.

The above statement may call into question the whole approach: why not just update _state in a lock? One reason is that the above code can never deadlock since how_to_update is not holding a lock when it is being called. Of course, you can do the same logic as CompareExchange with a lock, but at that point, why not just CompareExchange?

by Oscar Boykin at April 16, 2009 06:33 PM

January 30, 2009

Girish Venkatasubramanian

Increasing the scrollback buffer in tty console

Tty consoles (that's what you boot into when you start Linux without X) in the 2.6 kernels allow only about 15 screens of scroll back. At 80 lines per screen, that works out to a meager 1200 lines.

Now 1200 lines may not be meager - in the normal course of things, you may not need to scroll back more than 1200 lines. But there are some times when this becomes essential - kernel compile, debugging the boot process, looking at dmesg outputs - to name a few.

If you are using an X manager (Gnome for instance), you can change the scroll back buffer size of the Terminal easily (Edit->Profiles->Scrolling). But what if you are booting without X - or if your system does not have X. Such situations arise when you are working with VM's or in a full system simulator.

I found out that it is possible to re-allocate the memory for the console from the System RAM instead of VGA RAM. This can be set up by setting the VGACON_SOFT_SCROLLBACK kernel config item to Y. Once this is set up, calculate the amount of memory needed (rule of thumb is 64KB for 16 screens of 80 lines each) and set this in VGACON_SOFT_SCROLLBACK_SIZE. recompile the kernel - and you are done.

Another option, which has added advantages, is using GNU screen. I have not checked it out - but I am sure that the scrollback buffer size will be configurable. But if increasing the scroll back buffer size is all you want - then screen may not be needed. Plus it is not as much fun as kernel compile - now is it :)

(I got this from http://www.linuxinsight.com/soft_scrollback_for_the_linux_vga_console.html. That link was pointed out by Ron Johnson Jr from the Debian Mailing List.)

by Girish Venkatasubramanian (noreply@blogger.com) at January 30, 2009 08:52 PM

January 05, 2009

P. Oscar Boykin

EEL6507 Queueing Theory and Data Communications, Spring 2009

If you know what’s good for you, you’ve probably already signed up for my queueing theory course. If so, you’ll also want to follow the previous link to see all kinds of information about the course.

I’m trying something new this semester. I’m going to actually try use the wiki as it was intended. There will be a page for each lecture. Students will take turns making notes and posting those as wiki-fied pages. Hopefully this will make it easier for students to follow the course, and generate more valuable content for all.

See you in the classroom!

by Oscar Boykin at January 05, 2009 11:21 PM

September 18, 2008

Erin Taylor

Controlling VM CPU allocation through VMware VI SDK

I wrote some code recently to interface with VMware’s Virtual Infrastructure (VI). This java code utilizes VMware’s VI SDK and provides some basic functions that can be used to control the CPU resources allocated to virtual machines running on VMware VI. At the least, it might be useful as an example of how [...]

by Erin at September 18, 2008 08:47 PM

August 26, 2008

P. Oscar Boykin

EEL 4834: Programming for Engineers

Welcome to the fifth installment of Academic School Years, featuring me, Professor Boykin. In this exciting episode, I’ll be teaching EEL 4834, Programming for Engineers. The 4834 course web page is on my wiki.

As the above XKCD comic depicts, Python is more fun than perhaps any programming language has any right to be. Nevertheless, we will not question that fact, but accept it, and master the wonderful language.

by Oscar Boykin at August 26, 2008 02:01 PM

August 15, 2008

P. Oscar Boykin

“No Reply” is lame

example of noreply email

I often get automatic email messages with the reply-to address set to some kind of “noreply”. This is lame. For instance, Facebook sends notifications using such a noreply reply-to address. To me, this seems like lazy programming. If someone sends me a message on facebook, if I reply to the notification I am clearly intending to reply to the message. Facebook should parse that response and send it on to the original sender.

The same is true of twitter direct messages.

Systems developers should make their notification channels (IM, Email, SMS) two-way and not just one-way conduits. Not doing so represents a failure of design.

by Oscar Boykin at August 15, 2008 06:12 PM

July 16, 2008

Girish Venkatasubramanian

My website

So...
I know it has been a long time since I blogged - almost 50 days. I was a bit busy trying to get one of my papers published. I was also writing up another paper - though that’s another story in itself.

Recently I decided to make my webpage. I have wanted to do this for a long time - maybe for the past 4 years. I have never gotten around to doing it because of the ultimate victory of a physical phenomenon called inertia. I realized that I would not make a webpage unless
a) I had a very important reason compelling me to do it
b) I had lots of spare time
c) My feeling of disgust at my sheer lassitude had increased beyond the critical point

All three happened recently and the result is the webpage of Girish Venkatasubramanian. Starting out, I had such lofty ideas about how the webpage would be a masterpiece - the last word in digital art and content rich information portals - a cross between William and Vincent.

If you have been reading my blogs regularly (and if you have not been - remember - you have seven days to read them all - or you will be turned to pillars of salt), you know that this cross of W and V exists only in my head. Came out with a crappy webpage after a couple of hours. Stuck at the top - the universal excuse - "Under Construction".

Have been spending the last couple of days modifying this and trying to make it better. Only recently did it dawn on me - It Does Not Matter. Nobody will look at it - it is purely an exercise in the shiatsu of the Latin "self". You can forward it to every contact in your address book - nobody will give a damn. Once I realized this I have settled back to my usual level of torpor.

The next thing on the list is getting Google to pick it up - so that it passes the "Google Test". Yeah! Yeah! - The website is only for me - I don’t care if Google doesn’t pick it up - this is just like standardized tests doesn’t mean a thing - I have tried all forms of sour grapes. So I have tried asking all my friends to put up links. I also have another webspace - albeit only 25 MB - on which, till now, I had a txt index.html saying "This is the webpage of Girish Venkatasubramanian - under construction". So I also had a JavaScript redirecting from there to the new site. Surprisingly and frustratingly the simple page with the JavaScript is being picked up while the actual webpage is not being listed. AAGGH!

Anyway, I thought I should have some catharsis before I developed an OCD about this.

by Girish Venkatasubramanian (noreply@blogger.com) at July 16, 2008 07:49 AM

July 10, 2008

P. Oscar Boykin

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.

by Oscar Boykin at July 10, 2008 06:44 PM

June 30, 2008

P. Oscar Boykin

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!

by Oscar Boykin at June 30, 2008 09:44 PM

June 09, 2008

Pierre St Juste

Pierre St Juste


I finally got the chance to put my life’s work (before becoming a PhD student) on the web. Please visit the websites link to see what I mean.

by ptony82 at June 09, 2008 06:33 PM

Pierre St Juste


I finally registered to vote today on campus at the Reitz Union. I have been watching both CNN and FOX very closely. I can honestly say that Obama’s values and goals are much closer to mine’s. He beleives in putting money into education, ending the war, and raising taxes to help the economy. He’s also willing to talk first to try to find a solution. Not everything could be acheived by brute force, talking is sometimes the best policy. I also like Obama’s story. Just like Obama’s father, I was not born in the US, I was born in Haiti. I am extremely grateful to the United States because it’s the only country that would give me the opportunity to pursue a PhD. But we should not forget that America is a made up of immigrants from all continents coming together, putting differences aside to make it a great nation. I will have sons and daughters of my own one day and maybe one of them will be the next Obama or Hilary.

Thank you America.

by ptony82 at June 09, 2008 06:32 PM

May 25, 2008

Pierre St Juste

Pierre St Juste


After spending most of today programming, I started thinking, what is it all for? That led me to thinking about all of the problems and needs in the world. Then I remembered that quote for Robots: “See a need, fill a need”. A simple quote that says so much. There are so many needs in this world, in all areas especially in the area of computers. The possibilties are endless, but there is a need for dedicated minds to look into these possibilities. Everyday I look and see how lazy our society has become. Noone wants to sacrifice anymore, everyone is looking for easy, quick fixes. No one is willing to sacrifice time, money, and effort to fill the need. That’s why I love research, so many needs to be filled; hence, there is never a dull moment. See a need, fill a need folks, that’s what it’s all about for now.

by ptony82 at May 25, 2008 05:17 AM

May 15, 2008

Pierre St Juste

Pierre St Juste


Recently, I updated to Ubuntu 8.04. I noticed, ever since the new release, that the main ubuntu repositories was slower than usual. I guess since everyone is doing system upgrade, their servers are getting flooded with requests. So I looked into changing my default repositories to another location. That’s when I found the “Software Sources” application under the System –> Administration Menu. This tool lists all the ubuntu repositories, but it has a “Select best site” button that automatically does just that. I used it and it works great. So if your package upgrades have been a bit slow lately, just give it a try.

by ptony82 at May 15, 2008 03:46 PM

May 01, 2008

Pierre St Juste

Pierre St Juste


It is somewhat hard to beleive that summer is almost upon us. It’s the end of the Spring 2008 semester. Everyone I go, people ask me, how was your semester? Whenever I’m asked that question, it takes me a few seconds to actually think of how my semester began, and how it ended. I’m getting to the point in my academic career where the concept of a semester is no longer present. It’s just days, weeks, months, and years. Everything is fluid. I think of my goals for this week, and work accordinly. But overall, I’m grateful because I actually enjoy what I do. I enjoy research, the ability to look at a problem and try to come up with a solution seems to be quite an exciting thing. I hope that I can stay excited about learning new things, because we all know that knowledge is one of the few things worth having in this world. Well, that’s it for now, once again. To all who reads this, have a great summer and remember a mistake is always an opportunity to learn.

by ptony82 at May 01, 2008 11:25 PM

April 23, 2008

Girish Venkatasubramanian

"Virtual" KVM switch

Synergy is a cool piece of software which acts a KM (Keyboard and Mouse) switch between multiple computers each having their own monitors. It creates something similar to an "extended desktop" - the difference being that the different monitors constituting the extended desktop are attached to different computers.

It works on a client-server model - the server running on one of the computers and the clients on all other computers. It uses TCP/IP (port 24800) for communicating mouse/KB events. Works on Windows, Debian, Linux and OSX.

The website is http://synergy2.sourceforge.net/

It will probably be convenient to have synergy start automatically when your machine boots up. Detailed instructions for this can be found at http://ubuntuforums.org/showthread.php?t=48196 (the instructions are not specific to ubuntu - rather they use gdm scripts - so it works on any Linux machine running gdm)

by Girish Venkatasubramanian (noreply@blogger.com) at April 23, 2008 11:37 AM

April 09, 2008

Pierre St Juste

Pierre St Juste


We all know how popular Facebook and MySpace have been in the past few years. In the past, people mainly stayed connected through email. But now, with social networking site, you can know a whole person’s history from the classes that they are taking to what parties they plan to attend (if they let you). These social networking sites, realizing each other’s need to constantly stay connected, began providing frameworks that allow application developers access to that connection link between peers. Developers can use that information to create applications that connect friends in unprecedented ways.  Some applications automatically update user profile’s based on some criteria. For example, smartphones that can automatically upload pictures to Flickr or Facebook. With this connection information, applications can be much starter about who, when, how, and where to connect to each other.

  • Imagine a peer-to-peer file sharing application that only connects to your facebook friends and allows you to share only with the people you want.
  • Imagine being able to run your own website privately and allow only your friends access to it and not have its content show up on Google.
  • Imagine graduate students at different universities connected together and allow their spare CPU cycles to be shared when their CPU is idle.
  • Imagine friends being able to share their files with using email.
  • Imagine friends being able to stream their video files to each other without having to download the entire file.
  • Imagine being able to do all of this in 5 minutes or less.

Well, if you can dream it, then you can acheive it. Check out this link below, it may not be the answer to all of these dreams, but it’s a start.

http://socialvpn.wordpress.com

 

by ptony82 at April 09, 2008 07:45 PM

March 03, 2008

P. Oscar Boykin

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).

by Oscar Boykin at March 03, 2008 07:28 PM

January 28, 2008

P. Oscar Boykin

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.

by Oscar Boykin at January 28, 2008 03:42 AM

January 22, 2008

P. Oscar Boykin

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).

by Oscar Boykin at January 22, 2008 09:27 PM

January 10, 2008

Pierre St Juste

Pierre St Juste


How can you get the most use out of a Windows PC lab?

Most Windows PC labs around the country are severely underutilized. Despite the high cost of power consumption and management, average PC labs only uses about 10% of their total CPU utilization in a particular day. Meaning that 90% of the time, the CPU is just waiting and running some idle process that does nothing. Well, there is a solution at

http://www.grid-appliance.org

This Grid Appliance project you to turn a Windows PC lab into a Condor pool without interfering with normal lab use. Through the use of virtualization, this can be acheived without requiring any change to the infrastructure of the lab. And all this can be done effortlessly. Here is a list of projects/software that have made this possible.

If any of the links above are not clear enough on how this is possible, simple reply to this post and I will be glad to provide more details.

 Enjoy

by ptony82 at January 10, 2008 08:11 PM

January 07, 2008

P. Oscar Boykin

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!

by Oscar Boykin at January 07, 2008 02:18 PM

January 04, 2008

Pierre St Juste

Pierre St Juste


Have you every been frustated by the lack of information provided by the Windows Task Manager? Wel no more. I found this great tool with everything that you need to know about running processes from loaded dlls, to open handles, and so much more. Check it out at

http://technet.microsoft.com/en-gb/sysinternals/bb896653.aspx

More Windows goodies can be found here for advanced users at:

http://technet.microsoft.com/en-us/sysinternals/default.aspx

Enjoy.

by ptony82 at January 04, 2008 05:13 PM

December 27, 2007

P. Oscar Boykin

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.

by Oscar Boykin at December 27, 2007 05:05 AM

December 14, 2007

Pierre St Juste

Pierre St Juste


I can’t beleive that it’s already the end of 2007 (the year of 07/07/07). Now that I sit and think back at this year, I thank God for giving me the greatest year ever. With God’s help (and family’s help as well, my girlfriend counts as family, and help from many others), I realized many of my dreams. This year was also full of challenges. I always say to myself that “Life never gets easier.” Anyways time to start 2008, and hopefully it will be great. Happy holidays.

by ptony82 at December 14, 2007 08:37 PM

December 10, 2007

WOW Grid Appliance

Tutorial roadmaps

We have added several new tutorials to this site. Here is a roadmap to help you find out how to get started using the appliance based on your goals:

 

December 10, 2007 10:53 AM

December 06, 2007

Pierre St Juste

Pierre St Juste


For those interested in nested virtualization, it is possible to run qemu on top of VMware. Let’s say that you are running a Ubuntu VM, you can probably install qemu with this simple command:

sudo apt-get install qemu 

Once you have qemu installed, you can boot another operating system (on that is Xen-friendly) on top of that. With the second operating system installed, you can go ahead and install Xen. From that just follow the Xen tutorial. Here are some of the tools that I have used to help me along the way:

dd - used to make an img file

mkfs - used to format img file

mount - used to mount the img file ( use ‘-o loop’)

Hope this help. If you have any questions, feel free to ask. Good luck.

by ptony82 at December 06, 2007 06:27 PM

December 04, 2007

P. Oscar Boykin

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

by Oscar Boykin at December 04, 2007 04:00 AM

December 03, 2007

P. Oscar Boykin

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.

by Oscar Boykin at December 03, 2007 11:26 PM

November 02, 2007

P. Oscar Boykin

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.

by Oscar Boykin at November 02, 2007 10:21 PM

October 20, 2007

P. Oscar Boykin

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

by Oscar Boykin at October 20, 2007 04:58 PM

October 18, 2007

Pierre St Juste

ptony82


I have been wrestling with OpenSuse 10.2 (64-bit) for the past few days on my Gateway MT3418. According to my experience, this distribution does not support ACPI properly, hence whenever I boot the OS, I have to make sure that I specify the “acpi=off” kernel boot option. If I do not do that, I just get a black screen and nothing ever boots. I have also been experimenting with Yast Software Management. As an Ubuntu user, I much prefer apt-get. It’s quick and easy. Yast runs a bit slow in comparison, and it’s not as easy to use as apt-get. Well that’s all for now in my experiences with my Gateway MT3418. Feel free to leave any insight.

by ptony82 at October 18, 2007 04:48 AM

October 15, 2007

Pierre St Juste

ptony82


It took me a while to confirm this, but I was not sure if the single core AMD Turion 64 MK-36 has AMD-V (or AMD SVM) technology. This processor is part of the Richmod series of the Turion 64 processors. To confirm if you processor supports virtualization, run the following command:

For Intel processors (Intel-VT), type:

grep ‘vmx’ /proc/cpuinfo

For AMD processors (AMD-V), type:

grep ’svm’ /proc/cpuinfo

If the command output a bunch of flags, then your processor has support for virtualization. If you get no output, then unfortunately, your processor probably does not support virtualization. (This only applies to Intel and AMD x86 processors).

by ptony82 at October 15, 2007 05:01 PM

October 10, 2007

Erin Taylor

Erin

Relocations: As of this morning, I am no longer a resident of Benton 311…I’ve been relocated to Larsen 336A. My new office is within the ACIS lab which is located through the double doors on the east end of Larsen Hall. I will miss all of my wonderful officemates and friends over in [...]

by Erin at October 10, 2007 09:23 PM

October 06, 2007

P. Oscar Boykin

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

by Oscar Boykin at October 06, 2007 07:15 PM

October 05, 2007

Erin Taylor

Erin

Every time I walk into the Shands medical center at UF, I can’t help but be awed by not just the sheer size of the building itself but of all the activities taking place within its walls. Some people are dying, others are being born, some are fearing for their own lives or the [...]

by Erin at October 05, 2007 07:41 PM

October 01, 2007

WOW Grid Appliance

Grid Appliance in a nutshell

The Grid Appliance is a self-configuring Virtual Machine appliance that is used to create ad-hoc pools of computer resources both within a local-area and across wide-area networks to execute high-throughput, long-running jobs.

Appliances are connected to each other through a peer-to-peer virtual network using private IP addresses called IPOP. Upon starting the appliance, it is automatically connected to a pool of resources and is capable of submitting and executing jobs using the Condor Grid scheduler. Follow the quick start guide shown in this page to start using the Grid appliance yourself.

The Grid appliance's virtual network features decentralized NAT traversal over UDP, a decentralized DHCP service supporting multiple address spaces, and self-configuring Condor pools using a Distributed Hash Table (DHT). Currently, a public infrastructure for bootstrapping such pools is running on PlanetLab; deployments on private resource pools are also supported.

 

October 01, 2007 06:24 PM

September 26, 2007

Erin Taylor

Erin

I’ve been holding out on posting this for a while, but I think it’s finally safe to say that I’m going to be an aunt and a godmother!! My sister, Kristi and her husband, Mark are expecting their first child sometime in late April and I couldn’t be more excited for them and for myself, [...]

by Erin at September 26, 2007 04:51 PM

P. Oscar Boykin

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.

by Oscar Boykin at September 26, 2007 03:21 PM

September 17, 2007

Pierre St Juste

ptony82

After going back and forth for almost 4 weeks, I finally decided to go with a development environment. At first, I thought about being one of the cool kids that writes code through a shell text editor such as “vi”, but in the end, it’s efficiency that matters to me and that means using an IDE. I will be using MonoDevelop to write my code hoping that it will have the lowest learning curve since I’ve gotten most of my IDE experience from Eclipse and Visual Studio 2005. Do anyone recommend a better IDE for C#?

by ptony82 at September 17, 2007 08:49 PM

September 12, 2007

P. Oscar Boykin

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.

by Oscar Boykin at September 12, 2007 03:42 PM

September 11, 2007

P. Oscar Boykin

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.

by Oscar Boykin at September 11, 2007 05:27 PM

September 06, 2007

P. Oscar Boykin

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.

by Oscar Boykin at September 06, 2007 06:38 PM

September 05, 2007

P. Oscar Boykin

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.

by Oscar Boykin at September 05, 2007 02:21 PM

August 29, 2007

P. Oscar Boykin

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.

by Oscar Boykin at August 29, 2007 11:05 AM

August 28, 2007

P. Oscar Boykin

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.

by Oscar Boykin at August 28, 2007 09:55 PM

Pierre St Juste

ptony82

Why do people become professors? Especially in the field of computer engineering (or science). I do not know the answer to this question. But I want to become a professor because I think that academia is the best venue to impact our society. Software is so expensive nowadays. Everything is driven by money (unfortunately that’s what makes the world go ’round). I want to write software to help those that does not have any money or big multi-million dollar supercomputers. That’s why I like grid computing, and moreover, the idea of using virtual machines, because it requires no new hardware. That’s why I like P2P, from file sharing, to resources. P2P computing, millions of people connecting together not just to share files, but CPU cycles, software, hardware, and so on. All for free, at no cost, using machines they already own. That would be a beautiful world. That would be a beautiful thing.

by ptony82 at August 28, 2007 06:21 PM

ptony82

Well, it’s another Fall semester (actually, my seventh at the University of Florida, but who’s counting). I read somewhere that “It is good to have an end to journey toward; but it is the journey that matters, in the end” (Ursula Le Guin). I am embarking on the journey towards a PhD, I’ve always seen this goal as my life’s greatest challenge. And I’ve had my doubts, but I thank God for the opportunities that he has given me so far to be in a PhD program and I know that with God’s help, I will make it. I am excited to take on this journey, because although the degree is the end goal, it is the journey that I look foward to. And that journey starts today…, see you later

by ptony82 at August 28, 2007 06:13 PM

August 27, 2007

ECE Graduate Student Organization

Faculty Research Projects Posted on ECE Website

In an effort to help Graduate students indentify research projects of interest to them, The ECEGSO has worked with the administration to provide access to the current research projects being funded through faculty members in the department. This information is available under "Faculty Research Projects" and is categorized by ECE subject division. This is a valuable resource for all Graduate students interested in pursuing research in the department!

August 27, 2007 10:01 PM

Erin Taylor

Erin

Over the weekend I represented Women in ECE, an organization I founded last year, at two new student orientation activities. The first was a new student reception on campus for anyone interested in engineering and the second was an engineering organization fair for women hosted by the Society of Women Engineers. The fact [...]

by Erin at August 27, 2007 03:32 AM

August 25, 2007

Erin Taylor

Erin

Between vacationing this summer and doing research, I took some much-needed time off to install new wood floors in my condo. With a little (okay, maybe a lot) of help from my folks, I managed to lay down 350 sq. feet of solid hardwood in my living/dining room and my bedroom closet. This was about a month ago, so all the backaches, splinters, and stiff knees are pretty much long forgotten thanks to my super-human ability to induce selective-amnesia. I can reflect on the whole experience pretty positively now. In fact, I would recommend that anyone who has more time than they know what to do with and several grand burning a hole in their pocket seriously consider undertaking a similar project in their own home.

A couple things I learned through the whole process: 1) Wood flooring adhesive is expensive and sticky. Who knew that a 5 gallon bucket of glue could go for almost $150? That’s nearly $30/gallon! And I thought gas was bad… Of course, this is no wimpy, watered-down kiddie glue we’re talking about here - this is some serious adhesive with an insidious ability to affix itself to any and all surfaces, including skin, hair, and toilet seats. 2) It’s not over until the thresholds are laid. In this sense, I guess I’m still not finished with the whole job. My thresholds (the junctions between carpet/tile and the wood) are glaringly bare even though I have several feet of wood strips to put in them. I think I haven’t gotten around to them because my real drive has always been the challenge of a new task. Initially, putting the wood down was exciting since it required me to learn some new skills and there was no guarantee that it would actually work. But laying the thresholds will be easy now - mundane, actually - and besides, I’m far too busy trying to find a new challenge to take on.

by Erin at August 25, 2007 11:07 PM

August 23, 2007

P. Oscar Boykin

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).

by Oscar Boykin at August 23, 2007 04:56 PM

August 16, 2007

P. Oscar Boykin

Syllabus for 4834

I have just posted the syllabus for EEL4834. If you’re interested in this course, please take a look.

The EEL 4834 course website is on my wiki.

by Oscar Boykin at August 16, 2007 09:17 PM

August 14, 2007

P. Oscar Boykin

Congratulations Dr. Ungsik Kim

On Saturday, I had the pleasure of escorting Dr. Ungsik Kim at his graduation ceremony. Ungsik is my first student to graduate with a Ph.D. He was originally a student of Jianbo Gao and Jianbo certainly deserves much of the credit for guiding Ungsik’s research.

Ungsik will likely be taking a job in his native South Korea now that he has completed his Ph.D.

Ungsik, it was my pleasure to work with you, and I know everyone here at the University of Florida wishes you great success in your future.

by Oscar Boykin at August 14, 2007 07:53 PM

August 13, 2007

P. Oscar Boykin

Certainty

In mathematics and to a large degree in computer programming, one strives for absolute certainty. Unfortunately for those that spend a lot of their professional life in such realms, such certainty it almost never achieved elsewhere in life.

At this point, it’s time for the obligatory reference to quantum mechanics and the uncertainty principle. I guess I need to remember my physics more than my mathematics: the more precision I have about one thing, the less I may have about another*

*This is only true for certain so-called complimentary variables, unfortunately, it would seem real life is full of them.

Update 9/12/2007: Another author argues that programming can ruin your life.

by Oscar Boykin at August 13, 2007 02:50 PM

August 11, 2007

Erin Taylor

Erin

Let W = {x : x = something you want}

Let N = {y : y = something you need}

Life Lesson: W ⊄ N

by Erin at August 11, 2007 03:42 AM

July 25, 2007

P. Oscar Boykin

Finding Bugs

The WOW project uses the Brunet P2P library developed in C# using Mono.

Recently, we noticed a memory leak on our nodes on planetlab. David Wolinsky identified exactly the bit of code causing the leak and reported a bug. The bug was fixed within a day and the SVN has the fix already.

Kudos to David for tracking down the bug (notice many people on the list said there was probably not really a bug). Kudos also to the Mono team for getting a fix in after the issue was clearly identified. This is an example of the power of Free Software. After finding the bug, David was able to build a version of mono that same day that had the bug fixed which we could deploy on planetlab. Try that with proprietary software.

by Oscar Boykin at July 25, 2007 08:04 PM

July 18, 2007

Erin Taylor

Erin

I was running some SPICE simulations recently and needed to add Gaussian white noise to specific nodes in my circuit in order to measure noise tolerance. Between the two simulators I run, OrCAD’s PSPICE and Cadence, I hoped that there would be an easy way to do this - perhaps a noise-generating source of some kind or a rand function that would return random values according to a specified distribution. Unfortunately, this is not the case - a sad fact that has caused others working with SPICE to lament:

Unfortunately there is no easy way [in SPICE] to randomly tolerance devices such that they are not a perfect match, or to add a ‘noise’ voltage to insure the circuit will start. (Wish list: add a rnd(n) function to B2SPICE to enable random part values to be specified, or a small noise generator to be created. The proposed function would return a pseudo-random number between zero and unity, where ‘n’ could represent a uniform distribution for the value ‘0′, a Gaussian distribution for a ‘1′ argument, and so on.) [http://www.beigebag.com/case_convergence.htm]

After relentlessly pursuing the matter, however, I have found that there is in fact a way around this apparent limitation in SPICE. The solution involves the use of a piecewise linear source, a common SPICE component which outputs voltage or current according to tuples of the form (time,voltage/current) which are supplied by the simulation programmer. These tuples control the source by indicating the voltage or current signal that it should be supplying at any given point in time. A programmer can supply a seemingly infinite number of these tuples in order to control the output of the source over a certain time period.

An effectively random source can be created by generating voltage or current values according to a desired distribution and using these values in the tuples of a piecewise linear source. In my case, I used a short Matlab program to generate values that were normally distributed with a mean and variance of my choosing and then used these values as data points for a piecewise linear voltage source.

Here’s an example of how the whole process might work:

Let’s say, for instance, that in order to test the noise tolerance of a circuit, you need input voltages that behave like Gaussian white noise with a specific mean and variance.

  1. Search your SPICE component library for a piecewise linear voltage source. In both Cadence and PSPICE there a is piecewise linear voltage source that takes its data points from a file (this component is “pwlf” in Cadence and “vpwl_file” in PSPICE).
  2. Use this voltage source component for your input signals.
  3. Configure each component to pull data from a file - in this case we’ll call the file ‘pwlFile.in’.
  4. Use this Matlab program to generate the pwlFile.in file and place it in your SPICE simulation directory. Note that the program provided generates voltage values the are normally distributed according to a user-specified mean and variance.

by Erin at July 18, 2007 10:48 PM

July 05, 2007

P. Oscar Boykin

3 miles (4.83 km) in 18:09 (6:03/mile)

I ran in the 29th Annual Melon Run on Independence Day. I came in 3rd in the 30-34 age group and won a seedless watermelon.

I had the goal of being sub 6 min/mile in this race, but unfortunately I didn’t quite make it. I actually had a second more ambitious goal of 5:50/mile, but clearly I was pretty far from that yesterday.

My first mile was on track at 5:33. By the second mile, I was a few seconds behind where I wanted to be, and I guess I lost even more ground in the third mile. I think I need to be more aware of the time during my next race. I really only checked the time about three times during the race. Also, I need to set my GPS watch to show my overall pace. The instantaneous pace is very noisy and tends to greatly underestimate my speed, which is very demoralizing.

At the end of the race, I somehow thought I had made my goal. I guess my brain was really not working properly. It was a few minutes before I realized I had not.

So, it’s back to training. Next time I’ll break then 6 minute/mile pace.

by Oscar Boykin at July 05, 2007 05:37 PM