July 21, 2010

I Don’t Care to Publish in Any Conference That Would Have Me as an Author

Filed under: Tech — Tags: , — Chris @ 2:53 pm

Trying to fight back the slow death of boredom on a long plane ride home from a long academic conference, I came across an interesting article by Jilin Chen and Joseph A. Konstan in last month’s Communications of the ACM. They look at the relationship between the acceptance rate and the “impact factor” of computer science conferences, where the “impact factor” is measured by the average number of citations within two years for papers published at the conference.

[A note for non-computer scientists: almost alone among academic disciplines, computer science does not put a strong emphasis on journal articles as a measure of research productivity. Most significant results are first published in “top” conferences like POPL, NIPS, and CRYPTO. Journals typically published expanded versions of conference papers, years after the fact.]

Unsurprisingly, the authors find a strong inverse correlation between the acceptance and citation rates. But there is something interesting here: the best papers at the most selective conferences are cited slightly less often than those that are merely highly selective.

Average citation count vs. acceptance rate within two years of publication, top 10% of submissions.

The top-cited papers from 15%–20%-acceptance-rate conferences are cited more often than those from 10%–15% conferences. We hypothesize that an extremely selective but imperfect (as review processes always are) review process has filtered-out submissions that would deliver impact if published. This hypothesis matches the common speculation, including from former ACM President David Patterson, that highly selective conferences too often choose incremental work at the expense of innovative breakthrough work.

Alternatively, extremely low acceptance rates might discourage submissions by authors who dislike and avoid competition or the perception of there being a “lottery” among good papers for a few coveted publication slots. A third explanation suggests that extremely low acceptance rates have caused a conference proceedings to be of such limited focus that other researchers stop checking it regularly and thus never cite it.

This brings to mind a contentious discussion from last winter about the POPL reviewing process. POPL doesn’t even fit into the most selective category—its acceptance rate varies between 15 and 25%—but the consensus in the discussion seemed to be that too many good papers were being rejected for bad reasons, and that an acceptance rate in the 30-40% range could be adopted without significantly affecting the average quality of the accepted papers.

What would happen if every selective conference decided to increase its acceptance rate by 5-10%? It seems likely that the more selective conferences would “steal” the best papers from less selective conferences in the same area. The least selective conferences would be left with fewer worthwhile papers to publish. Perhaps counter-intuitively, the correlation between acceptance and citation rates would get even stronger.


April 5, 2010

QEMU on Ubuntu

Filed under: Linux, Tech — Chris @ 9:22 pm

It was a lot easier to set up QEMU than I expected it would be. Easier even than the online tutorials make it seem.

  1. apt-get install qemu-kvm qemu-kvm-extras
  2. Download a prebuild image for the guest system you want to run. In my case, I wanted armel, which meant I also had to download initrd and vmlinuz images.
  3. If you want to copy files from the host system (i.e., your computer) into the guest, you need to make a “raw” image that you can mount from both sides:
    $ qemu-img create data.img <SIZE>
    Formatting 'data.img', fmt=raw size=...
    $ mke3fs -j data.img
    mke2fs 1.41.9 (22-Aug-2009)
    data.img is not a block special device.
    Proceed anyway? (y,n) y
    $ sudo mount -o rw,loop data.img <MOUNT_POINT>

    <SIZE> is a size in kilobytes, or use suffixes M and G for megabytes/gigabytes. The image only has to be big enough to temporarily hold the data you want to copy; you can move it to the guest’s root filesystem before you start working with it.

    <MOUNT_POINT> is any existing empty directory where you want to mount the image. I just made a directory foo in the same directory as the image.

    You should copy over any data now, because apparently it would be VERY BAD to do that while QEMU is running.

  4. Now it’s time to start the sucker. An example command line will be given in the README for the image you downloaded. I use:
    qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile \
        -initrd initrd.img-2.6.26-1-versatile -hda debian_lenny_armel_small.qcow2 \
        -hdb data.img -append "root=/dev/sda1"

    Notice the -hdb data.img argument. That sets up the data image we set up in the last step as a disk drive in the guest system. You can probably login as user with password user. The root password is probably root.

  5. Once you’re logged in, make a directory to use as a mount point, then su and do:
    mount -t ext3 /dev/sdb <MOUNT_POINT>
  6. Now you can copy over your data. And here’s the beautiful part: you should be able to get on the network with no problem. If you need anything that’s not installed, just apt-get update and then apt-get install the missing package. Should work, no problem.

January 3, 2010

No handlers could be found for logger “bzr”

Filed under: Linux — Chris @ 6:25 pm

This usually just means you don’t have permission to write to the log. Sometimes it ends up belonging to root (maybe because I did sudo bzr in /etc using etckeeper?). Just do:

$ sudo chown $USER ~/.bzr.log
$ chmod 644 ~/.bzr.log

November 21, 2009

HTPC Project: The Build

Filed under: HTPC, Tech — Chris @ 3:15 pm

The HTPC is purchased, assembled, and installed. Our cable service has been cancelled and we are streaming the Project Runway finale even as I write this. This is the first in a series of posts I’ll write about the whole process of putting the thing together. Today, I’m going to focus on the hardware components and the process of assembling the PC.

Here is the final list of the components I actually purchased.

  • Motherboard: ASUS M3N78-VM Micro-ATX (includes on-board GeForce 8200 graphics, VIA VT1708B sound, and Realtek 8211CL Ethernet) Price: $75
  • CPU: AMD Athlon 64 X2 5200 2.7GHz 65W Dual-Core Price: $61
  • Heat sink: Thermaltake CL-P0296 18dBA CPU Cooler Price: $30
  • Memory: Patriot Viper 4GB (2 x 2GB) 240-Pin DDR2 800 SDRAM Price: $82
  • Case: Antec Fusion Remote Black (includes remote control) Price: $140
  • Power supply: Antec EarthWatts EA380 380W Price: $45
  • Hard drive: Seagate Barracuda 1TB 7200rpm Price: $80
  • Optical drive: Sony Optiarc AD-7240S-0B SATA DVD+RW Price: $28
  • Keyboard: IOGEAR GKM561R Wireless Keyboard with Trackball Price: $55

There are only minor differences from my preliminary list. I upgraded to 4GB RAM, because I just felt like I ought to. I added a power supply, because I was under the misapprehension that the Fusion case included one and it didn’t (this mistake set back the project by a full week). I added a heat sink, because the stock CPU fan is annoyingly loud at peak (although peaks should be rare under normal usage). And I swapped the Samsung IDE DVD+RW drive for a Sony SATA drive (see below).

The total cost, including tax and shipping (but excluding the re-stocking and re-shipping fees for a few mis-steps, about which more below) was $630.

The assembly went remarkably smoothly, about two hours total. Here’s the pile of parts, ready to be assembled into a computer:

Pile of Stuff

And here’s the empty case, ready to be filled with cool stuff:

Empty Case

The case is surprisingly big and heavy, about the size of a regular desktop PC or a stereo receiver. Here’s the case full of cool stuff:

Full Case
Notice that the Fusion case has a “three chamber” design, where the power supply, the motherboard, and the hard disks are isolated from one another to improve cooling. The hard drives are mounted in funny brackets with silicon grommets to reduce the noise from vibration.

The only real problems I had with the build were:

  • I initially wired up the system power incorrectly, leading to a few minutes of genuine sinking-heart panic when I first pressed the power button and was met with silence. The problem was my utter failure to correctly read this pin diagrams (the connections run in parallel, not across):

    This took about 10 seconds to fix, once I realized my mistake.

  • The motherboard was a little snug in its compartment, leaving the IDE port difficult to access, especially after everything else was hooked up. With a bit of determination and dexterous fingers, I probably could have gotten the DVD drive plugged in, but instead I took a hit on the re-stocking fee and ordered a SATA replacement drive. (SATA is better anyway, right? For some reason?)
  • I didn’t notice in the pile of miscellaneous cables I had amassed or read the case manual closely enough to look for the 24-pin power cable extension with a special dongle for hooking up the front panel LCD screen (which also serves at the remote control’s IR receiver). This led to a fair amount of frustration and wasted time trying to get the LCD screen and remote control to work, as you might imagine. I only figured this out after an 11th hour Google search had not turned up an off-hand comment in a user review by “RG”at This took about 2 minutes to fix once I realized my mistake.
  • The first heat sink I bought did not fit in the case; it was too tall. It did not even occur to me to check the dimensions before ordering—I just chose the cheapest quiet cooler I could find.

Here’s the finished HTPC, nestled on it’s shelf with the stereo receiver:

HTPC, completed

Note that the LCD display is lit but displaying no useful information. More on that next post.

October 12, 2009

HTPC update

Filed under: HTPC, Tech — Chris @ 7:43 pm

I’ve spent some more time on the HTPC project over the last week, taking into consideration advice I got from my last post, and looking more carefully at the cost and requirements of a DIY system.

Stephen pointed me toward the “digital media player” category, like the Apple TV or the Roku Digital Video Player. These only solve half the problem: they get digital video onto your TV, but they provide little or no storage space for your media. We are badly in need of storage space (like I said, the Mac that holds our iTunes is close to dying). The natural storage solution for a media player is network-attached storage, like the Apple Time Capsule, but then you’re probably losing money—and certainly flexibility and upgradability—compared to a more integrated approach.

Cheng-Hong suggested a (hacked?) Playstation 3, essentially as a digital media player with the added benefit of Blu-ray movies and games. The built-in storage on a Playstation is both over-priced and scant, so this suffers from the same problems as above.

Manu sent me a link to this HDMI HTPC Howto, which I will place in my reference pile alongside the Linux HTPC Howto and Engadget’s budget HTPC project. This Howto reminds me that one must be careful setting up a system with HDMI if a goal is to play Blu-ray movies: to satisfy the DRM, every link in the chain from the player to the television must be “fully protected.” It seems this can be a particular problem with audio, though I have no intention to set up 8-channel sound in our living room any time soon.

I found this wishlist blog post helpful, especially his suggestion to use a cheap, low-power, single-core processor for video processing. Looking at this (somewhat outdated) CPU benchmark, I had convinced myself the best “bang for the buck” was probably a AMD Phenom X4 quad-core CPU, which would have plenty of extra capacity to do HD transcoding if it comes to that. The trouble is that quad-core CPUs run at 95-125W, compared to as little as 45W for a single-core, and keeping things as cool as possible is essential for a nice, quiet living room PC.

This highlights a more general question. I can go “low end,” with a smaller case, a slower/cooler CPU, and less room for expansion, and just accept that if I, say, decide I really want to record HDTV off an antenna that I’ll have to reinvest in more expensive equipment; or I can spend a bit more to have some expansion capacity, and maybe buy a bit more HTPC than I really need. I haven’t decided what I’m going to do yet. I’m going to worry on it for a few weeks.

Here’s a very tentative first draft “shopping list” for a DIY HTPC. Prices given are what I see online as of the time of publishing, not including tax and shipping.

  • Motherboard: ASUS M3N78-VM Micro-ATX (includes on-board graphics, sound, and networking; does not include FireWire) Price: $75 (Note that the set “AMD Micro-ATX motherboards with on-board NVIDIA graphics AND HDMI AND FireWire” appears to be uninhabited.)
  • CPU: AMD Athlon 64 X2 5200 2.7GHz 65W Dual-Core Price: $60
  • Memory: Wintec AMPX 2GB (2 x 1GB) 240-Pin DDR2 800 SDRAM Price: $30 (I’m pretty shocked at how expensive RAM is. I expected 4GB for this price.)
  • Hard drive: Seagate Barracuda 1TB 7200rpm Price: $80 (I will probably also scavenge a two-year-old 400GB drive from the G4.)
  • Optical drive: Samsung SH-S222A DVD+RW Price: $30
  • Case: Antec Fusion (includes power supply and remote control) Price: $140 [CORRECTION: The Antec Fusion Remote does not include a power supply]
  • Keyboard: IOGEAR GKM561R Wireless Keyboard with Trackball Price: $55

These components meet all my minimum requirements at a total price of $470 (or, to put it another way, about six months of Time Warner cable). An HDTV tuner card would add $80-100. A Blu-ray player would add $30-90. A Windows license to make the Blu-ray player fully functional would add $100 (at least. There’s too many damn versions to know for sure).

(Aside: I’m a bit confused how Engadget’s 3-month-old “budget” HTPC managed to cost nearly $1000. They included 2 HDTV tuners and a Blu-ray player, a quad-core CPU, and “couldn’t resist” upgrading to non-integrated sound and video cards (couldn’t resist how, exactly?). All that, plus a Windows license, adds up to an extra $580. The only parts that seem the least bit necessary are the tuner cards and the Blu-ray player, and they contribute less than half of the cost. Seems to me they featherbedded it because $750 isn’t a good headline price point.)

October 3, 2009

An HTPC project/bleg

Filed under: HTPC, Tech — Chris @ 1:59 pm

The time has come for new audio-visual technology in our home. The 8-year-old PowerMac G4 that stores our iTunes Library has reached the outer limits of its useful life. Our cable box is an aggravating piece of junk. Our DVD player takes about thirty seconds to decide whether it wants to open its tray, or close it, or open it then quickly close it again before you can do anything with it.

The time has come for one box to rule them all. This one box will be expected to:

  • Store all of our music and photos.
  • Provide entertainment in the form of moving pictures. This could include:
    1. Playing digital videos, including DVD movies and streaming content, on our TV. (required)
    2. Playing Blu-Ray movies. (optional)
    3. Recording standard- or high-definition TV broadcasts from an antenna or cable. (very optional, quite probably unnecessary)
  • Be upgradeable, so I don’t bitterly regret decisions made about storage, memory, or other hardware in the future.

Based on these requirements, it would seem that we need a Home Theater PC. That is, a computer with:

  • A case that will fit comfortably on top of the stereo receiver.
  • A hard disk big enough to hold our entire music library (preferably in FLAC for the music ripped from CDs) and some reasonable amount of hi-def video (say 30 hours). Our music library is currently about 90 GB, as medium-to-high quality MP3s. I figure I need a terabyte or more.
  • A DVD or Blu-Ray player.
  • HDTV-quality video output (HDMI, I guess).
  • Decent 3.0-5.1 channel audio output (digital coax or optical)
  • An IR receiver for use with a remote control and/or wireless keyboard and mouse.
  • A clever cooling system so that it doesn’t make an infernal racket in the living room.

Since we don’t want to use Windows software or Mac hardware, it will evidently have to run Linux. This poses the following difficulties:

  • Playing Blu-Ray movies is not currently possible on Linux, due to DRM restrictions. This is the case even if you paid for the Blu-Ray disc in the first place.
  • Recording non-free HDTV programming (e.g., pay cable) is not currently possible on Linux (or even on any device that was not specifically made for the purpose by some giant corporation), due to DRM restrictions. This is the case even if you paid for the programming in the first place.

I’m willing to compromise on both of these points. I have no reason to believe that either won’t become technically possible in the future (though probably not legally).

From my research online, I haven’t been able to find anybody who will build me such a computer without installing Windows on it. The alternatives seem to be to (1) build my own box from scratch, buying the case, motherboard, CPU, etc. separately and assembling them myself, or (2) pay a premium of several hundred dollars for a pre-built computer running Windows and install Linux on it.

I don’t mind paying a premium to have an expert assemble my computer, but the portion of the premium in (2) that goes towards paying Microsoft monopoly rents galls me.

I’m willing to pursue (1), but it seems like a really big hassle. I’ve never built a PC from scratch before and there are a million choices for any given component. I’m a bit paralyzed by the fear that I will make some epically bad choices.

Talk to me people. Does anybody know of an outfit that will sell me a pre-built Linux HTPC? How about a bare-bones OS-less HTPC “starter kit”, e.g., a case with the power supply, motherboard, CPU, and heat sink pre-installed and the various ports pre-wired? (I can handle RAM and disk drives, no problem.) Any advice on building my own?

August 26, 2009

BibTeX Journal Abbreviations

Filed under: LaTeX — Chris @ 3:17 pm

Ladies and gentlemen, a list of BibTeX’s built-in journal abbreviations, of which Google is largely ignorant:

acmcs: ACM Computing Surveys
acta: Acta Informatica
cacm: Communications of the ACM
ibmjrd: IBM Journal of Research and Development
ibmsj: IBM Systems Journal
ieeese: IEEE Transactions on Software Engineering
ieeetc: IEEE Transactions on Computers
ieeetcad: IEEE Transactions on Computer-Aided Design of Integrated Circuits
ipl: Information Processing Letters
jacm: Journal of the ACM
jcss: Journal of Computer and System Sciences
scp: Science of Computer Programming
sicomp: SIAM Journal on Computing
tocs: ACM Transactions on Computer Systems
tods: ACM Transactions on Database Systems
tog: ACM Transactions on Graphics
toms: ACM Transactions on Mathematical Software
toois: ACM Transactions on Office Information Systems
toplas: ACM Transactions on Programming Languages and Systems
tcs: Theoretical Computer Science

The availability of the above will depend on your chosen bibliographystyle. They are provided by all of the built-in styles (e.g., plain, abbrv, unsrt, etc.).

June 11, 2009

Sans a iPod

Filed under: Linux, Tech — Chris @ 3:42 pm

I left my iPod Nano in the back of a cab a few weeks ago (yes, I was drunk). To punish myself, and to hopefully avoid some of the problems I’ve had using iPods with Linux (see here and here), I decided to buy a Sandisk Sansa Fuze. This is basically a generic Nano: an 8GB solid state media player with a small screen and video capabilities. It’s about $50 cheaper than the Nano and about 50% crappier in every dimension: it’s bigger and thicker than the Nano and suprisingly heavy; has a first-gen iPod-style mechanical scroll wheel and a misaligned headphone jack; the screen is noticeably low resolution; and the control is counterintuitive (the main menu items swoop diagonally from lower left to upper right—I still can’t wrap my head around which way to turn the wheel). It does have several features that the Nano lacks, e.g., a built-in FM radio and a voice recorder, which I plan to use approximately never.

My expectation that the Fuze would play nicer with Linux were met in one big way: in MSC (USB Mass Storage Device Class) mode, the Fuze looks just like a USB flash drive with some special folders set up (e.g., Music, Videos, Podcasts, etc.). Copying music onto the device is easy as pie. No need to worry about a cryptographic hash. No need to recompile Rhythmbox or Amarok. It Just Works.

My expectations were frustrated in other ways.

  1. Depending on who you ask, encoding videos for the Fuze is damn difficult or impossible on Linux. I haven’t really tried to solve this, because I can live without video (I only ever used it to stare at the pasty, inert, all-over inessential faces of various Bloggingheads), but the whole situation is absurd. You wouldn’t ship a music player that can’t play MP3s. Nor should you ship a video player that can’t play MP4s. (Yes, yes, I understand that MPEG-4 is a big, unwieldy beast that makes a mockery of the term “standard.” I even understand that video podcasts may use patent-encumbered codecs. But the answer to that is most certainly not to force me to run all my videos through a proprietary Windows-only media converter.)
  2. Connecting to the player in MTP (Media Transfer Protocol) mode required backporting libmtp 0.3.7 from the Karmic repository. This is no big deal, because the one and only reason I wanted to connect via MTP was to remove the lame music and videos that came preloaded on the player. (Media loaded in MTP mode can only be removed in MTP mode. Media loaded in MSC mode can only be unloaded in MSC mode.) The Fuze crashed when I tried to eject it in MTP mode. But I rebooted it and the files were gone, so I’m happy.
  3. Podcasts have a tendency to show up with strange, undescriptive code names. This might be Gpodder’s or the podcasts feeds’ fault, for all I know.

Overall, I’m content with the purchase. The Fuze is definitely Less Cool than the Nano. But next to an iPhone, a Nano is a pretty weak status signifier, don’t you think?

June 2, 2009

The Melody Osheroff Memorial Fund

Filed under: Not Tech, Tech — Chris @ 3:53 pm

Last Wednesday night, a drunk motorcyclist hit my niece and brother-in-law as they were crossing the street.

My brother-in-law, Aaron, lost a leg and may not regain the use of the other.

My niece, Melody, was killed. She was nine years old.

A memorial fund has been set up to help support the family during this crisis. Please consider making a donation. Even a small amount can help a lot.

PayPal - The safer, easier way to pay online!

Donations can also be made in person at any Wells Fargo location or mailed to “The Osheroff Family Fund,” c/o Wells Fargo Bank, 1590 Grant Ave., Novato, CA 94945.

NOTE: The Paypal account is managed by Ben Osheroff, Aaron’s brother. All proceeds will be transferred directly to the Memorial Fund.

April 17, 2009

Becoming a gpodder

Filed under: Linux — Chris @ 5:40 pm

Amarok mysteriously started to have problems copying video to my Nano. It would copy .mp4s, but they would show up as audio files. It would straight-up refuse to copy .m4vs, saying the track was “not playable on media device.” None of the information I could find online was helpful.

For this reason, among others (e.g., 1.4 is “unmaintained” and won’t be included in Ubuntu 9.04 (aka Jaunty), but 2.0 doesn’t even have iPod support yet), I decided to try a new approach to managing my podcasts. Luckily, gtkpod and gpodder both have 4G Nano support in the Jaunty repo and are easily backported to Intrepid using prevu (or you can just run Jaunty, which will be officially released next week).

A few complaints: the gtkpod and gpodder documentation is thin. For example, it took me a while to figure out that gtkpod can’t handle podcasts even though it prominently features a Podcasts playlist on startup. It took me another little while to figure out that gpodder does both the “podcatching” and iPod synchronizing itself (I thought I needed to set up some kind of handshake between gpodder and gtkpod, probably involving the gtkpod Podcasts playlist). Then it took me another little while to get the gpodder synchronization working correctly. It turns out that gpodder wants to have total control over the Podcasts playlist and will fail silently if you try to synchronize with a playlist created by another tool (say Amarok). It’s easy enough to clear out the playlist using gtkpod (though some episodes of This American Life had to be sacrificed) after which gpodder works fine.

But all that aside (though all that is actually a lot), gpodder has a much nicer podcast management interface than Amarok (which treated podcast feeds as a special kind of playlist, a very leaky abstraction). I’m in the market for a new Linux media player. From what I’ve seen, Songbird is not it (unless you like programs that start up, never create a window, then won’t die).

Older Posts »

Create a free website or blog at