Archive for the ‘Programming’ Category

Don’t be proficient in just one programming language

Posted on March 13th, 2008 in Opinion, Programming | Comments

I just read a post by Joan Planas Illas titled “Be proficient in one programming language“. In this post, Joan gives some advice that developers should stick to one programming language, get really good at it, and make a career out of it. He does offer some good points, such as software development not being just about learning programming languages, and how employers actually prefer if a prospective employee is well-versed in the programming language they’re looking for.

But for me, those who follow the advice of just mastering one programming language are usually day-coders: those who only think about software development from 9 to 5, nothing else. Don’t get me wrong, I’m sure there are a lot of day-coders who are awesome at what they do. But usually these people don’t have much passion for what they do. They’re happy being in their own groove, not expanding their knowledge, and just do their job because it pays well and nothing more. These are probably the worst types of software developers any company can hire. No passion almost always leads to a sloppy job.

But the best software developers I’ve seen show an insatiable amount of curiosity to learn every single thing out there. Of course, it’s not possible. While I don’t have any sort of scientific proof to back me up on this claim, I’m fairly sure there’s a direct correlation between how effective a programmer is with what they’ve learned. A person who reads and stays up to date with different programming languages will have a broader vision on how to get things done. A person who only knows one thing will most likely know only how to solve problems the way their language does. Sadly, a lot of programming languages have their own conventions on doing things their way, which sometimes isn’t the right way to do. These bad habits are then embedded to the developers, who are unfortunately ignorant to recognize there are better ways of solving a problem.

I have yet to meet or read about a kick-ass or famous software developer (well, at least famous in my mind and geeks around the world) who is an expert with just one programming language. Martin Fowler didn’t just stick with C. Yukihiro Matsumoto didn’t stay with C++. Zed Shaw definitely didn’t ‘get married’ with Ruby. These are just a few examples. But just think of any well-known software developer, and one common trait they’ll have is that they at least have experimented with many programming languages, and I’m sure that helped them be as knowledgeable as they have been.

So if you have the time, get to know a programming language of your choosing, preferably one that interests you and not one that all the ‘cool kids’ are using so you need to learn it too. Once you get a firm grasp of that language - not master the language, there’s a huge difference - take the time to learn a new one. For example, if you know Ruby pretty well, get into Python. They both are similar, yet have different ways of doing things. Just don’t choose Ruby and stick with that for the rest of your life. You’ll earn no real benefit at all, and when the next big thing comes along, you’ll be get left behind. Unless you’re happy with that, day-coder.

Original developers and non-workaholics beware

Posted on March 8th, 2008 in Opinion, Programming | Comments

Here in New York, I’m working at a start-up company that is a few months away from their initial launch. This is a refreshing change of pace from where I used to work. In my previous job, I was the sole programmer, but not for a company whose main purpose was build software. Now, I’m part of a group of people, where we’re all working together to complete a software project. It’s an interesting experience for now, and I know it’s going to be an awesome experience for me.

As many of you should know, working at a start-up that hasn’t launched yet is hard. Really hard. Trying to build something that hasn’t been done yet will definitely have its setbacks, and there’s a high risk involved in the whole deal. Just a look at TechCrunch’s so-called DeadPool, start-up companies who had to shut down for one reason or another - usually because they didn’t have enough money to finish. Also, since these companies aren’t actually generating any revenue while building their product, most of the times there’s not a whole lot of people working at any given time. That means a ton of work for those involved.

Of course, I’m not saying start-up life is bad. On the contrary, it’s been fun and exciting for me. I’m doing what I want to do for a company that has a great idea that, if all goes smoothly with no major bumps on the road, will enjoy massive amounts of success. And being one of the main persons to actually have constructed part of that success, it means there will definitely be rewards down the road. With this being said, lately I noticed a couple of articles with some people saying some… Well, I’m tempted to say ’stupid things’, but I’m not one to pass judgement, especially to those I don’t know personally.

The first one comes from Mike Mason, a software consultant, who advises start-ups to fire their original development team when the company has a successful launch. Of course, now that I’m part of a dev team who’s with a start-up that hasn’t launched yet, I definitely wouldn’t want to be fired. But this article offers absolutely no valid points whatsoever as to why firing the original people who helped get the company to the “Promised Land” is a good idea. His main gripe is apparently this:

The problem I’ve found when working at startups-turned-enterprises is that the guys who built v1 of that web site are now running the IT department.

Yeah, this is a problem, definitely. But guess what? Who put the developers in charge of running IT? It’s not the developers themselves - it’s management. Why on Earth would a manager put a software developer in an IT role - a main position, at that - if they’re not actually qualified to do the job? In this case, the developer who built the first version of the site should stick around, possibly as the lead developer for newer hires, while they’re making their product better. For IT, hire someone who’s actually qualified for what you want. That way, you have someone who know about your codebase actually working with code, while someone who knows about IT tasks can focus on that. Like the ol’ lightning rod him, Zed Shaw, said in his blog about this post:

If you want to fire someone, it’s management. Fire the assholes who focused on making everyone cram for some shitty demo to moron VCs instead of focusing on the quality of the mother fucking code in the first place.

You just gotta love Zed, even if you don’t agree with him most of the times. If you read Mason’s blog post, he also has some more ‘advice’, like “Hire an expensive consulting company to help you build your systems better, and allow Chief Architect dude to ignore their recommendations” and “The minute you’re successful, plan to rewrite your software from scratch“. I admit I haven’t had years of experience in the software development world, but honestly, it seems like this is just a plain bad idea mentioned by Mike here, and just reeks of being counter-productive to the entire company.

Another article I read that left me wondering what the hell the author of the article was thinking was written by Jason Calacanis, CEO of Mahalo, some human-powered search engine, who wrote some tips on how to save some cash when running a start-up. Most of the ideas sound really good, and I agree with most of them. But there was one item that caused a lot of debate around some other sites. Here’s the original quote, as apparently the author noticed he put his foot in his mouth and edited it to sound “less harsh”:

Fire people who are not workaholics…. come on folks, this is startup life, it’s not a game. go work at the post office or stabucks if you want balance in your life. For realz

Whoa, so if I work for you, you’re going to fire me if I don’t work 12 hours a day, at least six days a week? For realz? Sorry, but I definitely wouldn’t want to EVER work for you, even if you pay me ten times as much as I’m earning now. This idea of being a workaholic is just plain idiotic. Overworking leads to so many problems, it’s not even worth it to mention all of them. Stress, bad productivity, bad decision-making, all of these are caused by people working more than they should.

It’s sad to see that in this day and age, there are still people who view borderline slavery (i.e. making them work way too much) as the only way to be successful. People like these shouldn’t be running companies at all. It’s not about how much you work, it’s how smart you work. David Heinemeier Hansson over at 37Signals’ Signal Vs. Noise blog gives his take on this, and brings up some great points to do, what he says, “Fire the people who are workaholics!

Of course, after a backlash around the Internet, especially in TechCrunch’s aptly-titled post Calacanis Fires People Who Have A Life, Calacanis back-peddled and wrote a follow-up post where he said didn’t actually mean it that way, and that he meant that the TechCrunch headline should be “Calacanis fires folks who don’t love their work”. This, I can agree with a bit more, but still, the post was just plain back-peddling, even if he doesn’t want to admit it.

Calacanis goes on to ask two questions: “Can you have a life and work at a startup?” and “How do you manage stress?” The first one is easy: Yes, I can. I’m currently working in a start-up, and still have more than enough time to explore New York City, keep in touch with my friends and family, work on personal projects, and even write long, interesting blog posts. The second question, about managing stress, it’s also easy: Don’t be a workaholic. If you work all the time, if work is your life, of course you’re going be stressed. Take some time away from work. Go do whatever relaxes you (please don’t say work relaxes you, you liar). Take one day off, it won’t be the end of the world or your start-up. Come back feeling refreshed and hopefully stress-free.

Working and/or managing a start-up is definitely no easy task. But don’t think that working all the time or firing your original people because they’ll run the rest of the operation to the ground will help. Work smart, keep your good people around and treat them well, and you’ll see that your start-up will be successful. As long as your idea is good and you have the funding, of course!

I’m in the U.S. - You should come too!

Posted on February 16th, 2008 in Programming | Comments

It’s been more than a month since I’ve written anything here, but it’s with good reason. This past January 28, I started working in New York City - with Ruby on Rails, nonetheless! I’m really, really excited for this new opportunity, since I spent at more than half of 2007 trying my luck to land something outside of Puerto Rico. While I am a bit sad having to leave all my family and friends behind, they understand how much I wanted this and fully support me. I’m just happy I’ll be able to showcase my skills here in the United States, where undoubtedly I’ll have much more opportunities to do everything I wanted to do.

I wanted to write this post, in case someone lives outside the U.S. and is looking for a job here for whatever reason - like looking for more money, looking to work with some specific technology, etc. Trying to land a job outside of your native country is really difficult, as I personally found out these past months. Here are a few pointers that you can use as a guideline if you’re in the same boat as I was.

Have a strong desire to move and be away from family and friends

This doesn’t have anything to do with programming or anything related. But this is a major hurdle you’ll need to clear before even thinking about anything else. I know a lot of people in Puerto Rico who wish they could go to the U.S., yet when I ask them why they haven’t planned it, they say they can’t (or don’t want) to leave their families behind, or maybe they don’t have the cash to plan something, or some other issue. While I understand them, though I can’t relate to them (I’m single, never been married, no kids), I truly think that if they really want something, they can achieve it, no matter what. There should be no types of excuses at all if they want to move. When there’s a will, there’s a way.

Also, make sure you let any prospective employers know about your desire to move, most likely on your expense. I have a feeling I was overlooked by some employers because I lived so far away. Also, it seemed like a lot of people thought Puerto Rico is a Third World Country on the other side of the globe, possibly millions of miles away from the U.S. I even had one prospective employer E-Mail me saying that they liked my resumé, yet before interviewing me, they wanted to know if I had a valid passport to enter the U.S., along with a work visa. For those who don’t know anything about Puerto Rico: we’re a U.S. Possession, meaning that we are American citizens. We don’t need passports to enter the country, nor work visas to be employed here. So make sure the people you’re sending your resume to know that.

Don’t have your sights set on one place only

When I first took my decision to move to the United States seriously (at New Year’s Eve last year), my heart was set on California, specifically San Francisco. I wanted to go there because it seems like all the tech companies are stationed there, or at least the ones using the “coolest” technology (well, at least cool to me). I did get a couple of phone interviews with some companies, but nothing ever came out of it. It’s when I started to send resumes all over the U.S. where I got even more responses, until I landed my current job in New York. It turned out to be even better, because after I got the job, my cousin called me to let me know there was a spare room in his house in the Bronx, which is where I’m at until I get my own place. I have absolutely no family in California, which meant that if I got a job there and my employers didn’t help with the relocation costs, I would be looking at getting a hefty loan just to fly out there and find a place to live. In short, look everywhere you can, everything will sort itself out in the long haul.

Make yourself known

In this world of Open Source, it’s relatively easy to join up on a project and help out. There are even some projects that are on the death bed, since the original author doesn’t have time to continue working on it. So this is a great way to achieve many things at once, like getting more practice in a particular technology, and helping out with the Open Source movement. This is an excellent way to have your code out in public, where prospective employers can check your skills out first hand.

Granted, I didn’t actually do this, as I didn’t have much time to hack away at some project at the time. But I did try to make myself known with other tactics. Blogging, for example, is ridiculously easy to do. You can write articles about what you know about programming, showcase your writing skills (which I think is very important, but more on that some other day) and even allow a glimpse of your personality, all in one swift move. I really recommend employers looking for new talent to check if they carry a blog, if you don’t do so already. Of course, this shouldn’t be the only thing to taken into consideration when hiring, but it can tell you a lot about a possible future employee before even talking to them personally.

Another thing I did was try to make my own web application. Unfortunately, I haven’t finished it yet. It’s more than half-way through. But I had to stop once I got my current job and had to prepare for the big move from the small island to the big city. But returning to the subject, creating an application using your desired programming language for, no matter if it’s freeware or some type of paid service, will definitely give you an edge over others who don’t take the time outside of their job to do such a thing.

Don’t think twice, and have fun!

As with every drastic change in your life, it’s perfectly normal to be freaked out at getting into brand-new things. But as I mentioned above, you need to have a strong desire to do this. I think it’s also normal to question yourself from time to time, but if it’s a constant preoccupation in your mind, then simply don’t try to get a job outside your country until you come to grips with it. I was nervous when I arrive to New York. I just kept thinking on the plane “How will my life be over there?”, “Will I like the city?” or even “Will I be happy at my job?” But in the three weeks I’ve been here, I’m happy to say that my life has been great so far, I love New York City and I couldn’t be happier working with a cool technology with some very nice people. It’s been a blast up until now, and I have absolutely no regrets at all.

So this definitely is not a complete list of things your should consider if you want to move to the United States. But these are things that I had to work with myself, and I hope someone could benefit at least a tiny bit by them. So best of luck to any and all of you who want to make the “big jump” like me!

At the speed of Rails

Posted on December 20th, 2007 in Open Source, Programming, Ruby, Ruby On Rails | Comments

I was going to write a small post about Rails and its brand-spankin’ new release, known at version 2.0. But in the time it took to write this, the Rails community not only released Rails 2.0, but also Rails 2.0.1 (thanks to a small error in the original 2.0 release) and 2.0.2 (bug fixes and some nice changes included) were released in short order. That’s part of what I love about the entire Ruby and Rails community: You need to be on your toes and always up-to-date. It may be a pain at times, especially when there’s barely any time for one to do anything at all. But it’s just a blast, and I’m enjoying the ride.

I’ve been using the new Rails features for the past five months now, thanks to access to the Rails Edge code. I really like the direction the framework is taking. RESTful routing is now the norm, multiple views of the same chunk of data are now a breeze, huge security benefits straight out of the box… There’s just too many good things Rails 2.0 has brought out. And the upcoming release of Ruby 1.9 (and its promised speedups) have me anxiously awaiting its arrival. In fact, I’m thinking of porting my Puerto Rican Rails site, RailsPR.com, from the “obsolete” Rails 1.2.3 to benefit from all the changes made by DHH and the rest of the Rails core team. Excellent job, guys. Here’s looking towards the bright, bright future of Ruby and Rails. I’m excited to be part of it.

Source Code Management - Not just for teams

Posted on November 12th, 2007 in Open Source, Programming, Software | Comments

I’ve been meaning to write about the subject of Source Code Management for a while now. The reason for this is that I’m very surprised about the amount of software developers I personally know who don’t use any type of Source Code Management tool at all. The main reason of this is because these people don’t even know such a tool exists. The very few who do know about these tools just know how it works, but never use it themselves. It’s shocking, to say the least.

When I got this VPS, I immediately installed Subversion for my own personal projects, even though I’m the only one working on said projects. This is where those very few people I mentioned above think wrongly about these tools. Their basic response was “If you’re the only one working on the code, why do need to share it?” Very big misconception, to say the least.

The reason I originally started learning about Source Code Management tools (first started with CVS, then move to Subversion, where I have stayed ever since) because there was an additional programmer in my company who was beginning to modify the software where only I had previously worked on before. So yes, I used SCM tools to ’share’ code and make sure our changed didn’t conflict with each other. But then I realized that I was only using probably less than 5% of its true power.

When I did a major screw-up and pushed some bad code into the repository and then into production by mistake (it was actually incomplete code I had mistakenly committed to the repository), I was grateful that I could roll back almost immediately. Then when I needed to have a separate copy of the code, I learned the wonders of branches and tags.

After these experiences, I wondered how I ever did any serious programming work without any Source Code Management. Right now, whenever I start a new project, I immediately create the basic folder structure for the SCM before doing anything else. I think it’s crazy to go forward with a new project without any SCM in place, which makes the fact that a lot of programmers aren’t using any SCM just insane.

For those of you not using any SCM right now, shame on you! Allow me to redirect you to a couple of interesting articles for my preferred SCM tool of choice, Subversion. Please note, there are a lot of different SCM options out there, both commercial and open-source. I would recommend doing some research first on these different tools before deciding to go with one.

Subversion Book - Version Control With Subversion - Excellent resource not only for finding out how Subversion works, but how SCM tools work in general.
Software Branching And Parallel Universes - Great blog post from Coding Horror that explains how branching works visually, along with some reasons when not to use branching.

http://www.codinghorror.com/blog/archives/000968.html

I want everything!

Posted on October 12th, 2007 in Open Source, Programming, Ruby, Ruby On Rails, Software, Web Development | Comments

The past two weeks I’ve been totally separated from all of my learning and reading processes I’ve established to myself, and I felt terrible for doing that. It’s not like I’ve been totally disconnected from everything. I’ve still read all my favorite programming-related blogs, as usual. Still, I haven’t just sat down to absorb everything or practice.

These past two days I decided to get back on track. However, I found myself with the same problem I’ve had for a while now. Whenever I sit down to learn something, I want to learn everything. I don’t mean “learn everything of something“. It’s more like “learn something from everything“.

For the past months, I’ve had a hundred different interests. I’m interested in learning Adobe AIR. Microsoft Silverlight sounds like something I could use in the future. I was sold on Test-Driven Development and ever started to adopt its practices to my daily usage, yet recently I’m liking the sound of Behavior-Driven Development more and more and would like to test that road. I want to learn other web frameworks in different programming languages, like Django and CakePHP. And of course, I’m still totally into Ruby and Rails.

I know a lot of people who don’t mind knowing about everything. But the deal is that by learning (or having the desire to learn) about so many things, you don’t fully learn it all. You only learn a bit about each thing, but never a whole lot. There simply isn’t enough time in the world to do so, especially with a full-time schedule. So to say it’s frustrating is an understatement to me.

One technique I’m finding useful to juggle these interests is to create a necessary project in your mind to learn along the way. This should keep your interests level high during the learning process, while making you stay focused with one or two things at a time. For example, my next project is a web application, where I’ll strictly try to use the practices of Behavior-Driven Development while learning to use RSpec. This way, I’ll be learning a lot of different, yet related, subjects at the same time. After this project is done, I’ll see where Adobe AIR has headed, since it’s still in Beta. If it still piques my interest, I’ll create a new project for one of my current needs, and learn from there.

Being in this world of programming and technology, where it seems like time is always on fast-forward, it can be tough to keep up with what you like. But at the same time, it’s just fun. Even though I get frustrated at times, I’m having a ball learning these things. I guess it all boils down to that for now.

Will this fail? Who cares!

Posted on September 14th, 2007 in Programming | Comments

I’ve been noticing a trend about programming news on social bookmarking sites like Digg and DZone lately. There are a lot of posts floating around indicating the so-called “warning signs” of imminent software project failure. There are even posts with titles like “How to guarantee your project will fail!” How exciting. Just makes you want to click the link and get increasingly depressed as you read the exact same reasons you’re experiencing in your own projects.

While I do think these posts offer some advice on new programmers or those still in college, I think these posts are just over-kill. There are so many posts saying the same thing, it’s extremely rare and surprising to see some new reason that has a valid point. Also, most of the points in those posts are obvious to anyone who’s been programming even for a short while. Some of those points that have been repeated ad-nauseum and obvious deal-breakers:

  • Setting unrealistic goals (Really? If I set an impossible goal, does that mean I’ll most likely fail?)
  • Adding more people to a delayed project (A manager who thinks that new employees will automatically hit the ground running is one who should be shot - or at least not in a managerial position.)
  • No source code system (Any IT department without any type of backup is just asking for trouble. Hell, any individual programmer working solo on a project should be smart enough to use source control and other ways of backing up your code.)
  • Unmanaged schedule or, worse yet, no schedule at all (Again, really? But winging it is so much fun!)

All of these posts basically state the same reasons over and over again. I’d be glad to send these posts over to someone who’s learning programming now, or a manager (like mine, unfortunately) who doesn’t have the slightest clue on how to manage even the simplest of software projects. But the point is that these articles are written and posted in places where the audience consist largely of professional programmers with many years of experience under their belt. So what’s the point? I’m sure they know more than this, and have experienced at least two or three axed projects because of these same things.

If you really want to help, just point your readers to go grab a copy of books like The Mythical Man-Month or Dreaming In Code. These stories of real software failure provide more than enough information on avoiding software disasters. They’ll offer much more insight to problems in software development than any one post has. In short, those who forget history are condemned to repeat it.

So, seriously, please stop writing these posts. You’ll be better off working on not making your project fail or something.

Don’t let Unicode support be the death of you

Posted on August 19th, 2007 in Linux, Programming, Web Development | Comments

You Americans (and British, Australians and any other English speakers) have it easy. When you need to create a web application, all you need to use for your text is the basic English alphabet, only 26 different characters and 10 digits. The rest of the world, myself included, aren’t so lucky. Our languages are damn complicated, with additional letters, along with such grammatical ‘features’ such as accents to see where the pronunciation is at its strongest.

Seeing that I was born in Chicago, my first language is English. Although my parents are both from Puerto Rico, they never enforced the usage of Spanish upon me. When I moved to Puerto Rico when I was 8 years old, the only word in Spanish I knew was “Gracias”. Unfortunately, I didn’t have Dora The Explorer to help me learn the language when I was a boy. It’s taken years, but I finally consider myself fully bilingual in both English and Spanish, and am usually very careful as far as spelling and grammar go.

However, I’ve been wracking my brain for a long time now when making web applications in Spanish. Sometimes the additional characters, like the letter “ñ“, or words like “presentación” are a pain to get working immediately. It’s like I have to jump through hoops to get those characters working right.

In case anyone else shares my pain (or in case I forget in the next couple of months), I’ve compiled a short list with the things you should first look for when these Unicode characters are appearing incorrectly.

Don’t forget the <meta> tag

One common mistake web developers make is forgetting to set the default character set of the page they’re working on. Without this tag, the browser will automatically set the character set to the browser’s default, usually ISO-8859-1, which does not show Unicode characters. To set the character set of the page to UTF-8, which correctly displays Unicode characters, you simply need to add the following meta tag as the first line in the <head> section:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

This should enforce your browser to use UTF-8 when displaying the page’s characters. Remember to set this first, before any other tags in the head section, or else it won’t work at all.

Check your web server configuration

I remember once working with a PHP application, and pulling my hair out because the characters simply wouldn’t display correctly, no matter what I did. After hours of searching through Google, I found out my problem. The Apache Web Server, which was responsible for serving the website, had its default character set set to ISO-8859-1. If you control your own server and can change Apache’s configuration, just go to the configuration file named httpd.conf (this name can vary, depending on your Linux distribution) and make sure the AddDefaultCharset option is correctly set:

AddDefaultCharset UTF-8

After reloading the Apache Web Server, your pages should be displaying Unicode characters correctly. With the Lighttpd Web Server, which I’m using now, I haven’t had to set any option for correct Unicode support. However, in case someone needs it, just go to your Lighttpd configuration file, go to the mimetype.assign section, search for the .html assignment, and add the following at the end:

".html" => "text/html; charset=utf-8"

Another file to verify, although not necessary in most cases, is the PHP configuration file, named php.ini. PHP is responsible enough to use the encoding set in the page by the meta tag mentioned above, but sometimes some joker decides to change the default character set in the configuration file. In this case, simply comment out the default_charset option, and reload your web server.

The database has data too, you know…

With those two fixes above, your static text should be displaying correctly. However, you notice all Unicode characters stored and retrieved from the database are still being incorrectly displayed. This is due to your database character set not being set to UTF-8. In my app, I’m using MySQL, and the database server’s default character set is set to latin1_general_cl, which apparently doesn’t display Unicode at all. If you don’t explicitly indicate which character set you want to use for your database, the default will be used for not only the database, but the rest of the tables (unless explicitly defined, as well). What we want is the utf8_bin character set, which will display the Unicode correctly.

There are different ways to change this default behavior, from starting the database server with an option to change the default character set, to recompiling the entire program (providing it’s Open Source). But I find it much easier to just remember to make your database use the correct character set. In the MySQL prompt on the command line, it’s as simple as this:

CREATE DATABASE database_name CHARACTER SET utf8;

If you have an existing database not using the UTF-8 character set, the easiest way is to use a program like PHPMyAdmin for MySQL, or your preferred GUI for your database server, and change it there. You can also do it through the command line, but I won’t go into those details here. Search Google and you’ll get a ton of information.

Your text editor has a hand in this too

Don’t forget the tool you’re using to create your web pages. They could be the ones giving you major headaches. In my case, I’m testing out Intype, which is still in alpha, but very usable. Intype has the nasty habit (which I wish is fixed soon) to automatically set the file’s character set to ANSI by default. Once you save the file with this character set, it stays that way, wreaking havoc on what you want to see.

To fix this problem, just make sure your text editor, whether it’s Intype, e, Textmate, Vim or any other text editor in vogue right now, is saving your file using the adequate character set. In my case, I’m using UTF-8 Plain with Intype, and my characters are showing up correctly.

These tips should save you a ton of headaches down the road if you’re doing web development for a non-English audience. If you have any to add, feel free to do so.

OpenID - The login of the future?

Posted on August 18th, 2007 in Open Source, Programming | Comments

Following my small rant yesterday about not logging enough programming time, I cleared my schedule completely this afternoon and evening (with a rest or two to catch the awesome G4 show Code Monkeys) to catch up with some things. It also didn’t hurt that Hurricane Dean passed rather close to Puerto Rico, meaning that my plans were all washed out, but that’s okay, I don’t blame freak forces of nature for any of that.

The first thing I did was read some news around the ‘Net, as I usually do, and I saw a rather interesting article about OpenID, which piqued my curiosity. In case you don’t know, OpenID is (according to the main site) “an open, decentralized, free framework for user-centric digital identity”. In nicer terms, it’s basically a place where anyone can validate their identities in websites around the universe, by storing your allowed sites in a single place. This means you can be able to login any OpenID-enabled site by simply entering your own OpenID URL, logging into your OpenID account, allow the site, and that’s it. No more remembering multiple passwords ever again, only your OpenID URL and password.

At first, I thought this was simply a glorified password-saving system, or something similar to the ill-fated Microsoft Passport / Live system. I didn’t think it was going to be a great idea. But after reading more about it, I realized the true strength of this system over proprietary systems like Microsoft’s: It’s available for everyone who wants to use it. And I don’t mean that in the sense of creating accounts. I mean it in the sense that any developer can add OpenID functionality to their own web applications for free. That’s the beauty of the system.

Although very few sites I frequestly visit don’t have this functionality yet, I went ahead and created my own OpenID account over at MyOpenID. They’re one of the first OpenID providers, and they make the process rather easy. You simply go to their website, go through their short sign-up process, and once you have the account ready, you can go to any OpenID-enabled site (they also include a directory with sites that have this functionality enabled), and you’re ready to log into that site with the URL you created. It’s a simple, yet powerful tool.

The site I’m creating right now has a forum powered by the awesomely simple Beast forum app, and it has OpenID support right out of the box, thanks to the ruby-openid gem that you can easily install on your server. After installing the forum I’m going to test on my server, I immediately used my OpenID to create the account, and it just worked without a hitch. I’m sure everyone loves it when things work on the first try as intended.

If you haven’t read about OpenID, I suggest you click that link above to go to OpenID’s website, and read all you can about it. I believe this will cause an impact in the Open Source industry, and more applications will start to have this included. I know that whenever I can, I’ll be adding this functionality to my websites. I already found a tutorial that helps integrate OpenID functionality with the acts_as_authenticated plugin. I’ll be sure to look into that, and post my results of that experiment soon.

Where’s the balance with programming?

Posted on August 17th, 2007 in Programming | Comments

Well, it’s been week two with my nice little VPS, and it’s working like a charm. I’m loving this system. I’ve been playing around with it, tweaking it to squeeze a bit more out of the limited RAM I have, or just to learn new things I haven’t tried before, like setting up DNS (rather easy) or Sendmail (talk about a pain in the ass). It’s certainly been a blast setting up everything, and that’s probably the geekiest thing anyone could say.

In any case, I’ve been wanting to sit down all week and try to finish my Rails project that I have about 75 completed (although I’ve had so many new and cool ideas, I’m considering starting again from scratch), and I just haven’t been able to do it. The time is seriously lacking with my 8-to-5 job, and it’s frustrating. I want to learn so much, but can’t do much, other than read the latest news and that’s it.

I’m still trying to strike a balance between learning and getting some programming, and doing other things. Right now, I’ve been busy having fun with some of my co-workers, as well as some old friends I hadn’t seen in a while. If I wanted to learn programming, that means killing part - or all - of my social life. While I consider myself an introvert, I still enjoy the company of close friends, and I wouldn’t want to neglect them, as I have before in the past.

So right now, if I want to seriously start learning new things, I’m going to have to either cut ties with some friends and stop hanging out with them frequently, risking that they just ditch me whenever they go out, or just sleep less and code more. I know some people who can function well with just two or three hours of sleep. I’m not one of them. I need at least seven hours of sleep, or else I’ll most likely be moody the next day due to a nasty headache that just won’t quit.

I’m also afraid of getting into the habit of drinking highly-caffeinated drinks. I think I drink a lot more Red Bull than the average person, but I don’t do it every day to avoid creating a dependency on them. It happened once with Mountain Dew (where I drank two every morning before 9:00 AM, and once I stopped, the morning headaches started). It’s scary to think about creating an unhealthy habit, like any drug addict would.

So, how do people do it? I’m really curious. I want to create some study habits that will continue no matter what I want to learn, but I don’t want to sacrifice something that I know I will miss in the future (like my friends or my health). Does anyone have any tips on study habits? Does it cut into time you can spend with friends and family? Do you barely sleep? I hope I can get right on track in the upcoming months, and be the coding-maching I know I can be.