<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Rob van Dijk&#039;s Blog</title>
	<atom:link href="http://blog.drivingthevortex.nl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.drivingthevortex.nl</link>
	<description>New social media and whatever else interests me</description>
	<lastBuildDate>Sun, 19 Dec 2010 22:15:31 +0000</lastBuildDate>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.drivingthevortex.nl' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Rob van Dijk&#039;s Blog</title>
		<link>http://blog.drivingthevortex.nl</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.drivingthevortex.nl/osd.xml" title="Rob van Dijk&#039;s Blog" />
	<atom:link rel='hub' href='http://blog.drivingthevortex.nl/?pushpress=hub'/>
		<item>
		<title>Specify callbacks before specifying the associations</title>
		<link>http://blog.drivingthevortex.nl/2010/02/05/specify-callbacks-before-specifying-the-associations/</link>
		<comments>http://blog.drivingthevortex.nl/2010/02/05/specify-callbacks-before-specifying-the-associations/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 09:33:27 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[association]]></category>
		<category><![CDATA[callbacks]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=140</guid>
		<description><![CDATA[Specify callbacks before specifying the associations, otherwise you're in trouble...<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=140&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="tweetmeme-button" id="tweetmeme-button-post-140" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F02%2F05%2Fspecify-callbacks-before-specifying-the-associations%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2Fcb5Caz%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F02%2F05%2Fspecify-callbacks-before-specifying-the-associations%2F" height="61" width="51" /></a>
</div>
<p>Just wasted a full day on this&#8230; Suppose you have a User model, with certain Users being children and other Users being parents. With the following code I intended to delete the parent when the child being deleted is the last child of the parent:</p>
<p><pre class="brush: ruby;">
class ChildParent &lt; ActiveRecord::Base
  belongs_to :child, :class_name =&gt; &quot;User&quot;
  belongs_to :parent, :class_name =&gt; &quot;User&quot;
end

class User &lt; ActiveRecord::Base

  has_many :parents, :through =&gt; :child_parents_as_child
  has_many :child_parents_as_child, :foreign_key =&gt; :child_id, :class_name =&gt; &quot;ChildParent&quot;, :dependent =&gt; :destroy
  has_many :children, :through =&gt; :child_parents_as_parent
  has_many :child_parents_as_parent, :foreign_key =&gt; :parent_id, :class_name =&gt; &quot;ChildParent&quot;, :dependent =&gt; :destroy

  before_destroy :determine_parents_to_be_destroyed
  after_destroy :destroy_parents

  private
  def determine_parents_to_be_destroyed
    @destroy_parents = []
    self.parents.each do |p|
      @destroy_parents &lt;&lt; p unless p.children.size &gt; 1
    end
  end
  def destroy_parents
    @destroy_parents.each do |p|
      p.destroy
    end
  end
end
</pre></p>
<p>This didn&#8217;t work &#8211; <code>@destroy_parents</code> was never populated. Finally I stumbled on the following sentence, clearly documented in the api for ActiveRecord, yet easily missed: <em>*IMPORTANT:* In order for inheritance to work for the callback queues, you must specify the callbacks before specifying the associations. Otherwise, you might trigger the loading of a child before the parent has registered the callbacks and they won‘t be inherited.</em></p>
<p>Moving the <code>before_destroy</code> and <code>after_destroy</code> declarations above the associations solved the problem.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=140&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2010/02/05/specify-callbacks-before-specifying-the-associations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Using declarative_authorization with subdomains</title>
		<link>http://blog.drivingthevortex.nl/2010/01/24/using-declarative_authorization-with-subdomains/</link>
		<comments>http://blog.drivingthevortex.nl/2010/01/24/using-declarative_authorization-with-subdomains/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 19:45:58 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[association]]></category>
		<category><![CDATA[declarative_authorization]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[single quotes]]></category>
		<category><![CDATA[subdomains]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=86</guid>
		<description><![CDATA[This blog shows a way to pass the subdomain to the User model when using declarative_authorization.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=86&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="tweetmeme-button" id="tweetmeme-button-post-86" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F01%2F24%2Fusing-declarative_authorization-with-subdomains%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2F8C5h0U%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F01%2F24%2Fusing-declarative_authorization-with-subdomains%2F" height="61" width="51" /></a>
</div>
<p>The Rails portal I&#8217;m working on uses subdomains to distinguish between schools (i.e. schoolname.schoudercom.nl). Access to various parts of the portal is controlled through roles using <code>declarative_authorization</code>. All this using one app and one database. So far so good.</p>
<p>But what if a teacher in school1 is a parent in school2? So, when this user requests a page for school1 (under subdomain &#8220;school1&#8243;) his role should be &#8220;teacher&#8221; and when he requests a page for school2 his role should be &#8220;parent&#8221;.</p>
<p>Sounds simple enough to accomplish,  until you realize that information about the subdomain is not accessible from the User model. And so also not available in method <code>role_symbols</code> that is called by <code>declarative_authorization</code>.</p>
<p>This separation of logic between the layers of the MVC pattern is a basic Rails aspect. Various workarounds can be found on the Internet, some of which involve class or instance variables or usage of <code>Thread.current</code>. For a typical discussion on this subject see <a href="http://railsforum.com/viewtopic.php?id=18949" target="_blank">this topic</a>, more information about threading can be found in <a title="Thread safety for your Rails" href="http://m.onkey.org/2008/10/23/thread-safety-for-your-rails" target="_blank">Thread safety for your Rails</a>.</p>
<p>Having read the available information I finally settled on adding an instance variable to the User model and setting this from a <code>before_filter</code> in <code>ApplicationController</code>. Let&#8217;s start with the model definitions, showing only the relevant lines:</p>
<p><pre class="brush: ruby;">
class User &lt; ActiveRecord::Base
    has_many :user_roles
    has_many :roles, :through =&gt; :user_roles, :conditions =&gt; 'school_id=#{self.current_subdomain ? self.current_subdomain.id : -1}'
    attr_accessor :current_subdomain
    # method for declarative_authorization
    def role_symbols
        roles.map do |role|
          role.name.underscore.to_sym
        end
    end
end

class School &lt; ActiveRecord::Base
    has_many :user_roles
end

class Role &lt; ActiveRecord::Base
  has_many :user_roles
  has_many :users, :through =&gt; :user_roles
end

class UserRole &lt; ActiveRecord::Base
    belongs_to :user
    belongs_to :role
    belongs_to :school
end
</pre></p>
<p>The instance variable is <code>current_subdomain</code>. Note that the <code>:condition</code> for the <code>has_many</code> assocation for <code>roles</code> uses <em>single quotes</em>. When <code>declarative_authorization</code> calls <code>role_symbols</code>, which iterates the <code>roles</code> array, the condition is dynamically executed and the roles are filtered based on subdomain. The single quotes will cause the query to be &#8220;lazy evaluated&#8221; as mentioned e.g. <a href="http://www.dweebd.com/ruby/has_many-with-arguments/" target="_blank">in this blog</a>.<br />
When no subdomain is available (e.g. for the public portal starting with &#8216;www&#8217;) the &#8216;-1&#8242; ensures that no roles are assigned.</p>
<p>In <code>ApplicationController</code> add a <code>before_filter</code> and two methods that will set the <code>current_subdomain</code> variable for <code>current_user</code> (provided by AuthLogic in my case):</p>
<p><pre class="brush: ruby;">
before_filter :set_current_subdomain

def current_subdomain
    return @current_subdomain if defined?(@current_subdomain)
    @current_subdomain = request.subdomains.join(&quot;.&quot;)
    @current_subdomain = nil unless (@current_subdomain &amp;&amp; @current_subdomain.casecmp(&quot;www&quot;) != 0 )
    if @current_subdomain
        @current_subdomain = School.find_by_subdomain(@current_subdomain)
    end
    @current_subdomain
end

def set_current_subdomain
    ca = current_subdomain
    current_user.current_subdomain = ca unless current_user.nil?
end
</pre></p>
<p>This may be trivial for experienced Rails developers, but I decided to blog about it anyway &#8211; for people like me who just started working with Rails a couple of months ago it may be useful information.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=86&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2010/01/24/using-declarative_authorization-with-subdomains/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>A Tweet is not a LinkedIn Status Update</title>
		<link>http://blog.drivingthevortex.nl/2010/01/19/a-tweet-is-not-a-linkedin-status-update/</link>
		<comments>http://blog.drivingthevortex.nl/2010/01/19/a-tweet-is-not-a-linkedin-status-update/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:16:50 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=81</guid>
		<description><![CDATA[I was recently forced to delete one of my LinkedIn connections. Why? I like to follow the LinkedIn status updates posted by my connections. They inform me about big projects they work on, about seminars they visit, about job changes and other career-related events. Until recently I was happily following these updates from my iPhone. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=81&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><div class="tweetmeme-button" id="tweetmeme-button-post-81" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F01%2F19%2Fa-tweet-is-not-a-linkedin-status-update%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2F5cZISV%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2010%2F01%2F19%2Fa-tweet-is-not-a-linkedin-status-update%2F" height="61" width="51" /></a>
</div><br />
I was recently forced to delete one of my LinkedIn connections. Why?</p>
<p>I like to follow the LinkedIn status updates posted by my connections. They inform me about big projects they work on, about seminars they visit, about job changes and other career-related events. Until recently I was happily following these updates from my iPhone.</p>
<p>That is, until LinkedIn decided to offer a connection between its status update and Twitter. One of the usage scenarios &#8211; a Tweet with #in is passed to LinkedIn as status update &#8211; makes perfect sense. Once in while you tweet something that is worthwhile knowing for your LinkedIn connections as well: just add #in and you&#8217;re done. The second usage scenario however &#8211; all Tweets are passed to LinkedIn as status update &#8211; turns out to be a pain for those following status updates using the iPhone LinkedIn app. In fact, it just turns into a useless copy of Twitter. You have to wade through 20 Tweets of person X before encountering a single LinkedIn status update of another person, and then another 17 Tweets of the same person X before encountering the next. As people say on Twitter: #fail.</p>
<p>Apart from this practical issue, it usually doesn&#8217;t make sense to connect Twitter one-on-one with your LinkedIn status. LinkedIn gives me the career overview of my connections. Careers develop relatively slowly, and so status updates are relatively sparse. That is a completely different model than Twitter, where the update frequency is typically much higher.</p>
<p>So, to be able to see status updates of all my connections on the iPhone LinkedIn app (and not just Tweets from person X) I had to delete the connection. Which makes me very curious: how do you handle this?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=81&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2010/01/19/a-tweet-is-not-a-linkedin-status-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Leerkracht gezocht</title>
		<link>http://blog.drivingthevortex.nl/2010/01/14/leerkracht-gezocht/</link>
		<comments>http://blog.drivingthevortex.nl/2010/01/14/leerkracht-gezocht/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 20:33:45 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[School-ouder communicatie]]></category>
		<category><![CDATA[functionaliteit]]></category>
		<category><![CDATA[schoudercom.nl]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=68</guid>
		<description><![CDATA["Leerkracht gezocht" zeer nuttige functionaliteit in www.schoudercom.nl.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=68&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Dit bericht is verplaatst naar blog.schoudercom.nl en is nu te bereiken via <a title="Leerkracht gezocht" href="//blog.schoudercom.nl/2010/01/14/leerkracht-gezocht/.">http://blog.schoudercom.nl/2010/01/14/leerkracht-gezocht/</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=68&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2010/01/14/leerkracht-gezocht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Communicatie tussen basisscholen en ouders in beeld</title>
		<link>http://blog.drivingthevortex.nl/2009/12/19/communicatie-in-beeld/</link>
		<comments>http://blog.drivingthevortex.nl/2009/12/19/communicatie-in-beeld/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 08:37:44 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[School-ouder communicatie]]></category>
		<category><![CDATA[schoudercom.nl]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=59</guid>
		<description><![CDATA[Dit bericht is verplaatst naar blog.schoudercom.nl en is nu te bereiken via http://blog.schoudercom.nl/2009/12/19/communicatie-in-beeld/.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=59&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div>
<p>Dit bericht is verplaatst naar blog.schoudercom.nl en is nu te bereiken via <a title="Communicatie tussen basisscholen en ouders in beeld" href="http://blog.schoudercom.nl/2009/12/19/communicatie-in-beeld/">http://blog.schoudercom.nl/2009/12/19/communicatie-in-beeld/</a>.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=59&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2009/12/19/communicatie-in-beeld/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Mogen ouders schoolfotos publiceren op besloten portal?</title>
		<link>http://blog.drivingthevortex.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/</link>
		<comments>http://blog.drivingthevortex.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 22:23:27 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[School-ouder communicatie]]></category>
		<category><![CDATA[schoolfotos]]></category>
		<category><![CDATA[schoudercom.nl]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=42</guid>
		<description><![CDATA[Dit bericht is verplaatst naar blog.schoudercom.nl en is nu te bereiken via http://blog.schoudercom.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=42&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Dit bericht is verplaatst naar blog.schoudercom.nl en is nu te bereiken via <a title="Mogen ouders schoolfotos publiceren op besloten portal?" href="http://blog.schoudercom.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/">http://blog.schoudercom.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=42&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2009/11/23/mogen-ouders-schoolfotos-publiceren-op-besloten-portal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Rubyenrails 2009: what&#8217;s in it for the customer?</title>
		<link>http://blog.drivingthevortex.nl/2009/11/01/rubyenrails-2009-whats-in-it-for-the-customer/</link>
		<comments>http://blog.drivingthevortex.nl/2009/11/01/rubyenrails-2009-whats-in-it-for-the-customer/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 13:21:12 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[rails3.0]]></category>
		<category><![CDATA[rubyenrails2009]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=29</guid>
		<description><![CDATA[The Rubyenrails 2009 Conference, held in Amsterdam as previous years, has just finished. What was new, what was hot and what&#8217;s in it for the customer? One of the nice surprises was the increasing number of large(r) companies that are using Ruby on Rails, to name some examples: Tele2, Nedap, Ordina. Adoption of Rails varies [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=29&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="tweetmeme-button" id="tweetmeme-button-post-29" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F11%2F01%2Frubyenrails-2009-whats-in-it-for-the-customer%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2F4MogRu%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F11%2F01%2Frubyenrails-2009-whats-in-it-for-the-customer%2F" height="61" width="51" /></a>
</div>
<p>The Rubyenrails 2009 Conference, held in Amsterdam as previous years, has just finished. What was new, what was hot and what&#8217;s in it for the customer?</p>
<p>One of the nice surprises was the increasing number of large(r) companies that are using Ruby on Rails, to name some examples: Tele2, Nedap, Ordina. Adoption of Rails varies from usage in one department to being the strategic platform of choice.</p>
<p>This nicely coincides with  the inspiring talk by Jeremy Kemper who observes that both Ruby and Rails are not hypes anymore but are becoming mainstream.</p>
<p>The real-life example <a title="Nederlandse Omroep" href="http://www.omroep.nl" target="_blank">omroep.nl</a> (presentation by Bart Zonneveld and Sjoerd Tieleman) illustrates what Ruby on Rails can do for the web development industry. Within 6 months a small team built both the site itself and a custom CMS that interfaces with an existing image library. If anything, this example shows both the maturity of the platform and the rapid development cycles that can be achieved.</p>
<p>Other presentations addressed performance (Bart ten Brinke) and security (Jonathan Weiss). They gave various practical pointers for building a performing Ruby on Rails site and increasing security to block various types of attacks (XSS, Session Fixation, CSRF, Javascript Hijacking).</p>
<p>Customers usually don&#8217;t care much which database is being used, as long as the functionality of the website works as desired. Perhaps this will be different for MongoDB (presentation by Michael Dirolf), a new document-based schema-free database. Letting go of schemas is quite a step for anybody involved in modern relational databases but it opens up a huge potential for flexibility all the way up to the end-user. An administrator wants a new User field for sub-departments? With MongoDB at the back this will be trivial. Sure, such functionality is possible with a relational database as well, but requires quite a bit more work.</p>
<p>Last but not least Jeremy Kemper and Yehuda Katz highlighted the improvements that Rails 3.0 will bring. Many excellent changes are of technical nature and invisible to customers but the speed-up of the framework (up to 10x for collection rendering) and the improved support for encoding and time zones will likely have a noticable effect on the (international) user experience.</p>
<p>What is your take on the advantages Rails 3.0 will bring?</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:581px;width:1px;height:1px;"><strong>Yehuda KatzJeremy Kemper and<br />
</strong></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=29&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2009/11/01/rubyenrails-2009-whats-in-it-for-the-customer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Social networking is so full of&#8230;tricks.</title>
		<link>http://blog.drivingthevortex.nl/2009/10/23/social-networking-is-so-full-of-tricks/</link>
		<comments>http://blog.drivingthevortex.nl/2009/10/23/social-networking-is-so-full-of-tricks/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 19:52:52 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://blog.drivingthevortex.nl/?p=21</guid>
		<description><![CDATA[Social networking is often reduced to a bag of tricks. A clear example of this has been the rise of authentic marketing as a business.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=21&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="tweetmeme-button" id="tweetmeme-button-post-21" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F10%2F23%2Fsocial-networking-is-so-full-of-tricks%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2FcvfwBA%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F10%2F23%2Fsocial-networking-is-so-full-of-tricks%2F" height="61" width="51" /></a>
</div>
<p>Social networking is a hype. Say what? Arguing this is like swimming upstream in the flow of twittering linkedin facebookies. But what&#8217;s the alternative? Going with the flow, creating or applying yet another Top-10 of Do&#8217;s or Don&#8217;ts for This or That Social Platform?</p>
<p>There was a time when a bunch of creative and visionary people started playing with social networking concepts. In no time they became the center of attention, with  lots of followers, and were able to make a living out of it. Such entrepeneurs  still exist but the majority of people  involved with  social networking nowadays are followers and copycats. That&#8217;s fine, but unfortunately many seem to  believe social networking  is just another bag of tricks.</p>
<p>Take for example the authenticity &#8220;trick&#8221;. The first CEO&#8217;s, Vice Presidents, Support Engineers and R&amp;D Managers that started blogging and twittering in an authentic way introduced a new kind of marketing based on intimacy, conversation and trust. The genuine posts written by those early adopters were read and believed  by many potential customers,  positively influencing sales figures.</p>
<p>Soon this was picked up by marketeers, massively adopting the new <em>authentic marketing</em> channel (where&#8217;s the authenticity in that?).  And so it became a trick. In a recent  Dutch radio campaign  various  employees of PricewaterhouseCoopers address the listener and talk about potentially interesting subjects. The point is, however, that these scripts are so obviously produced by a large marketing department trying to imitate authenticity that it is hilarious at best. What started off as spontaneous personal outings has become an industry of professionals offering their customers to help with their authentic advertising. Sounds like a contradiction in terms to me.</p>
<p>Yes, we at Driving the Vortex do read the lists of Top-10 tips about social networking. Then when visiting a customer we forget about it completely and listen to the unique challenges facing them. And if our unique solution involves social networking of some kind (and they often do), then we might apply some of the techniques often encountered as  tips. But only to improve the chance of success for our customer, not as a trick upfront.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=21&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2009/10/23/social-networking-is-so-full-of-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
		<item>
		<title>Social networking en crowdsourcing tijdens DIS 2009</title>
		<link>http://blog.drivingthevortex.nl/2009/10/12/dis2009/</link>
		<comments>http://blog.drivingthevortex.nl/2009/10/12/dis2009/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:52:07 +0000</pubDate>
		<dc:creator>Rob van Dijk</dc:creator>
				<category><![CDATA[new social media]]></category>
		<category><![CDATA[crowdsourcing]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://robvandijk.wordpress.com/?p=3</guid>
		<description><![CDATA[Verslag van bezoek aan de DIS Connect 2009.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=3&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div class="tweetmeme-button" id="tweetmeme-button-post-3" style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'>
<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F10%2F12%2Fdis2009%2Ftweetmeme_alias%3Dhttp%3A%2F%2Fbit.ly%2FdB4lsr%26tweetmeme_source%3Dtallandsomethin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.drivingthevortex.nl%2F2009%2F10%2F12%2Fdis2009%2F" height="61" width="51" /></a>
</div>
<p>Vorige week heb ik de DIS 2009 bezocht, oftewel de Dutch Innovation Seminar die in het teken stond van de impact van social networking op organisaties. Algemene indruk: leuke workshops en een betrokken publiek.</p>
<p>De plenaire sessie begon met een praatje van  Menno Lanting. Hij was wel vermakelijk maar verder dan algemeenheden kwam het helaas niet. Enne&#8230; LinkedIn uitspreken als &#8220;linkut-in&#8221; was waarschijnlijk onbedoeld grappig.</p>
<p>Monique van Maare, de volgende spreker, gaf inzicht in de sociale keuken van IBM. Het meest interessante uit haar praatje  waren de Innovation Jams: real-life voorbeelden van ideasourcing.</p>
<p>Maar de laatste spreker, Bert Mulder, stal wat mij betreft toch wel de show. Met een, mij zeer aansprekende, nuchtere benadering van wat toch wel een hype genoemd mag worden veegde hij de vloer aan met de jubeltaal die zo vaak gebruikt wordt als het over social networking gaat. Van marktwerking en innovatie in de zorg naar neuzelaars, vertellers en netwerkers. Bert zet haarscherp neer hoe bestaande sociale netwerken zoals LinkedIn en Facebook misschien ondersteunende technologie kunnen zijn, maar dat de werkelijke sociale netwerken veel ongrijpbaarder zijn. <a title="Presentatie Bert Mulder op DIS Connect 2009" href="http://www.vimeo.com/6971970" target="_blank">Bekijk zijn presentatie hier.</a></p>
<p>Na deze plenaire sessies kwamen de parallelle workshops aan bod. Erg jammer dat je maar naar 2 workshops kon gaan. Er zaten veel interessante tussen, en zelfs de minder interessante werden boeiend door de discussies die ontstonden.</p>
<p>De discussies die mij het meeste bij zijn gebleven:</p>
<ul>
<li>Welke kansen heeft de gemeente Amsterdam laten liggen door <a title="Binnen 30 minuten" href="http://www.binnen30minuten.nl" target="_blank">binnen30minuten</a> zo traditioneel op te zetten en geen ruimte te geven voor echte interactie?</li>
<li>Wat is de definitie van crowdsourcing?</li>
</ul>
<p>Deze laatste discussie heeft me nogal verwonderd want wat maakt het uit hoe je het precies definieert als het maar duidelijk omschreven is wat je doel is en hoe je er komt?</p>
<p>Kortom een geslaagd event van de Baak, met een mooie verscheidenheid aan  sprekers en bezoekers. Was je zelf ook bezoeker en wat vond jij ervan?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robvandijk.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robvandijk.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.drivingthevortex.nl&#038;blog=9904214&#038;post=3&#038;subd=robvandijk&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.drivingthevortex.nl/2009/10/12/dis2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1be05892fa5efbefa4fd843e33d49e0c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robvandijk</media:title>
		</media:content>
	</item>
	</channel>
</rss>
