offering you a new perspective and fresh approach

Archive for November, 2008

Forecast Subscription Store Added to CSM Worldwide’s Site

Jenifer Keliikuli
Thursday, November 20th, 2008

CSM Worldwide now has the ability to sell a lower level quarterly forecast subscription. This store allows subscribers to access their subscriptions online, receive email notification when quarterly subscriptions are released, and facilitate the process of renewing a customer’s subscription.

We are particularly pleased with the AJAX interface we built into this store. It allows instant exchange rate calculations and quickly totals the shopping cart. The store processes transactions in the currency selected by the customer. Exchange rates are automatically adjusted according to real time exchange rate data. We used hide/display functionality to allow customers to get more detail on a particular forecast. The backend administrative system is intuitive and easy to use. As the beta tester developers for the bank’s new international payment gateway we were faced with some interesting challenges along the way in building out the ecommerce back-end. It was definitely a fun challenge, and the end result is a powerful store system with a clean and simple user interface.

View CSM’s Forecast Subscription Store

MVC Web Applications

Kai Keliikuli
Wednesday, November 19th, 2008

MVC (model view controller) is a design/architectural pattern used in software engineering. A well implemented mvc will isolate data storage, user interface, and business logic. In MVC the model is the data, the view is what is visible to an end user of the application and the controller is where the business logic resides. MVC was first described in a paper by Trygve Reenskaug and has been around since 1979.

The model

The model is the domain-specific representation of data presented to the application. MVC doesn’t specify underlying storage or the mechanics of access. However when trying to wrap your head around MVC the first time that can sounds like the model is a view of the data - which it is - just not the view in MVC. For a web developer the model means a relational database like PostgreSQL, MySQL or directories and files wrapped in a data abstraction layer written in a programming language like python, ruby, or php.

The view

In a web application the view is what is seen by the person using the application. This includes technologies such as: html, css,javascript and flash. The view has read access to the model and their can be multiple views of a single model. For example a multiple views could be written for a single model and mediated by a single controller using any of the following:

The controller

A web application controller processes and responds to http requests from the web browser initiated in a view and mediates this interaction. All application business logic ideally resides in the controller although it may sometimes reside in the model. Controller logic is usually written in a server side programming language like python

So why use MVC for the web?

As web application complexity grows so does the need to divide and conquer the development process. An MVC architecture makes this much easier to do. The model team can quickly create a unit tested stub interface and then continue on to write the sql queries and deal with the other underlying storage issues while the controller and view teams work in parallel using the stub they provided. As they code/unit test the model it remains consistent with the stub used by the other teams so that at integration costs are minimized.

The controller team can provide stub interfaces for the view team in the same way as the model team and ensure they remain consistent with the stub they provide to the view team through rigorous unit testing.

The view team is working on the user interface but they need data so they can mockup how best to present it and operate on it. If they build an interface based on a misunderstanding of what data they have access to and how they can access it then needless rework will result.

In an MVC web application the model is the only way the underlying data storage will be accessed. This approach makes it very easy to :

  • unit test your model
  • migrate and/or scale underlying data storage
  • reuse the model with a different interface like a data import system which immediately
    which can immmediately leverage all the validation, filtering and transforms you’ve already
    written in your model.
  • quickly deploy a developer api when your app becomes the next facebook or digg.

I’ve heard arguments that for the small team or lone developers the MVC architecture adds needless complexity. I work alone sometimes and for me the MVC architecture can be of even greater value because it provides a powerful conceptual tool for dividing and conquering a larger problem. For example when working on the model component I focus in on the data, sql , and python code. When writing the controller its all pretty much python. Then when building out the view
component its client side stuff: html,css,javascript, ajax. I don’t mind hopping around between all of these but when conceptualizing a complex or critical portion of an application its nice to be able to divide and conquer the problem by thinking in just one or two languages while doing so.

I hope this post helps those struggling with the concept of mvc or wondering about its applicability to web application development.

Content is King in SEO

Jenifer Keliikuli
Wednesday, November 19th, 2008

We get a lot of questions about search engine optimization. “How can I get my site in the top 10 results?” “What makes a site search engine friendly?” “Why isn’t my site coming up in the search engines?”

Our answer is simple. Add solid content to your site. The purpose of search engines is to help end users find what they are looking for. The more relevant industry content you have on your site, the more likely the search engines will be able to appropriately index your site. Keep your content fresh, and the search engines will keep coming back for more.

There is more behind the scene that makes a site search engine friendly (standards compliant code, proper usage of header tags, integrating search engine friendly technologies/media, etc.). However, you can do everything right in the code to make your site search engine friendly, but if you do not have content, the search engines will pass over your site.

Content is still king!

Working with Color

Jenifer Keliikuli
Tuesday, November 18th, 2008

I can’t imagine a world without color. For that reason, I’m writing my first entry on the JK Blog about one of my favorite topics: color. This is a broad topic. So to keep this short and simple, I’m going to start by sharing some of my favorite online color resources.

Topping my list of favorite color sites is colourlovers.com. It is the most inspirational site on color that I’ve found yet - offering everything from discussions and forums about color to color palette mixers, trendy palettes, color patterns… what doesn’t this site offer? It’s a paradise for a designer looking for inspiration or a little entertainment during a conference call ;-)

Another great color resource is colormatters.com. Now this site is more about the impact various colors have upon us along with the science and research behind color. It’s a fascinating site, and one that’ll give you plenty of interesting tidbits on color to share with all those around you.

This last site I find myself using quite frequently as well and is certainly one that every designer is aware of - pantone.com. It would be hard to not work with Pantone colors in this day and age where color and branding go hand in hand. For those of you not familiar with Pantone colors, here’s a quick overview: Pantone colors allow one to keep consistent coloring across media (from shirts to build-boards to brochures to web sites). Once you define your Pantone color, in theory, you should be able to always reproduce the exact same color. The Pantone site has a lot of cool products to help you match colors to the closest pantone color. It is a good resource, if not nearly as much fun as the other two!

I’ve got a lot more to say about color, but it’ll have to wait for another day!