Even though I work in a chip company, I believe in tools that work on the web so creating, updating and maintaining data is a collaborative process (and less personal overhead
). Having a spouse who works in web tech is of extra help. I was one of the early adopters of the Twiki at my company (Andy was the initiator). One of the earliest tools that was born out of my pain of having to create work plans, track them and collect status info was the Project Planner Plugin for Twiki (which I also released to the public domain).
I have done a few other CGI scripts to interface databases to the web along the way. But, cgi scripting in perl is not my idea of writing software. It keeps getting in the way more often than letting me do what I want to. Of course, I am not a master of the language. People actually commented on the Project Planner plugin that the code was easy to understand since it was perl written in C style!
So I stumbled upon Ruby on Rails accidentally and that led to making the softwareinterview.com website. I really did it like the 15 minute video on the RoR website and it works! We spent more time on the template and CSS for the view. Yeah, and it is true that getting the first few things up is as quick as 15 minutes but you really do need to understand framework, Ruby, ERb and a few other things to be really up and running. Pickaxe and DHH to the rescue. It helps to read and do some development as opposed to getting dazed with just hacking away and getting stuck on how to take it to the next level.
It also led to me adopting Rails for a cgi script I was maintaining at work. It was a small perl cgi script and was moderately well architected (YAML for config files, serializing and deserializing objects, etc.). However, it was getting a pain to maintain and add any features. I did keep finding myself repeating the same code, trying to abstract it away, refactor it, etc.
I re-implemented the whole thing in RoR and it did make development faster. Since I was not a perl-cgi wiz, getting stuck at RoR and perl-cgi was pretty much similar overhead in trying to search for an answer. It was easier in RoR once I found the answer since it was so much more succint in RoR as opposed to perl-cgi. The application though small does use many features:
- multiple tables
- foreign keys
- ActionMailer
- acts_as_versioned
- observe_form AJAX for searches
And as you can guess I did run into several itty-bitty problems throughout (especially since I was a Ruby Nooby too). Surprisingly, web search seems to provide many answers since there are many new rails pages and not too much noise. I find that searching for many topics on the web finds more noise than answers.
About that list of small issues:
- collections in forms
- AJAX for form vs fields
- choicebox selection list and selected value
Oh! As a side effect to the whole thing, I love Ruby! A fortune sample reads, “Computers do what you tell them to do, not what you want them to do.” The way I see it, I have always had a language that let me tell the computer what to do – C. It is pretty close to really thinking in terms of a processor chip.
add 1 to i, mov i to memory at location m
I have never really found a language that really lets me write software that I want to do. Ruby seems to come pretty close to writing code the way we write pseudo-code when writing algorithms.
for each of the elements in the array, slice ‘em, dice ‘em and cook ‘em.
Really! That is how I feel writing in Ruby. I am neither a master of languages nor a novice. I have written and graded a few programs in LISP, COBOL, Perl, Prolog, etc. to understand concepts behind computer languages (PCP did teach us the wonderful lambda calculus in undergrad). Perl seems like sed+awk and I haven’t written anything in python but I do not like white spaces dancing around me in my nightmares. I had enough of those with COBOL (spaces and nightmares while sleeping in the undergrad computer lab).
I design processors (albeit writing a lot of software) and not web sites. Even if I do not use RoR a lot, at the least RoR gets credit for my stumbling onto Ruby! When I have a choice, I will be scripting mostly in Ruby.