<?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>Common Vision</title>
	<atom:link href="http://www.commonvision.com.au/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.commonvision.com.au</link>
	<description>Proactive IT Solutions</description>
	<lastBuildDate>Mon, 03 Dec 2012 22:27:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Business Process Reviews: How We Can Help</title>
		<link>http://www.commonvision.com.au/business-process-reviews-how-we-can-help/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=business-process-reviews-how-we-can-help</link>
		<comments>http://www.commonvision.com.au/business-process-reviews-how-we-can-help/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 06:32:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://relaunch.commonvision.com.au/?p=745</guid>
		<description><![CDATA[In today&#8217;s age of modern business, industry competition means that companies must continually strive to implement &#8220;best practice&#8221; solutions in each domain in order to keep pace within their marketplace and/or exploit their own natural advantages. In some industries, this trend is being supported by the establishment of frameworks which divide industry operations into a]]></description>
			<content:encoded><![CDATA[<p>In today&#8217;s age of modern business, industry competition means that companies must continually strive to implement &#8220;best practice&#8221; solutions in each domain in order to keep pace within their marketplace and/or exploit their own natural advantages.</p>
<p>In some industries, this trend is being supported by the establishment of frameworks which divide industry operations into a series of standard processes. The individual processes provide a convenient framework for the study of organisational processes to provide a basis for best practice implementation.</p>
<p>So how can you get started and get going and take the operations of your business to the next level?</p>
<hr class="h80"/>
<h3>A Business Process Review</h3>
<p>A simple way to achieve this, is to conduct a Business Process Review. Common Vision provides a process for performing a Process Review for a nominated business function and is something we would provide as part of our <a href="http://www.commonvision.com.au/services" class="normal">Accelerator Service</a>.</p>
<p>The primary purpose of the Common Vision Business Process Review is to undertake a coarse level analysis of a business function <em>in order to identify gaps or opportunities for major improvement rather than to conduct exhaustive documentation of an organisation’s existing processes</em>.</p>
<hr class="h80"/>
<h3>How Long Does It Take?</h3>
<p>While the duration depends upon the size and complexity of the area being investigated, the end-to-end activity typically takes in the order of 6-8 weeks from initial planning to delivery of the Process Mapping report.</p>
<hr class="h80"/>
<h3>What Does It Involve?</h3>
<p>There are 4 key steps to delivering the review:</p>
<p><strong>1. Initial Planning</strong><br />
Successful execution of a Business Process Review requires effective planning and Preparation (it also ensures the most effective use of time of the participants). Initial Planning involves a workshop with the Project Sponsor and nominated Stakeholders in which the scope of the Process Review is agreed along with the participants and Source Material.</p>
<p><strong>2. Preparation</strong><br />
Preparation involves initial analysis of available material along with an investigation of available “best practice” references for the relevant domain. An output of the preparation phase is an interview schedule (and sometimes a questionnaire) to be completed by participants prior to interview. The interviewer will begin to compile an inventory of available material to be used as input to interview preparation.</p>
<p><strong>3. Interviews &#038; Workshops</strong><br />
A key element of the information gathering exercise is the in-person interviews with the nominated customer representatives with the greatest knowledge of the existing processes. Each interview will typically last in the order of 90 minutes. Follow-ups will be required with some individuals.<br/></li>
<p><strong>4. Business Process Mapping</strong><br />
The final stage in the Business Process Review is the creation of a Process Model describing the processes currently being performed. This activity necessarily involves the services of an individual with expertise in the problem domain under investigation. Apart from the inventory, there are three principal outputs from the business process review as follows:</p>
<p><em>CUSTOMER PROCESS MODEL SUMMARY</em> &#8211; The Customer Process Model describes the processes currently being performed along with a mapping to an industry recognized Process Model.</p>
<p><em>PROCESS GAPS</em> &#8211; The mapping exercise will identify any areas within the industry model which are currently not being managed within the organization (e.g. no formal process for addressing customer feedback).</p>
<p><em>OPPORTUNITIES FOR IMPROVEMENT</em> &#8211; A summary of process gaps and identified departures from recognized best practice, which represent opportunities for improvement. Items may consist of both short and long-term suggestions for change and include both changes to process and/or the introduction of new IT systems or systems changes.</p>
<hr class="h80"/>
<h3>What Is Delivered?</h3>
<p>Apart from the inventory, there are three principal outputs from the business process review as follows:</p>
<p><strong>CUSTOMER PROCESS MODEL SUMMARY</strong><br />
The Customer Process Model describes the processes currently being performed along with a mapping to an industry recognized Process Model.</p>
<p><strong>PROCESS GAPS</strong><br />
The mapping exercise will identify any areas within the industry model which are currently not being managed within the organization (e.g. no formal process for addressing customer feedback).</p>
<p><strong>OPPORTUNITIES FOR IMPROVEMENT</strong><br />
A summary of process gaps and identified departures from recognized best practice, which represent opportunities for improvement. Items may consist of both short and long-term suggestions for change and include both changes to process and/or the introduction of new IT systems or systems changes.</p>
<hr class="h80"/>
<p>So if you&#8217;re looking to review your Business Processes, then <a href="http://www.commonvision.com.au/contact" class="normal">contact us</a>.</p>
<p><a href="http://www.commonvision.com.au/contact"><br />
<input type="button" value="Contact Us" class="red"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/business-process-reviews-how-we-can-help/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting HTTPS going on your local POW instance using Nginx</title>
		<link>http://www.commonvision.com.au/getting-https-going-on-your-local-pow-instance-using-nginx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-https-going-on-your-local-pow-instance-using-nginx</link>
		<comments>http://www.commonvision.com.au/getting-https-going-on-your-local-pow-instance-using-nginx/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 05:44:53 +0000</pubDate>
		<dc:creator>Jason Nah</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[pow]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=558</guid>
		<description><![CDATA[Security. We&#8217;ve all heard and read about it. But many of us forget to do something about it, until something nasty happens. In Oct 2010, the blogosphere erupted with the demonstration of Firesheep pointing out that one of the most basic things any web developer can do to improve their application security is to use]]></description>
			<content:encoded><![CDATA[<p><br/><br />
Security. We&#8217;ve all heard and read about it. But many of us forget to do something about it, until something nasty happens. In Oct 2010, the blogosphere erupted with the <a href="http://techcrunch.com/2010/10/25/lazy-hackers-twitter-firesheep-boasts-100000-downloads-faceboo/" target="_blank">demonstration of Firesheep</a> pointing out that one of the most basic things any web developer can do to improve their application security is to use HTTPS.</p>
<p>For a Rails developer, isn&#8217;t this just a matter of adding a gem to your Gemfile, and running bundler?</p>
<p>If only it were that simple.</p>
<p>For this post, I&#8217;ll go through some of the steps that I took to get HTTPS going on a Rails application running locally under POW. Hopefully, it&#8217;ll be of use to somebody.</p>
<div style="height:2em"></div>
<h3>What&#8217;s POW?</h3>
<p>So you have a rails application, which you typically fire up using:</p>
<p></p><pre class="crayon-plain-tag">rails s
open http://localhost:3000</pre><p></p>
<p><a href="http://pow.cx" target="_blank"><img src="http://pow.cx/images/logo-pow.png" alt="POW" height="150" width="205" style="float:right;margin:0 0 0 10px"/></a></p>
<p>What happens if you have multiple rails applications? Or for that matter sinatra, merb or any other Rack-based application? Do you fire them all up with separate ports?</p>
<p>Here&#8217;s where POW comes in really handy. <a href="http://pow.cx" target="_blank">POW</a>! is a zero-config rack server for Mac OS X. It&#8217;s dead easy to install and get running, and makes it possible to host multiple Ruby Rack applications without each Rack application having to run in a separate web server on a separate port.</p>
<h3>POWer me up!</h3>
<p>To install POW, run the following in the terminal:</p>
<p></p><pre class="crayon-plain-tag">echo &amp;quot;export POW_DOMAINS=dev,local&amp;quot; &amp;gt; ~/.powconfig
curl get.pow.cx | sh
cd ~/.pow
ln -s /path/to/myapp myapp

open http://myapp.dev</pre><p></p>
<p>Here&#8217;s a trap that I found. The documentation for POW typically tell you to download and install POW with one command, namely; curl piped to sh. However, in my experience, this did not (for some reason) configure OS X&#8217;s system resolver properly so requests were not being forwarded to POW. I had to specify the Top Level Domains (TLD) in a config file and reinstall POW. So, save yourself the trouble and set it first with the <code>POW_DOMAINS</code> variable in the <code>.powconfig</code> file before you install.</p>
<h3>Keep the POWer on</h3>
<p>When you start using POW, you may notice that some refreshes take a really long time to come back. This happens because POW tends to spin down the rails instance after a timeout, making it painful when you refresh your page as this causes POW to reinitialise the rails application from scratch (and we all <a href="http://rhnh.net/2011/05/28/speeding-up-rails-startup-time" target="_blank">know how long rails 3 takes to initialise</a>). To fix this, edit your <code>~/.powconfig</code> to include the following:</p>
<p></p><pre class="crayon-plain-tag">export POW_TIMEOUT=30000
export POW_WORKERS=3</pre><p></p>
<p>The <code>POW_TIMEOUT</code> sets POW to keep the process running for a long time, which is typically what you want, given that in development, rails will automatically reload (mostly) the altered files.</p>
<p>So now, you can <strong>throw away the <code>rails s</code> command</strong> as POW will fire up the instance when you need it.</p>
<h3>How Do I Bolt On HTTPS To POW?</h3>
<p><a href="http://nginx.org" target="_blank"><img style="float: right; margin: 0 0 10px 10px" src="http://nginx.org/nginx.gif" alt="Nginx Logo" /></a><br />
AFAIK &#8211; you can&#8217;t. I looked, and I couldn&#8217;t find any way to install a certificate to get HTTPS going. So, the easiest way to bolt on HTTPS is to setup Nginx as a <a href="http://en.wikipedia.org/wiki/Reverse_proxy" target="_blank">reverse proxy</a>. And although it sounds hard, it isn&#8217;t.</p>
<p>Nginx is fast HTTP server. And like any capable HTTP server, it is able to accept HTTPS connections and can be configured to proxy requests through to POW.</p>
<h3>Bolt In Nginx</h3>
<p>To install Nginx on OS X, you have two choices:</p>
<ol>
<li>Install it via Brew</li>
<li>Install it the old fashion way</li>
</ol>
<h3>Brew me an Nginx</h3>
<p>The easy way is to use <a href="http://mxcl.github.com/homebrew/" target="_blank">Brew</a>. Just run</p>
<p></p><pre class="crayon-plain-tag">brew install nginx</pre><p></p>
<p>Done.</p>
<h3>I Don&#8217;t Have Brew</h3>
<p>If you&#8217;re like me, and you&#8217;re already using MacPorts and haven&#8217;t made the switch to brew, then you have to do things the hard way. I followed instructions on <a href="http://www.kevinworthington.com/nginx-mac-os-snow-leopard-2-minutes/" target="_blank">Kevin Worthington&#8217;s Blog</a> but specifically, I had to do the following:</p>
<ol>
<li><strong>Install XCode</strong>(I already had XCode installed previously so I didn&#8217;t have to do anything). Installing XCode is a matter of downloading it and installing it. In fact, if you&#8217;re running Snow Leopard or Lion, you can download it and install it directly via the Mac App Store.</li>
<li><strong>Install <a href="http://www.pcre.org/" target="_blank">PCRE</a></strong>This required me to download the source and install it manually. The steps I took were as follows:
<p></p><pre class="crayon-plain-tag">sudo mkdir -p /usr/local/src
  cd /usr/local/src
  sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
  tar xvfz pcre-8.12.tar.gz
  cd pcre-8.12
  ./configure --prefix=/usr/local
  make
  sudo make install</pre><p></li>
<li><strong>Install Nginx</strong>Installing Nginx is a matter of downloading the source, building and installing it. I followed the following steps:
<p></p><pre class="crayon-plain-tag">cd /usr/local/src
  sudo wget http://nginx.org/download/nginx-1.0.4.tar.gz
  tar xvfz nginx-1.0.4.tar.gz
  cd nginx-1.0.4
  ./configure --prefix=/usr/local --with-http_ssl_module
  make
  sudo make install</pre><p></li>
</ol>
<h3>Intermission. Time For Certificates.</h3>
<p>Ok. Time for a break. Time to break out openssl to generate some certificates.</p>
<p>HTTPS sits on top of Secure Sockets Layer (SSL). For this to work, the encrypted communication requires certificates to be installed at the web server end. In production, you would purchase the certificate from a Certificate Authority (CA) like Verisign or Digicert. The CA&#8217;s role is to issue you with a certificate that verifies the identity of the entity the certificate is for (e.g. the domain name owner).</p>
<p>But for development, you don&#8217;t need a certificate from a CA. All you need is openssl to generate a certificate which is self-signed. There are <a href="http://www.google.com.au/search?client=safari&amp;rls=en&amp;q=generating+self+signed+certificate&amp;ie=UTF-8&amp;oe=UTF-8&amp;redir_esc=&amp;ei=uBdXTvP-AerKiAKsusi_CQ" target="_blank">countless articles on the web</a> describing this process in detail. <a href="http://www.akadia.com/services/ssh_test_certificate.html" target="_blank">www.akadia.com&#8217;s article</a> seems to be pretty self explanatory.</p>
<p>Once you&#8217;re done generating the certificates, you will need to either copy or symlink them to the appropriate Nginx location so that Nginx can find them. To do this, I did the following:</p>
<p></p><pre class="crayon-plain-tag">cd /usr/local/conf
mkdir ssl
cp server.crt ./ssl
cp server.key ./ssl</pre><p></p>
<h3>I Have Nginx. Now to configure it.</h3>
<p>If you followed my install instructions above, then Nginx&#8217;s conf file is located in</p><pre class="crayon-plain-tag">/usr/local/conf/nginx.conf</pre><p>You will need to edit the <code>nginx.conf</code> file to configure Nginx to:</p>
<ol>
<li>Use the certificates you generated</li>
<li>Listen to port 443 to handle the HTTPS protocol</li>
</ol>
<p>Here&#8217;s what I added to the <code>nginx.conf</code> file to configure Nginx as a reverse proxy.</p>
<p>[text]<br />
server {<br />
    listen       443 ssl;<br />
    server_name  myapp.dev;</p>
<p>    ssl                  on;<br />
    ssl_certificate      ssl/server.crt;<br />
    ssl_certificate_key  ssl/server.key;</p>
<p>    keepalive_timeout 60;</p>
<p>    ssl_session_timeout  5m;</p>
<p>    ssl_protocols  SSLv2 SSLv3 TLSv1;<br />
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;<br />
    ssl_prefer_server_ciphers   on;</p>
<p>    location / {<br />
        proxy_pass http://127.0.0.1;<br />
        ### force timeouts if one of backend is died ##<br />
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;</p>
<p>        ### Set headers<br />
        proxy_set_header Host $host;<br />
        proxy_set_header X-Real-IP $remote_addr;<br />
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</p>
<p>        ### Most PHP, Python, Rails, Java Apps can use this header<br />
        proxy_set_header X-Forwarded-Proto https;</p>
<p>        ### By default we don&#8217;t want to redirect it<br />
        proxy_redirect off;<br />
    }<br />
}<br />
[/text]</p>
<p>The things that you may need to alter are:</p>
<ul>
<li><code>server_name</code> &#8211; enter the domain that matches what you would enter to hit POW</li>
<li><code>ssl_certificate</code> &#8211; enter the location of your server.crt file. If you copied the certificates<br />
to <code>/usr/local/conf/ssl</code>, then enter <code>ssl/server.crt</code> since the<br />
nginx.conf</code> resides in <code>/usr/local/conf</code></li>
<li><code>ssl_certificate_key</code> - enter the location of your server.key file. This should be similar<br />
to that for <code>ssl_certificate</code></li>
</ul>
<p>The rest of the configuration tells Nginx to proxy the request to localhost on port 80, which is where POW will<br />
kick in and handle the request for you.</p>
<h3>Configured!</h3>
<p>Once you're done, fire up Nginx using <code>/usr/local/sbin/nginx</code> and test it by navigating to https://myapp.dev.</p>
<p>"You gotta blog about this man..." cried <a href="http://skorks.com">Alan</a> after I checked in. In acknowledgement, I nodded. Fast forward four weeks later, after <a href="https://www.crowdhired.com">CrowdHired has launched</a>... I now have some breathing space to really blog about it. So hopefully this has been of help to you and saved you some time along the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/getting-https-going-on-your-local-pow-instance-using-nginx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Common Vision @ Melbourne University Careers Fair</title>
		<link>http://www.commonvision.com.au/common-vision-melbourne-university-careers-fair/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=common-vision-melbourne-university-careers-fair</link>
		<comments>http://www.commonvision.com.au/common-vision-melbourne-university-careers-fair/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 10:21:55 +0000</pubDate>
		<dc:creator>Brett Krieger</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[graduate]]></category>
		<category><![CDATA[recruitment]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=522</guid>
		<description><![CDATA[Common Vision is currently participating in the IT industry&#8217;s version of the AFL National Draft, namely the various Universities&#8217; Careers Fairs. Yesterday we exhibited at the University of Melbourne Careers Fair for 2011 Graduates. Our objective for the day was to provide candidates with a realistic overview of our company &#38; graduate program and meet]]></description>
			<content:encoded><![CDATA[<p>Common Vision is currently participating in the IT industry&#8217;s version of the AFL National Draft, namely the various Universities&#8217; Careers Fairs. Yesterday we exhibited at the University of Melbourne Careers Fair for 2011 Graduates. Our objective for the day was to provide candidates with a realistic overview of our company &amp; graduate program and meet some final year students. We were also interested in what other prospective employers were doing to attract the best IT talent.</p>
<p>For any professional services company, the quality of people is a key factor in the value of the service which that company is able to provide. Graduate recruitment will become an increasingly important component in that equation for Common Vision along with existing fundamentals we apply to personnel selection and development as follows:</p>
<ol>
<li>Recruit and develop highly-skilled Professionals in strategic disciplines with a solid understanding of &#8220;best practice&#8221; IT delivery techniques</li>
<li>Develop internal practice-specific collateral, practices and Intellectual Property for IT delivery</li>
<li>Continue to develop all staff on a &#8220;best you can be&#8221; basis through training, mentoring and encouragement to participate in best practice forums within the industry</li>
<li>Grow our practice through an annual graduate recruitment program with an emphasis on high-potential individuals with Common Vision providing training and mentoring in Common Vision disciplines and practices</li>
<li>Focus on the motivation and desire to &#8220;grow&#8221; their professional capabilities (depth and breadth).</li>
</ol>
<p>While I&#8217;ve previously been involved in co-ordinating graduate recruitment at other organisations, this is the first year Common Vision has instituted a formal graduate recruitment program. I wasn&#8217;t sure how many candidates would be sufficiently motivated to make the trek over from the University to check out the 130 or so employers who exhibited on the day but we expected that Jason, Lorena and I would be sufficient to handle the queries. As we are only hiring 2 graduates for our 2012 intake, this year we only attended the Melbourne University Careers Fair (for the simple reason that we were most familiar with that University&#8217;s curriculum).</p>
<p>For those of you interested in the practicalities of the fair, exhibition set up was conducted between 9 and 11am with an opportunity to meet the other exhibitors from 11am. Doors open to candidates at midday with a nominal close time of 4pm. We provide a standard graduate brochure to anyone who expresses an interest in applying after we have discussed our company and their studies. As an indication of the level of interest received, 46 application brochures were requested by candidates. While any of our impressions of candidates on the day are necessarily brief and imperfect, my personal assessment is that there no less than 25 individuals whom we met that would have a chance of success. Five of these individuals might reasonably be considered &#8220;very strong&#8221; candidates. Our brochure provided all candidates with an online puzzle that they can complete to demonstrate their programming capabilities so any response from that exercise might give us a better idea.</p>
<p>While it wasn&#8217;t possible for us to spend more than 10 minutes or so with  any individual on the day (interviews come later) we were able to  confirm that there are some excellent candidates with a diversity of  skills and interest who are now considering an application for  employment with our company. Given that most of these individuals would never have heard of us  previously, our participation in the graduate fair can be considered  an unmitigated success.</p>
<div id="attachment_530" class="wp-caption alignleft" style="width: 563px"><img class="size-full wp-image-530" title="CV-GradRecruitment2011-9" src="http://relaunch.commonvision.com.au/wp-content/uploads/2011/03/CV-GradRecruitment2011-91.jpg" alt="Before the Fair" width="553" height="367" /><p class="wp-caption-text">Meeting other exhibitors before the event</p></div>
<div style="clear:left"></div>
<p>Jason brought along a camera to take pictures during the day. He took a few pictures before the doors opened but the level of interest was such that the 3 of us were kept busy for the 4 hours and beyond. If we look a little lonely in the following picture it&#8217;s because it was taken after the fair had closed and just as our last students were heading off on their way.</p>
<div id="attachment_531" class="wp-caption alignleft" style="width: 571px"><a href="http://relaunch.commonvision.com.au/wp-content/uploads/2011/03/CV-GradRecruitment2011-121.jpg"><img class="size-full wp-image-531" title="CV-GradRecruitment2011-12" src="http://relaunch.commonvision.com.au/wp-content/uploads/2011/03/CV-GradRecruitment2011-121.jpg" alt="4:15pm, it's all over" width="561" height="373" /></a><p class="wp-caption-text">After the Fair</p></div>
<p>While we remain unconvinced of the merits of the new &#8220;Melbourne Model&#8221; introduced in 2008 <a title="The Melbourne Model 2008" href="http://uninews.unimelb.edu.au/news/4155/" target="_blank">http://uninews.unimelb.edu.au/news/4155/</a> we could only be pleased with the organisation, preparation and communication for the careers fair. Next year we shall extend our graduate program to Monash University and RMIT and would like to involve members of our consulting staff in one or more of the sessions. We shall also arrange for an additional exhibition banner and &#8220;Common Vision Graduate Recruitment Team&#8221; t-shirts for staff representing the company on the day.</p>
<p>If you have any interest in participating in future graduate recruitment activities, please indicate your interest to Lorena with a cc to recruitment@commonvision.com.au.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/common-vision-melbourne-university-careers-fair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac RVM 1.9.2-p0 Install Error &#8211; readline.c 1292</title>
		<link>http://www.commonvision.com.au/mac-rvm-1-9-2-p0-install-error-readline-c1292/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mac-rvm-1-9-2-p0-install-error-readline-c1292</link>
		<comments>http://www.commonvision.com.au/mac-rvm-1-9-2-p0-install-error-readline-c1292/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 09:30:34 +0000</pubDate>
		<dc:creator>Jason Nah</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=488</guid>
		<description><![CDATA[To those who may have had a similar error, this post is for you. So your rvm is up to date. And now you have to roll with ruby 1.9.2. In my previous post, I went through how I got around a ruby 1.8.7 install error. And that error had to do with readline. Well,]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="RVM Logo" src="http://rvm.beginrescueend.com/images/logo.png" alt="" width="138" height="132" />To those who may have had a similar error, this post is for you.</p>
<p>So your <a href="http://rvm.beginrescueend.com/">rvm</a> is up to date. And now you have to roll with ruby 1.9.2.</p>
<p>In my <a href="http://www.commonvision.com.au/2010/09/20/rvm-mac-osx-10-6-and-ruby-1-8-7-p302-install-error/">previous post</a>, I went through how I got around a ruby 1.8.7 install error. And that error had to do with readline.</p>
<p>Well, if you ran</p>
<p></p><pre class="crayon-plain-tag">rvm install 1.9.2</pre><p></p>
<p>And go the following error:</p>
<p></p><pre class="crayon-plain-tag">ruby-1.9.2-p0 - #fetching
ruby-1.9.2-p0 - #downloading ruby-1.9.2-p0, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8296k  100 8296k    0     0  23037      0  0:06:08  0:06:08 --:--:--  8643
ruby-1.9.2-p0 - #extracting ruby-1.9.2-p0 to /Users/jasonn/.rvm/src/ruby-1.9.2-p0
ruby-1.9.2-p0 - #extracted to /Users/jasonn/.rvm/src/ruby-1.9.2-p0
ruby-1.9.2-p0 - #configuring
ruby-1.9.2-p0 - #compiling
Error running 'make ', please read /Users/jasonn/.rvm/log/ruby-1.9.2-p0/make.log
There has been an error while running make. Halting the installation.</pre><p></p>
<p>If you examine the make.log file, the last few lines may show the following:</p>
<p></p><pre class="crayon-plain-tag">compiling readline
gcc -I. -I../../.ext/include/x86_64-darwin10.5.0 -I../.././include -I../.././ext/readline -DRUBY_EXTCONF_H=&amp;quot;extconf.h&amp;quot; -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch x86_64 -fno-common -pipe  -o readline.o -c readline.c
readline.c: In function &lsquo;username_completion_proc_call&rsquo;:
readline.c:1292: error: &lsquo;rl_username_completion_function&rsquo; undeclared (first use in this function)
readline.c:1292: error: (Each undeclared identifier is reported only once
readline.c:1292: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make: *** [mkmain.sh] Error 1</pre><p></p>
<p>Fortunately, this is exactly the same problem as before. All you need to do is tell the compiler where the readline library is. If you setup is similar to what I indicated in my <a href="http://www.commonvision.com.au/2010/09/20/rvm-mac-osx-10-6-and-ruby-1-8-7-p302-install-error/">previous post</a>, then all you have to do to install 1.9.2 is:</p>
<p></p><pre class="crayon-plain-tag">rvm install 1.9.2 -C --with-readline-dir=/usr/local</pre><p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/mac-rvm-1-9-2-p0-install-error-readline-c1292/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mongoid Custom Validation with I18n support</title>
		<link>http://www.commonvision.com.au/mongoid-custom-validation-with-i18n-support/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mongoid-custom-validation-with-i18n-support</link>
		<comments>http://www.commonvision.com.au/mongoid-custom-validation-with-i18n-support/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 00:29:26 +0000</pubDate>
		<dc:creator>Jason Nah</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=485</guid>
		<description><![CDATA[If you&#8217;re on Rails3, and using mongodb, it makes a lot of sense to use the mongoid gem. Why? Because mongoid hooks neatly into the ActiveModel framework which was made possible when Rails3 came along. So if you&#8217;re like me, and was wondering how to do custom validation on a field, it turns out that]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re on Rails3, and using <a href="http://www.mongodb.org/">mongodb</a>, it makes a lot of sense to use the <a href="http://mongoid.org">mongoid gem</a>. Why? Because mongoid hooks neatly into the ActiveModel framework which was made possible when Rails3 came along.</p>
<p>So if you&#8217;re like me, and was wondering how to do custom validation on a field, it turns out that it is simply a matter of adding logic to the validate block like so&#8230;</p>
<p></p><pre class="crayon-plain-tag">class MyModel
   include Mongoid::Document

   validate do
      errors.add(:atttribute, message) if attribute_is_invalid?
   end

end</pre><p></p>
<p>You might be tempted to start hacking a string message in your errors collection, but there&#8217;s good reason to externalise your error messages to a separate locale.yml file. The sooner you start externalizing them, the easier it will be later to support other languages. So how do you generate an appropriate i18n message?</p>
<p>On first go, you might think that the easiest way is to use:</p>
<p></p><pre class="crayon-plain-tag">I18n.t('mode.attribute.error')</pre><p></p>
<p>However, this doesn&#8217;t quite fit how other ActiveModel errors are namespaced. Typically, they follow the following convention:</p>
<p>en-us.activemodel.errors.models.[MODEL].attributes.[ATTRIBUTE].[ERROR]</p>
<p>As I was looking to an answer to this question, I stumbled on <a href="http://apidock.com/rails/ActiveModel/Errors/generate_message">ActiveModel::Errors.generate_message()</a>. It looks like all you need to do is to meet the following signature:</p>
<p></p><pre class="crayon-plain-tag">generate_message(attribute, type = :invalid, options = {})</pre><p></p>
<p>So this transforms the above validate block into something like this:</p><pre class="crayon-plain-tag">class MyModel
   include Mongoid::Document

   validate do
      errors.add(:atttribute, errors.generate_message(:attribute, :error)) if attribute_is_invalid?
   end

end</pre><p></p>
<p>Hopefully this will help somebody else out there to save some time trying to crack this nut.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/mongoid-custom-validation-with-i18n-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips To Optimise Your Software Builds</title>
		<link>http://www.commonvision.com.au/tips-to-optimise-your-software-builds/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tips-to-optimise-your-software-builds</link>
		<comments>http://www.commonvision.com.au/tips-to-optimise-your-software-builds/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 00:42:58 +0000</pubDate>
		<dc:creator>Jason Nah</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[best-practices]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=479</guid>
		<description><![CDATA[So, you&#8217;ve gotten into the TDD/BDD swing of things, and you&#8217;re creating specs all over the shop&#8230; in a systematic way (of course). Now you&#8217;ve built up a suite of tests, and everything&#8217;s going well&#8230; things are green. One important thing to start realising on a green-field project is to always take time to improve.]]></description>
			<content:encoded><![CDATA[<p>So, you&#8217;ve gotten into the TDD/BDD swing of things, and you&#8217;re creating specs all over the shop&#8230; in a systematic way (of course). Now you&#8217;ve built up a suite of tests, and everything&#8217;s going well&#8230; things are green.</p>
<p>One important thing to start realising on a green-field project is to always take time to improve. And one area that developers should always focus on is the build.</p>
<h2>The importance of builds</h2>
<p>Builds are an important safeguard in any project. On most projects, developers typically run builds before they checkin. Indeed, it is good practice to make sure everybody gets into this habit. If your team takes a &#8220;don&#8217;t care&#8221; attitude, checking in regardless of whether the continuous integration server is green, this can quickly lead to massive development pain.</p>
<p>So, let&#8217;s assume that your team is building before checkins. Great.</p>
<h2>Pay attention to your build times</h2>
<p>If you&#8217;ve been on a sizeable project (duration, scope, people), most people suffer from bloated builds. Sometimes they take 2 hours to turn around, from commit to deploy. When that situation occurs, most of us start loathing the build.</p>
<p>Which is why on any new initiative, you may start out with every intention to minimise build times. But when do you start factoring this activity in?</p>
<p>In my opinion, as soon as you can.</p>
<p>Why? Because you will start to learn something new. You will begin to learn what makes the build take too long, and start rolling in steps to stop them from occurring in the future. You will also learn what testing methods are slow, and therefore take the effort to use them only when needed.</p>
<p>And the sooner you do this, the faster your team will be in addressing these problems. It&#8217;s much easier to address these problems earlier (when you have 50 tests) rather than later (when you have 5000 tests, and your build is taking 1 hour).</p>
<h2>Learning is the bottleneck</h2>
<p>Many lean/agile books will promote the idea that &#8220;Learning is the bottleneck&#8221;. Note that this isn&#8217;t coding. If it was coding, then we should be optimising our practices to code faster. The problem here is that coding faster is entirely predicated on how quickly your team learns and adapts. So focus on giving your team the learning opportunity it needs to avoid pitfalls and problems.</p>
<p>And a key to that is learning how to write good tests in the environment. Learning to make sure that the feedback you get is appropriate and quick, which drives the next cycle of learning.</p>
<h2>Case study: 161 tests taking 5 sec</h2>
<p>On a recent project I am on, it was a new initiative. So I had built up a stead suite of specs. Thing is, I realised that the 161 tests I had was starting to take a little too long ~ 5 seconds.</p>
<p>Now 5 seconds for a build isn&#8217;t long at all by any means. You could put up with it. But I know, that on an large project in the same environment, they ran 9,000 or more tests within 45 seconds. If you do the math, that&#8217;s 200 tests per second.</p>
<p>Here, I was taking 5 seconds for 161 tests. If I project it out, at 9000 tests, that would take me 80 hours to complete!</p>
<h3>Step 1: Profile your tests</h3>
<p>The first thing you should do, is profile your tests, and get an idea of the tests that are taking the longest. With a small number of tests, this is easier to find out, and you can quickly focus on a cluster of tests that are doing similar things. Most unit testing libraries have some means of timing how fast tests take, so getting this information shouldn&#8217;t be difficult.</p>
<h3>Step 2: Experiment, and validate</h3>
<p>Then, experiment. Think about what could be causing the issue. Try something, and re-profile the test. Make sure that what you&#8217;re doing leads to an improvement. Don&#8217;t just guess and hack. You need to <em>validate</em> as well.</p>
<h3>Step 3: Commonize and disseminate</h3>
<p>Once you have a &#8220;fix&#8221;, codify it. Write it into a helper method/class and refactor your tests that have the problem to use the new solution. Then socialise it. Announce it at a standup. Send out an email. Talk about it.</p>
<p>This last step is really important. The time you have invested into learning and fixing an issue is now going to help you many times over. By codifying it, you&#8217;re encoding the knowledge into the code repository, which will stick around long after you have left the project. Codifying it also helps others out, so they don&#8217;t have to walk into the same pit-hole you did.</p>
<p>Socialising it helps your team establish a general guideline around how tests should be written/approached. In may mean that that particular kind of test isn&#8217;t warranted under all circumstances. Establishing a baseline in your team for how this is approached is key to ensuring you have the right kind of tests.</p>
<h2>Summary</h2>
<p>Here&#8217;s the 3 point summary:</p>
<ol>
<li>Pay attention to your build times, even with a few tests.</li>
<li>Aim for a 200 tests per second (or better) test/rate</li>
<li>Profile, experiment, validate, codify and disseminate the information</li>
</ol>
<p>What are your test rates? Can you beat 200 tests per second?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/tips-to-optimise-your-software-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Results of Market Research</title>
		<link>http://www.commonvision.com.au/results-of-market-research/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=results-of-market-research</link>
		<comments>http://www.commonvision.com.au/results-of-market-research/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 14:49:41 +0000</pubDate>
		<dc:creator>Brett Krieger</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Charity]]></category>
		<category><![CDATA[Common Vision]]></category>
		<category><![CDATA[Donation]]></category>
		<category><![CDATA[Market Research]]></category>
		<category><![CDATA[Starlight]]></category>
		<category><![CDATA[Survey]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=472</guid>
		<description><![CDATA[We would like to wish all of our employees, partners and customers a happy and healthy 2011. A big thank-you in particular to all who assisted us in our Market Research activities just before the Christmas Break. Of the 25 specific survey requests we sent out across the 3-categories we had 24 genuine responses which]]></description>
			<content:encoded><![CDATA[<p>We would like to wish all of our employees, partners and customers a happy and healthy 2011.</p>
<p>A big thank-you in particular to all who assisted us in our Market Research activities just before the Christmas Break. Of the 25 specific survey requests we sent out across the 3-categories we had 24 genuine responses which is pretty remarkable given the surveys were issued in the 10-days leading up to Christmas. I trust it didn&#8217;t interfere with anyone&#8217;s Christmas shopping.</p>
<p>Jason and I were very grateful for your time in providing the input. All of the information provided from the survey responses has been assessed and was used as an input to a series of workshops leading up to the break. It is now being used to assist business model planning and validation in January and we expect to be in a position to provide an update on the initiative in early February via this forum.</p>
<p>In addition to assisting Common Vision, the survey respondents also indirectly assisted disadvantaged children. Due to the responses of the survey participants, Common Vision was pleased to donate $150 to the Starlight Foundation <a href="http://www.starlight.org.au">www.starlight.org.au</a> on Christmas Eve. &#8220;The Starlight Children&#8217;s Foundation is  part of the Australian Children&#8217;s Charities Forum, a group of national  children&#8217;s charities dedicated to directly helping seriously ill,  disabled or disadvantaged children.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/results-of-market-research/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips For Those Using Rails3, Heroku, Mongoid and MongoHQ</title>
		<link>http://www.commonvision.com.au/tips-for-those-using-rails3-heroku-mongoid-and-mongohq/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tips-for-those-using-rails3-heroku-mongoid-and-mongohq</link>
		<comments>http://www.commonvision.com.au/tips-for-those-using-rails3-heroku-mongoid-and-mongohq/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 17:58:06 +0000</pubDate>
		<dc:creator>Jason Nah</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=458</guid>
		<description><![CDATA[I&#8217;ve just been through the paces of putting a Heroku app which uses the Mongoid gem and connecting it to MongoHQ, a SaaS MongoDB service provider. Since this is relatively new, Heroku and MongoHQ have very little &#8220;official&#8221; documentation. So this post is a collection of various &#8220;learnings&#8221; and experiences that I have found across]]></description>
			<content:encoded><![CDATA[<p><a href="http://relaunch.commonvision.com.au/wp-content/uploads/2010/12/mongoid-logo2.png"><img class="alignleft size-full wp-image-467" title="mongoid-logo" src="http://relaunch.commonvision.com.au/wp-content/uploads/2010/12/mongoid-logo2.png" alt="" width="182" height="40" /></a>I&#8217;ve just been through the paces of putting a Heroku app which uses the Mongoid gem and connecting it to MongoHQ, a SaaS MongoDB service provider.</p>
<p>Since this is relatively new, Heroku and MongoHQ have very little &#8220;official&#8221; documentation. So this post is a collection of various &#8220;learnings&#8221; and experiences that I have found across the internet. Hopefully it will help you out if you&#8217;re intending to do the same.</p>
<h3>Step 1: Add the Heroku MongoHQ Addon</h3>
<p>As per http://docs.heroku.com/mongohq, the first thing you need to do is add the MongoHQ addon. To do this, you can either use the Heroku web interface or run the following command</p>
<p></p><pre class="crayon-plain-tag">heroku addons:add mongohq:free</pre><p></p>
<p>Once you do this, a brand new MongoDB database is automatically created. In addition, the MONGOHQ_URL environment parameter will also be set, which contains the connection string that is used to access your MongoDB instance hosted by MongoHQ.</p>
<h3>Step 2: (optional) Configure MongoHQ&#8217;s MongoDB Remote Connection</h3>
<p>NOTE: the following instructions came from:<br />
<a href="http://support.mongohq.com/discussions/community-tips/2-logging-in-to-mongohq-for-heroku-users" target="_blank">http://support.mongohq.com/discussions/community-tips/2-logging-in-to-mongohq-for-heroku-users</a></p>
<p>MongoHQ provides a simple way to view and manage MongoDB instances. So to use what they offer, you will need to &#8220;Add a Remote Connection&#8221;, and populate that with the MONGOHQ_URL connection string. This is entirely optional, but the web interface is a very neat way to view, manage and see your MongoDB instance.</p>
<p>To do this, first extract the MONGOHQ_URL connection string. Run</p>
<p></p><pre class="crayon-plain-tag">heroku config --long --app &amp;lt;app_name&amp;gt;</pre><p></p>
<p>Where &#8211;app &lt;app_name&gt; is entirely optional but may be required depending on your setup.</p>
<p>What you see is a list of environment variables, and one of them should be the &#8220;MONGOHQ_URL&#8221; value. Copy it.</p>
<p>Then, in MongoHQ (http://www.mongohq.com), after creating an account, you can &#8220;Add a Remote Connection&#8221;. You will need to provide:</p>
<ol>
<li>A name (call it anything you like)</li>
<li>A URI (this should be the value provided by the &#8220;MONGOHQ_URL&#8221; connection string)</li>
</ol>
<p>After creating the link, you should be able to navigate and see what&#8217;s in the mongodb instance. Importantly, the application shows how much space the database is taking up, which makes it easier to monitor your database size/growth. This latter point is important given that MongoHQ doesn&#8217;t currently (2010.12.30) support email alerts to tell you if your DB is getting close to the maximum size permitted by your current plan. Once you do hit that limit, the <a href="http://support.mongohq.com/kb/how-tos/calculating-database-size" target="_blank">support documentation</a> indicates that writes will begin failing.</p>
<h3>Step 3: Configure Mongoid In Rails 3</h3>
<p>Over at <a href="http://mongoid.org/docs/installation/">http://mongoid.org/docs/installation/</a>, you will find fairly clear instructions for getting Mongoid going. However, at the time of writing, there are few things I have found that you will need to do.</p>
<p>The first is that the Gemfile instructions specify bson_ext version of 1.1.2. At the time of writing (2010.12.30), I found out that the mongo gem (which is a dependency of mongoid) had already moved to 1.1.5. The bson_ext and mongo gem must match in version&#8230; so enter the following instead:</p>
<p></p><pre class="crayon-plain-tag">gem &amp;quot;mongoid&amp;quot;, &amp;quot;2.0.0.beta.20&amp;quot;
gem &amp;quot;bson_ext&amp;quot;, &amp;quot;1.1.5&amp;quot;</pre><p></p>
<p>Then configure mongoid in your rails by running</p>
<p></p><pre class="crayon-plain-tag">rails generate mongoid:config</pre><p></p>
<p>This will create a file under config/mongoid.yml.</p>
<p>Now, there are a couple of gotchas here. There&#8217;s a <a href="http://stackoverflow.com/questions/2784417/heroku-mongohq-and-mongoid-mongoconnectionfailure" target="_blank">stackoverflow post</a> which details some problems in getting mongoid to run under the Heroku + MongoHQ stack. Basically, if you specify host in your mongoid.yml file, it overrides the value you specify as uri.</p>
<p>So my example mongoid.yml configuration looks like this&#8230;</p>
<p></p><pre class="crayon-plain-tag">defaults: &amp;amp;defaults
  allow_dynamic_fields: true
  parameterize_keys: true
  persist_in_safe_mode: true
  raise_not_found_error: true
  reconnect_time: 3
  use_object_ids: true

development:
  &amp;lt; &amp;lt;: *defaults
  host: localhost
  database: myapp_development

test:
  &amp;lt;&amp;lt;: *defaults
  host: localhost
  database: myapp_test

# set these environment variables on your prod server
production:
  &amp;lt;&amp;lt;: *defaults
  uri: &amp;lt;%= ENV['MONGOHQ_URL'] %&amp;gt;</pre><p></p>
<p>The key point of note is that host is specified for the development and test environments. For production, set the uri value with the &#8216;MONGOHQ_URL&#8217; parameter.</p>
<h3>Step 4: Test, Test, Test</h3>
<p>The simplest way to test this, is to run</p>
<p></p><pre class="crayon-plain-tag">rails generate scaffold User email:string</pre><p></p>
<p>If you have mongodb installed locally, then fire up your rails app, and check that the user resource can be added, deleted, modified and listed.</p>
<p>Then add everything and deploy directly to Heroku to see if everything is ok.</p>
<p>After this great big hack, you&#8217;re free to go back to the land of TDD/BDD and resume the normal course of development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/tips-for-those-using-rails3-heroku-mongoid-and-mongohq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Vision At YOW Melbourne 2010</title>
		<link>http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=common-vision-at-yow-melbourne-2010</link>
		<comments>http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 13:27:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=438</guid>
		<description><![CDATA[Late last week, some of the Common Vision guys had the opportunity to attend YOW Melbourne 2010. For those of you who may not know, YOW is a Developer Conference, hosted by Developers for Developers. It is a meeting of minds in the Development community that spans a number of disciplines and subject areas. Judging]]></description>
			<content:encoded><![CDATA[<p>Late last week, some of the Common Vision guys had the opportunity to attend <a href="http://yowconference.com.au/melbourne/index.html" target="_blank">YOW Melbourne 2010</a>. For those of you who may not know, YOW is a Developer Conference, hosted by Developers for Developers. It is a meeting of minds in the Development community that spans a number of disciplines and subject areas.</p>
<p>Judging by the numbers in attendance, YOW 2010 in Melbourne was a huge hit. Not only was there an <a href="http://yowconference.com.au/melbourne/speakers/index.html">all-star lineup of guest speakers</a>, including Rod Johnson from Spring, Erik Meijer from Microsoft (architect of LINQ), Corey Haines, J. B. Rainsberger, Guy Steele, Oren Eini (of Rhino.Mocks and NHibernate optimisation fame), Michael T. Nygard and Mary and Tom Poppendieck, but the event was heavily attended by the who&#8217;s who of the Melbourne Software Development scene.</p>
<p>The topics presented were wide and varied. Some were <a href="http://yowconference.com.au/melbourne/events_tracks/event_details.html?eventId=2638">case studies</a>, others were <a href="http://yowconference.com.au/melbourne/events_tracks/event_details.html?eventId=2600">instructional</a> and even some were <a href="http://yowconference.com.au/melbourne/events_tracks/event_details.html?eventId=2596">entertaining</a>.</p>
<p>Of particular note was a talk delivered by Richard P. Gabriel and Guy Steele &#8211; who created a mosaic survey across 50 computing languages (<a href="http://blog.jaoo.dk/2008/11/21/art-and-code-obscure-or-beautiful-code/">entitled &#8220;50 in 50&#8243; which you can see on the JAOO blog</a>). Their composition was entertaining, witty and down right nerdy.</p>
<p>Much thanks goes to the conference organisers and speakers and even attendees. It was a great event, and one which we hope will continue in many years to come.</p>

<a href='http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/yow-conf-1/' title='YOW-Conf-1'><img width="120" height="90" src="http://www.commonvision.com.au/wp-content/uploads/2010/12/YOW-Conf-1-120x90.jpg" class="attachment-thumbnail" alt="YOW-Conf-1" title="YOW-Conf-1" /></a>
<a href='http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/yow-conf-2/' title='YOW-Conf-2'><img width="120" height="90" src="http://www.commonvision.com.au/wp-content/uploads/2010/12/YOW-Conf-2-120x90.jpg" class="attachment-thumbnail" alt="YOW-Conf-2" title="YOW-Conf-2" /></a>
<a href='http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/yow-conf-3/' title='YOW-Conf-3'><img width="120" height="90" src="http://www.commonvision.com.au/wp-content/uploads/2010/12/YOW-Conf-3-120x90.jpg" class="attachment-thumbnail" alt="YOW-Conf-3" title="YOW-Conf-3" /></a>
<a href='http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/yow-conf-4/' title='YOW-Conf-4'><img width="120" height="90" src="http://www.commonvision.com.au/wp-content/uploads/2010/12/YOW-Conf-4-120x90.jpg" class="attachment-thumbnail" alt="YOW-Conf-4" title="YOW-Conf-4" /></a>
<a href='http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/yow-photo-small/' title='At YOW 2010 - Melbourne'><img width="120" height="90" src="http://www.commonvision.com.au/wp-content/uploads/2010/12/YOW-photo-Small-120x90.jpg" class="attachment-thumbnail" alt="At YOW 2010 - Melbourne" title="At YOW 2010 - Melbourne" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/common-vision-at-yow-melbourne-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pruning your Twitter Searches</title>
		<link>http://www.commonvision.com.au/pruning-your-twitter-searches/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pruning-your-twitter-searches</link>
		<comments>http://www.commonvision.com.au/pruning-your-twitter-searches/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 13:42:30 +0000</pubDate>
		<dc:creator>Shuan Wilde</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.commonvision.com.au/?p=430</guid>
		<description><![CDATA[A simple tip to prune your twitter searches.]]></description>
			<content:encoded><![CDATA[<p><a href="http://relaunch.commonvision.com.au/wp-content/uploads/2010/10/twitter1.jpg"><img class="alignleft size-full wp-image-434" title="twitter" src="http://relaunch.commonvision.com.au/wp-content/uploads/2010/10/twitter1.jpg" alt="" width="109" height="72" /></a>As a new arrival to social media (especially Twitter), I sometimes find the amount of information available via these channels to be overwhelming that I either end up drowning in the morass of data or, in frustration, I just switch it off. I find Twitter is a major culprit in this area especially if you try to use hashtags (the words you see prefixed with a # symbol i.e. #azure or #ruby) to follow topics and even more so when people start repeating, or retweeting as they call it, such that you see the same data repeated over and over again.</p>
<p>Thankfully Twitter has actually thought about this, though information is rather scarce. If you go to <a href="http://twitter.com/search">http://twitter.com/search</a> and keep hitting refresh you get a few useful tips. You can try advanced search (<a href="http://search.twitter.com/advanced">http://search.twitter.com/advanced</a> &#8211; though I can never find this link on the main site and instead I have to use google) to get an idea of just what is possible. However if you use a twitter client on your desktop or your phone then this is a bit tiresome. You could try the operators, see <a href="http://search.twitter.com/operators">http://search.twitter.com/operators</a>. But again nothing immediately obvious until you remember that a lot of the retweets are normally prefixed with a RT or VIA (an alternative way to retweet) and notice that Twitter have supplied an exclude option via the minus(-) operator.</p>
<p>Thus armed you can prune the retweets by adding -rt (and also -via) to your searches and remove all the repeated twitterings e.g. to search for all tweets that have been tagged with azure or cloud but to ignore the repeats I would use:  #azure OR #cloud -rt -via</p>
<p>Now the amount of information is reduced and, assuming your search is limited in scope i.e. does not involve a trending topic or major celebrity, manageable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.commonvision.com.au/pruning-your-twitter-searches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
