Archive for the ‘Programming’ Category

Out of my comfort level

Monday, March 30th, 2009

I often try to get out of my comfort level. I’ll agree to something that seems fun and challenging, then figure out how hard it is.

Right now I’m barely getting settled from jumping out of hard core C++ applications programming to web-based technology and I agreed to play fiddle in the Klezmer ensemble.

Both of those things have a bit in common: they both take a lot of thought and practice, and they both take more time than I have to really master. And they are both really useful things to know. And I’m having lots of fun figuring things out just in time.

The pain of upgrading Rails

Tuesday, March 24th, 2009

I really dread upgrading just about anything on my computer. It always turns into a huge waste of time. Today I upgraded Rails to the new 2.3 version and ran into a surprising number of problems:

1) Updating the gem was easy, and I created a new rails app to see it in action.

2) Trying to start the mongrel gave me:

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.

3) Trying gem install mysql gave me:

Building native extensions.  This could take a while…
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

4) I couldn’t find mkmf.log. Lots of googling found lots of people asking, and lots of different answers.

5) After trial and error, it looked like this one worked:

sudo gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config

6) I tried out my new rails app, and got:

no such file to load — mysql

7) Again with teh Google! Again with the lots of questions and lots of answers!

8) It turned out I just needed to restart my mongrel.

9) I usually look at an example when running “generate scaffold”, but this time, since this is just a test, I just guessed about whether the controller name is supposed to be pluralized. I guessed wrong. (It is NOT plural)

10) Fortunately I use Beyond Compare to keep a shadow backup before doing any automated process, so I just reverted, recreated the scaffold, and SUCCESS!

Time wasted: 4 hours.

The Contradance website

Sunday, March 22nd, 2009

I rewrote the Charlottesville Contradance website a couple of years ago when I was learning .NET. I found that .NET is a good platform in some ways, and a weak platform in others.

What is good is that I was able to easily place widgets on the screen and associate them with data. I created a fairly rich site (for the time!) without learning a thing about JavaScript. It also has “master pages”, so you can create a template for a number of pages without having to repeat the same HTML over and over.

What is bad is pretty much the same thing: I was an applications programmer and I was able to create the site without having to change my paradigm and without having to learn much about HMTL, CSS, or JavaScript. Some of the .NET pages I created tended to be pretty heavy. What is also bad is that the site needs to be hosted by a Windows server, and that limits your choices.

The entire schedule is driven by a set of XML files. My thinking was that I’d like to keep an entire mirror of the site on my computer and just FTP it up. That way, I can’t lose data if the ISP goes under. In retrospect, I think the way to go is to use a database, but have backup procedures in place.

One of these days I’ll rewrite the site in Ruby on Rails.