Wednesday, August 31, 2005

My only gripes with KUbuntu Linux

I recently changed my GNU/Linux distribution from Mandriva to KUbuntu. I am a KDE fan and was growing increasingly annoyed with how slowly Mandriva(Mandrake) has been updating its versions.

I have been completely over joyed with KUbuntu since installation. It works flawlessly, and it even picks up on my thumb drive, something Mandrake has had a problem of doing in the last couple of releases.

Just this last week, I have found my first couple of complaints about KUbuntu. These are minor points and were some what easily rectified on my end.

I began to play with Ruby on Rails and, with the latest version of Rails they require the final release of Ruby 1.8.2 or higher. KUbuntu ships with the a version that was released just before the final so, (the latest version of) Rails didn't work out of the box. After rebuilding Ruby, and gems from scratch, I was on my way. The upcoming Breezy release will take care of this little problem.

The more annoying problem, and I say annoying because I wasted a lot of time on a new project that I have become a part of, is that the MySql version 4.0.23 with KUbuntu is configured to skip-innodb by default. I didn't catch this and spent some time going over unit tests that were changing values in a database, testing the values, and then rolling back all changes in the tearDown() method. Of course, since my MySQL configuration wasn't allowing innoDB tables, the rollbacks were not occurring and subsequent tests would fail.

I finally wised up and looked at the test db creation script and noticed that data was persisting when it shouldn't have. After commenting out the offending
skip-innodb line in my.cnf file. The unit tests magically began to work again.

Not sure why Ubuntu/KUbuntu ship with innodb support turned off?

*Update, the mysql 4.1 packages for Ubuntu/KUbuntu have innodb on by default.

Sunday, August 28, 2005

Playing with Ruby on Rails

I have begun playing with Ruby on Rails. I am having a hard time mostly because I don't really know the syntax for Ruby in general so, I believe I may be trying to run before I can walk.

To add to the complexity, I am working with a legacy schema (OsCommerce) so, it is slow going trying to get my model mapped out. I did start out by creating some scaffolding for a single table and working from there. So far, it seems okay but time will tell. I will voice an opinion once I have had enough time to really work with it.

Friday, August 26, 2005

AJAXified Natures Paws Representative Pages

My wife and I run an online pet business Natures Paws.
I just finished updating the Independent Representative pages (example) to use some AJAX functionality. I have used AJAX techniques in my projects at work using DWR. Our store is based upon the OsCommerce engine and Php so, I decided to go with SAJAX being that it closely resembled how DWR works.

I think in the near future, I am going to refactor the site to use Dojo Toolkit and widgets. Plus, it would be nice to have an all-in-one solution, from XHR to html effects in one framework.

Thursday, August 25, 2005

PDF forms, the web, and Struts...

Have written in a while. I am going to make myself write more if not only to remind myself of things I will forget.

Just finishing up some refactoring of an application that was trying to duplicate a very involved PDF form into html. The final product was then written into a PowerPoint template. It was rather nasty. I decided to keep the PDF form and just push that as the UI. Now the user will be more comfortable with editing the data considering it looks and feels more natural. Also helped to clean up the back-end data now that Fdf data is being saved rather than a rather stringy object graph.

I used iText to handle the opening of, pre/re-population of form data, and streaming of PDFs to the browser. It was also the only library that would open and save our PDF templates. I tried some commercial libraries and they just wouldn't save or stream the final product. iText being open source software also makes the price more attractive.

Things to note and remember about this project...
1. You can't manipulate an iText PdfReader and then reuse it. It throws an exception complaining that the reader is being reused. You have to change, save, and reopen - even if you are just doing all of this in memory.
2. If you are using Struts and want to send something like a PDF as the response, return a null ActionMapping.