Another Avancert.com release out the door

We’ve just released another load of new features and product improvements to Avancert.com. You can find out the full details on our blog .

We’re well on the way to building the best video interview and assessment product on the web!

Avancert Tutorial - Creating a Video Hiring & Recruitment Interview

We’ve started adding some tutorial videos to our new youtube channel. Check out our first one which introduces you to creating your first video interview assessment.

Introducing Avancert.com

Avancert provides new technology to enable organisations with recruitment, electronic examination, and regulatory and high stakes assessment.

We have recently launched our new Video Assessment tool which is particularly useful for organisations working in the recruitment space. Video assessment is ideal for a number of recruitment activities such as candidate pre-screening and remote interviewing especially where candidates are in a different timezone and “live” interviews are difficult to arrange.

The Video Assessment tool allows you to create questions with set time allocations for answering. When your assessment is ready you email a link to the candidate to sit the assessment, all they need is a web browser, web cam and an internet connection. The candidates responses to each of your questions is recorded and once the assessment is complete an email is sent to you to alert you that the candidate has completed the assessment and you can review at your leisure.

This type of tool can be invaluable especially in the early stages of interviewing where so much time can be wasted conducting personal interviews with candidates with fantastic CV’s that would have been eliminated immediately if you’d had the opportunity to see them in person, Conversely it can also identify potential “diamonds in the rough” who’s CV’s may have not warranted further investigation, but who shine when given the opportunity to present themselves “in person”.

Mapping NHibernate collections one way

I encountered an issue with an NHibernate mapping today that took me a short while to solve so I thought I’d post here to remind myself in future.

I wanted to map a parent child relationship but only manage the persistence from the parent end. Here’s an example:

Blog -< Post

  public class Blog
  {
        public Blog()
        {
        }

        public virtual int BlogId { get; set; }

        public virtual IList<Post> Posts { get; set; }
   }

Which might have the following mappings:

 
 
  
    
      
    

    
        
        
    


The problem I was having was that saving the blog entity was causing a SQL exception complaining that BlogId wasn’t a nullable field on the Post table. In the end the fix was easy - remove the not null constraint!

The reason being that nhibernate likes to save the Post records first, then go back and update the foreign key values once it has saved the Blog entity.

Tags: ,
Posted in Blog by James. No Comments

ASP.NET MVC3 Razor view engine - some initial observations

Over the last couple of days I’ve started playing around with the razor view engine that comes with ASP.NET MVC 3. The first thing you notice is how much cleaner your markup pages look. It’s a real pleasure to code your markup without having to pollute it with masses of special code nuggets to demarcate your C# code. If you haven’t seen any examples yet check out Scottgu’s intro to Razor.

The error reporting still looks like it could do with a little work though. For example yesterday I put code very similar to this in my view:

@for(int i = 0; i < 5; i++) {
    <p>@i.ToString()</p>
@}

And I got an error message like this:

razor_error

Humm… “No overload for method ‘Write’ takes 0 arguments” - what does that mean? Well the answer is that the @ symbol before the closing curly brace isn’t needed. So the fix was simply to make the following change:

@for(int i = 0; i < 5; i++) {
    <p>@i.ToString()</p>
}

I guess once you’ve used razor for even a short while things like this will become second nature, but it had me stumped for a short time and it’d be nice if the error messages due to view engine parser failures were slightly more helpful in identifiying the exact problem.

Tags: ,
Posted in Blog by James. 1 Comment

GDB, BDM and the 68332

I’ve just been through the process of reviving my 68332 board that I got quite a few years ago from robominds. I wanted step debugging support and faster download speeds than are possible with the serial port connection so I downloaded the latest file package (m68k-bdm-1.4-pre4) from the bdm sourceforge project. I used the m683xx branch in the latest release as that is the culmination of Pavel Pisa’s work to support the 68332. The kernel driver needed a few minor modifications to support the modern 2.6.32 kernel that my Ubuntu distro is using.

The most modern gdb patch supplied to work with the kernel driver was targeting gdb 5.3 which is pretty old now given that the current release of gdb is 7.2. The challenge came when gdb 5.3 wouldn’t compile with a modern gcc due to gcc using stricter casting rules these days. Patching obstack.h using the same file from gdb 6.1 as an example solved this problem.

So now I have BDM support in GDB and step debug on my 68332 target board - happy days.

My patches needed in addition to those in the m68k-bdm-1.4-pre4 release.

obstack.h
bdm.c

Tags:
Posted in Blog by James. No Comments

Back in action

A new server, a new look and a return to regular service after a bit of a hiatus from blogging.

I’ve returned to my computer vision project with a vengeance and am close to having the first part working. This includes feature location and tracking between frames, 3D reconstruction and ego motion estimation. The final piece of the puzzle is my old nemesis - Non-linear Least Squares Minimisation. For this I am using the levmar library implementation of the Levenberg-Marquardt algorithm. So far I have a partial solution in that it works well for translations, but not so well for rotations so I need to do a bit more work on that yet. Once that’s sorted the last piece of the puzzle will be implementing a kalman filter to merge the odometry data from the wheel encoders with the ego motion estimation from the vision system.

I’m simultaneously resurrecting AMI (my robotics research platform) and am working on a few upgrades for that. Getting the environment up and running was easy this time only a few hours to get the cross tool chain built and various other tools sorted and I was loading s19 records into the 68332 and seeing “Hello world!”.

I’m off to TechEd next week so that should be interesting!

Tags: , ,
Posted in Blog by James. No Comments

Time for a change

Well, I am now in the closing hours of my last day of work at my current job. It’s been a challenging role and I have learnt a huge amount about the finance industry.

Looking forward to the future fills me with a huge amount of excitement mixed with a little bit of nervousness. It’s not every day you give up a well paying job, pack up your life and move country. I have no doubt that the next year will be full of challenges, but I am really looking forward to it all. I can’t wait to build my business into New Zealands best shopping comparison site.

But first, before anything else, I think it’s time for a holiday!

Tags:
Posted in Blog by James. 1 Comment

Be careful where you get your information

The internet is rife with misinformation.

As a developer you tend to depend heavily on searching for examples of how to solve a particular problem such as code snippets, and patterns and practices. There is very little ground breaking work and it is almost certain that someone has been there, done that, and blogged the solution to your problem already.

Problems arise when you choose the wrong source to trust. For example, today I was trying to figure out how to get ASP.NET not to render a name attribute for the form element as we are starting to target XHTML 1.1 compliance for BeforeYouBuy. A quick google came up with this.

Certainly the answer that is proposed is “a solution”, but it’s certainly not “the solution”. A slight modification to my search turned up this how to on the msdn site.

It’s really down to knowing where to look.

Tags: ,
Posted in .NET by James. No Comments

MySql “Nested transactions are not supported” exception

If you are getting an unexpected “Nested transactions are not supported” exception from your MySql database then you may have hit this bug.

I firstly suspected Spring.NET, then the MySql ADO.NET driver. We scratched our heads for a couple of days on this one before I found that bug report.

To make a long story short, simply commenting out the query_cache_size option in the my.ini file solved it. What effect this will have on performance I haven’t determined yet.

Tags: ,
Posted in .NET by James. No Comments