It's been a while since I got down and dirty writing any significant piece of software, and even longer since I learned a new development system. I've been hearing a lot about Ruby
and am interested in using them for stuff at work, so when doubleedge
said he wanted something to automate flashcards for his language class, it looked like a good learning exercise for me.
I have to say, I'm having a lot of fun with this.
Ruby is such a nice surprise! It's sort of like a cross between Smalltalk and PERL, leaning much more to the Smalltalk side of things. 100% object-oriented, totally dynamic with block closures and metaprogramming. Also has macros and regexps (PCREs even), modules, and exceptions. So far this is the best language I've discovered since Smalltalk, and it looks like it might just become my favorite in a short time.
Rails is also kick-ass. It's a web application framework that simplifies building a web app that runs on a database (like MySQL), which is pretty much every web app that is non-trivial to build. It uses the dynamic and reflective features of Ruby and some heuristics to avoid all that stupid redundant glue that all those other frameworks use to connect the application code to the database. For example, if you have a Recipes app with a Recipe object, Rails automatically knows to look for a recipes table in the database to use to store those Recipe objects. So much is automated that you can do a ton of stuff really fast - the standard demo shows how to build a simple blog system in 15 minutes!
So I've been chugging along learning a new language and a new framework, as well as upgrading my SQL skills, all at the same time. Whew! After I get comfy enough with the basics, I'm going to try to factor the project as an AJAX
app, as that's the next bit of technology that I find very interesting. That's a new technology that we are very interested in at work but not many of us have any experience in, so it would be good for me to do some trailblazing so I can help people make choices about what technologies to use to solve various problems. AJAX is a strong candidate for a few new projects, but we don't understand it enough yet to know if it will work well or not.
Once I get this stuff down well enough, I can put together some nifty web pages for my family members who keep asking me to do that for them. Man, they are going to owe me a lot of cookies.