News

Common Vision @ Melbourne University Careers Fair

Common Vision is currently participating in the IT industry’s version of the AFL National Draft, namely the various Universities’ 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 & 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.

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:

  1. Recruit and develop highly-skilled Professionals in strategic disciplines with a solid understanding of “best practice” IT delivery techniques
  2. Develop internal practice-specific collateral, practices and Intellectual Property for IT delivery
  3. Continue to develop all staff on a “best you can be” basis through training, mentoring and encouragement to participate in best practice forums within the industry
  4. 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
  5. Focus on the motivation and desire to “grow” their professional capabilities (depth and breadth).

While I’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’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’s curriculum).

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 “very strong” 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.

While it wasn’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.

Before the Fair

Meeting other exhibitors before the event

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’s because it was taken after the fair had closed and just as our last students were heading off on their way.

4:15pm, it's all over

After the Fair

While we remain unconvinced of the merits of the new “Melbourne Model” introduced in 2008 http://uninews.unimelb.edu.au/news/4155/ 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 “Common Vision Graduate Recruitment Team” t-shirts for staff representing the company on the day.

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.

Mac RVM 1.9.2-p0 Install Error – readline.c 1292

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, if you ran

And go the following error:

If you examine the make.log file, the last few lines may show the following:

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 previous post, then all you have to do to install 1.9.2 is:

Mongoid Custom Validation with I18n support

If you’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’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…

You might be tempted to start hacking a string message in your errors collection, but there’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?

On first go, you might think that the easiest way is to use:

However, this doesn’t quite fit how other ActiveModel errors are namespaced. Typically, they follow the following convention:


en-us.activemodel.errors.models.[MODEL].attributes.[ATTRIBUTE].[ERROR]

As I was looking to an answer to this question, I stumbled on ActiveModel::Errors.generate_message(). It looks like all you need to do is to meet the following signature:

So this transforms the above validate block into something like this:

Hopefully this will help somebody else out there to save some time trying to crack this nut.

Results of Market Research

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 is pretty remarkable given the surveys were issued in the 10-days leading up to Christmas. I trust it didn’t interfere with anyone’s Christmas shopping.

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.

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 www.starlight.org.au on Christmas Eve. “The Starlight Children’s Foundation is part of the Australian Children’s Charities Forum, a group of national children’s charities dedicated to directly helping seriously ill, disabled or disadvantaged children.”

Tips For Those Using Rails3, Heroku, Mongoid and MongoHQ

I’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 “official” documentation. So this post is a collection of various “learnings” and experiences that I have found across the internet. Hopefully it will help you out if you’re intending to do the same.

Step 1: Add the Heroku MongoHQ Addon

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

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.

Step 2: (optional) Configure MongoHQ’s MongoDB Remote Connection

NOTE: the following instructions came from:
http://support.mongohq.com/discussions/community-tips/2-logging-in-to-mongohq-for-heroku-users

MongoHQ provides a simple way to view and manage MongoDB instances. So to use what they offer, you will need to “Add a Remote Connection”, 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.

To do this, first extract the MONGOHQ_URL connection string. Run

Where –app <app_name> is entirely optional but may be required depending on your setup.

What you see is a list of environment variables, and one of them should be the “MONGOHQ_URL” value. Copy it.

Then, in MongoHQ (http://www.mongohq.com), after creating an account, you can “Add a Remote Connection”. You will need to provide:

  1. A name (call it anything you like)
  2. A URI (this should be the value provided by the “MONGOHQ_URL” connection string)

After creating the link, you should be able to navigate and see what’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’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 support documentation indicates that writes will begin failing.

Step 3: Configure Mongoid In Rails 3

Over at http://mongoid.org/docs/installation/, 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.

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… so enter the following instead:

Then configure mongoid in your rails by running

This will create a file under config/mongoid.yml.

Now, there are a couple of gotchas here. There’s a stackoverflow post 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.

So my example mongoid.yml configuration looks like this…

The key point of note is that host is specified for the development and test environments. For production, set the uri value with the ‘MONGOHQ_URL’ parameter.

Step 4: Test, Test, Test

The simplest way to test this, is to run

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.

Then add everything and deploy directly to Heroku to see if everything is ok.

After this great big hack, you’re free to go back to the land of TDD/BDD and resume the normal course of development.

Common Vision At YOW Melbourne 2010

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 by the numbers in attendance, YOW 2010 in Melbourne was a huge hit. Not only was there an all-star lineup of guest speakers, 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’s who of the Melbourne Software Development scene.

The topics presented were wide and varied. Some were case studies, others were instructional and even some were entertaining.

Of particular note was a talk delivered by Richard P. Gabriel and Guy Steele – who created a mosaic survey across 50 computing languages (entitled “50 in 50″ which you can see on the JAOO blog). Their composition was entertaining, witty and down right nerdy.

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.