<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <title>Well.ca Labs</title>
 <link href="http://labs.well.ca/atom.xml" rel="self"/>
 <link href="http://labs.well.ca/"/>
 <updated>2011-02-14T14:03:30-05:00</updated>
 <id>http://labs.well.ca/</id>
 <author>
   <name>Well.ca</name>
   <email>info@well.ca</email>
 </author>

 
 <entry>
   <title>How We Deploy</title>
   <link href="http://labs.well.ca/posts/how-we-deploy"/>
   <updated>2010-08-04T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/how-we-deploy</id>
   <content type="html">&lt;h2 id='how_we_deploy'&gt;How We Deploy&lt;/h2&gt;

&lt;p&gt;Even though we&amp;#8217;re a startup, Well.ca is a pretty big ship. Users just see the public website, but there are many, many other pieces behind the scenes. Our customer care team has their interface into orders and billing. The merchandising team is constantly adding new products using their own interface. Marketing wants to be able to keep track of what&amp;#8217;s selling, and how our various campaigns are working. And that&amp;#8217;s just a small part of the office. The warehouse is its own war zone, complete with pick and pack systems, postage interfaces, and re-order processes. To put it simply, there are a &lt;strong&gt;lot&lt;/strong&gt; of moving parts to a successful e-commerce site, most of them invisible to the public. They&amp;#8217;re all vital to the well-being of Well.ca, and they&amp;#8217;re all ultimately the dev team&amp;#8217;s responsibility.&lt;/p&gt;

&lt;p&gt;So, how do we do it?&lt;/p&gt;

&lt;p&gt;Our development team works off an Agile style process, with weeklong sprints. At the end of every sprint, we do a rollup of completed work and deploy to production. We also have a structure for deploying hotfixes mid-sprint, which I&amp;#8217;ll cover in a bit.&lt;/p&gt;

&lt;p&gt;We use git for source control, which lets us branch to our heart&amp;#8217;s content. For most of our projects, we use a &lt;code&gt;master&lt;/code&gt; and &lt;code&gt;production&lt;/code&gt; branch model, in addition to the usual topic branches.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/how-we-deploy-1.png' alt='Branching model' /&gt;&lt;/p&gt;

&lt;p&gt;Topic branches are merged into &lt;code&gt;master&lt;/code&gt; once they&amp;#8217;re tested and reviewed. To do our weekly rollup for production, it&amp;#8217;s a simple matter of merging &lt;code&gt;master&lt;/code&gt; into &lt;code&gt;production&lt;/code&gt;. During a weekly sprint, &lt;code&gt;master&lt;/code&gt; is always ahead of the &lt;code&gt;production&lt;/code&gt; branch by exactly the work done (and merged) so far that week (modulo any hotfixes done during the week).&lt;/p&gt;

&lt;p&gt;To handle the actual deployments, we use the trusty &lt;a href='http://capify.org'&gt;capistrano&lt;/a&gt;, pared down via our own &lt;a href='http://github.com/well/minicap'&gt;minicap&lt;/a&gt; project. In addition to production deployments, we also use capistrano to load code onto our test server cluster, which I&amp;#8217;ll be talking about in a separate post. We favour driving automation via rake tasks as opposed to putting a lot of logic in capistrano; where we have the choice, we make rake smart and capistrano dumb. It works well.&lt;/p&gt;

&lt;p&gt;I mentioned hotfixes before. We do hotfixes by branching off of the &lt;code&gt;production&lt;/code&gt; mainline to make our fix, then merging that branch into both &lt;code&gt;production&lt;/code&gt; and &lt;code&gt;master&lt;/code&gt; once the fix is complete. This ensures that &lt;code&gt;production&lt;/code&gt; is never ahead of &lt;code&gt;master&lt;/code&gt;, which conceptually means that there is never code in the production environment that isn&amp;#8217;t in our development mainline. You can see this in the above diagram.&lt;/p&gt;

&lt;p&gt;So that&amp;#8217;s how we manage and deploy a single project. Life is never that simple, however, and of course Well.ca is bigger than any one project. Our code is split into two main projects, which we term &lt;strong&gt;frontend&lt;/strong&gt; and &lt;strong&gt;backyard&lt;/strong&gt;. &lt;strong&gt;Frontend&lt;/strong&gt; is the site that you&amp;#8217;re familiar with. It encompasses our public site, catalog, and checkout systems. &lt;strong&gt;Backyard&lt;/strong&gt; contains most of the web interfaces Well.ca uses internally, including systems for customer care, merchandising, marketing and accounting. Although our two main projects share a lot of code, we treat them as separate entities, and they get deployed on different schedules. We also have a number of smaller projects to handle things like &lt;a href='/posts/affiliates'&gt;affiliate management&lt;/a&gt; and &lt;a href='/posts/imwell'&gt;live chat&lt;/a&gt;, and these also run on their own deployment cycles.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>AJAX &amp; Javascript</title>
   <link href="http://labs.well.ca/posts/ajax"/>
   <updated>2010-07-11T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/ajax</id>
   <content type="html">&lt;h2 id='ajax__javascript'&gt;AJAX &amp;#38; Javascript&lt;/h2&gt;

&lt;p&gt;AJAX-based user interfaces are employed throughout Well.ca. This allows for a dynamic, more seamless user experience.&lt;/p&gt;

&lt;h3 id='jquery'&gt;jQuery&lt;/h3&gt;

&lt;p&gt;Practically all of the AJAX and Javascripting on our site is enabled using a lightweight Javascript toolkit &amp;#8211; &lt;a href='http://jquery.com/'&gt;jQuery&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By using jQuery&amp;#8217;s cross-browser, event-binding and DOM replacement model, we can design our pages to &lt;em&gt;elegantly degrade&lt;/em&gt; &amp;#8211; that is, they work for as many users as possible.&lt;/p&gt;

&lt;h3 id='animated_ajax_addtocart'&gt;Animated, AJAX Add-to-Cart&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/ajax-1.gif' alt='Add to cart' /&gt;&lt;/p&gt;

&lt;p&gt;When a user adds products to their cart on Well.ca, the product image &amp;#8220;flies&amp;#8221; into the cart.. The user&amp;#8217;s gaze is pulled towards the shopping cart which begins the visual connection of the Add To Cart &amp;#8594; Checkout process.&lt;/p&gt;

&lt;p&gt;Animations like this are uncommon in traditional e-commerce partially because sites are worried about browser compatibility issues. In our case, we use a jQuery override method so that the site will auto-fallback to non-AJAX methods if the browser is not compatible.&lt;/p&gt;

&lt;p&gt;After the product enters the cart, the cart update (and new totals) are also enabled using AJAX &amp;#8211; this allows less clunky shopping, as products can be added to cart without leaving the page.&lt;/p&gt;

&lt;h3 id='moving_shopping_cart'&gt;Moving Shopping Cart&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/ajax-2.gif' alt='Shopping Cart' /&gt;&lt;/p&gt;

&lt;p&gt;Our &lt;a href='/posts/shopping-cart'&gt;rich shopping cart&lt;/a&gt; contains a lot of information, including the core button to proceed to checkout. In order to make sure that you can checkout anywhere, even if the page scrolls for a long time, we animate the cart whenever the user scrolls down.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Rich Shopping Cart</title>
   <link href="http://labs.well.ca/posts/shopping-cart"/>
   <updated>2010-07-10T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/shopping-cart</id>
   <content type="html">&lt;h2 id='rich_shopping_cart'&gt;Rich Shopping Cart&lt;/h2&gt;

&lt;h3 id='overview'&gt;Overview&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/shopping-cart-1.png' alt='Shopping Cart' /&gt;&lt;/p&gt;

&lt;p&gt;The shopping cart is the kernel to every e-commerce site. Bad shopping carts make you visit the checkout page, just to see the final price of things. Bad carts are clunky, hard to read, and disappear just when you need them.&lt;/p&gt;

&lt;p&gt;Most shopping carts are a disappointment.&lt;/p&gt;

&lt;p&gt;We hope the cart at Well.ca is different. It was our goal, when we built our shopping cart, to make it the most usable, fun, and information-rich cart possible. Below, you can learn more.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/shopping-cart-2.png' alt='Shopping Cart' /&gt;&lt;/p&gt;

&lt;h3 id='information_rich'&gt;Information Rich&lt;/h3&gt;

&lt;p&gt;There&amp;#8217;s a lot of stuff going on in our tiny shopping cart.&lt;/p&gt;

&lt;p&gt;In that tiny rectangle, you can checkout, change your currency, see your dynamic totals, and view full information on each product.&lt;/p&gt;

&lt;p&gt;Go ahead &amp;#8211; play with it :)&lt;/p&gt;

&lt;h3 id='ajax_enabled'&gt;AJAX Enabled&lt;/h3&gt;

&lt;p&gt;Animations like this are uncommon in e-commerce partially because sites are worried that the dependency on Javascript may cause browser compatability issues, hindering sales. In our case, we use a jQuery override method so that the site will auto-fallback to a non-AJAX method of Add To Cart if the browser is not compatible.&lt;/p&gt;

&lt;h3 id='hover_product_info'&gt;Hover Product Info&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/shopping-cart-3.png' alt='Shopping Cart' /&gt;&lt;/p&gt;

&lt;p&gt;A user may have 20+ things in their cart. In order to give full information on what&amp;#8217;s inside, we&amp;#8217;ve enabled hover information boxes on the products in the cart. Try moving your mouse over a product in your cart to see an example.&lt;/p&gt;

&lt;h3 id='it_moves'&gt;It Moves&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/shopping-cart-4.gif' alt='Shopping Cart' /&gt;&lt;/p&gt;

&lt;p&gt;Our cart contains a lot of information, including the core button to proceed to checkout. In order to make sure that you can checkout anywhere, even if the page scrolls for a long time, we needed to animate the cart whenever the user scrolls down.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Search</title>
   <link href="http://labs.well.ca/posts/search"/>
   <updated>2010-07-09T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/search</id>
   <content type="html">&lt;h2 id='search'&gt;Search&lt;/h2&gt;

&lt;h3 id='our_search_obession'&gt;Our Search Obession&lt;/h3&gt;

&lt;p&gt;Search is the primary way users find products on our site.&lt;/p&gt;

&lt;p&gt;When we started Well.ca, we tried to implement search in the quickest and most naive way possible; by doing a &lt;code&gt;&amp;quot;%LIKE%&amp;quot;&lt;/code&gt; query on our database (basically going through every item one by one in the database and seeing if it matches the search term). This worked well for our originally small database, but obviously became unusable as we added thousands of products to our site.&lt;/p&gt;

&lt;p&gt;Designing an intelligent search system that finds and sorts the products that users are looking for is a challenge. Below are some of the things we&amp;#8217;ve done to improve that.&lt;/p&gt;

&lt;h3 id='rich_autocomplete'&gt;Rich Autocomplete&lt;/h3&gt;

&lt;p&gt;As you type in the search box on our site, our software works to quickly present you with previews of the most relevant possible matches for what you&amp;#8217;re likely searching for.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/search-1.png' alt='Autocomplete' /&gt;&lt;/p&gt;

&lt;h3 id='did_you_mean_spelling_recommendation_engine'&gt;&amp;#8221;&lt;em&gt;Did You Mean?&lt;/em&gt;&amp;#8221; Spelling Recommendation Engine&lt;/h3&gt;

&lt;p&gt;If a user types the incorrect spelling for a word in our catalog, we use double metaphone distance algorithms to suggest alternate spellings.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/search-2.png' alt='Did you mean?' /&gt;&lt;/p&gt;

&lt;p&gt;Most spelling engines are designed for pre-existing dictionaries. But it&amp;#8217;s no help for us to recommend an alternative spelling from the english dictionary if that word doesn&amp;#8217;t exist in our database in the first place. In addition, many of our product names aren&amp;#8217;t in the dictionary&lt;/p&gt;

&lt;h3 id='ranked_relevant_results'&gt;Ranked, Relevant Results&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/search-3.png' alt='Ranked Searches' /&gt;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s no good for a search engine to return all the words that contain the word &amp;#8220;arm&amp;#8221; in them, if they aren&amp;#8217;t sorted based on relevancy.&lt;/p&gt;

&lt;p&gt;Our site uses a separate search appliance that we built ourselves (and integrated with &lt;a href='http://lucene.apache.org/'&gt;Lucene&lt;/a&gt;) to make sure that when a user looks for a product, they find the best matches possible, on the top of the page&lt;/p&gt;

&lt;h3 id='faceted_filtering'&gt;Faceted Filtering&lt;/h3&gt;

&lt;p&gt;Once a search is completed, we use &amp;#8220;facets&amp;#8221; to help the user narrow down their selection.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/search-4.png' alt='Facets' /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Backend Management</title>
   <link href="http://labs.well.ca/posts/backend"/>
   <updated>2010-07-08T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/backend</id>
   <content type="html">&lt;h2 id='backend_management'&gt;Backend Management&lt;/h2&gt;

&lt;h3 id='overview'&gt;Overview&lt;/h3&gt;

&lt;p&gt;Some of the coolest technology behind Well.ca happens behind the scenes &amp;#8211; this is the stuff we use to manage orders, products, and our site&amp;#8217;s content.&lt;/p&gt;

&lt;h3 id='rich_ajax_ui'&gt;Rich AJAX UI&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/backend-1.png' alt='Backend' /&gt;&lt;/p&gt;

&lt;p&gt;Since we didn&amp;#8217;t have to worry as much about browser compatibility for users&amp;#8217; really old browsers, we had a lot of fun building our backend management system with a rich, AJAX UI. This enables us to have floating windows, amazing excel-like grid layouts, drag-and-drop interfaces, and much more.&lt;/p&gt;

&lt;p&gt;A lot of this is enabled using the ExtJS Javascript Toolkit.&lt;/p&gt;

&lt;h3 id='charts_everywhere'&gt;Charts Everywhere&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/backend-2.png' alt='Backend' /&gt;&lt;/p&gt;

&lt;p&gt;We love charts and statistics here at Well.ca. Our Backend management shows constantly updated, colourful graphs of everything that is happening on our site. We wish we could show you more!&lt;/p&gt;

&lt;h3 id='full_graphical_pos'&gt;Full, Graphical POS&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/backend-3.png' alt='Backend' /&gt;&lt;/p&gt;

&lt;p&gt;For taking orders over the phone, and managing custom orders and refunds, we have a fully integrated POS system that we built into Well.ca. It&amp;#8217;s gorgeous.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Logistics</title>
   <link href="http://labs.well.ca/posts/logistics"/>
   <updated>2010-07-07T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/logistics</id>
   <content type="html">&lt;h2 id='logistics'&gt;Logistics&lt;/h2&gt;

&lt;h3 id='overview'&gt;Overview&lt;/h3&gt;

&lt;p&gt;After an order is made, a number of processes begin. On one hand, information is sent to the bank to process the credit card. Simultaneously, our accounting department&amp;#8217;s software is synchronized with the order automatically.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/logistics-1.png' alt='Logistics' /&gt;&lt;/p&gt;

&lt;p&gt;In our warehouse, we are immediately notified that a new order needs to be filled, which triggers an adapted pick-pack-ship process which efficiently pulls the products from our warehouse and puts it into your order.&lt;/p&gt;

&lt;p&gt;Our shipping partner is digitally informed of the address and the size and weight of the box into which it will all fit, so that we can generate a mailing-sticker.&lt;/p&gt;

&lt;p&gt;As all of this happens, our software is informing the customer and our customer service department of the status of the order so that everyone can be informed, and a tracking number is generated so that the customer can track their package to its destination.&lt;/p&gt;

&lt;p&gt;On the other side, our software is constantly synchronizing our database with our distributors and warehouses, so that we can keep our catalog up to date. Our warehousing department uses custom-built specialized handheld computer and barcode scanner software counts inventory, track POs, and re-stock the new merchandise that arrives each day.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re proud of the fact that we wrote all of this software ourselves. And even though our customers don&amp;#8217;t interact with it directly, our backend-logistics software enables us to perform our core function: get orders to people&amp;#8217;s doors quickly and efficiently.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Smart Recommendations</title>
   <link href="http://labs.well.ca/posts/smart-recommendations"/>
   <updated>2010-07-06T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/smart-recommendations</id>
   <content type="html">&lt;h2 id='smart_recommendations'&gt;Smart Recommendations&lt;/h2&gt;

&lt;h3 id='you_may_also_be_interested_in'&gt;You may also be interested in&amp;#8230;&lt;/h3&gt;

&lt;p&gt;Well.ca&amp;#8217;s internally designed and coded smart recommendation engine is probably our most innovative trade secret. This engine is able to dynamically and intelligently &lt;em&gt;recommend&lt;/em&gt; products to individual customers.&lt;/p&gt;

&lt;h3 id='what_it_does'&gt;What it does&lt;/h3&gt;

&lt;p&gt;&lt;img src='/images/smart-recommendations-1.png' alt='Recommendations' /&gt;&lt;/p&gt;

&lt;p&gt;Our engine is able to build an interconnected hyper-graph of all the products we have. It then begins to sort and process them using its learning and inference engine &amp;#8211; as the engine &lt;em&gt;learns&lt;/em&gt; about each product, it begins to build relationships with others.&lt;/p&gt;

&lt;p&gt;Here is a page from our site, showing the result:&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/smart-recommendations-2.png' alt='Recommendations' /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>A/B Testing</title>
   <link href="http://labs.well.ca/posts/ab-testing"/>
   <updated>2010-07-05T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/ab-testing</id>
   <content type="html">&lt;h2 id='ab_testing'&gt;A/B Testing&lt;/h2&gt;

&lt;h3 id='philosophy'&gt;Philosophy&lt;/h3&gt;

&lt;p&gt;We needed a simple way to test different alternatives and version of our site.&lt;/p&gt;

&lt;p&gt;Using the &lt;a href='http://vanity.labnotes.org/'&gt;Vanity for Rails&lt;/a&gt; project as inspiration, we built a tool that does PHP A/B Testing over Redis.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;ve &lt;a href='http://github.com/well/PHP-redis-A-B-Testing'&gt;open sourced&lt;/a&gt; the project so anyone can use it too.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/ab-testing-1.png' alt='A/B Testing' /&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Image Manipulation</title>
   <link href="http://labs.well.ca/posts/image-manipulation"/>
   <updated>2010-07-04T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/image-manipulation</id>
   <content type="html">&lt;h2 id='image_manipulation'&gt;Image Manipulation&lt;/h2&gt;

&lt;h3 id='product_images'&gt;Product Images&lt;/h3&gt;

&lt;p&gt;Product Images are a pain: we have thousands of pictures from our manufacturers of varying quality and size. Our software does its best to automatically resize them, store the originals, and render them in a pleasing fashion.&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/image-manipulation-1.png' alt='Image Manipulation' /&gt;&lt;/p&gt;

&lt;p&gt;Our image manipulations include cropping, resizing, and reflection, all automatically done server-side.&lt;/p&gt;

&lt;p&gt;In some cases (such as on our front page) we automatically render reflections of images (and cache them) to give the &amp;#8220;sitting on a glass table&amp;#8221; effect to some of our display boxes.&lt;/p&gt;

&lt;p&gt;Server-side Image Manipulation is processor intensive and algorithmically complex, but it saves us time pre-processing images, and creates more visually appealing layouts.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>imWell - LiveChat</title>
   <link href="http://labs.well.ca/posts/imwell"/>
   <updated>2010-07-03T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/imwell</id>
   <content type="html">&lt;h2 id='imwell__livechat'&gt;imWell - LiveChat&lt;/h2&gt;

&lt;h3 id='overview'&gt;Overview&lt;/h3&gt;

&lt;p&gt;We wanted to allow our customers to talk to us through our website. There are many options available, but none of them fit what we were looking for. Some used Flash, others through a popup window, and most cost a lot. We built our own chat application that can go on any HTML page, can be styled however you want and the chat persists across pages on the website.&lt;/p&gt;

&lt;h3 id='screenshots'&gt;Screenshots&lt;/h3&gt;

&lt;h4 id='1_customer_requests_a_chat'&gt;1. Customer requests a chat&lt;/h4&gt;

&lt;p&gt;&lt;img src='/images/imwell-1.png' alt='imWell Chat Request' /&gt;&lt;/p&gt;

&lt;p&gt;Don&amp;#8217;t worry, the imWell system will ask all the available agents and find someone that can take the chat&lt;/p&gt;

&lt;h4 id='2_you_can_send_links'&gt;2. You can Send Links&lt;/h4&gt;

&lt;p&gt;&lt;img src='/images/imwell-2.png' alt='imWell Handles Links' /&gt;&lt;/p&gt;

&lt;p&gt;The imWell system handles links, and will persist across pages, maintaining the history. It&amp;#8217;s magic!&lt;/p&gt;

&lt;h4 id='3_transfer_to_someone_else'&gt;3. Transfer to Someone Else&lt;/h4&gt;

&lt;p&gt;&lt;img src='/images/imwell-3.png' alt='imWell Can Transfer' /&gt;&lt;/p&gt;

&lt;p&gt;You can transfer chats to another person in your company, it does this elegantly.&lt;/p&gt;

&lt;h3 id='backend'&gt;Backend&lt;/h3&gt;

&lt;p&gt;Using the popular open source chat server Jabber as the backend, we created a web chat client that is truly amazing. In the near future we&amp;#8217;ll be opening up a beta of imWell for anyone to use.&lt;/p&gt;

&lt;h3 id='features'&gt;Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No popups. No Flash. Just JavaScript and HTML.&lt;/li&gt;

&lt;li&gt;Style the chat box through CSS.&lt;/li&gt;

&lt;li&gt;Chat with visitors through any Jabber client.&lt;/li&gt;

&lt;li&gt;Managed queues. imWell will find the first available person to chat&lt;/li&gt;

&lt;li&gt;Chat &amp;#38; history will persist across your website. Help the visitor navigate your site.&lt;/li&gt;

&lt;li&gt;A hosted solution. The backend application will be hosted on our server. Installing imWell on your site will only take 5 minutes!&lt;/li&gt;

&lt;li&gt;Support for SSL.&lt;/li&gt;

&lt;li&gt;It&amp;#8217;s Free!&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>Adwords &amp; SEO</title>
   <link href="http://labs.well.ca/posts/seo"/>
   <updated>2010-07-02T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/seo</id>
   <content type="html">&lt;h2 id='adwords__seo'&gt;Adwords &amp;#38; SEO&lt;/h2&gt;

&lt;h3 id='semseo'&gt;SEM/SEO&lt;/h3&gt;

&lt;p&gt;Our advertising engine is constantly and automatically managing our search engine marketing, regular marketing, and affiliate marketing programs. Interested to see more? Contact us at labs@well.ca&lt;/p&gt;

&lt;p&gt;We employ the Google, Yahoo, and MSN APIs to control all this automatically.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Affiliate Management</title>
   <link href="http://labs.well.ca/posts/affiliates"/>
   <updated>2010-07-01T00:00:00-04:00</updated>
   <id>http://labs.well.ca/posts/affiliates</id>
   <content type="html">&lt;h2 id='affiliate_management'&gt;Affiliate Management&lt;/h2&gt;

&lt;h3 id='informed_affiliates_are_happy_affiliates'&gt;Informed Affiliates are Happy Affiliates&lt;/h3&gt;

&lt;p&gt;All of our affiliate tools are developed internally, giving our affiliates real-time statistics on the performance of their campaigns. Here&amp;#8217;s a screenshot of our software in action:&lt;/p&gt;

&lt;p&gt;&lt;img src='/images/affiliates-1.png' alt='Affiliates' /&gt;&lt;/p&gt;</content>
 </entry>
  
</feed>

