Navigation

ADS specializes in using Ruby on Rails to build advanced, scalable, database-backed web sites for organizations of all sizes. Find out more at our website.

Atlantic Dominion Solutions

When To Say NO To A Project

By: Robert Dempsey | Tags:

During my Agile talk at RailsConf 2008 I was asked if we turn down jobs. My answer was yes. Some clients can work within a scrum process, others cannot, and yet others you just want to stay away from. A follow-up question to that was how I know if we should turn down a project, what are the indicators that someone might be a bad fit for scrum or the company. My responses included:

  • The person has not invested any time up front to create any documentation listing what they want their site to do.
  • The person is asking for an estimate on a laundry list of features that they cannot explain the goals of (i.e they heard the stuff is cool and want a site to do all of it).
  • They are trying to rush into a project without much forethought (similar to #1 but with added urgency and increased danger of failure).
  • The client is non-technical and attempting to dictate application architecture.
  • No budget. While a budget isn’t always a necessity, it usually means that the person on the other end is fishing and doesn’t have funds yet available. This is more of a warning sign than a “turn down this project” sign since people sometimes go for funding once they know how much their project will cost.

Note that I said “might” before, as some of the above can be handled through education. Chris pointed out a list of Software’s Classic Mistakes, some of which apply to turning down projects as well. The main ones that jump out at me are:

  • Overly optimistic schedules
  • Unrealistic expectations
  • Lack of project sponsorship
  • Lack of user involvement

What are the “stay away from this one” signs that you look for?

Share this post

We posted a position for a VP of Marketing about two weeks ago. So far, we have received 10 applications. Out of the 10, here are the stats:

  • Mentioned my name in their cover letter: 1
  • Mentioned our company name in their cover letter: 1
  • Mentioned both in their cover letter: 0

I’ll never forget an experience where I applied for a job, got an interview (which lasted all day), and at the end of the day spoke with the CEO of the company. He looked at me and asked me if I knew who he was. As I had not done my research I didn’t, and of course I didn’t get the job. That experience has stuck with me ever since.

I don’t think I am asking for too much. If you go to our job posting and click on our logo at the top of the page, you will be taken to the main job site, where I am mentioned by name as the “talent agent.” It is pretty common to click on a company logo and be taken to the home page of the site. What this tells me is that people are applying for a position without looking into the company at all. Many of the cover letters are simply lists of credentials. That doesn’t get me excited, and that definitely doesn’t fit into the new rules of marketing.

Do you think my expectations are too high? I’d love to hear your opinion.

Share this post

I start many mornings by going to the spirit house in our backyard and thanking the spirit for all of the great things I have in my life. This daily meditation is a great way to start the day off on the right foot, and keeps me positive in times of doubt and uncertainty. It also serves as a daily reminder of all of the good things and people I have in my life. If I don’t get out to the spirit house I do my meditation on the way to where I am going (with eyes open).

On the way to school this morning I was thinking about all of the people whose advice I have been getting over the past months, and how lucky I am to have these great resources. As there is no yin without yang, my thoughts then shifted to the people I have little or no respect for. If I had let my thoughts linger there I could have gotten wrapped up in how awful these people are, how self-centered they are, yadda, yadda, yadda.

This type of thinking is extremely negative, harmful, egotistical, and a waste of time. What I did instead was think of why I don’t like these people, which of their attributes led to my dislike, and what I can learn from them. I turned it into a learning experience to help shape the way I am, and how I interact with those around me.

Learning is a continuous process, and one which we need to be open to. If we are close-minded then we cannot learn, and therefore cannot grow. Work to learn from everyone around you, especially those you dislike. They have much to teach.

Share this post

Do Nice Guys Finish Last In Business?

By: Robert Dempsey | Tags:

Liar

Can doing the right thing in business get you ahead or be a detriment?

I had lunch yesterday with a good friend of mine who is the head of sales for a systems integration company here in Orlando. He told me a story about how a vendor of theirs had asked them to do an install job for some equipment sold by a competitor. They agreed. When the install tech called the client to request some vendor-required paperwork the client blew up at him, and then called the vendor who pulled them off the job. When my friend called the vendor to find out what happened he was told that there was a problem with the install tech and his lack of people skills. That was funny considering that this same tech sold a large amount of equipment not a few weeks previous to a very large client. So what was the real story? It was the end of the quarter and the vendor’s sales person was trying to get their numbers.

When I first had Atlantic Dominion Solutions up in Washington, D.C. I remember a client telling me that I was going to have trouble in business because I was too honest. I also remember how, less than two years ago, I was incredulous that even with signed agreements clients still wouldn’t pay for services they had received. And in more recent times, a client we are no longer working with agreed one day to work within a development structure (weekly deploys and reviews) and the very next day broke out of that structure saying, “I don’t understand why it is a big deal.”

That is just the tip of the iceberg.

I have never been one to sugar coat estimates for clients or tell them it will take less time when in reality I know it will take much longer. We have clients come to us all the time that were told by a company that it will take x hours and the project took twice as long or more. We have had projects run longer than expected but we didn’t lie about it nor did we honestly expect in the beginning that they would take as long as they did.

What do you think? Can a business succeed without using deceptive marketing techniques and business practices, or is it just business as usual? I’d love to hear from you.

Share this post

Make money with ADS

By: Robert Dempsey | Tags:

ADS is happy to announce the ADS Referral Program. Starting today developers, designers, and others can make between $200 and $500 by referring a customer our way. In sticking with the “keep is simple” philosophy, here’s how it works:

That’s it! We take care of the rest. Learn about all the details on the ADS Referral Programs page of our site.

Share this post

I was getting a little fed up touching every single directory that was empty after I created a new Rails app and than pushing it to a git repo and having it not include the empty directories. So, I created a short quick script to help me out. I didn’t test it more than a couple times, but it seems to do the job. Anyway, here it is:

def touch_gitignore(path = '.')
  Dir[File.join(File.expand_path(path), '**')].each do |file|
    if File.directory?(file)
      touch_gitignore(file)
      if Dir[File.join(file, '*')].empty?
        `touch #{File.join(file, '.gitignore')}`
        puts 'touched: ' + file
      end
    end
  end  
end
 
ARGV.first ? touch_gitignore(ARGV.first) : touch_gitignore

Yes, I’m sure it can be improved. As I said, it was quick and dirty, out of frustration even.

As an example how to run it, if I named the file I pasted the code from above into ‘gitignore.rb’ then it would be something like this:

chris$ rails test
chris$ ruby gitignore.rb test

If you found this useful, how about a recommendation on working with rails?

Share this post

After the initial launch of What’s up in Ruby, people were confused about what we were trying to accomplish. They saw the site as another search engine specific to the Ruby space.

That was my fault.

The confusion was understandable. The design of the site emphasized search, and the initial post I did was off track. We got to work right away on these issues and today are launching a major update to What’s up in Ruby.

The goals of What’s up in Ruby, and the series of niche sites we are launching, are:

  • Provide insight into the latest conversations going on within a context (topic)
  • Take our visitors to where those conversations are taking place
  • Allow our visitors to search for other conversation topics of interest to them, returning results that are only relevant to the context (i.e. not searching the entire Internet)

The updates we have done over the past week accomplish those goals. What we did was:

  • Update the design to emphasize the conversation items
  • Make the site perform a search when you click on a conversation item
  • Return results ordered by the number of times the conversation item is used
  • Add pagination to the results page to make browsing easier
  • Run our feed pull every four hours so you have the freshest conversation
  • All the code, all of it, is 100% Ruby and Ruby on Rails goodness

With this Beta 2 release we continue to choose all of the RSS feeds we pull. With 1.0 we will be asking for your suggestions of feeds that are relevant to the context. The more feeds we get the better the site becomes at informing of you what people are talking about.

Thank you all for your initial feedback on the site. Keep it coming!

Share this post

You’ve given us feedback and we have listened.

My goal with whatsupinruby.com (and the other what’s up sites we will be releasing) is to get rid of my RSS reader. To do this, I need the site to do two things:

  • Tell me what people are talking about in a given context
  • Take me to those conversations so I can learn more

Whatsupinruby.com does the first, but frankly falls down in the second. The issue is our approach. Rather than our results being a list of the latest posts on the topic (in this case Ruby and associated technologies) it spiders all things Ruby and returns Google-like results based on links, keyword frequency, etc. While that is what we built and what I originally asked for, that is not what I want. What I want is a list of sites that are talking about the conversation item I am interested in (i.e. ruby, rails, memcache, etc.).

Another point of confusion (again caused by me) is the search box and its prominence on the site. The real reason for the site isn’t search (which you can use Google for) but rather to be kept up to date on the latest conversation. The prominence of the search box takes away from that in a big way. We are changing that.

We are currently updating the site as follows:

  • Updating the site design to give prominence to the conversation items rather than the search box
  • When you click on a conversation item it will auto-search rather than putting the search term in the search box
  • Results returned by a search will be a list of the latest blog posts that are discussing that item
  • Even more to come in 1.0

What do you all think? Will that make what we are doing more or less relevant to you all? Will the updates we are putting in place help people to understand our goal? We’d love and welcome all of your feedback.

Our goal is to put out the improved whatsupinruby.com by early next week.

Share this post

I follow close to 300 RSS feeds. I do this to follow conversations and trends across a variety of topics including web development, business, marketing, parallel computing, and much more. The problem with this is information overload. I can clear my RSS reader at midnight and by morning have more than 1000 new items. Within a few hours I can quickly lose track of what’s going on. If I miss a few days, there is no going back.

Another reason for this amount of reading is to have a jumping off point for a search. I “listen” in on what’s being discussed and as topics bubble up to the top, I use that to perform more research via search engine. If I know nothing about the subject past what people write, I usually start off using industry buzzwords. Most of what I get back is noise; it isn’t relevant. I love the fact that everyone and their mother is now a content producer writing on every subject known to man, but by doing so the level of noise has greatly increased. My search and the results I get back lacks context.

Today’s search engines index the entire web. When I go to a search engine and type in a keyword I get billions of results. Results are ordered based on how many people are linking to those sources, the quality of those incoming links, and much more. Smaller niche sites with lower traffic get buried. That’s a problem. It is those niche sites that to me have more value than some of the larger sites that may have an article or two on a popular subject.

Another issue I find is a lack of context in trend information. I type in “Ruby” and “Java” and half the results are about the tsunamis and Java the place, not Java the programming language. When I try to apply context I get errors. But even beyond that, I don’t want to simply know what people are searching for since many don’t know what to search for in the first place. I want to see the trends in conversations within a given topic, or context.

What I wanted was a site that tells me what is going on within a given context, and then allows me to search within relevant sources for that context. Rather than reading hundreds of RSS feeds and performing the filtering and analysis myself, I want the site to tell me what is going on, and allow me to dig deeper. I then want to see the trends in conversations within that context. For me, it’s all about knowing what’s going on, searching within relevant sources, and seeing emerging trends, all within a context.

To that end, Atlantic Dominion Solutions is happy to announce that starting today, we are launching a series of niche search sites that do just that, starting with http://www.whatsupinruby.com. When you go to the site, you will see the top 30 conversation items that are bubbling to the top of the conversation. Click on the link and search within sites that are relevant to that topic. You can type in anything you want, but we give you a jumping off point based on the latest conversations.

With this beta release, we tell our engines what feeds to follow and what sites to spider. With the 1.0 release, you will be able to tell us what feeds we should add, what sites we should spider, and see more than the top 30 conversation items. The more you provide, the better it gets.

As online conversations grow we need a way to filter the noise, get to the heart of a subject, and find out what is really going on. We need to identify emerging trends and measure them over time. This new way of searching starts today. Checkout http://www.whatsupinruby.com. It’s just the beginning.

Share this post

On requesting an estimate

By: Robert Dempsey | Tags:

When we work with a new customer to prepare an estimate we always ask for two things:

  1. A list of who is going to be using the site (user roles)
  2. What each of those people needs to be able to do

There are many reasons for approaching a requirements spec in such a way:

  • For non-technical people this is an easy way to write requirements
  • There is less work for the customer - they focus on the value they want to offer not how to make it happen (that’s our job)
  • User stories can be created more easily
  • The requirements are clearer so less back-and-forth is required
  • Each bullet point can be easily tested by the customer during acceptance testing
  • Long detailed specs make me nauseous and will most likely change many times over as the application is developed and deployed

How do you approach requirements gathering? What level of detail do you ask for when create an estimate?

Share this post