Click here to Skip to main content
13,092,310 members (61,792 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


8 bookmarked
Posted 14 Jul 2013

An Approach to Creation of an "Interactive Resume"

, 15 Jul 2013
Rate this:
Please Sign up or sign in to vote.
An example of "interactive professional resume" as a Web application.


Usually a "professional resume" is a static document. Sometimes I see resumes that are called "interactive"; but in fact their "interactivity" is implemented as a set of static HTML pages.

So I thought – what if I would create a really interactive resume? This tip shows the result of this attempt. I have attached the source of a Silverlight demo application implementing this approach. You can also try the Silverlight application live here.

This tip may be interesting for developers who want to impress a potential employer by an "interactive resume" available as a Web application. Even if they do not use Silverlight, they can use the described approach in a Web application of any other type – JavaScript, Java applet, Flash, etc.

Disclaimers and Restrictions

The demo of my "interactive resume" I attached is implemented as a Silverlight application. Of course, an HTML+JavaScript Web page would be better – from the accessibility point of view. But as I am a .NET developer, I had decided to combine the "interactive resume" idea with a "Silverlight demo application".

A JavaScript developer can use an HTML+JavaScript Web page; a Flash developer can create an "interactive resume" on Flash – the approach described below may be implemented on any Web application platform.

Such an "interactive resume" will not be, of course, a replacement of a traditional "static" resume. But it could be a good addition to a "static" resume; simultaneously playing a role of a "demo application" that proves the fact a developer really knows how to program on JavaScript/Silverlight/Flash, etc.

The "Interactive Resume"

The very first screen of the application displays general information about me and about the application:

Note: The "HyperlinkButton" etc. are hyperlinks that open corresponding MSDN pages.

The 2nd screen of the application is a short help about its usage:

The 3rd screen of the application is the "interactive resume" itself:


The approach I used on the screen above to organize the resume information may be called a "search-oriented" one. In other words, a reader is supposed to use the following scenario:

  • type a skill that a reader is interested in ("sql" in the example below);
  • look into the Skills list (that is "filtered" by the entered keyword);
  • select a row in the Skills list;
  • read the details of the selected Skill in the Details area

Several more words about one "usability trick" I used on the screen. When you enter the screen a "type a keyword here…" tip in the search box starts "blinking". It blinks for several seconds; then stops automatically. If a user puts an input focus into the search box or selects a row in the Skills list – the tip stops blinking immediately. I hope this "short-time blinking" will attract a user’s attention to the "key point of this GUI"; and at the same time the blinking will not be too irritating.

Please also pay attention to the following fact – the items of the Skills list are created with "information redundancy", as to say. Look at the skills "MS SQL Server" and "T-SQL (MS SQL Server)". Strictly speaking, the "T-SQL (MS SQL Server)" skill is a part of the bigger "MS SQL Server" skill. But I have created a separate "Skill entry" for the T-SQL skill. This will help the users to find necessary information faster. What if a user is interested in primarily T-SQL, and does not want to find an entry "MS SQL Server" and extract T-SQL-related information from there?

Implementation Details

The attached demo application is quite simple, as you can see.

The only thing worthy of explanation in the article is the way it "filters" the Skills list by a typed keyword. I use the following algorithm that is more complicated than the usual "equals" or "contains" logics.

For each of the Skills strings, I calculate a Rank – a number that displays a "degree of relevancy" between the Skills strings and the current Query (i.e., the keyword a user has typed). Then I exclude the Skills strings that have Rank 0. Then I order the remaining Skills by decreasing their Rank; and output the ordered strings into the Skills list.

An example: in the figure below, several skills "match" the entered keyword "sql":

The "SQL" skill has the largest Rank calculated by my algorithm (see the algorithm details below); this is why it is put on the 1st position in the list.

The "T-SQL (MS SQL Server)" skill has lower Rank; this is why it is put on the 2nd position in the list; etc.

The Algorithm of Rank Calculation

See implementation of the algorithm in SearchEngine.CalcRank() method in the attached demo.

The main ideas here are as follows:

  1. Each occurrence of the Query found in the Skill brings its share to the Rank.
  2. Example: If we have a Skill "aaa b aaa", we suppose it has 2 occurrences of a Query "aa": "aaa b aaa". Then both occurrences will bring their shares to the calculated Rank. 

  3. The closer is position of an occurrence of Query to begin the Skill string, the more it brings to the Rank. Example: Suppose we have two skills: "SQL MS" and "MS SQL"; and the Query is "sql". The "SQL MS" will be "more relevant" than "MS SQL". Position of the found Query in the "SQL MS" is closer to begin than position of the found Query in the "MS SQL".
  4. We call this as "Position Factor" (see positionFactor in the SearchEngine.CalcRank()).

  5. The closer is length of a Query to length of a Skill, the more it brings to the Rank.
  6. Example: Suppose we have 2 Skills: "SQL" and "SQL Server"; and the Query is "sql". The "SQL" will be "more relevant" than "SQL Server", because length of the "sql" is closer to length of the string "SQL" than to length of the string "SQL Server". We call this as "Length Factor" (see lengthFactor in the SearchEngine.CalcRank()).

  7. If an occurrence of a Query in a Skill is located in the very beginning of the Skill string, we increase the Rank. See BeginOfStringBonus in the SearchEngine.CalcRank().
  8. If an occurrence of a Query in a Skill is located in begin of a word of the Skill string, we increase the Rank. See BeginOfWordBonus in the SearchEngine.CalcRank().


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer
Belarus Belarus
I am a .NET and MS SQL developer. See my personal website

You may also be interested in...


Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170813.1 | Last Updated 15 Jul 2013
Article Copyright 2013 by VictorSotnikov
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid