Thursday, August 20, 2009

Quick Links and Edge Rails

Support for SQLite2 has been removed in edge rails. You can still install the plugin separately but the recommendation would be to update to SQLite3.

Here are a couple of interesting blog postings I've found.
Gemcutter - A New Gem Hosting Repository

Bowline - A Ruby GUI Framework

Saturday, August 15, 2009

Committed to Giving Back

BTI is committed to giving back to the community. See this video to learn more!



Tuesday, August 11, 2009

New in Edge Rails - Active Resource Enhanced SSL

Active Resource is incredible and makes using web services a breeze but it was lacking when it came to connecting to services over ssl. This past weekend an upgrade was added to edge rails that allows you the ability to define the certificate validation you require and gives you the ability to use x509 certificates. Below is an example of the new use case as described in the documentation:

# End point uses an X509 certificate for authentication. See ssl_options= for all options.
# class Person < ActiveResource::Base
# self.ssl_options = {:cert => OpenSSL::X509::Certificate.new(File.open(pem_file))
# :key => OpenSSL::PKey::RSA.new(File.open(pem_file)),
# :ca_path => "/path/to/OpenSSL/formatted/CA_Certs",
# :verify_mode => OpenSSL::SSL::VERIFY_PEER}
# end

Though this is may not be used by a large number of people it provides a great deal of flexibility for using Active Resource over ssl.

Wednesday, June 17, 2009

Commonly missed web service tests

I've been developing web services for a few years now and noticed that better testing is usually needed when you are using web services because there are some aspects that are out of your control. Over the past few years, I have seen many issues arise from using web services that could have been fixed or mitigated with better testing. Some of the most common come from a combination of lazy coding and unexpected results. All of these issues can be fixed or handled in a way that users don't get the dreaded 500 error with a stack trace which won't do much for your user.

The great thing about web services is that you can change what happens behind the scenes without having to re-issue a library or jar file, but this means that sometimes the order of the response may change. I've seen a few developers hard code the parsing of the xml response instead of following the service spec. For example, there are times a developer will just assume the first node is what they are looking for but not check to see if it is the data they want. When a service gets updated it should always follow the spec but that does not mean the order is guaranteed to stay the same. If you are lazy and don't check what attribute you get back it can lead to some unintended consequences. It would be wise to add a unit or functional test that might return things in a different order just to see what kind of results you get.

Most of the time I bet your web service is fast, Lightning McQueen fast as my four year old says, and returns in under a second, but what if it hangs for say a minute or two. If you expect the response in less than a second what will your application do. Will it timeout, will it just sit there and be unresponsive, or might it crash? These types of things occur rarely but you should still have tests for it. Otherwise you don't know what will happen when it does occur.

Incomplete results is something else that could really throw a wrench into your application. Let's suppose that you make a call it returns just like you expect. You check the response code and everything is good to go but unfortunately you didn't get the entire response. What will your application do when it starts to parse the response. Most that I've seen throw up a horrible 500 error with a stack trace to the user. I know this might be helpful for you the developer but most users won't know what to do with it. A simple test can be added to keep this from happening and you'll be able to recover gracefully.

I know that none of these examples are earth shattering but it's surprising how often these cause problems for developers. Web services can make our lives as developers easier but if you don't test properly you might start to curse the web service when it is actually your fault for not testing better.

Wednesday, June 3, 2009

Programming Language Popularity

This recent post to the Spring Source team blog has some interesting statistics from two independent rankings of programming language popularity. BTI is continuously expanding our skills into the most cutting edge areas of the industry, as well as strengthening our existing expertise. Studies such as these are valuable to understanding the software development landscape.










Tour de Cure


Reston, VA- BTIer Paul Cugini will be cycling in the Tour de Cure on June 14, 2009 in Reston, VA to make a difference in the lives of 20.8 million Americans with diabetes. Tour de Cure is a series of fund-raising cycling events held in 40 states nationwide to benefit the American Diabetes Association. The Tour is a ride, not a race, with routes designed for everyone from the occasional rider to the experienced cyclist.

Please join BTI in supporting Paul on his ride: Paul's Personal Page

BTI is a fast growing software solutions company headquartered in Ashburn, VA. Founded in 2004, BTI provides Enterprise Service and Machine Translation integration solutions.

Wednesday, April 15, 2009

BTI Gives To Compassion International

BTI financially supported Compassion International this fall to provide assistance to their global efforts in areas of the world in extreme need. Corporately, BTI believes in the importance of supporting organizations that impact the lives of children that live lives of poverty throughout the globe.

Compassion International exists as a Christian child advocacy ministry that releases children from spiritual, economic, social and physical poverty and enables them to become responsible, fulfilled Christian adults.

Founded by the Rev. Everett Swanson in 1952, Compassion began providing Korean War orphans with food, shelter, education and health care, as well as Christian training.

Today, Compassion helps more than 1 million children in 24 countries.

BTI is a fast growing software solutions company headquartered in Ashburn, VA. Founded in 2004, BTI follows a Principles over Process approach to implementing software solutions for web applications and enterprise services.