<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sceneric Thinking &#187; Web 2.0</title>
	<atom:link href="http://www.sceneric.com/blogs/?feed=rss2&#038;cat=30" rel="self" type="application/rss+xml" />
	<link>http://www.sceneric.com/blogs</link>
	<description>thoughts on technology and industry</description>
	<lastBuildDate>Thu, 28 Jun 2012 14:12:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Just what is Social Commerce?</title>
		<link>http://www.sceneric.com/blogs/?p=50</link>
		<comments>http://www.sceneric.com/blogs/?p=50#comments</comments>
		<pubDate>Thu, 07 May 2009 21:54:13 +0000</pubDate>
		<dc:creator>jimherbert</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Financial Services]]></category>
		<category><![CDATA[Industries]]></category>
		<category><![CDATA[Life and Pensions]]></category>
		<category><![CDATA[Mortgages]]></category>
		<category><![CDATA[Retail]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Bazaarvoice]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[recommendations]]></category>
		<category><![CDATA[social commerce]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.sceneric.com/blogs/?p=50</guid>
		<description><![CDATA[Social Commerce is a new phrase which is a mash up of two of the internet's most pervasive technologies - ecommerce and social networks, but is it a real phenomenon and what's the size of the market?]]></description>
			<content:encoded><![CDATA[<p>Social Commerce is a new phrase which is a mash up of two of the internet&#8217;s most pervasive technologies &#8211; ecommerce and social networks, but is it a real phenomenon and what&#8217;s the size of the market?</p>
<p>With average conversion improvements of 40%, Social Commerce is real and there are 2 key aspects; <em>Recommendations</em> and <em>the power of groups</em>.  Recommendations is something that’s 2/3 years old on the web – it’s basically where a product shows customer reviews from real people.  Our partners at Bazaarvoice are leaders in this respect and have some interesting statistics – 85% of people will trust a customer review over the site content and having reviews increases a conversion by up to 70% (on a reviewed site, 0 reviews leads to a –30% downturn, 1-5 reviews 20% increase – even if they’re negative, 5-15 reviews 40%&#8230;).</p>
<p>The power of groups is all about automatically twittering / facebook status updates during the path to purchase, with the real power being that a friends list contains groups of people who are demographically similar.   For example, a customer buy&#8217;s a Plasma TVs and his Twitter account is updated:  “Jim bought a new 46” flat screen”.  Human beings are status driven animals, and posts like this will compel friends think about buying buy a 50&#8243; flat screen.  Our partners at ATG support this automatically with version 9.0, and Bazaarvoice support this with their SocialVoice product again with measurable impact on business.</p>
<p>SKU based retail (clothing, electronics etc.) is taking a lead in social commerce but other industries will catch-up and as always the first to implement will benefit from being the first to market.  For instance, recommendations are becoming common for direct to consumer financial services products such as credit cards, but is not common in insurance.  The first health, general and life insurance companies to implement recommendations should see a big increase in direct to consumer sales.  Again, social network updates will also impact this market, if a friend broadcasts that they received 12 months for the price of 10 on home insurance with Provider X, it&#8217;s likely to impact sales in a positive fashion.</p>
<p>The next step is to embed the path to purchase into the social network.  With the ease of use of the Facebook and OpenSocial APIs this is a fairly trivial task and one which could lead to a revolution in internet commerce.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sceneric.com/blogs/?feed=rss2&amp;p=50</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrate Axis into Magnolia</title>
		<link>http://www.sceneric.com/blogs/?p=28</link>
		<comments>http://www.sceneric.com/blogs/?p=28#comments</comments>
		<pubDate>Thu, 05 Feb 2009 22:38:19 +0000</pubDate>
		<dc:creator>jimherbert</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Enterprise Integration]]></category>
		<category><![CDATA[JSR170]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Magnolia]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Package Implementation]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Integration]]></category>

		<guid isPermaLink="false">http://www.sceneric.com/blogs/?p=28</guid>
		<description><![CDATA[A few months ago we created a proof of concept to access the Magnolia JCR container using Webservices so that a PHP based site we were building could access new items within an Enterprise Class CMS.  It turned out to be remarkably easy:
To integrate Axis 1.4 into Magnolia:

Download the Axis distribution
Copy the jars into the [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago we created a proof of concept to access the Magnolia JCR container using Webservices so that a PHP based site we were building could access new items within an Enterprise Class CMS.  It turned out to be remarkably easy:</p>
<p>To integrate Axis 1.4 into Magnolia:</p>
<ol>
<li>Download the Axis distribution</li>
<li>Copy the jars into the magnoliaAuthor and magnoliaPublic WEB-INF/lib directories</li>
<li>Copy the servlet declarations from the axis web.xml into the magnolia web.xml in both auth and pub</li>
<li>Open AdminCentral and browse to Configuration</li>
<li>Open server/filters/servlets and copy log4j node, rename to AxisServlet</li>
<li>Open AxisServlet/mappings/&#8211;magnolia-pages&#8211;/patten and change to /services/*</li>
<li>Change AxisServlet/servletClass to org.apache.axis.transport.http.AxisServlet</li>
<li>Change AxisServlet/servletName to AxisServet (to match the web.xml servletname)</li>
</ol>
<p>If you now deploy a class through jws or wsdl methods (by coping the classes, wsdl and .wsdd files) into Magnolia you will be able to access it through &lt;host&gt;/&lt;maginstance&gt;/services/ServiceName?wsdl</p>
<p>You might want to bypass Magnolia security during development, to do that:</p>
<ol>
<li>Open AdminCentral and browse to Configuration</li>
<li>Open server/filters/uriSecurity/bypasses</li>
<li>Create a new content node &#8220;services&#8221;</li>
<li>Create 2 new data nodes; &#8220;services/class&#8221; with data info.magnolia.voting.voters.URIStartsWithVoter and &#8220;services/pattern&#8221; with data /services</li>
</ol>
<p>For our demo, we simply queried the API for a &#8220;text&#8221; content node based on a path that was passed into the method:<br />
<code><br />
public String getContent (String name) throws Exception {<br />
String returnContent = new String();<br />
returnContent="";<br />
try {<br />
//get the current context<br />
Context context = MgnlContext.getSystemContext();<br />
//get a hierarchy manager and lookup the content node<br />
HierarchyManager mgr = context.getHierarchyManager(ContentRepository.WEBSITE);<br />
Content uriContent = mgr.getContent(name);<br />
if(uriContent==null){<br />
//oops<br />
returnContent+=" content is null";<br />
} else {<br />
//get the data collection and return the text node<br />
for(Iterator i = uriContent.getNodeDataCollection().iterator(); i.hasNext();) {<br />
NodeData nodeData = (NodeData) i.next();<br />
String nodeName = nodeData.getName();<br />
if (nodeName.equals("text")) {<br />
returnContent=nodeData.getString();<br />
}<br />
}<br />
}<br />
} catch (RepositoryException e) {<br />
throw new Exception(e.getMessage());<br />
}<br />
return returnContent;<br />
}<br />
</code><br />
Axis presents this with the following WSDL:</p>
<pre id="line1"><span class="pi">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
&lt;<span class="start-tag">wsdl:definitions</span><span class="attribute-name"> targetNamespace</span>=<span class="attribute-value">"http://test.sceneric.com" </span><span class="attribute-name">xmlns:apachesoap</span>=<span class="attribute-value">"http://xml.apache.org/xml-soap" </span><span class="attribute-name">xmlns:impl</span>=<span class="attribute-value">"http://test.sceneric.com" </span><span class="attribute-name">xmlns:intf</span>=<span class="attribute-value">"http://test.sceneric.com" </span><span class="attribute-name">xmlns:wsdl</span>=<span class="attribute-value">"http://schemas.xmlsoap.org/wsdl/" </span><span class="attribute-name">xmlns:wsdlsoap</span>=<span class="attribute-value">"http://schemas.xmlsoap.org/wsdl/soap/" </span><span class="attribute-name">xmlns:xsd</span>=<span class="attribute-value">"http://www.w3.org/2001/XMLSchema"</span>&gt;
<span class="comment">&lt;!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)--&gt;</span>
 &lt;<span class="start-tag">wsdl:types</span>&gt;
  &lt;<span class="start-tag">schema</span><span class="attribute-name"> elementFormDefault</span>=<span class="attribute-value">"qualified" </span><span class="attribute-name">targetNamespace</span>=<span class="attribute-value">"http://test.sceneric.com" </span><span class="attribute-name">xmlns</span>=<span class="attribute-value">"http://www.w3.org/2001/XMLSchema"</span>&gt;
   &lt;<span class="start-tag">element</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContent"</span>&gt;
    &lt;<span class="start-tag">complexType</span>&gt;
     &lt;<span class="start-tag">sequence</span>&gt;
      &lt;<span class="start-tag">element</span><span class="attribute-name"> name</span>=<span class="attribute-value">"name" </span><span class="attribute-name">type</span>=<span class="attribute-value">"xsd:string"</span><span class="attribute-name">/</span>&gt;
     &lt;/<span class="end-tag">sequence</span>&gt;</pre>
<pre id="line12">    &lt;/<span class="end-tag">complexType</span>&gt;
   &lt;/<span class="end-tag">element</span>&gt;
   &lt;<span class="start-tag">element</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentResponse"</span>&gt;
    &lt;<span class="start-tag">complexType</span>&gt;
     &lt;<span class="start-tag">sequence</span>&gt;
      &lt;<span class="start-tag">element</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentReturn" </span><span class="attribute-name">type</span>=<span class="attribute-value">"xsd:string"</span><span class="attribute-name">/</span>&gt;
     &lt;/<span class="end-tag">sequence</span>&gt;
    &lt;/<span class="end-tag">complexType</span>&gt;
   &lt;/<span class="end-tag">element</span>&gt;</pre>
<pre id="line21">  &lt;/<span class="end-tag">schema</span>&gt;
 &lt;/<span class="end-tag">wsdl:types</span>&gt;

   &lt;<span class="start-tag">wsdl:message</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentResponse"</span>&gt;

      &lt;<span class="start-tag">wsdl:part</span><span class="attribute-name"> element</span>=<span class="attribute-value">"impl:getContentResponse" </span><span class="attribute-name">name</span>=<span class="attribute-value">"parameters"</span><span class="attribute-name">/</span>&gt;

   &lt;/<span class="end-tag">wsdl:message</span>&gt;

   &lt;<span class="start-tag">wsdl:message</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentRequest"</span>&gt;</pre>
<pre id="line32">      &lt;<span class="start-tag">wsdl:part</span><span class="attribute-name"> element</span>=<span class="attribute-value">"impl:getContent" </span><span class="attribute-name">name</span>=<span class="attribute-value">"parameters"</span><span class="attribute-name">/</span>&gt;

   &lt;/<span class="end-tag">wsdl:message</span>&gt;

   &lt;<span class="start-tag">wsdl:portType</span><span class="attribute-name"> name</span>=<span class="attribute-value">"TestWebService"</span>&gt;

      &lt;<span class="start-tag">wsdl:operation</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContent"</span>&gt;

         &lt;<span class="start-tag">wsdl:input</span><span class="attribute-name"> message</span>=<span class="attribute-value">"impl:getContentRequest" </span><span class="attribute-name">name</span>=<span class="attribute-value">"getContentRequest"</span><span class="attribute-name">/</span>&gt;

         &lt;<span class="start-tag">wsdl:output</span><span class="attribute-name"> message</span>=<span class="attribute-value">"impl:getContentResponse" </span><span class="attribute-name">name</span>=<span class="attribute-value">"getContentResponse"</span><span class="attribute-name">/</span>&gt;</pre>
<pre id="line43">      &lt;/<span class="end-tag">wsdl:operation</span>&gt;

   &lt;/<span class="end-tag">wsdl:portType</span>&gt;

   &lt;<span class="start-tag">wsdl:binding</span><span class="attribute-name"> name</span>=<span class="attribute-value">"TestWebServiceSoapBinding" </span><span class="attribute-name">type</span>=<span class="attribute-value">"impl:TestWebService"</span>&gt;

      &lt;<span class="start-tag">wsdlsoap:binding</span><span class="attribute-name"> style</span>=<span class="attribute-value">"document" </span><span class="attribute-name">transport</span>=<span class="attribute-value">"http://schemas.xmlsoap.org/soap/http"</span><span class="attribute-name">/</span>&gt;

      &lt;<span class="start-tag">wsdl:operation</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContent"</span>&gt;

         &lt;<span class="start-tag">wsdlsoap:operation</span><span class="attribute-name"> soapAction</span>=<span class="attribute-value">""</span><span class="attribute-name">/</span>&gt;</pre>
<pre id="line55">         &lt;<span class="start-tag">wsdl:input</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentRequest"</span>&gt;

            &lt;<span class="start-tag">wsdlsoap:body</span><span class="attribute-name"> use</span>=<span class="attribute-value">"literal"</span><span class="attribute-name">/</span>&gt;

         &lt;/<span class="end-tag">wsdl:input</span>&gt;

         &lt;<span class="start-tag">wsdl:output</span><span class="attribute-name"> name</span>=<span class="attribute-value">"getContentResponse"</span>&gt;

            &lt;<span class="start-tag">wsdlsoap:body</span><span class="attribute-name"> use</span>=<span class="attribute-value">"literal"</span><span class="attribute-name">/</span>&gt;

         &lt;/<span class="end-tag">wsdl:output</span>&gt;</pre>
<pre id="line67">      &lt;/<span class="end-tag">wsdl:operation</span>&gt;

   &lt;/<span class="end-tag">wsdl:binding</span>&gt;

   &lt;<span class="start-tag">wsdl:service</span><span class="attribute-name"> name</span>=<span class="attribute-value">"TestWebServiceService"</span>&gt;

      &lt;<span class="start-tag">wsdl:port</span><span class="attribute-name"> binding</span>=<span class="attribute-value">"impl:TestWebServiceSoapBinding" </span><span class="attribute-name">name</span>=<span class="attribute-value">"TestWebService"</span>&gt;

         &lt;<span class="start-tag">wsdlsoap:address</span><span class="attribute-name"> location</span>=<span class="attribute-value">"http://localhost:8800/magnoliaAuthor/services/TestWebService"</span><span class="attribute-name">/</span>&gt;

      &lt;/<span class="end-tag">wsdl:port</span>&gt;</pre>
<pre id="line79">   &lt;/<span class="end-tag">wsdl:service</span>&gt;

&lt;/<span class="end-tag">wsdl:definitions</span>&gt;</pre>
<p>and an example of this in action is:</p>
<pre id="line1"><span class="pi">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
&lt;soapenv:Envelope&gt;
−
&lt;soapenv:Body&gt;
−
&lt;getContentResponse&gt;
−
&lt;ns1:getContentReturn&gt;
&lt;p&gt;yadda yadda yadda&lt;/p&gt;
&lt;/ns1:getContentReturn&gt;
&lt;/getContentResponse&gt;
&lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>Of course, a twist to this approach would be to wrap the JSP rendering with Axis to take advantage of the tag libraries. We tested this with PHP 5&#8217;s SOAP Client and successfully read data from Magnolia.  In a production environment we would obviously use XPath or the Query Builder in order to search the repository, and return more complex results.</p>
<p>You can see a video demonstration of this here: <a href="http://bit.ly/uPreky">http://bit.ly/uPreky</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sceneric.com/blogs/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep your content separate</title>
		<link>http://www.sceneric.com/blogs/?p=12</link>
		<comments>http://www.sceneric.com/blogs/?p=12#comments</comments>
		<pubDate>Fri, 09 Jan 2009 20:21:30 +0000</pubDate>
		<dc:creator>jimherbert</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[CMS Made Simple]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Interwoven]]></category>
		<category><![CDATA[JSR170]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Magnolia]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Package Implementation]]></category>
		<category><![CDATA[Percussion Rhythmyx]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[cms made simple]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[friends provident]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[legal and general]]></category>
		<category><![CDATA[mgm advantage]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.sceneric.com/blogs/?p=12</guid>
		<description><![CDATA[Some things in life are just the &#8220;right&#8221; thing to do.  Take implementing a content managed website.  In the early days of content management systems (CMS), there was often no division of content from presentation.  This meant that changing branding &#38; look and feel or re-using content across trading divisions was difficult and costly.  Also, [...]]]></description>
			<content:encoded><![CDATA[<p>Some things in life are just the &#8220;right&#8221; thing to do.  Take implementing a content managed website.  In the early days of content management systems (CMS), there was often no division of content from presentation.  This meant that changing branding &amp; look and feel or re-using content across trading divisions was difficult and costly.  Also, the content was only available as HTML, there was no ability to make the content available through any other mechanism without considerable extra work.</p>
<p>However, even these systems could be implemented correctly, separating content from presentation and utilising content tagging to allow web experiences to be personalised.  Sceneric has built a number of award winning websites forcing this separation and providing the content as discrete, tagged items of information.  This very much the building blocks of the semantic web and can be demonstrated by Friends Provident&#8217;s news items being made available as an RSS feed with only 1 hours development, the first FTSE100 company to offer this service. Sceneric have published these guidelines as best practice which can be downloaded <a href="http://www.sceneric.com/cms">here</a>.</p>
<p>This approach has been formalised by all modern CMS projects, in the JSR170 Java standard as used by <a href="http://www.sceneric.com/index.php?page=magnolia">Magnolia</a>, LiveRay, Alfresco and Oracle CMS, and in the templated approach of Joomla, Drupal, <a href="http://www.sceneric.com/index.php?page=cms-made-simple">CMS Made Simple</a> in the PHP and Python arena.  In fact, Microsoft&#8217;s Sharepoint is also an excellent implementation of this idea.</p>
<p>The key point is that project implementation can be just as rapid and cost the same to produce a platform that seperates content and presentation as to rush something into production that will cost orders of magnitude more to fix in future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sceneric.com/blogs/?feed=rss2&amp;p=12</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ahead of its time</title>
		<link>http://www.sceneric.com/blogs/?p=6</link>
		<comments>http://www.sceneric.com/blogs/?p=6#comments</comments>
		<pubDate>Fri, 09 Jan 2009 12:12:44 +0000</pubDate>
		<dc:creator>jimherbert</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[Financial Services]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Package Implementation]]></category>
		<category><![CDATA[Retail]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[ecommerce]]></category>

		<guid isPermaLink="false">http://www.sceneric.com/blogs/?p=6</guid>
		<description><![CDATA[I first started using ATG at version 5.1 in 2001.  It struck me at the time as an excellent eCommerce product suite and as my role over the years from changed from consultant to purchaser and back again I was surprised that there were very few (if any) equivalent packages out there.  As the director [...]]]></description>
			<content:encoded><![CDATA[<p>I first started using ATG at version 5.1 in 2001.  It struck me at the time as an excellent eCommerce product suite and as my role over the years from changed from consultant to purchaser and back again I was surprised that there were very few (if any) equivalent packages out there.  As the director of a company building solutions in Financial Services and Retail with the ATG platform, I&#8217;ve been struck by 2 things:</p>
<ul>
<li>ATG&#8217;s ability to rapidly develop a new online store, and to maximise conversions with personalisation software is still market leading</li>
<li>With the advent of Web 2.0, the personalization, user profiling, content management, data exposure and integration functionality made me realise that ATG has been a leader in this area, providing Web 2.0 functionality in the early days of the web</li>
</ul>
<p>In the early naughties it was often difficult to explain the capabilities of ATG to users &#8211; with Web 2.0 ideas becoming prevalent it&#8217;s now much easier to explain them leading me to think that ATG was indeed ahead of it&#8217;s time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sceneric.com/blogs/?feed=rss2&amp;p=6</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
