Thursday, December 13, 2007

New Music

I've recently started listening to Pandora. It's a web radio station that allows you to enter bands that you like, and then plays music by "similar" artists. I was a bit dubious at first, but it actually works quite well. (It does tend to play the same songs again and again, but there's enough new stuff mixed in to keep it interesting.)

My most interesting discoveries have been the result of hearing bands similar to the Mekons, although it's kind of a stretch to say that anyone sounds like them. So far, the major discoveries have been:
  • 999: British punk band. Kinda similar to the Clash (definite rockabilly influences). My favorite song of their's so far is Emergency. Intriguingly, they are still active.
  • Moving Parts: they were a precursor to Mission of Burma, and included Roger Miller and Clint Conley as members. A couple songs off their one album (Wrong Conclusion) that I think are particularly good are Garden of Heat and Line of Fire (both Roger Miller compositions). The album also has a version of the famous MoB song Max Ernst. One thing that stikes me listing to this album is that Roger Miller is an amazing guitar player.
  • Human Television: I don't know how they came up in reference to the Mekons; they play 2 and a half minute pop songs that owe a lot to The Smiths, R.E.M., and the Cure. Their song Saw You Walking By could practically be a lost single from the La's or even the Byrds.
OK, back to work...

Thursday, September 6, 2007

Cool Stuff Alert

The Fall semester just started, and I've discovered some very cool software that's making my life easier and better.

RegeXeX is an electronic tutor for regular expression problem sets. The really cool part is that (thanks to the decidability of regular languages) RegeXeX will tell the student if they have a correct regular expression, and if they don't, gives examples of strings it generates that it shouldn't and strings it doesn't generate that it should. It's described in a SIGCSE paper.

JFLAP is a toolkit for constructing, simulating, and generally working with finite automata. I've used it to demonstrate NFAs and DFAs. You edit the FA using a GUI editor, and there are various ways to execute it on input strings. It can also do cool things such as highlight nondeterministic states. JFLAP appears to have support for other formal languages/theory of computation constructions, including grammars, pushdown automata, and Turing machines, although I haven't investigated these yet.

KompoZer is a WYSIWYG HTML editor based on Mozilla (now Seamonkey) Composer. I've been using Mozilla Composer for quite a while, and although it serves its purpose, it has many annoying quirks, such as generating millions of spurious <br> tags all over the place. I've only be using KompoZer a short while, but it appears to be much better.

Thursday, August 16, 2007

Installing a Visual Studio 2005 Add-in for all users

For posterity, here is a nugget of information that required quite a bit of digging to uncover.

If you want to install a Visual Studio 2005 Add-in for all users, drop the .AddIn and .DLL files (along with any subdirectory containing satellite DLL(s)) in the following directory:
C:\Documents and Settings\All Users\Application Data\Microsoft\MSEnvShared\AddIns
If %ALLUSERSPROFILE% is not C:\Documents and Settings\All Users on your machine, adjust accordingly.

Microsoft's documentation on installing a Visual Studio 2005 add-in is fairly confusing, although I do see now that they mention this directory in a comment below the main article.

This issue came up as part of deploying a Visual Studio Add-in for Marmoset which a YCP student and I wrote this summer. Marmoset is a nifty project submission and testing server for programming courses. I expect the Add-in will be a part of the forthcoming open source release of Marmoset, which should happen sometime this Fall.

Monday, July 30, 2007

Ubuntu Studio

One of my projects for this summer is to get my guitar (1995 Fender Standard Telecaster) and amplifier (1976 Fender Vibrolux Reverb) fixed and to do some home recording. I did a few recordings about 6 years ago on a Tascam 4 track tape recorder (you can find them on my UMD web page if you're interested, but bear in mind that I suck). However, audio production on Linux has progressed significantly in recent years---e.g., Ardour---so I figured I'd give it a whirl.

I despise compiling and configuring software by hand, so I was thrilled to discover the existence of Ubuntu Studio. The current release, 7.04, is essentially Feisty Fawn with a low-latency kernel and prebuilt binaries for all of the major audio/video/graphics applications, plus some cool new desktop themes. Through the magic of apt-get, it was a matter of three shell commands to upgrade my home machine to Ubuntu Studio. (Plus 400 MB of downloads through my DSL connection, of course.) The only hitch was breaking X because I didn't get the restricted binary kernel modules for the new kernel (nvidia drivers, alas). Once that was fixed I was in business. People talk about whether or not Linux is ready for the desktop. I think Ubuntu has not only answered this question with a resounding yes, but proven that it is a better desktop system than Windows many times over.

I haven't tried out Ardour yet, since I'm still waiting for my guitar and amp to come back from the shop, and also for the soundcard (M-Audio Delta 1010LT) I won on ebay to arrive. Thanks to Ubuntu and Ubuntu Studio, I'll be ready when they all arrive.

Thursday, July 5, 2007

Visual Studio 2005 works in VMWare Player

Since I had no luck getting WinXP/Visual Studio working in VirtualBox, I decided to try VMWare Player. Long story short, it works! I followed the instructions an a VMWare Player HOWTO at ubuntuforums, and a couple hours later I have a full WinXP VM in which Visual Studio is (apparently) running quite happily. Got TortoiseSVN installed as well. Whee! Networking works just dandy through the NAT'ed virtual ethernet device.

My initial impressions is that VMWare Player gets extremely bogged down by disk I/O. Double clicking a program icon can send it off into space for minutes. It kinda seems to be a one-time hit, though. Maybe I just need more RAM.

Other than the disk I/O problem, responsiveness seems acceptable.

Now I can engage in some Windows development without leaving the cozy womb of Linuxdom.

Can't run Visual Studio 2005 within VirtualBox?

I tried today to get VirtualBox set up on my Linux (Ubuntu 7.04) box at work. WinXP installed without a hitch, but it refuses to install Visual Studio 2005, which is the only reason I wanted to run WinXP in the first place!

Here's a screenshot of the error


A google search on the text of the error message returned no hits. The Properties menu says I have 14.6 GB of space left on my (virtual) hard drive, and Linux has plenty of real disk space left, so I don't think that's the problem.

VirtualBox seems like an excellent product, and responsiveness within the guest OS seems quite snappy, so my current state of affairs is disappointing.

Monday, June 18, 2007

Eclipse CDT

I've been hearing good things about Eclipse CDT (the C/C++ development tools for Eclipse), and I finally sat down and tried it out today. [Back in the day I was a vi/make/bash die hard, but I was won over by the huge (huge!) productivity gains I experienced using the Eclipse JDT (Java development tools) when doing Java, and now I really want something similar for C.]

So far, I'm very impressed. I was able to get the source code to a new version of GeekOS I'm working in imported and (almost) compiling, without writing a makefile. Based on the project settings, CDT generates makefiles automatically. The settings seem pretty flexible---for example, I was able to redefine the command for assembly files with very little effort. (I use gcc to convert assembly files into object files so that they can include C header files.)

Code completion seems relatively functional; not always totally up to date, but in general pretty good. I was actually able to do an automatic renaming of a variable, which is something I now take for granted in JDT and pains me greatly to have to do by hand using grep and vi. Of course, GeekOS is straight C code, so the underlying problem of extracting symbol information from the source code is not as complicated as for C++, but I don't care about C++.

I still have to customize the linking command and add a post-build step to get the kernel into some bootable form, but that should (in theory) be pretty easy. Eventually I would like to be able to support other hardware targets out of the same source base, which would require a mechanism in the build system to select a subset of source directories based on the current configuration (target).

Saturday, May 26, 2007


Summer's here! (Or, at least, the academic year is over and the high temperature yesterday was close to 90 degrees F.)

My earlier post about a frustrating experience installing Subclipse was somewhat inaccurate. As it turns out, when you install subclipse via the update site, you can uncheck the box that installs the Mylar integration. The base subclipse feature works just dandy with Eclipse 3.2.2.

I installed Ubuntu 7.04. I normally don't upgrade on a whim, but after seeing an Ubuntu forums post about a GUI configuration for nvidia twinview I just had to. I despise editing xorg.conf, but I love working with dual monitors. Anyway, I now have both my 19" Acer and 15" Dell LCD panels connected and running quite well. The basics are
  1. System->Administration->Restricted Devices Manager (enable closed-source nvidia driver)
  2. sudo nvidia-settings (run the GUI config tool)
  3. log out, control-alt-backspace to restart the X server (just to make sure things really work)
All is not perfect. New firefox windows do weird things if they are sized too large to display fully on the small monitor. However, the annoyances are pretty minor.

Now back to work. I'm doing some refactoring of FindBugs in preparation for the upcoming tutorial at PLDI. Assuming everything works out, it should become a lot easier to implement new analyses in a FindBugs plugin.

Monday, May 14, 2007

Subclipse frustrations

I use Eclipse for Java development. Great IDE, love it, etc. But, it doesn't do subversion out of the box. You need Subclipse for that, and it must be installed separately.

OK, go to subclipse website. Find update site. Go through the whole Help->Software Updates->Find and Install... business in Eclipse. It says that I can't install the latest version of Subclipse because I don't have "Mylar" installed. Let's think about this for a moment:
Isn't the whole point of f***ing update sites to automate the process of software installation?
So, now I need "Mylar". Google takes me to the Mylar website. My heart sinks: there's no convenient link labeled "Install Mylar". I can't even really tell what the hell Mylar is. I'm sure it's nice and all, but I just want Subclipse to work!

Eventually I decide to click the "Mylar 2.0M2" link in the "Releases" box. It's the only release listed, so I guess it's the one I should use, right? I see an update site, so I go back into Eclipse and let it party on both the Subclipse and Mylar update sites. Now I'm allowed to install both features. After a few minutes of downloading, installing, and restarting Eclipse, everything is ready.

Long story short, this version of Mylar doesn't work correctly, at least with my Eclipse (3.2.1) under Linux. Errors out the wazzoo. Fortunately, I'm able to disable Mylar and the Subclipse Mylar Integration (thank you, Eclipse, for providing Help->Software Updates->Manage Configuration), leaving just good old Subclipse, which now seems to work.

Hey, Subclipse developers:
  1. I expect your update site to correctly install all of the software I need to run subclipse
  2. I don't want to be forced to install broken experimental software in order to use basic version control
  3. The Mylar integration should be optional
Hey, Eclipse developers:
Please, please, integrate subclipse into the mainline so I never have to go through this again.

Sunday, May 6, 2007

New Crowded House album!

Crowded House is back and will have a new album out in July. According to the website, my musical hero Johnny Marr plays on two tracks. Crowded House is just about the only band I can think of that got consistently better over time; if the trend continues the new album should be terrific. Hopefully they'll play in Philly or Baltimore so I can see them live.

Saturday, April 28, 2007

Web standards are important

Unless you like the idea of a small number of corporations controlling how you use your computer, web standards should be important to you.

I got this warning page when I accessed YCP's on-line courseware system today:

Using Mozilla Firefox on Linux evidently doesn't count as a "supported" browser.

[The website of the company that makes the courseware system, SunGard Higher Education, is full of lots of pop-up menus, flash animations, Javascript, stuff that doesn't quite render properly in my non-Windows browser, has a layout too wide to fit in my preferred browser window dimensions, etc. From looking at their HTML source, at least they're doing their page layout using CSS. Gotta give 'em props for that. But not the most usable page I've seen.]

Come on, guys. Firefox works just as well under Linux (and other OSes) as it does under Windows. Put some effort on making your stuff work everywhere. The web is the new desktop and it runs on non-Microsoft platforms too.

I think a theme is emerging for my blog: software problems that annoy me.

Friday, April 27, 2007

OpenOffice is a nannying piece of ****

From the "preventing the user from ever making a mistake by relentless confirmation dialogs every time he/she tries to do something" department, here's a screenshot from 2.0's spreadsheet. All I did was select a cell and press the "delete" key to delete its contents:

Yes, for the the love of God, I do want to delete the cell I just told you to delete, you ****ing [long chain of expletives deleted].

Honestly, what is this dialog supposed to accomplish? If I decide afterwards that I didn't want to delete whatever was in that cell, I'll use the Undo feature to restore it. (Maybe undo doesn't work in OpenOffice?) Even Microsoft Excel gets this right! Yes, software from Microsoft! It makes me want to vomit with rage (to borrow a line from the Simpsons.) Don't even get me started about the gratuitous incompatibilities between OOo Calc and MS Excel.

The only reason I was even using OOo in the first place was that the Windows version of Gnumeric was having trouble with the =chitest function, and I'm too much of a cheapskate (and open source weirdo) to buy MS Office for my laptop.

Thursday, April 19, 2007

Goodbye Perl, Hello Ruby

I think I've finally kicked the Perl habit. Perl was a great language in its day, and (as with most CS people who have done empirical research) it played an important role in the data munging aspects of my research and professional life. However, simpler and better languages---Python and Ruby---now exist.

I've been working on learning Ruby for a while now, and using it as a case study in a programming languages class I'm teaching provided the final impetus to learn it "for real". Ruby takes the Perl features I know and love and fits them into a simple and elegant object-oriented model. I think this is the essential distinction between Ruby and Perl. Ruby has objects as a unifying concept, while Perl has no unifying concept. I can explain Ruby to students and feel I'm showing them how to think in terms of objects. Explaining Perl to students feels dirty by comparision.

I know Perl6 is going to appear at some point, and will contain such goodies as a real object model, but I think the ship has sailed.

Speaking of Perl6, I looked into the Parrot VM a while back, since I'm interested in the implementation of dynamic OO languages. All I can say at this point is it's a surprisingly complex design. In comparison, YARV, which is slated to become the official Ruby interpreter, looks much simpler. From a quick glace at the YARV instruction table, it looks quite a bit like Java bytecode.

Wednesday, April 18, 2007


In the soundtrack to my mental life, the effect that plays during moments of disbelief and shock is Gibson Haynes's opening scream to the song "Helicopter" on the B******* Surfers' 1990 EP "Widowermaker". (Good song, BTW.) You'll have to mentally substitute your favorite sound effect as you read the rest of the post.

Anyway, I saw this bumper sticker on a car in the parking lot of Grantley Hall today:

Few things depress me as much as the general lack of understanding of science in our society. The evidence for the factuality of evolution is profound and overwhelming; see any book by Stephen Jay Gould, for example. The theory of evolution by natural selection is a fruitful one. We can use it to explain evidence, make predictions, and all those other good things that allow us to test the worth of scientific theories.

I could speculate on the reasons why people deny evolution, but what's the point? What really concerns me is not so much the denial, but the feeling that these people are so fixed in their views that nothing could convince them that their views are wrong. And how can you argue against that?

Monday, April 16, 2007

Should Microsoft control your PC?

Saw this linked from a story on
It's an email from 1999 in which Bill Gates comments on the (then) emerging ACPI standard for power management and other system information/control for PCs. In the email he says:
One thing I find myself wondering about is whether we shouldn't try to make the ACPI extensions somehow Windows specific.
He goes on to say
It seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work.
So, I guess the idea behind industry "standards" is that they should reinforce one company's monopoly position? Perhaps I'm taking these statements out of context, but it seems clear that Microsoft is working towards a world in which PCs can run only Windows. In other words, you might own your computer, but you shouldn't have the right to choose what software you run on it.

It's easy to be an alarmist these days; witness the controversies over DRM, DMCA, etc., etc. However, as consumers we need to exercise our power to choose the ways in which we use technology. Otherwise, we run the risk of having that choice made for us.

Friday, April 13, 2007

No more dual booting

Today I installed Ubuntu 6.10 on my main home machine, replacing a dual boot Ubuntu 6.06/WinXP setup. As I type, WinXP is installing into a VirtualBox virtual machine. These days, the only Microsoft software I really ever need to use is Visual Studio. We'll see how it goes...

So far, Ubuntu 6.10 ("Edgy Eft") seems to be quite nice---Ubuntu just gets better and better. Getting the nvidia-glx drivers to work was a bit of a pain, however; for a while X wouldn't start, but after some random fiddling I got it working. (I still don't know exactly what I did.) It's really my fault for buying an nvidia card, although frankly I don't know what graphics card you're supposed to get if you actually want it to work under Linux.

Thursday, March 29, 2007

I have a large head

I measured my head today in order to find out my cap size for graduation. It is 24 and 3/4 inches around. According to the faculty regalia rental form, that counts as "extra large".

Wednesday, March 21, 2007

The La's: BBC In Session

The long-delayed copy of The La's: BBC In Session I ordered from Amazon finally arrived yesterday. Initial impression: excellent, and certainly an interesting counterpart to their eponymous first (and only) album. The BBC sessions have a somewhat looser and more spontaneous feel, although I was frankly surprised that in some ways they are more "produced" than the album versions. For example, several tracks sport doubled vocals with a hint of an echo effect; not that there's anything wrong with that, but it was a bit surprising for a band whose distrust of modern production is legendary.

A re-formed La's (with core members Lee Mavers and John Power) played some gigs in 2005; maybe we'll eventually see some new music from them.

Sunday, March 11, 2007

PASTE 2007

Bill Pugh and I will be presenting a paper at PASTE 2007 entitled Finding More Null Pointer Bugs, But Not Too Many. A preprint is available. The paper describes some work that Bill and I did in summer 2006 to improve the null pointer bug-finder in FindBugs. The idea is simple:
  1. Perform an backwards intraprocedural dataflow analysis to track values that are guaranteed to be dereferenced on all non-exception forward paths
  2. Look for locations within methods (both within basic blocks and on control edges) where a known-null value is guaranteed to be dereferenced
The improved analysis finds more null pointer bugs than our previous null pointer analysis with a low false-positive rate; see paper for details (and try it out by using FindBugs on your Java code).

PASTE happens to be located at FCRC this year, so there's all kinds of cool stuff going on there.

Friday, March 2, 2007

FindBugs tutorial at PLDI 2007

Bill Pugh and I will be presenting a tutorial on FindBugs at PLDI 2007. The intended audience is researchers in static analysis and automated bug-finding who are interested in using FindBugs as a platform for bug-finding analyses. (Hmm, the tutorials haven't been posted on the PLDI website yet.)

PLDI will be part of FCRC this year. I think that's great, since it allows attendees to check out interesting research at lots of other conferences and workshops.

Friday, February 23, 2007

Use the braces, stupid!

Upon further reading of Programming in C (3rd ed.) by Stephen G. Kochan, I have a discovered a flaw in this otherwise excellent book: the author doesn't always use braces around the bodies of if/else statements and loops. On the whole, I can live with this defect. However, as someone who has done research on the causes of bugs in software, I can confidently say that omitting braces causes bugs. For example:
for (j = 0; j < m; ++j)
for (i = 0; i < n; ++j)
The call to g() is not in the body of either loop. This may seen contrived, but FindBugs found several examples of similar bugs in a Java library that shall remain nameless.

A bug in released software can easily cost thousands or tens of thousands of dollars to fix; using braces consistently eliminates a common cause of defects.

Tuesday, February 20, 2007

Programming in C

I've been evaluating textbooks to use in the intro programming course I teach in the fall, and I think I've found the one I'm going to use: Programming in C by Stephen G. Kochan. I've read the first few chapters, and I really like the style: concise, clear, with code examples that are short but illuminating. I have a huge pet peeve with programming textbooks that are 800 pages long and are so filled with unnecessary detail that you can't see the forest for the trees. (I won't mention names, but I'm sure you know what I'm talking about.) I actually evaluated K&R (2nd ed.), but I was quite disappointed. I would not want students (or anyone really) to write code in that ultra-terse, cryptic style. The Kochan book gets it just right: focused prose, clear code with meaningful (but not excessively long) identifiers.

Parallel to this discussion, of course, is the question of why I want a book that just does C (as opposed to C++). There are two main reasons. Students need to be exposed to low-level concepts like pointers and addresses, so either C or C++ needs to be in the curriculum. Second, C++ is a dangerous, bloated mess of a language when you get to the object-oriented features. My experience has been that students' initial transition from C to Java is a fairly easy one, especially if they have seen structs and are comfortable with the concept of encapsulation. Once they know Java, the sky's the limit; due to the safety features, clean object model, and availability of outstanding development tools like Eclipse, it really is an excellent language for CS education.


I found out about VirtualBox from a post on which linked to a review. It's an free software (GPL) virtual machine that runs on Linux and looks quite spiffy. Benchmarks in the review suggest about a 2x slowdown on a mixed CPU/disk workload. I could live with that if meant I didn't have to boot into Windows any more. Note to self: try installing this!

Meanwhile, KVM (Kernel-based Virtual Machine) seems to be gaining momentum, but it requires hardware-level virtualization in the CPU it runs on. Maybe I'll buy a real computer this summer and I can try it out.

Wednesday, February 14, 2007

Nothing to see here, move on

This post is just here to fulfill my legal obligation as an internet user to have a blog where I post my worthless thoughts and opinions.