<?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>Innovation Factory - Connected Innovation &#187; Development</title>
	<atom:link href="http://www.innovationfactory.eu/blog/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innovationfactory.eu</link>
	<description>Connected Innovation!</description>
	<lastBuildDate>Tue, 27 Jul 2010 07:35:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New Gaastra website live</title>
		<link>http://www.innovationfactory.eu/blog/2008/08/29/new-gaastra-website-live/</link>
		<comments>http://www.innovationfactory.eu/blog/2008/08/29/new-gaastra-website-live/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 10:05:11 +0000</pubDate>
		<dc:creator>Jurjan Huisman</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.innovationfactory.nl/blog/2008/08/29/new-gaastra-website-live/</guid>
		<description><![CDATA[Last week the new Gaastra website went live. Together with Sisteract we have developed the new website. Sisteract made the design for the website and Innovation ...


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Last week the <a href="http://www.gaastra.nl" title="Gaastra zeilkleding en lifestyle sportswear met een maritiem karakter">new Gaastra website</a> went live. Together with <a href="http://www.sisteract.tv">Sisteract</a> we have developed the new website. Sisteract made the design for the website and Innovation Factory developed the front-end and back-end including a CMS. Through the CMS, the site is fully customizable for Gaastra.</p>
<p>Next to working on the development of our innovation suite, our ruby programmers also help our clients sometimes to push innovative concepts quickly to the market. For example, in the back-end of the Gaastra website our programmers developed an innovative drag and drop tool to pair clothing items. On the front-end of the website these pairs are displayed as &#8216;complete the look&#8217; items.</p>
<p><strong>New website</strong></p>
<p><a href="http://www.innovationfactory.nl/wp-content/uploads/2008/08/picture-5.png" title="New website"><img src="http://www.innovationfactory.nl/wp-content/uploads/2008/08/picture-5.png" title="New website" alt="New website" border="0" width="500" /></a></p>
<p><strong>Old website</strong></p>
<p><a href="http://www.innovationfactory.nl/wp-content/uploads/2008/08/picture-2.png" title="Old Website"><img src="http://www.innovationfactory.nl/wp-content/uploads/2008/08/picture-2.png" title="Old Website" alt="Old Website" border="0" width="500" /></a></p>
<p><strong>CMS: Drag and drop tool</strong></p>
<p><a href="http://www.innovationfactory.nl/wp-content/uploads/2008/09/picture-1.png" title="CMS: Drag and drop tool"><img src="http://www.innovationfactory.nl/wp-content/uploads/2008/09/picture-1.png" title="CMS: Drag and drop tool" alt="CMS: Drag and drop tool" border="0" width="500" /></a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.innovationfactory.eu/blog/2008/08/29/new-gaastra-website-live/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Innovation</title>
		<link>http://www.innovationfactory.eu/blog/2008/05/16/open-innovation/</link>
		<comments>http://www.innovationfactory.eu/blog/2008/05/16/open-innovation/#comments</comments>
		<pubDate>Fri, 16 May 2008 14:40:02 +0000</pubDate>
		<dc:creator>Ebbe Nieuweboer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[co-branding]]></category>
		<category><![CDATA[crowdsourcing]]></category>
		<category><![CDATA[idea challenge]]></category>
		<category><![CDATA[lead users]]></category>
		<category><![CDATA[mass customisation]]></category>
		<category><![CDATA[Open Innovation]]></category>
		<category><![CDATA[user generated content]]></category>

		<guid isPermaLink="false">http://www.innovationfactory.nl/blog/2008/05/16/open-innovation/</guid>
		<description><![CDATA[Open Innovation propagates sharing and collaboration with external parties. The architect of the term Open Innovation, Henry Chesbrough, describes the following principles as being at the ...


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Open Innovation propagates sharing and collaboration with external parties. The architect of the term Open Innovation, <a href="http://www.haas.berkeley.edu/faculty/chesbrough.html" title="Henry Chesbrough">Henry Chesbrough</a>, describes the following principles as being at the foundation of Open Innovation</p>
<ul>
<li> Not all smart people work in-house – need to tap into external knowledge</li>
<li> External R&amp;D can generate significant value to us</li>
<li> Research does not need to originate from our internal work to be profitable for us</li>
<li> A strong business model is more important than first to market</li>
<li> Internal as well as external ideas are essential to win</li>
<li> We can capitalise on our own Intellectual Property (IP) and we should buy others’ IP when needed</li>
</ul>
<p>While the term was initially very much related to IP, it has evolved; A recent valuable <a href="http://www.openinnovatie.nl/download/vr-08-02.pdf" title="Managing Open Innovation">resource</a> of literature on open innovation has been composed by VINNOVA, the Swedish Governmental Agency for Innovation Systems. It has been made available on <a href="http://www.openinnovation.nl" title="www.openinnovation.nl">openinnovation.nl</a></p>
<p>In practice, there are many shapes in which Open Innovation can be manifested. So how about some examples?</p>
<p><span id="more-101"></span></p>
<ul>
<li>Co-branding, such as the <a href="http://www.smart.com" title="smart">smart</a> car which started as a joint-venture of Daimler-Benz and Swatch, <a href="http://www.apple.com/ipod/nike/" title="Nike+iPod">Nike+iPod</a> by Nike and Apple, the <a href="http://www.beertender.nl/" title="Beertender">Beertender</a> by Heineken and Krupps, and the <a href="http://www.senseo.com/" title="Senseo">Senseo</a> coffee maker by Douwe Egberts and Philips. <a href="http://www.marketingtribune.nl/blogs/-De-Senseo-is-zooo-Sara-Lee--24314/" title="Senseo">Ironically</a>, the latter example indicates that co-branding does not necessarily mean joint development.</li>
<li> Working together with customers, suppliers, and other companies. Being located near one another, such as on the <a href="http://www.hightechcampus.nl" title="High Tech Campus">High tech Campus</a> in Eindhoven, certainly helps</li>
<li> Knowledge exchange with government, research institutions, universities, etc. A good example is <a href="http://www.autoindetoekomst.nl/website/" title="Auto in de Toekomst">autoindetoekomst.nl</a>.</li>
<li> (Lead) user innovation such as Philips&#8217; initiative <a href="http://www.leadusers.nl" title="Philips Leadusers.nl">Leadusers.nl</a>.</li>
<li> Crowdsourcing such as the <a href="http://www.goldcorpchallenge.com/" title="Goldcorp Challange">Goldcorp Challenge</a>, t-shirt company <a href="http://www.threadless.com/" title="Threadless">Threadless</a>, and the search for <a href="http://www.stevefossett.com/" title="Search for Steve Fossett">Steve Fossett</a>, where 50,000 people scrutinised more than 300,000 squares of high resolution digital imagery trying to find his crashed plane. GMails <a href="http://gmailblog.blogspot.com/2007/08/watch-final-gmail-collaborative-video.html?utm_source=en-us-mvideo&amp;utm_medium=et&amp;utm_campaign=mvideo" title="Gmails M-Velope">M-Velope</a> video is not only viral, but also made by actual GMail users. Many (online) communities depend mainly on User Generated Content.</li>
<li> Mass customisation such as <a href="http://www.brewtopia.com.au/" title="Brewtopia">Brewtopia</a>, <a href="http://www.mymms.com/" title="My M&amp;M's">My M&amp;M&#8217;s</a>, <a href="http://edelwiser.com/en/" title="Edelwise Ski Designer">Edelwiser Ski Designer</a>, and <a href="http://factory.lego.com/" title="Lego Factory">Lego Factory</a> can also be seen as a form of open innovation.</li>
<li> Another variation of open innovation is conducting &#8216;Idea Challenges&#8217; such as <a href="http://www.fiat500.com/eng/" title="500 wants you">&#8220;500 Wants you&#8221;</a> by Fiat, <a href="http://www.dellideastorm.com/" title="Dell Idea Storm">Dell IdeaStorm</a>, <a href="http://mystarbucksidea.force.com" title="My Starbucks Idea">My Starbucks Idea</a>, and the <a href="http://www.cisco.com/web/solutions/iprize/index.html" title="Cisco I-Prize">Cisco i-Prize</a>. Essentially an Idea Challenge asks different sorts of contributors (clients, suppliers, end users) for their ideas.</li>
</ul>
<p>There are many more initiatives. Do you have any good examples?</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.innovationfactory.eu/blog/2008/05/16/open-innovation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Modules, self and classes</title>
		<link>http://www.innovationfactory.eu/blog/2007/12/17/modules-self-and-classes/</link>
		<comments>http://www.innovationfactory.eu/blog/2007/12/17/modules-self-and-classes/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 12:11:18 +0000</pubDate>
		<dc:creator>Innovation Factory</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.innovationfactory.nl/blog/2007/12/17/modules-self-and-classes/</guid>
		<description><![CDATA[I can be a bit of a purist when it comes to programming. I love to have my code DRY and go to lengths to achieve ...


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I can be a bit of a purist when it comes to programming. I love to have my code DRY and go to lengths to achieve that. Today I wrote a piece of code which would enable the duplication of Rails models. This in order to support some templating. Well it&#8217;s a little bit more than &#8217;some&#8217; as I need to copy the entire model with all associated models(and their associated models, and their &#8230;). To keep things flexible I did not wanted to loop over a couple predefined fields and do all the copying there:</p>
<pre>
copy = Project.new
p = Project.find(:first)
copy.title = p.title
copy.description = p.description
p.members.each do |member|
  copy.members.build(:name =&gt; member.name, :function =&gt; member.function)
end</pre>
<p>This is prone to errors not to mention ugly(and a lot of dumb work). So I figured I&#8217;d write something better. This was quickly done:</p>
<pre>
class Project &lt; AR:B
  cattr_accessor :non_duplicatable_columns
  non_duplicatable_columns = [primary_key, 'created_at', 'updated_at',
    'created_on', 'updated_on'] +
    column_names.select {|column_name| column_name =~ /_id$/}

  def copy
    copy_columns = self.class.column_names - self.class.non_duplicatable_columns
    a = Hash.new
    copy_columns.each {|cc| a[cc] = self.send(cc) }
    clone = Project.create(a)
  end
end</pre>
<p>But I needed this piece of functionality in several models. So what&#8217;s a good programmer to do? Refactor the code into a module of course! But there I hit some snags. The method <tt>cattr_accessor</tt>, for example, is a bit of a strange beast. It is not documented but is should be read like &#8216;class attribute accessor&#8217;. The method creates <em>class instance methods</em>. This is something different from <em>instance methods</em> which you usually use. Instance methods are callable on an object which is instance of a class.</p>
<pre>
p = Project.new #class instance method
p.copy #instance method</pre>
<p>Defining class instance methods goes with the <tt>self</tt> keyword. It reminded me of the Java static keyword.</p>
<pre>
def self.foo
  #do something, can be called as: FullClassName.foo
end</pre>
<p>Keep the eye on the ball here, <tt>self</tt> points to the object on which this method is called. When defining the copy method the method column_names is called but this is a class instance method from the class subclassing AR:B. So the objects looks at it<tt>self</tt>, asks who the fathering <tt>class</tt> is and calls the desired method from that class. The method <tt>cattr_accessor</tt> can no longer float freely in the class definition. It needs a container as the module is read at the moment the Rails stack is initialize and at that point the module is not necessarily hooked into a class in which a <tt>cattr_accessor</tt> makes sense. Luckily the module <a href="http://ruby-doc.org/core/classes/Module.html">Module</a> defines a method <tt>included</tt> which is called whenever the module is, well, included. Using this we can still define the <tt>non_duplicatable_columns</tt> on a per model basis. Finalized the module looks like this(stored in lib/duplicatable.rb):</p>
<pre>
module Duplicatable
  def Duplicatable.included(base)
    base.cattr_accessor :non_duplicatable_columns
    base.non_duplicatable_columns = [base.primary_key, 'created_at',
      'updated_at','created_on', 'updated_on'] +
      base.column_names.select {|column_name| column_name =~ /_id$/}
  end

 def copy
    copy_columns = self.class.column_names - self.class.non_duplicatable_columns
    a = Hash.new
    copy_columns.each {|cc| a[cc] = self.send(cc) }
    clone = self.class.create(a)
  end
end</pre>
<p>And a simple <tt>include Duplicatable</tt> adds all its functionality to a model.<br />
Why not use a super class here? That would require calling a initialize function(to set the non_duplicatable_columns) in each model with would extend this super class. Which would result in more code and thus more places where this can break.</p>
<p>This article can also be found at <a href="http://rubytutorials.net">RubyTutorials</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.innovationfactory.eu/blog/2007/12/17/modules-self-and-classes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
