Entries from February 2007 ↓
February 22nd, 2007 — Ruby On Rails, Software
I finally finished the minor remodeling of my personal page, as I transferred the old, plain HTML files to Ruby on Rails. It didn’t take too long, since the site is all static (for the time being). Just in case you’re wondering, I moved everything to Rails mostly because I was tired of having to make a change to a menu, and I had to change every single HTML file. Not anymore. Although this apparently is the only benefit I’ve gained, I’m planning on adding many more things in the future (using Rails, of course).
Anyway, I was explaining what I was doing to the website to a co-worker. Although he doesn’t understand much about programming, he did seem to understand the whole Rails thing. So he asked me if the blog was also made with Rails. I told him no, it was using Wordpress, which runs on PHP. SO his next question was a natural one: Why don’t you use a Rails blog?
I’m sure some people who visit this site will ask the same thing. I have a couple of answers to this. I had tried to use Typo previously on this site, but rapidly removed it and started using Wordpress. First off, the web hosting company I’m using isn’t the fastest or most reliable host around for Rails applications. So Typo felt damn slow, probably due to the amount of memory it needs to run. I know there’s other blogging software built on Rails, but I haven’t had time to review them thouroughly yet, and I don’t seem to think they’re good for what I want.
Besides the slow speed, Typo hasn’t been updated in quite a while. The last update was in August of last year. Now that normally wouldn’t be a problem. But I think that at the very rapid pace Rails is evolving, most Rails developers need to keep up with this pace. Granted, that’s not always possible. But with all the new additions Rails gets with each release, I’m sure Typo and other Rails software could greatly benefit from those changes.
So for the time being, I’ll stick with Wordpress. It’s relatively fast and stable, and very easy to manage. Can’t ask for more. Maybe in the future Typo will be updated, or I’ll switch hosting companies and find Typo to be great, or maybe there’s some blogging software out there built on Rails that can solve this minor dilemma for me. For now, it’s too bad all my site can’t be built on Rails.
February 21st, 2007 — Software
A new version of Wordpress, the awesome blogging software used to power this very blog (and millions more out there, as well) is out!. It’s actually just a bug-fix release, but it’s still news, isn’t it? This will be a quickie post, just to let you people know how things have gone with this upgrade.
To tell you the truth, I didn’t think it would be so easy upgrading this software. But it’s basically all in one step, if you don’t count backing up your data. This is very important whenever you do a software upgrade. All I did was back up my original Wordpress installation folder on the hosting server, and backed up the MySQL database as well. I won’t go into specifics, as I don’t want to make this post too technical. Also, as a precaution, please de-activate all of your currently activated plugins. This is not necessary, but it’s nice to do this, just in case one of your plugins is incompatible with the current version of Wordpress, possibly breaking your installation.
Afterwards, I downloaded the new Wordpress release, decompressed it, and copied over my old installation directory. Then, all you need to do it go to a special upgrade page in your site (http://your.domain.com/wordpress/wp-admin/upgrade.php, where http://your.domain.com is your domain name (obviously) and http://your.domain.com/wordpress is the main page of your blog. A screen will appear, asking you if you want to go into the upgrade process. Click on the ‘Upgrade’ link, and that’s it! I thought it would be a long, drawn-out process, but it wasn’t. You canj then visit your shiny-new blog! Actually, it’s not that shiny, since it’ll be basically the same. But I’m sure you’ll feel comfortable knowing your blog is running the latest software,, with (hopefully) less bugs and insecurities as before, right?
All of these instructions can be found at the Wordpress website. So why did I bother to post this? I guess I wanted to let you all know that this is an easy upgrade, and that I’m up-to-date!
Edit: Seems like a hacker got into the previous Wordpress release, and modified some files to allow remote code execution. Just in case, if you have Wordpress 2.1.1 installed in your site, there are chances that you have one of these “infected” releases, and should seriously upgrade to Wordpress 2.1.2 now.
February 21st, 2007 — Programming
I just read this comic and found it hilariously funny. While this comic depicts a database administrator, this could very well be any single part of the IT chain. Programmers can say they haven’t done a module, architects can say they haven’t designed a spec, even the computer techs can say they don’t have enough resources to fix a computer for any given reason, depending on their mood.
Anyway, the thing with this comic strip was the fact that I remembered the fact that where I work, I’m the only developer. That actually means that I’m the only programmer, the only architect, the only database administrator, the only tester - the only everything. Even the only server administrator here (not too many people apparently know Linux at a server level here in Puerto Rico) And it’s tough, believe me. I’m expected to be able to analyze a module in the programming, create the database schema, code it and test it all by myself. While I’m mostly not too pressed for time, sometimes I’m expected to assume all these roles and do it fast.
At one of my favorite blogs around, Joel On Software, Joel wrote an article about something he calls The Joel Test, which are 12 small steps to program better. I’ll list them out, along with how that currently applies to me:
- Do you use source control? - Yes, but only because I took the initiative to do it behind my boss’ back, due to him not wanting me to “waste time on that”.
- Can you make a build in one step? - This really doesn’t apply to me, since we’re only using PHP at the moment.
- Do you make daily builds? - Same comment as above.
- Do you have a bug database? - Yes, because I implemented it along with the source control system, thanks to the very excellent Trac software.
- Do you fix bugs before writing new code? - It depends. Sometimes I’m expected to implement a new feature ASAP before actually fixing something that could affect that new feature directly.
- Do you have an up-to-date schedule? - Nope. I never will have one. One of the major gripes about my current job is the fact that schedules never last more than a week. They change virtually every time my boss comes up with a new idea.
- Do you have a spec? - No, unless you count specs as informal conversations, which I have all the time.
- Do programmers have quiet working conditions? - No, and I can’t seem to stress this to my boss enough. I work exactly in front of his desk, meaning I have to listen to him yap on the phone, or scold other employees during the day.
- Do you use the best tools money can buy? - Not really, but that’s because I’m a conformist. As long as my work can be done, I’m happy with what I have. Of course, I’d have to answer ‘no’ on this too, because if I ask for a Macbook because it’ll help me work faster, I most likely won’t have it.
- Do you have testers? - Yes, but only if I can count myself.
- Do new candidates write code during their interview? - I wasn’t required to code, nor provide samples of my work when I arrived here. And I’ve only had one additional programmer come work here, because the company thinks one programmer is enough, and she didn’t need to code at the interview either.
- Do you do hallway usability testing? - HA! Sorry, I had to laugh. If I told my boss I had to write some tests to verify the code, even if it’ll save tons of time in the long haul, I’ll probably be at the unemployment line.
Out of twelve, I only have a score of two. Ouch. I don’t like bashing my company, as I think it’s been a wonderful place and my employers have given me this opportunity fresh out of college. But to have such a low score, it’s just sad. I would like to implement a lot of steps here, such as having specs for every program, and the usability testing as well (I’ve been spoiled by Ruby). But I don’t think I’ll be able to work on that, plus do my normal duties by myself.
Seeing that I haven’t worked elsewhere, as far as programming goes, I wonder if there are still places where this exists. I think smaller shops can’t actually employ every single one of these, but I think they’re at least out-sourced or something similar. While I strive to have this sort of pressure on me, it really becomes a burden most of the time. And what that leads to is just complete burn-out. It’s happened to me before, but thanks to a nice week of vacation I took at the most beautiful beach here in Puerto Rico, it didn’t affect me much. But now I’m possibly taking the same route again. Hopefully I’ll be re-energized again. I’m showing signs of it now, due to me trying out new things while completing my job (for example, I’m taking the time to learn AJAX while implementing those features in my current program). So if it continues, I’ll be happy. But I’ll still be wondering if I’m the only one like this out there.
February 19th, 2007 — Open Source, Programming, Ruby
I recently came across this blog post, where someone compared various implementations of Ruby, specifically to check the speed of each. When I read this post, I wasn’t surprised at the results. I was totally surprised at how many different Ruby implementations there are. I hadn’t realized how many there were.
Now, my question is, why are there so many different implementations that run Ruby code? I haven’t read about the others, such as Rubinius or Cardinal, so I still don’t know. I would imagine that there’s different needs for each (such as Gardens Point Ruby .NET, as the name suggests). But unless there’s a reason to have all these different ports, I wonder why there are so many.
Why don’t these developers focus on the original Ruby language and strive to make it better, instead of forking off to a different road and possibly confusing new users? Like I said, I haven’t read about these other implementations, so there may be something behind this. I’ll take the afternoon to read about the other implementations, and try to find out why there’s so much interest in making different Ruby implementations instead of focusing on the original.
February 18th, 2007 — Programming, Ruby On Rails, Web Development
I’ve been learning Rails with great success these past two weeks. I’ve learned so many things during this period, much more than I’ve learned in a similar time frame for other languages / technologies. While there is still much, much more to learn (and memorize), I’m very happy in the time I’m investing in Rails, and don’t mind spending most of my free time reading and coding.
However, something that has happened to me a couple of times is that I get confused with certain things. For example, last week, I was really confused when reading about how forms work in Rails, and how to save and edit records in a database. Basically, it all came down to its simplicity confusing the hell out of me. For example, to save a new user, the only line of code needed in the controller was User.new(params[:user]). After watching this work nicely, I was amazed, but at the same time confused. How did Rails know what to save and in which fields? Where’s the SQL code? After reading a bit more about the form_for and form element helpers, as well as reading the logs, I found out how Rails does this automatically. Really great stuff.
However, some further confusion happened while reading about the form helpers. There were similar tags for the same thing. For example, there’s a form_for helper, as well as a form_tag helper, which create the form in the web page. Same with the elements. The text_field and text_field_tag apparently did the same thing, albeit each had different parameters. So that caused a bit of confusion early on.
So, maybe my mind was just fatigued because of the week I had at work, or I didn’t read my book well, but this caused me to look around to better understand these tags and what each one did, and why two (or more) similar helpers did different things. Thankfully, I’m the type of person who needs to know how things work. I’m never satisfied if I use something and if it works, I never question it. It may be the inner hacker in me.
February 16th, 2007 — Programming, Ruby On Rails, Software, Web Development
Last year, after a friend of mine lent me here Macbook for a week (I want one for myself so bad!), I discovered the most amazing programming software I had ever found, called TextMate. I’m sure many of you have heard about this program. In fact, if you have watched any of the Ruby On Rails screencasts, you know what software I’m talking about. I think it strikes a balance between simplicity and power that’s rarely seen, and that I never even thought was possible. I tell you, once you get used to their snippets function, you’ll never want to try another IDE again.
So I went off, searching for a nice alternative for Windows that would work similarly. Shockingly enough, there wasn’t any program out there that was even similar to TextMate. I thought that was pretty weird. But after doing enough searching, I found a place where some people were making a program for Windows that would basically be a TextMate-like clone for Windows. Unfortunately, the program was only in its initial phase, with no alpha released yet. Sadly, I thought this program would just die out like many other software projects I’ve seen before, never to see the light of day.
But early this year, I received an E-Mail, stating that the very first Alpha release was available for download! Giddy, I went to their site, and lo-and-behold, there it was. I would finally get to use the program known as Intype. I rarely get excited for a software release, but this was an exception.
So I tried out the program, and it worked fine. Of course, as all alpha software, it had its fair share of bugs, and most of the functionality found in other text editors was missing (more noticeably, an Undo / Redo function). Still, it showed lots of promise, and many other people in their forums shared the same excitement as I did.
After a couple of more releases, there is finally a very usable Alpha version - one with an Undo function - available right now. I’ve been using it while I’m learning Rails, and it’s helped greatly, in terms of writing code much faster. I won’t dive into specifics, as there are already a couple of reviews out there in the wild. Even though it’s an Alpha release, it’s coming along really nicely. If the project continues forward, and all the proposed features are added, this will truly be a blessing for the developers - like myself - that are stuck at work with a Windows environment.

If you have a chance, download the most recent version and give it a spin. Besides helping with bug reports, you’ll probably be pleasantly surprised at the current state of the project, and you’ll certainly be excited as to where it’s headed. Be ready.
February 14th, 2007 — Linux, Open Source, Programming, Ruby On Rails
It’s been a while since I last used any Linux operating system full-time in my own computer. Back when I was in college and still had tons of free time, I would always try to get the latest and great Linux distribution just to try it out. That’s how I really got familiar with Linux. I always recommend to co-workers and other people interested in Linux to just grab a distribution, even if it’s a Live CD, and just play around with it. If they get stuck, there’s tons of help on the Internet, along with my own help, so any fears they have should disappear.
Anyway, I’m heading off topic with that, and I’ll maybe write about it some other time. For now, I wanted to write about my recent experience. I do use Linux every single day at work, but only at servers, where the command line rules them all. However, I hadn’t used Linux for the desktop in a while. I guess I didn’t want to fiddle around with installing and configuring the OS to my needs. But a friend at work told me he started using Ubuntu, and that basically got me into the Linux mood again.
I had already tried Ubuntu, ever since version 4.10, and I liked it. Still, I thought it was too “user friendly” for me. I know user friendliness is a great thing. But come on - this is Linux! It’s meant to be difficult, right? That was my previous point of view on the subject. But after installing Ubuntu once again, I’m totally hooked. The last version, 6.10, really makes a great name for itself. It has all the user friendliness you can give new users, but it also allows those power users do whatever they can do with other Linux distributions.
I obviously installed Linux to work with Ruby on Rails. I have to tell you, Rails on Windows is a bit of a pain. It just doesn’t feel right to work with Ruby or Rails in a Windows environment. I’ll also save that for some other time. But after installing Ruby and Rails here, I’ve been pretty damn productive with my Rails learnings. It’s been a really great tool.
For now, Ubuntu stands as the leader of the Linux world, at least in my option. This is the distribution that will most likely propel Linux into mainstream usage, not just for geeks like myself who just love to tinker around with these things. Other companies have been doing great on other fronts, such as Novell (with SuSE and OpenSuSE) and Red Hat (with Fedora Core and its own Enterprise Server). But to me, Ubuntu is the distribution that will help get Linux into many homes that have only seen Windows stuff before. And with Windows Vista’s apparent shortcomings (I haven’t tried the OS yet, so I may be misinformed), along with Apple’s very excellent Mac OS X (with increased Apple hardware sales), I think these systems that are in the minority will finally gain some market share that Microsoft has been hogging for years. Look out, Vista.
February 13th, 2007 — Programming, Ruby On Rails
I’ve fallen completely in love with The Pragmatic Programmers.
Well, not literally in love with them. But I’ve really turned into a complete fan of their work in very little time. Obviously, my first foray with their work was the first edition of their awesome Ruby On Rails book, Agile Web Development with Rails, as I mentioned in a previous post. I didn’t get much time to read that book, but I did take time a couple of weeks ago and purchased the second edition. And let me tell you, there hasn’t been a programming book that I’ve understood so quickly, nor have I’ve immersed myself in so deeply.
The laid-back tone Dave Thomas uses in the book makes for easy reading and comprehension. Also, the method the authors choose to help the reader learn, which is explain things while actually building a fully-functional application, is simply great. I have so many programming books at home that I never got around to reading, due to the seemingly forced way they try to shove information about classes, methods and other nuances. This is quite the contrary. I’ve learn so much about Rails this past week, that I’m just about finishing a personal project I was building for quite a while in PHP. And that’s just in a week.
Anyway, the reason why I say I’m in love with these guys is because their books are simply the best. Before picking up the second edition of the Rails book, I picked up the good ol’ Pickaxe book (Programming Ruby), it has the same concept of teaching you the Ruby language. I was hesitant to buy this book due to its sheer size. But really, it teaches a lot without overwhelming the reader. It’s also helped me along in my Ruby learnings.
After seeing that these two books were great and that I was actually learning a lot in such a short time, I went on ahead and bought another Pragmatic book this weekend: Pragmatic Version Control: Using Subversion. I set up a Subversion server at my job, but only used it simply for having a log with the source code changes. I didn’t use it for anything else. After reading this book (I’m almost done after three days!), I now know that Subversion can do so much more. I was totally ignorant to things like branching, tagging and merging, and now that I have this knowledge I’m sure I’ll be using it every week.
After these three books, I know I’ll be buying many more from them. After I learn a bit more about Rails, I’m definitely going to buy the Rails Recipes book. Also, since I manage the servers at work, I’m thinking of getting the newly released book, Everyday Scripting With Ruby. And if I ever get a Macbook, I’ll surely buy their Textmate book.
So really, if you haven’t checked The Pragmatic Programmers or their books out, you really should. They’re the most easy to read and understand books available on programming topics. I guarantee you that you won’t regret shelling out the cash.
February 5th, 2007 — Computer Science, Programming
I just came across this article, which speaks about the death of Computer Science as we know it. If you’re one of the few that have actually read my information, you’ll know I have a degree in Computer Science, so this obviously caught my attention. It basically talks about the drop is Computer Science students across the world, the faults that universities have and most of the time fail to address, and how long this can continue. Unfortunately, this article makes a lot of good points that I have witnessed first hand while in college.
First off, the article mentions the perception that’s given to those who study or work with computers, particularly in the programming front. It’s sad to say that this still exists nowadays in college. But I’ve noticed it’s because there are a lot of people who just represent the stereotype of a computer geek: glasses, unkempt hair, unshaven. It didn’t matter that most of these are some of the nicest, most helpful people you’ll ever meet. But what about women? I think I only met about ten girls - total - throughout my college days who were Computer Science majors. And unfortunately, most of them were there for the wrong reasons (more on that later).
The article also mentions the impact globalization has had on the IT industry. With the end of the dot-com era, along with the offshoring many of those jobs to places like India, many people view this industry as shaky, at best. And I guess this is also true, as well. There just aren’t that many jobs as there were eight years ago, particularly here in Puerto Rico. But I don’t think this is sufficient reasoning as to why Computer Science is in a current downward spiral.
Like I said, the article has a lot of good points. But there are also some points I’d like to make that I’ve seen myself. The first one, and the most important one in my view, is the fact that the curriculum for Computer Science in most universities is very out of date. When I started my introductory programming courses back in 1999, I started with C++. But as time went on, I was mostly fed a steady diet of Visual Basic 6.0 and other Microsoft assorted software. I didn’t realize it at the time, but with so many different technologies and programming languages out there, why don’t they update their classes? I’m guessing that it’s a pretty long and arduous path in updating a college curriculum, but they should at least consider this as a priority.
Last year, the brother of an old college buddy called me up, because he was taking a programming course (at my alma mater, mind you) and needed some help. I told him to send along his assignment via E-Mail. I was shocked (yet sort of expecting it at the same time) when the assignment consisted of a Visual Basic.NET with Microsoft Access as the database back-end. At least they updated their version of Visual Studio. But it means that they’re still teaching this stuff in college. And unfortunately, this doesn’t help the students at all. Not to go on an anti-Microsoft tirade here (which I’m not, believe me), but Visual Basic will only teach Computer Science students how to drag and drop controls onto a form. Yes, I know you need the code logic and knowledge to make those controls work. But it only teaches the student to be lazy, and not to find out how things actually work. That’s how I feel about it.
There are so many great programming languages and software nowadays, that it’s a shame no one in college taking the time to pass it along to the future of this industry. Languages like Ruby, Python and even Java to me are better options than C++ and Visual Basic. Why give Microsoft Access as your main tool for a database class, if there are relational databases like MySQL and PosgreSQL that are more fully-featured? And why just give everything Microsoft, whenyou can dive into Linux, Mac OS X and other Unix-based systems like Solaris? It’s still unknown to me.
Another reason in this decline is the fact that many people in the past have failed to get their Computer Science major because they got into the field for the wrong reasons. Or, more directly, they’re in it because of the perceived money they’ll earn. Maybe back in 1998 it was true, but nowadays getting a job, much less a well-paying one, is difficult enough. Here in Puerto Rico, I know former graduates of Computer Science spend two and three years finding a job in this field, and they still haven’t gotten a programming job ever. But besides the fact that there aren’t too many positions available, there’s a bigger problem: many fail to realize that this is a life-long journey.
I bet most of those guys who graduated with me have only Visual Basic (and probably C++) in their resumes. They don’t want to continue forward and learn new things. I don’t know whether it’s because they think that what they learned in college was enough to have a job for life, or because they want money now, but an alarming number of fellow graduates I’ve seen throughout the years fail to continue learning. And in a field that changes ever-so-rapidly, the worse thing you can do is remain stagnant for long periods of time. Hell, even because “out of the loop” in the IT business for 9 months or a year is killer.
So while Computer Science departments all over the world are having problems, I think they’re remediable.
February 1st, 2007 — Programming, Web Development, Web Standards
When I started to work on this site, I wanted this site to completely follow the web standards set by the World Wide Web Consortium. The real reason for doing this was personal, as I want to adopt the philosophy of “If you’re going to do something, do it the right way”, which is how I really strive to do everything in general. But as I read more and more about why these standards exist in the first place, now it’s become because I want my site to work as I intend it to be. For now, it’s all working well. Go ahead, click on the W3 button at the footer of the site to validate the page. I’ll wait a moment.
Okay, so this entire post started from the fact that the Wordpress software I use to run this blog has always advocated being standards-compliant, which is why I chose to use this software instead of a different one. So it came to my surprise that when I found out recently that some sections of this blog we failing the validation tests. It turns out it was because of the template I’m using. I’ve fixed the problems that I have noticed, and I vow it will never, ever happen again on any website I develop.
However, it bugs me a little when I see that most large and popular websites fail the simple validation tests. Microsoft’s website fails validation, mostly due to the fact that Internet Explorer is recommended to browse the site and that piece of software seems to follow their own web standards. YouTube fails as well, maybe because of all those Flash-based movie players scattered around. I won’t even bother to talk about MySpace and the really messy pages of most of its users. Even Google’s very simple main page doesn’t have a valid DOCTYPE in its code. Why do these large companies fail to address this? I mean, it’s not difficult to follow web standards at all. If a simple, lone programmer like myself can do it, certainly those large corporations with their fleet of programming gurus can work it out, right? It seems they don’t.
I had read a very interesting blog post that talks about the importance of web standards, and tries to reach out to those people. But day after day, these developers just don’t seem to care at all. I see no valid reason why web developers can’t write the code to their site using simple and proven web standards. It sort of boggles the mind.
Granted, there are some websites that fail validation due to non-validating ads on their pages. This is a touchy subject, since those ads sometimes help pay the bills of running the website, so removing them it out of the question. I have not yet implemented a site that has ads running on it, so I wouldn’t know how to work around this. But I would at least try to give the companies running those ads a hard time to shape up and fix their ads.
Alas, there still is hope around. Many sites around the Internet are gracious enough to follow web standards in their wildly popular and frequently visited pages. Sites like Digg and Craigslist follow web standards correctly, and I applaud them for that. Unfortunately, I can’t say the same for the rest of the top websites of the universe.
Even though I’m a simple programmer just trying to make a personal website, I will continue to work with web standards, even if I’m part of a very small part of those who actually do so as well.
Testing