Sunday, October 29, 2006

Ubuntu's Edgy Eft Breakage

edgy eftUbuntu's latest version, the edgy eft was released last week and this weekend I made the switch on my laptop. The following is a list of the breakage it caused.

  • ATI 3D acceleration broken

  • VMware broken

  • Problems with wine over VNC


I had to waste a couple hours troubleshooting this stuff, which I don't like to do, but I got it all (mostly) figured out. These problems look like they would only affect a tiny minority of users, but I tripped over them and thought perhaps this would be useful to someone else.

The ATI 3D thing was strange. Basically it turns out my xorg.conf was at fault although It had been working fine for the past two releases of ubuntu. I found this message in my Xorg logs "(EE) AIGLX: Screen 0 is not DRI capable". Googling brought me to a forum which I can't find a link to, but in it someone suggested adding the following lines to the end of the xorg.conf.

Section "Extensions"
Option "Composite" "disable"
EndSection

That fixed it for me. It is odd that I didn't need it before though. The next problem was VMware. Everytime I get a new kernel I have to run vmware-config.pl. But this time it didn't work. I got the following error: "error: conflicting types for ‘poll_initwait’" while compiling. Here is a link to the fix. And in case that link doesn't work here are the instructions.

cd /usr/lib/vmware/modules/source
tar xf vmmon.tar
tar xf vmnet.tar
vim vmmon-only/Makefile.kernel #Add -DKBUILD_BASENAME=\"$(DRIVER)\" just after -Iinclude2/asm/mach-default (on the same line use a \ to indicate the new line should be ignored).
vim vmnet-only/Makefile.kernel #Add -DKBUILD_BASENAME=\"$(DRIVER)\" just after -Iinclude2/asm/mach-default (on the same line use a \ to indicate the new line should be ignored).
mv vmmon.tar vmmon.tar.save
mv vmnet.tar vmnet.tar.save
tar cf vmmon.tar vmmon-only
tar cf vmnet.tar vmnet-only

Finally the most annoying of all is the thing with wine and VNC. At work I run a VNC server on my laptop because I sit at a pairing workstation all day long. So when I want to check my lotus notes email I just vnc to my laptop and check my email. Lotus notes runs on wine. Everytime I update to a newer version of wine something breaks. This time was no exception. Notes seems less stable, and there are these weird black icons. But for some reason when I try to run notes through vnc I get the following errors


Xlib: extension "XFree86-DRI" missing on display ":1.0".
Xlib: extension "GLX" missing on display ":1.0".
err:wgl:X11DRV_WineGL_InitOpenglInfo couldn't initialize OpenGL, expect problems
err:wgl:has_opengl Intialization of OpenGL info failed, disabling OpenGL!
Xlib: extension "XFree86-DRI" missing on display ":1.0".
Xlib: extension "GLX" missing on display ":1.0".
err:wgl:X11DRV_WineGL_InitOpenglInfo couldn't initialize OpenGL, expect problems
err:wgl:has_opengl Intialization of OpenGL info failed, disabling OpenGL!
Xlib: extension "XFree86-DRI" missing on display ":1.0".
Xlib: extension "GLX" missing on display ":1.0".
err:wgl:X11DRV_WineGL_InitOpenglInfo couldn't initialize OpenGL, expect problems
err:wgl:has_opengl Intialization of OpenGL info failed, disabling OpenGL!
fixme:ole:CoRegisterMessageFilter message filter has been registered, but will not be used
err:ole:CoGetClassObject class {4955dd33-b159-11d0-8fcf-00aa006bcc59} not registered
err:ole:CoGetClassObject no class object {4955dd33-b159-11d0-8fcf-00aa006bcc59} could be created for context 0x1
Xlib: extension "XFree86-DRI" missing on display ":1.0".
Xlib: extension "GLX" missing on display ":1.0".
err:wgl:X11DRV_WineGL_InitOpenglInfo couldn't initialize OpenGL, expect problems
err:wgl:has_opengl Intialization of OpenGL info failed, disabling OpenGL!
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory

When I run wine from a local x session I only see the following errors (the good errors)

fixme:ole:CoRegisterMessageFilter message filter has been registered, but will not be used
err:ole:CoGetClassObject class {4955dd33-b159-11d0-8fcf-00aa006bcc59} not registered
err:ole:CoGetClassObject no class object {4955dd33-b159-11d0-8fcf-00aa006bcc59} could be created for context 0x1
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory

I can't figure this out. This worked when I was on dapper. Sigh. I guess I need to look into using the newer version of notes that supposedly works natively on linux. Hope this helps somebody. Hope somebody helps me.

Thursday, October 12, 2006

Random bumps along the smooth ruby way

I think this bitter old grouch, venting about ruby, gets alot right. Be sure to read past the headings of his five complaints. He actually has some legitimate gripes.


Do I have gripes about Ruby? At this point I don't know enough about Ruby to be sure that any gripes I have are legit. I found the above link while trying to figure out why REXML was so slow. I thought I was doing something wrong. Turns out you if you are trying to read in a large XML file with REXML, you are just doomed. JAXP is several orders of magnitude faster, although I couldn't find any benchmarks to back this claim. REXML works fundamentally differently from JAXP. REXML uses regexes to parse while I think JAXP parses at a lower level. That being said, REXML is sooo much easier to use than JAXP, so if your file size is small, it isn't so bad. I wonder if using jRuby to access JAXP would be an interim solution to this for ruby programmers.

Another gripe I have is with Rails fixtures. I find that making multiple tests dependent on a set of fixtures will make your tests brittle. If someone writes a new test and adds to the fixtures to support it, often you find tests will break because of it. If you are vigilant about it you can probably always write a test that won't break when someone adds

Monday, October 2, 2006

Beware the IDEs of Ruby.

LOOK! Up in the sky! It's a bird, it's a framework, no, it's RUUUBY on RAAAAILS! Scream like a teenage girl at a Justin Timberlake concert as you setup a working CRUD application in just minutes! Loose control of your bladder with every invocation of the mighty ActiveRecord! Prance and frolic through green fields of domain specific languages! Be hundreds of times more productive! One size fits all! Comes in all sizes! It slices, it dices, it even massages your grandmother! Ok, ok, enough. I'll get on the freaking bandwagon already. I've had about 4 days on rails doing real work, and so far I am satisfied with it, borderline impressed. The things I can rave about are: simple setup, TDD out of the box, nice project structure, elegant design, and good documentation. The things I can complain about are: lousy IDE support, the end keyword, and really lousy IDE support. Basically a good IDE, will make all the difference. I'm talking intelliJ quality code completion and refactoring. I'm talking about being able to add test fixtures through a wizard. About an IDE that will understand a rake file. This baby will hook into Rails scripts like script/generate to instantly create, modify, and refactor scaffolding. It will even visually debug your application as it runs in the server. Below are a list of the Ruby IDE candidates I have tried.


Ones I am currently trying.


One I want to try.


None of these appear to make the cut. I'll post back here when I have tried them all and pick the one I think is best. Meanwhile I'm interested to hear if anyone else has a favorite.