Wednesday, October 31, 2012

Ruby on Rails - Fad or Here to Stay?

Ruby on Rails, or Rails for short, is a web-application framework for the Ruby programming language. Since it's introduction in 2005, it has become extremely popular due to its ease of use and rapid development principles. 

The info-graphic shown above illustrates the growth in popularity of Ruby On Rails. Most notable on the info-graphicis the increase in usage over the past year as well as the increasing demand for developers with Ruby on Rails skills. 

While these statistics can't tell the whole story, it appears as though Ruby on Rails has become very largely used and adapted. At this time, there are over 230 thousand websites that have been built using Ruby on Rails including sites such as GitHub, Living Social, as well as Hulu.

The increase in demand for the Ruby on Rails skill-set implies the increasing popularity of the framework in the corporate environment. It appears, at least for now, that Ruby on Rails has gained a strong foothold in the marketplace. It's ease of use as well as the capability of producing products at a rapid pace makes a strong case for organizations to adopt this technology.

Monday, October 22, 2012

CSS Awesomeness!!

Admittedly, up until taking a class focusing on web software, I have never had much of an interest in any web development. I've maintained and assisted in the development of several web applications, but I have never truly immersed myself in "web development". For work, I maintain several simple websites that display various query results from a database I maintain. While they are functional, noting that I put very little effort into the presentation of this material, they are also very unsightly ugly. Why, you ask? It's because I never moved beyond the simple HTML language to incorporate CSS.

CSS is a simple mechanism that allows a developer to add a style and theme to a webpage or web document. It separates itself content from design which allows HTML to focus solely on processing the markup of the content and not layout and design. CSS allows a developer to utilize a standardized layout and design across multiple webpages without the fuss of formatting each page to mimic the theme and look of another. Simply put, it makes it much easier to make your sites more presentable and uniform.

I'm definitely interested in learning more about CSS. After looking over many of my favorite sites, I realize that mastering CSS is one key to building some outstanding websites. Here are some beginner links for anyone who may be interested in this as well:


Monday, October 8, 2012

SaaS - How it's changed our lives

Software as a service (SaaS) is a revolution in computing that has significantly affected our daily lives. Everyone one of us use some type of SaaS software whether it be facebook, twitter, yelp, or webmail. SaaS has changed the game in terms of how users view and interact with software. Gone are the days where we need to buy the software, install it on our machines, keep our hardware compatible in order to run it, and continually patch it to ensure the security of our machines. With SaaS, most of the time all we need is a web browser and an internet connection.

So no more manually installing software everytime I get a new machine, no more having to carry around an external hard drive with your saved files, and no more worrying about licensing fees. So how does this all work and how is it phasing out the old "locally installed" software approach? 

1. Compatibility and accessibility - SaaS applications are available on any device, any platform, and at any time you need it (provided you have an internet connection). Because it's on the internet, it's easy to find and the learning curve for usage is low. 

2. Lower cost - Most SaaS applications are subscription based, there is a lower investment needed to adopt the application due to  lower hardware, software, and personnel costs. 

3. No upgrade or installation - All SaaS applications are web based and require no patches or upgrades on the customers end. 

This all means that I can access all my social networking sites and information from any computer in the world. In addition, I can store all my files on the cloud and read and edit documents from my phone or on any terminal in the world. I can collaborate with co-workers and peers around the world at any time. In most cases, the only thing I have to worry about it having a platform (any platform) to access the internet. It's all 

In the end, it means lower costs, no compatibility issues, and unlimited scalability. All in all, it seems that SaaS is the way forward for software in the future. I, personally, am more than willing to pay a small subscription fee to have access to a well developed and maintained product that is accessible from anywhere with an internet connection. With the money I save on having to constantly upgrade hardware, I will have the money to pay for the subscriptions and probably have a lot left over. Good deal all around!

Monday, October 1, 2012

Is designing bug free software possible? A look into "Design By Contract" (DBC)

Design by Contract (DbC) is an approach for designing software. According to Eiffel Software, the originators of this method, DbC can be explained as follows:

"DbC is a metaphor on how elements of a software system collaborate with each other, on the basis of mutual obligations andbenefits. The metaphor comes from business life, where a "client" and a "supplier" agree on a "contract" which documents that:
    • The supplier must provide a certain product (obligation) and is entitled to expect that the client has paid its fee (benefit).
    • The client must pay the fee (obligation) and is entitled to get the product (benefit).
    • Both parties must satisfy certain obligations, such as laws and regulations, applying to all contracts."
It is said that utilizing this method guarantees that bugs will be prevented by implementing a system of checks and balances. This method also promotes coding to exacting specifications, providing no more or no less that is necessary. This implies that developers should not try to add more features or functionality into their code than is necessary to accomplish it's original task. In this way, the behavior of all code can be guaranteed, predictable, and consistent. 

Here are the benefits of DbC in a nutshell:
  • reliability
  • maintainability
  • well-documented
  • simpler and consistent code
Some drawbacks of DbC:
  • requires more diligence on the part of the programmer (= more work)
  • may result in performance issues - due to checking conditions at runtime

This all sounds great to me! 

However, while the theory of DbC sounds like an incredible idea, how likely is it that people will adopt and adhere to these concepts.