Category Archives: programming

Stuff I’ve read or reading …

Some links to stuff I’ve either read or plan to read which I think is interesting:

Python is not Java, tips for Java programmers starting w/ Python:
http://dirtsimple.org/2004/12/python-is-not-java.html
Python for Bioinformatics:
http://www.pasteur.fr/recherche/unites/sis/formation/python/index.html
BioPython:
http://biopython.org/DIST/docs/tutorial/Tutorial.html

I need to know Selenium better, it’s possible that I might consider using it for a project I might be working on (that sounds like it might have some UI bugs/issues/problems):
http://seleniumhq.org/

10 things every programmer should read (this will take a while to wade through):
http://blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice

Xen Cluster Mgt using Ganeti for Debian Lenny:
http://www.howtoforge.com/xen-cluster-management-with-ganeti-on-debian-lenny
Ganeti admin guide and install guide:
http://ganeti-doc.googlecode.com/svn/ganeti-1.2/admin.html
http://ganeti-doc.googlecode.com/svn/ganeti-1.2/install.html

David Byrne (of Talking Heads) interviews Thom Yorke (of Radiohead):
http://www.wired.com/entertainment/music/magazine/16-01/ff_yorke?currentPage=all

With a great quote, that shows how well the record companies treat their performing artists (that’s sarcasm in case you don’t have a sense of humour). First Radiohead made zip/zilch/nada from EMI sales of digitized versions of their music:

Yorke: In terms of digital income, we’ve made more money out of this record than out of all the other Radiohead albums put together, forever — in terms of anything on the Net. And that’s nuts. It’s partly due to the fact that EMI wasn’t giving us any money for digital sales. All the contracts signed in a certain era have none of that stuff …

Yorke: … It’s about whether the music affects you or not. And why would you worry about an artist or a company going after people copying their music if the music itself is not valued?

Then he talks about how the music iteself isn’t valued, but the business processes surrounding the marketing and selling of music:

Byrne: You’re valuing the delivery system as opposed to the relationship and the emotional thing…

Yorke: You’re valuing the company or the interest of the artists rather than the music itself. I don’t know. We’ve always been quite naive. We don’t have any alternative to doing this. It’s the only obvious thing to do.

Emacs and tilde files

By default Emacs saves a copy of the previous version of a file you are editing in the same directory as where the original file is located. It saves a copy with ~ appended to the end of the name. ~ is pronounced tilde. However, some tools and programming environments don’t know how to handle these tilde files and this can cause various problems. Someone mentioned on the Boston Ruby list that “Rails 2.3 router picked up emacs tilde ~ file before *.erb.html file …“. And the solution is pretty easy, you just tell emacs to save the ~ files in a different directory:
http://amitp.blogspot.com/2007/03/emacs-move-autosave-and-backup-files.html

Now I wonder is there a way to have it only do this for certain types of files, or only to do it for certain workspaces, that way if I’m edit a file in a directory named ruby it will save the files elsewhere, otherwise save the file in the CWD.

Rails for Eclipse!

Aha! There is RoR support for Eclipse, via Aptana. I’ve just installed it and the instructions are a bit cryptic. Basically you have to install Aptana first (you can do this as an Eclipse plug-in). Then restart Eclipse and then install the Rails plugin called RadRails. Aptana also has Python and PHP support.

Install Aptana:

In Eclipse click on Help->Software Updates. Then click on the Available Software tab, then click on Add Site and paste this URL into the Dialog Box that opens:
http://update.aptana.com/install/3.2/

Eclipse Aptana Install Dialog
Eclipse Aptana Install Dialog

Install Aptana, then restart Eclipse. Aptana will then prompt you to install the Subversion plugin, then restart.

When Eclipse restarts following the same procedure as above, except add the following site for Rails support:
http://update.aptana.com/install/rails/3.2/

And restart Eclipse. Aptanta may prompt for further plugins, some of which are from their Professional version which will only work for 60 days.

This works with Eclipse 3.4, and should work on 3.3 and 3.2.

IBM shows how to use RadRails:

http://www.ibm.com/developerworks/opensource/library/os-ecl-radrails/

Complete install instructions:

http://ubuntumagnet.com/2008/01/installing-eclipse-radrails-and-subclipse-under-ubuntu-710-gutsy-gibbon

Netbeans 6.5, with Ruby on Rails & JMaki

While writing some RoR code at home (or at least trying to grok the RoR way) I’ve alternating between using Emacs & Netbeans 6.5. Emacs is one true editor to rule them all, but what it’s lacking is code completion such as in Netbeans.

I was working on test RoR project last night with Emacs, and after a couple of hours imported the project into Netbeans 6.1 (a painless process). When I opened the “.erb” file I had been editing in Emacs, I noticed a panel on the right side of Netbeans titled “Palette”, that allows easy creation of html items such as tables & lists. It also, includes JMaki support for Dojo, Yahoo’s YUI, Scriptaculous, Spry, & JQuery, which allows quick and easy insertion of Ajax features using JMaki. After about 5 minutes of mucking around with various Ajax tables, I was easily able to replace a basic HTML table with a prettier, sortable, Yahoo YUI, Dojo, or JQuery tables.

Here’s a rough example, showing the difference between an list, and a sortable Yahoo YUI table created with Netbeans & JMaki:

Sample Tables

This is fairly powerful, and for those inexperienced with Ajax provides a quick and simple way to add Ajax features to a web-page or application as it provides Ruby constructs to create the necessary JavaScript and encapsulates the programmer away from the JavaScript. On the other hand, if your an “ace Ajax guru” this doesn’t allow you to directly write and access JavaScript, and the abstraction might seem like an hindrance.

Here’s a quickie overview showing how to use the JMaki features using a 6.1 beta and Ruby on Rails:

http://blogs.sun.com/arungupta/entry/jmaki_on_rails_reloaded_for

And a more recent generic overview using 6.1 & standard HTML/JSP:

http://www.netbeans.org/kb/docs/web/ajax-jmaki-quickstart.html

What’s also useful, is that JMaki in Netbeans creates the same looking code on your HTML rendering page, which means that if you can create JMaki widgets using Java you can easily do the same with RoR, and presumably with PHP.

If your haven’t looked at Netbeans 6.1 or haven’t tried Netbeans in a while, I do think there are some really useful features that sometime give it the edge over it main competitor Eclipse. I use both IDE’s regularly, and prefer Eclipse for Java & Perl development, but for RoR (especially on Linux) and Ajax features I think Netbeans is the winner (for now). However, there is a JMaki plugin for Eclipse which I haven’t tried that might be comparable (for Java applications).

Using both IDE’s could be a useful addition to a programmer’s toolbox. What I must do next is test Netbeans with a J2EE project created under Eclipse and see if I can use both IDE’s on the same project without problems. It be interesting to see if I can edit the Java code with Eclipse and then modify the view and add JavaScript/Ajax feature with Netbeans.

More information about JMaki can be found at:

https://ajax.dev.java.net/

Updated: Fixed version number, it’s Netbeans 6.5 and not 6.1. Fixed typos from writing tooo fast.

Enable mod_perl on Debian, Ubuntu, & Other Linuxes.

To enable mod_perl with Apache2 on Debian & Ubuntu for all directories served up by Apache2, including user directories such as ~/public_html, add the following lines to /etc/apache2/sites-available/default

# enable mod_perl
    <Files ~ ".(pl|cgi)$">
           SetHandler perl-script
           PerlResponseHandler ModPerl::Registry
           Options +ExecCGI
           PerlSendHeader On
    </Files>

In a real production environment you probably don’t want to enable this for all directories that Apache2 serves up, but only from those directories you expect to run perl in.

Thanks to this thread on the Ubuntu Forums for the info.

Titled updated as per Ozkar’s suggestion.

Netbeans 6.5 on Debian

Doesn’t perform badly, I’ve been using it recently with Ruby code, and I like how it colourises the code to make editing code easier, and performs it auto-completion and method lookup (basically all the features you’d expect with a modern IDE).

It’s does’t startup as fast as using Emacs, or vi, but I find the features very handy and very convenient. It doesn’t look  bad either. It runs better on my PC at home running Debian Linux than it does on my PC at work running WinXP. This is probably because I’m using a 1.5 JVM on WinXP and a 1.6 JVM on Debian. Running on 1.6 JVM’s means that Netbeans will automatically use anti-aliased fonts if you have anti-aliased fonts enabled (much easier on the eyes if your using a LCD screen).

XSLT & 1.5 JVM’s

Oh bugger!

[junitreport] ERROR: ‘Unrecognized XSLTC extension ‘org.apache.xalan.lib.Redirect:write”

BUILD FAILED

Errors while applying transformations: java.lang.RuntimeException: Unrecognized XSLTC extension ‘org.apache.xalan.lib.Redirect:write’

See http://stefan.samaflost.de/blog/2004/10/29#XSLTC.

Basically, if your using XSLT transformations with a 1.4 JVM and upgrade to a 1.5 JVM, you will get errors because 1.5 JVMs use a different XSLTC transformer.

You can either try and force your build to use Xalan-J, instead of the one packaged with the 1.5 JVM. Or, change the namespace used:

From, for example:

xmlns:redirect=”org.apache.xalan.lib.Redirect”

to

xmlns:redirect=”http://xml.apache.org/xalan/redirect

Eclipse 3.3.2 and Debian

So I wanted to install Eclipse at home, the version that comes with Debian is 3.2.2-5 and I wanted to try 3.3.x and install WTP and some other plugins that aren’t packaged with Debian (anyone know why?).

After downloading and installing Eclipse the welcome screen would appear with an error message saying:

Error creating the view.

org.elipse.core.runtime.Plugin

This is because the default jvm or java executable on my system was one provided by gcj and for some reason Eclipse’s eclipse doesn’t seem to work properly with gcj (or I had a too old version), Debian’s 3.2.2 Eclipse packages seem to work fine with gcj. Gcj is an Open Source Java compiler provided by GNU.

Using Sun’s JVM solved this. To install Sun’s JVM, if you don’t already have it, issue the following command:

aptitude install sun-java5-bin

Debian uses what’s called alternatives, this means that the java executable /usr/bin/java is actually a symbolic link to /etc/alternatives/java which itself is a symbolic link to the real java executable. You can manually change the links in /etc/alternatives or run:

update-alternatives –all

And change all the java tools to point to the ones that come with the Sun JVM. Alternatively, you can install galternatives which is an easy to use GUI tool to manage alternatives.

Updated March 2008: Corrected misspellings, and grammatical mistakes.

Jetspeed build

Is borked! First, changes to some spring projects that it depends on broke the Jetspeed. Jetspeed uses Maven 2, so the spring it uses is an imported Maven project which had a depenceny that wasn’t required and was undownloadable and causes the Jetspeed build to fail. Now I get an error that few people can duplicate:

[echo] portlet-api.version=1.0
[echo] org.apache.jetspeed.deploy.version=2.1-dev
[echo] org.apache.jetspeed.deploy.groupid=org.apache.portals.jetspeed-2
Downloading: mockrunner/mockrunner/0.2.7/mockrunner-0.2.7.pom
[INFO] ————————————————————————
[ERROR] BUILD ERROR
[INFO] ————————————————————————
[INFO] Error executing ant tasks

Embedded error: The following error occurred while executing this line:
/tmp/CUSTOM_PORTAL1/portal-2/etc/build.xml:297: The following error occurred while executing this line:
/tmp/CUSTOM_PORTAL1/portal-2/etc/build.xml:302: The following error occurred while executing this line:
/tmp/CUSTOM_PORTAL1/portal-2/etc/build.xml:489: java.lang.ClassCastException: org.apache.maven.usability.MojoFailureExceptionDiagnoser

[INFO] ————————————————————————

Trying to see if I can get a successful build on my personal laptop at home … bugger same errors msgs.