Monday, April 13, 2015

The power of integration

Integrating pre-written and tested components is a common practice in software development. When designing a large scale solution, in the interest of time and budget it is many times a very good idea to integrate pre-existing code rather than writing it from scratch.

Weather they are open source or white labeled / licensed these pre-existing components will help both the client and the developer.

Here are a few examples of commonly used pre-existing components:

1. Shopping carts

There is a large variety of shopping carts available on the market. They range from carts for small shops to enterprise level carts that can handle large inventories and large numbers of concurrent transactions. Shopping carts are generally easy to configure, customize and straight forward to hookup to most of the industry's standard payment gateways.

Here is an example of a popular Ruby gem that offers a shopping cart

https://github.com/spree/spree

Other popular solutions include Volusion, Big Commerce, Shopify, Web.com and Yahoo for Small Businesses.

2. Shipping and handling modules

While most of the shopping carts have a shipping component, there are specialized shipping and handling APIs that do a very good job. Those are good to integrate especially when you have to deal with international shipments and non-standard addresses formatting. They are also great if you do not have a specialized shipping and handling company and you want to be able to address complex postage and shipping requirements with in-house personnel.

An API that does a very good job with this is https://www.easypost.com/

Other popular shipping and handling apps are the ones offered by the popular carriers like FedEx, UPS and DHL.

A Drupal based module is this https://www.drupal.org/project/commerce_shipping

3. Chat clients

Chat clients are very popular nowadays. You will definitely get requirements to implement a chat client (and possibly a chat server as well) if you work in social media projects or projects that involve online support (including IT support).

Back in the hey days of dotcom you had to do all kinds of magic, open up and close all kinds of sockets and write your own chat applications. But nowadays you have them at your fingertips.

Well known chat clients are Userlike, Pidgin and Trillian.

4. Games

To engage their users base, nowadays a lot of the interactive online platforms and social media sites require the availability of online games or gaming platforms. While your shop may not be a gaming development studio, you still do have access to a variety of online gaming platforms that can be easily integrated in your solution.

Some of the most popular gaming platforms are Arkadium, GamezBoost and Gamer Launch.

From our experience integrating games in social media platforms does require some funds (as most of the gamers charge at the level of $5k/month for the service) but it is by far much less expensive and faster than developing your own custom games as a company. The gaming platforms are titles rich as well, some of them providing hundreds or even thousands of different games. Latest platforms are also mobile ready.

5. Calendars

A lot of educational, events based or marketing driven websites require online calendars implementations. Usually the staff has to be able to share their calendar, add/edit/delete events, send notifications and updates and integrate with other standard calendars such as Google's and Outlook. Since a couple of years ago more requirement are for all the calendars to be mobile ready as well.

You can embed Google's calendar in WordPress https://en.support.wordpress.com/google-calendar/ or you can use one of the popular open source calendar servers such as http://calendarserver.org/

6. Standard servers (network applications)

When working in network applications such as load balancers, L4_L7 traffic management devices or other similar software/hardware solutions you will have a need to integrate some standard network services such as DNS (http://maradns.samiam.org/), DHCP (http://dhcpserver.sourceforge.net/) or NAT (https://github.com/lontivero/Open.Nat).

In the old days we used to have to write our own load balancing code but the latest versions of linux kernel made it much easier with things like LVS.

7. Language and currency converters

When you work on localized websites you will more likely run into the need of implementing language and currency converters. There is a wide variety of plug-ins for all the major platforms including WP and Joomla plug-ins. They cover automatic site content translation in many languages and currency converters for all the major currencies.

Here are some of the most popular translation tools: https://wordpress.org/plugins/wordpress-language/, WPML.org, qTranslate, Stella. For currency convertors you have Google's, Oanda and Yahoo Finance.

We used language and currency converters in real estate sites that target international markets in addition to the US market. In Miami a Spanish plug-in is always a great idea to have as well.

8. Standard feature sets for social media

A lot of the current niche or business driven social media platforms use a standard set of features (on top of many custom ones that depend on the solution). They generally include profiles and bios definitions, photo galleries with captions, the ability to follow users, like and dislike content, post comments, pictures and videos etc.

There are many open source pre-written modules that support social media platforms. One of them is The Social Stream https://rubygems.org/gems/social_stream/versions/2.2.2. Another one is Networkx in Python. Jomsocial as well is a very popular framework to write social media functionality on top of Joomla http://www.jomsocial.com/.

For straight-forward, standard looking Content Managed websites with a responsive web design requirement people can also use standard professionally looking pre-designed templates. These templates are very inexpensive, very easy to customize and have a big advantage: they do not necessitate involving and paying a professional graphic designer.

Here is a link to a site we occasionally use to pick up templates from:

http://www.templatemonster.com/wordpress-themes/53484.html

Here are also a few considerations when doing research to choose a pre-defined component:

1. Security

No matter what plug-in you implement consider security and understand possible vulnerabilities. If the module is open source it is easy to review the code for potential issues. If it is not do your online and offline research on the company / group that provides the module. Even the big shops have vulnerabilities and some components are more secure than others. Do your due diligence.

2. Scalability

When you work on larger scale systems consider the effort invested in growing up a pre-written module in comparison to a custom one. If the effort to customize the module is larger, then stick with writing custom code.

3. Clean code & flexibility

Always review the modules code thoroughly to see how flexible and easy it is to be customized to your clients needs. I.e. a chat client is pretty standard but a custom DNS server may involve more customization and configuration. You want to work with clean modules, things that are standard written and using best practices.

4. Support and documentation

Always test the tech support of the company that provides the module and/or check the online forums / discussion boards of open source groups. Most of these modules are actively maintained by large groups of developers. Support and documentation tend to vary in quantity and quality.

As we do a lot of Content Management, Social Media and e-commerce software development we successfully use a lot of these in our daily endeavors and our clients are happy every time when we can save them time and money while maintaining the quality, flexibility and reliability of the delivered solution.

From a business stand-point we have seen dollar$ savings for the client, depending on the size of the project and number of components, from 15% all the way up to 40%(!) calculated for an average complexity 3-6 month project.

Make it a great day!

Adrian Corbuleanu
Miami Beach, FL
http://wittywebnow.com