Tuesday, October 20, 2009

BTI CEO Presents Kanban


CEO MJ Wivell presented Yes You Kanban to the Applications Agile Network. Mr. Wivell's presentation gave software engineers practical techniques to transition from a Scrum development methodology to Kanban.

Kanban is a software development methodology that allows for continuous workflow. Scrum batches work items for timeboxed sprints while Kanban focuses on single work items to flow through the system.

Mr. Wivell explained that "Kanban can help a good team go to great, but not a bad team go to good."

Software development is a team sport. BTI builds disciplined teams that win!

Wednesday, October 7, 2009

From Scrum to Kanban Part 2

Before applying Kanban to your development methodology we must understand the basics of Kanban.

What is Kanban? Kanban is a Japanese word. Kan means visual. Ban means card or signal. Therefore, a Kanban is a visual indicator that triggers action.

For example, a when you go to Starbucks to order coffee, the cashier marks a coffee cup with your order. The coffee cup along with the markings are a Kanban.

Other Kanbans in our everyday life include stop signs, stop lights, alarm clocks, etc . . .

The Kanban Board is a way to provide visual indicators that trigger action for software development team. As we continue with this series we'll see how the Kanban Board uses visual indicators to trigger action.

BTI builds disciplined teams that advance collaboration.

Wednesday, September 30, 2009

New in Edge Rails

I was watching the rails commits and noticed this. They have just added something called orchestra to ActiveSupport. It is an instrumentation tool for ruby and rails. Below is the documentation from orchestra.rb.

Orchestra provides an instrumentation API for Ruby. To instrument an action
# in Ruby you just need to:
#
# ActiveSupport::Orchestra.instrument(:render, :extra => :information) do
# render :text => "Foo"
# end
#
# Those actions are consumed by listeners. A listener is anything that responds
# to push. You can even register an array:
#
# @listener = []
# ActiveSupport::Orchestra.register @listener
#
# ActiveSupport::Orchestra.instrument(:render, :extra => :information) do
# render :text => "Foo"
# end
#
# event #=> ActiveSupport::Orchestra::Event
# event.name #=> :render
# event.duration #=> 10 (in miliseconds)
# event.result #=> "Foo"
# event.payload #=> { :extra => :information }
#
# Orchestra ships with a default listener implementation which puts events in
# a stream and consume them in a Thread. This implementation is thread safe
# and is available at ActiveSupport::Orchestra::Listener.
#

Ruby Enterprise Edition version 1.8.7 has just been released you can download it here.

Check out this blog about an alternative to AutoTest called Watchr

Saturday, September 19, 2009

From Scrum to Kanban Part 1

Scrum has become the most widely accepted agile development methodology throughout industry. As it has gained popularity teams are analyzing the pros and cons of Scrum.

With the help of Mary and Tom Poppendieck's Lean Software Development, my team As my identified the following deficiencies in Scrum:
* WAITING
* PARTIALLY DONE WORK
* TASK SWITCHING
* EXTRA PROCESSES

WAITING
Our team had a two week development sprint ending on Thursdays. On the Wednesday prior to the sprint end date we would have a code freeze. Thursdays were used to test the code and Friday's were spent demoing the product and planning for the next sprint.

In theory this sounds great. But in practice I found software developers are not great testers. Developers found themselves sitting on their hands WASTING most of this time WAITING for new coding tasks.

PARTIALLY DONE WORK
Throughout each sprint our team would have many tasks in the "In Progress" section of our task board. Each task would be 80% done, but NONE of them would be 100% done.

TASK SWITCHING
Since we had a lot of work "In Progress" team members were constantly working multiple items at once. A lot of time was wasted while a developer would switch from one task to another. Each task switch required the developer to recall what the task inquired and re-learning the code during each switch.

EXTRA PROCESS
Each developer had a different definition of what it meant to be DONE. We found inconsistencies in the steps each developer took to complete a task. Some steps were not needed.


KANBAN
As we researched how to solve these issues we stumbled upon Kanban. Kanban is a lean software development methodology that helped us address the issues described above.

In subsequent posts I will describe Kanban in more detail and how we went from Scrum to Scrumban (a Scrum/Kanban hybrid) to Kanban.

BTI builds disciplined teams that advance collaboration.

Tuesday, September 8, 2009

UI Tools

I've been doing some UI work recently and stumbled across these free tools online:

http://www.pixlr.com/editor/
If you are looking for an alternative to Photoshop, this is a great flash app you can use and save your work locally. I've found it to be a great place to create gradients. Easy to use and there are Rest services other apps can use to edit images. The best thing, everything is free!

http://colorschemedesigner.com/
If you are not a color wheel expert like myself, start here! A cool tool to help you come up with a color scheme for your website. The tool will give you corresponding colors to complement your color choices as well as a host of color contrast options. The most useful tool for me is the ability to demo you color choices immediately with the "example" pages.

Enjoy!

Thursday, September 3, 2009

Tidbits

Just a couple of links to some interesting blogs or projects that I've found.

CouchRest which talks about CouchDB, a document oriented database. It's a very interesting concept and I hope to try it out soon.
Bowline is asking for testers and contributors. If you do your programming on a windows box please test it out.

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.

CEO and software engineers speak to Lynchburg College computer science students

Lynchburg, VA - Barlow Technologies, Inc.'s (BTI) CEO MJ Wivell and software engineers Chris Jordan and Jason East spoke to Lynchburg College computer science students about developing software applications in the corporate world. Mr. East emphasized the importance to understand basic object-oriented (OO) principles to enable students to have the ability to program in any programming language. Mr. East explained, "If you can understand objects in C++, you can make the transition to JAVA, C#, or any other language with ease."

Mr. Jordan continued with taking OO principles and solving problems with coworkers, "In the corporate world coding is a team effort. You must be able to work with your team to develop a finished product."

Mr. Wivell described the importance of code quality for long term maintenance. "If you think of your customer as the next programmer that will maintain your code, the way you write code will change. Instead of naming variables "x" and "y" you will begin to understand the importance of taking the time to critically think about the names you give variables, methods, and classes."

Furthermore, students were provided insight on the “How Tos” on finding the first job in areas of interviewing, resume writing, and utilizing professional resources.

BTI is a fast growing software solutions company headquartered in Ashburn, VA. Founded in 2004, BTI provides development expertise for web applications and enterprise services.

Third Annual Charity Giving

Ashburn, VA - Barlow Technologies, Inc.'s (BTI) provided employee directed donations to local and national charities. For the third year running, each BTIer selected a charity of their choice for a financial contribution and the following charities were chosen:


BTI is a fast growing software solutions company headquartered in Ashburn, VA. Founded in 2004, BTI provides development expertise for web applications and enterprise services.

BTI supports Urban Mentoring Program

Washington, DC- BTI made a donation to a local group Summit for Someone (SFS). SFS is one of the major fundraising groups for Big City Mountaineers (BCM) , Photo on Mt. Rainier a non-profit organization who takes groups of at-risk inner city teens all over the country for 8-10 day back country trips where they're paired one-on-one with mentoring adults. In exchange for raising money for BCM, members of SFS were able to climb Mt. Rainier, which at 14,410' is the highest mountain in Washington and one of the tallest volcanoes in the country.

An SFS member stated "Support from generous people and companies like BTI helped change the lives of deserving kids and it helped me reach the summit of one of the most sought after peaks in the country."

BTI is a fast growing software solutions company headquartered in Ashburn, VA. Founded in 2004, BTI provides development expertise for web applications and enterprise services.