Integrum and me

February 9th, 2008

In August 2006, I left my employer to embark on a journey to change my skill set and mind set. My previous employer was a very large defense contractor who offered a decent workplace, average salary, excellent benefits, and, of course, job stability. I announced to my friends and family that I would be leaving this employer, returning to Arizona and leaving the ranks of the employed for an undetermined amount of time. It seemed ludicrous to most people at the time, myself included. I was sure of only one thing at that time: I intended to refocus my career goals in an entirely different direction.

Unemployment

I had attempted to take my career in a different direction while still working, but I found that after 60-80 hour work weeks, a Master’s program in Computer Science and a wife and two young children, I didn’t have the energy. Voluntary unemployment was a calculated risk that I could learn what I needed to enter my newly chosen career path before I was forced to declare bankruptcy.

Unemployment is not really as bad as I thought it would be. I was able to spend time learning the things I was truly interested in, including Ruby on Rails. I spent a lot of time with my family and generally enjoyed myself. I found that I could actually work longer with more focus that I ever did at a previous employer without feeling tired or burnt out.

Eventually, our finances drained to the point of alarm and I began to look for a professional position working with Ruby on Rails.

Contracting

Since early 2007, I have been contracting my Ruby on Rails services to various employers. While this was lucrative it was also very frustrating. During that time I learned a little about myself and the environment in which I work best. I invest myself in what I do and as a contractor I found it hard to not get involved beyond what was required of me.

My first contract position was a fixed bid contract that was referred to me by my brother. It allowed me to choose the technology and create a simple student tracking system for a wellness center. It was deployed internally in January of 2007 and as far as I know it is still being used. My first real, deployed and used application! With that experience under my belt, I placed my resume on various websites advertising my interest in Ruby on Rails development positions. In a few short days I was contacted.

My second contracting position was an 18 month contract to create an EMR system for a local, privately held behavioral health organization. This was the big test for me to gauge if my calculated risk would pay off. Unlike the previous contract I was interviewed about my knowledge of Ruby on Rails, databases and Agile development. Two weeks after advertising my resume, I was hired to work professionally with Ruby on Rails. I learned a lot during my time contracting for that company, including how much I didn’t know, and met a great Phoenix Ruby on Rails developer, Josh Huckabee. I also attended my first RailsConf in Portland, OR in May with Josh and a few of the full-time employees.

Attending RailsConf was a real turning point for me, in many ways. Part of what I was missing as a lone wolf developer was the sense of community and interaction with other Rubyists – I met some great people at RailsConf! Upon returning, I began attending the Ruby User’s Group in Phoenix, Phoenix Rails Group and Refresh Phoenix to connect at a local level with other enthusiastic Rubyists, developers and designers.

This was the beginning of the end of my time at my current contract. As I discovered more about agile Ruby on Rails projects I realized that it would be highly improbable to influence the current direction of my contract employer. For three more months Josh and I attempted to influence the direction of our project and rescue it from impending failure. In August, we made our exit and, because of RailsConf and local networking, we began contracting for a Phoenix Ruby on Rails consulting company, Integrum Technologies.

Integrum and Me

In January 2008, Josh and I became full-time Integrum code monkeys. Integrum is an amazing place to work and completely unlike any company I’ve worked for. There is a level of openness and transparency that I have only read and dreamed about. Of course, Integrum is not perfect, but we are working hard to constantly improve ourselves while still having a blast. My wife constantly reminds me that Integrum is fueled by fun :) I believe that this year will be an important one for our company. You can keep up on what’s going on with us by reading, or subscribing to, the Integrum blog.

A year and a half has passed since I resigned my comfortable, full-time position in California. In that time I have accomplished more that I could have hoped for and am happier than I’ve been in some time – my calculated risk paid off.

I attended Desert Code Camp this weekend. It is a free technology event in Phoenix, AZ with speakers presenting on a variety of topics. One of the interesting ones I attended today was called SEO for Coders and was presented by Jerry Ferguson. I don’t know much about SEO, just the basics and this was a good introduction into what I can do as a programmer to assist in optimizing a site for search engines.

Here are some highlights:

  • Domain/sub-domain names – Pick a domain name that contains a keyword that you would like to target. If you don’t have control over your domain name, then it’s still possible to create subdomains with a descriptive keyword (e.g., finance.yahoo.com) Domain names should be keyword rich, short, and should be a dotcom.
  • Relevant & useful content – Your site should contain relevant and useful content for what you’re trying to optimize for. Two measures of how well your site performs in this regard are keyword density and keyword prominence. See ranks.nl for a tool to help analyze for these measures.
  • Page title – Every page should have a title. The title should be reflective of the content contained on that page. Don’t use a generic title for all pages. If you put the domain name in the page title, then it should be at the end to increase the prominence of the title itself (unless you are specifically targeting your domain name as a keyword).
  • Page description – Every page should have a description. The description is taken from the description meta tag and is used in the snippet shown by search engines in search results. If the description contains the keywords that a person searched on, then it is shown, otherwise snippets from the page are shown containing the keywords.
  • URLs – URLs should be keyword rich as well. Instead of URLs like foobar.com/articles/1 create URLs with keywords like foobar.com/articles/search-engine-optimization-for-coders. Additionally, URL parameters are generally not very useful, such as foobar.com?a=12345&b=woohoo&c=cookie.
  • Redirects – Use 301 redirects to maintain a consistent, canonical representation of your domain name. Do not have both a www.foobar.com and a foobar.com. Choose one and go with it. The other should redirect to your choice. If you have both then they’re treated as separate sites and are both indexed by search engines. This will result in duplicate indexed content and search engines don’t like duplicate content. Duplicates are usually shoved into a supplemental index of search results. Additionally, URLs with and without trailing slashes are treated separately. So foobar.com and foobar.com/ are two separate sites in the eyes of a webcrawler. Pick one and go with it.
  • Sitemaps – Create a sitemap and submit it to search engines. Presenter referenced GSiteCrawler but it looks like Windows only. Anyone know any free alternatives?
  • Valid markup – Create standards compliant sites and everyone wins. If you’re using Firefox, then the Web Developer extension can help you with validation.
  • Speed – Pay attention to the speed of your site as it affects not only your user’s experience, but may affect your indexing as well. Again, if you’re using Firefox then try ySlow to help with performance optimization.

Jerry also mentioned the Overture tool for keywords and Matt Cutts blog for how Google views spam.

There was also a neat Google trick he showed that I didn’t know about. If you search in Google using allintitle it will show you search results that contain those keyword in the page title. Very useful. Try it here to see all the websites out there who forgot to put page titles on their pages ;)

Update: Here’s a link to the presentation.

Update: Josh pointed out Stefan Vervoort’s article on Off-Site SEO. He also has an article on On-Site SEO. Go check them out!