Category: Uncategorized

Protected: Figma design to WordPress

comments Enter your password to view comments.
By , February 14, 2022 3:44 pm

This content is password protected. To view it please enter your password below:

Living with Repetitive Strain Injury (RSI)

By , June 5, 2021 2:08 pm

This article was written by myself in 2000/2001 and was originally hosted on a different website that no longer exists.

I have updated this with some extra information and fixed many typos.

I no longer suffer the physical health or mental health problems described below. I am re-posting this article in response to a discussion with someone on twitter who is in the early stages of suffering with RSI. I hope that by posting this RSI related article people will read it, understand there is a way out of this problem if they take the correct action.

Your health is the single most important thing you have.

Without health everything else in your life suffers. Health is more important than wealth.


My history with RSI goes back to 1988, culminating in being so ill in 1993/1994 that I had to take 3 months off work, and spend the next 3 months working slowly with the aid of voice recognition. During this time I had to do remedial exercises 3 or 4 times a day, lasting between 20 and 40 minutes each session, and go for a 2 hour walk each day. This exercise regime was intended to improve my posture, range of movement and muscle strength.

Since returning to work, I have been able to reduce the amount of exercises by taking vitamin B6 supplements (Vitamin B6 helps tendon sheath healing) and swimming at least every other day, and preferably every day. I have found that for my level of health, I can swim 750m (30 lengths of average 25m pool) without incurring further injury, but that if I swim beyond length 850m (length 34) I often do more damage to my arms than the benefit I gain. It has taken me 8 years to regain this level of fitness.

Whilst ill I have experienced feelings of helplessness and depression because of this helpless feeling. I have had pains I can’t describe to other people (because RSI doesn’t feel like other pains). I have had to put up with people accusing me of being a malingerer, a work shy person. I have had this accusation even when I worked for myself. Just because I look healthy, doesn’t mean I am. I have at times had very cold hands, and once for a period of 2 weeks I had two blue hands. This was very painful.

I’ve explained this background in brief so that when you read this information you realise that I have very real and painful experience of how debilitating RSI can be. Having established this fact, hopefully you will place some credence on the advice given here. I’m not trying to claim that I’ve had worse RSI than someone else. Its not a competition :-). I have had a bad time, and I have come out the other side and kept my career. Mainly because I pay strict attention to my exercise regime, and when in too much pain I abandon all activities that are not essential, in order that I can recover my health and remain able to work. Against that playing a mandolin or bagpipe doesn’t count for much, however much fun. I stress this because if someone can be as ill as I was and still keep their career, the odds are that the same result can happen for you.


RSI is known as WRULD (Work Related Upper Limb Disorder) in the USA. This name is misleading. RSI can affect all parts of the body, and is not necessarily caused by solely by your work. It is most likely caused by an interaction between your work activities and your non-work activities. For example double-hand use when a software engineer goes home then plays their musical instrument in the evening. Calling the injury WRULD is overly specific and focuses on the wrong things. RSI is a far better descriptor because it describes what is happening without making any claims about which part of they, or which activities are responsible for the problem.

Types of RSI that may affect you as a software engineer

Typical RSI related arm/hand injuries are epicondylitis, bursitis, tenosynovitis, tendonitis and carpal tunnel syndrome.





Carpal tunnel syndrome


Try not to let anyone inject you with cortisone. You can only have this 3 times in your life (it is not good for your bones).

Also this is treating the symptoms, not the cause.

Its a painful injection, I’m told, but does provide short term relief.

Carpal tunnel surgery

Carpal tunnel surgery. I’d advise against it, if you can get proper medical treatment you won’t need it. I’ve heard some nightmare stories about it taking up to 6 months for the operation to heal. However I met a doctor last year, and she had had both her wrists done for this operation and was back at work a few weeks later. I guess there is a lot of variance with this operation.

It won’t happen to me

Do seek advice. Don’t think “I’ll live with it, it won’t happen to me”. Everyone thinks that and they always realise they were wrong, when it is too late.


Your environment should be changed to suit you, not you change to suit the environment. The classic mistake that most people (myself included) make is to get to a workplace, adjust the chair height to suit the desk height and their own height. This is the wrong way around!

The body you have is the one you have to live your life in. You can’t realistically change your height, the length of your torso, the length of your legs and the width of your hips etc. Given that these are not available for modification, we must turn to your work environment.

Lets face it you spend 8 or more hours a day at work. Thats a 3rd of your life you spend there, so you’ll want it to help you and not damage you. If you have a good employer, they will also appreciate that its in their interest to keep you happy and healthy, as happy and healthy employees tend be more efficient, make less mistakes, take less days sick and be more likely to stick around rather than look for a new employer.

So how do we do this? First off we start with how you sit, and what you sit on, not the desk you sit at (we’ll come to that later).


  • You should have a chair with a five (or more) castor base.

  • The chair should be able to rotate

  • The chair seat should be adjustable in height.

  • If possible the chair seat should tilt forwards and backwards.

  • The chair back should be the length of your back and fully support your shoulders.

  • The chair back should be adjustable vertically.

  • The chair should have independently adjustable arms.

How should the chair be adjusted?

  • When sitting the chair, the chair height should be such that with your feet flat on the floor, you can sit in the chair comfortably.

  • The chair seat should be tilted slightly so that the front of the seat is slightly lower than the back of the seat. This causes your pelvis to tilt and improve the ‘S’ shape of your spine to provide more support to your body. This also causes your shoulder and head to be balanced better.

  • The chair seat depth should be chosen (on good chairs you can do this when you buy it) so that when sitting on the chair, you can get your hand (about 3 or 4 inches) between the back of your knee and the seat edge. If the chair is too deep you’ll never be comfortable. If the chair is too shallow you won’t get enough support.

  • Adjust the chair back to support both the lower back and your shoulders. This should not be a problem if the correct length back was purchased with the chair.

  • The angle of the chair back should be quite upright and not laid back. A degree of personal preference comes in here, but basically the more upright it is, the better your posture will be, the more laid back it is, the worse your posture will be and the resulting likelihood of RSI increases.

Good chairs don’t have to cost a lot. With government legislation and the increasing likelihood of RSI lawsuits, good quality chairs that offer most, if not all of the features described are now available at good prices. You don’t have to spend £600 or more, but you can. Don’t assume that more cost equals better chair. This is not always the case. My own chair cost £300 in 1994. The nearest thing I can find to it now is about £1000. I view it as money well spent, as other chairs I have sat in have caused me no end of posture problems and pain.

Sadly, many organisations use furniture as a means of stating authority. Which usually translates into the people doing the software having a poor quality chair, often with no arms. Senior staff get chairs with arms (they are valued so much!), and managers get decent chairs. This is an archaic way to view the workplace. Why these organisations don’t value their prize assets (their staff) more highly I do not understand.

The organisations I have seen do this, always lose the good staff. They realise what their employer thinks of them and leave because they know their own strengths and abilities. I digress, but if you are an employer and you are reading this, think about it, then go out and buy some great chairs for your staff.

What should I buy?

I don’t recommend heading down to your local Best Buy or IKEA, or buying chairs from the printer paper company’s catalogue. They do sell “office chairs” but they aren’t what I’d sit on, and I wouldn’t expect you to sit on them if you were working for me. Your body is the most valuable thing you own, and you probably didn’t go cheap when you purchased your workstation/laptop, so why would you do that when looking after the most valuable thing you own?

I can’t recommend the people that sold me my superb chair, as they are sadly no longer in business, but Posturite comes close to their ethos and design expertise. This isn’t a recommendation to buy from them, but an indicator of what you should be looking for. If they take your body measurements and then offer you chairs based on your dimensions that’s what I’d go with. Even better if they build chairs for you based on your dimensions (that’s how I got the chair I have – they wouldn’t sell me the chair without me completing a form so they knew my body dimension).

Also, don’t assume more expensive is better. I would never buy an Aeron. So much wrong with that chair design – it fails many of the criteria listed above.


Now that we’ve got the chair set up to suit your height and dimensions, we need to set up your desk. This is simpler than the chair.

  1. Sit at your desk with the chair adjusted correctly for your height. With your arms by your side, bend your arms at the elbow so that your lower arms are horizontal. Where your hands are is where the keyboard or textbook should be. That means the desk should be at a suitable height to allow this.

  2. If the desk is too low, then get some bricks and prop the desk up, or hire a carpenter to make some wooden supports to put under the desk.

  3. If the desk is too high, then you can either shorten the desk legs, purchase a new desk, or raise your chair seat height and get a foot support. If you do choose to raise the seat height (in my opinion the worst solution), you must get appropriate foot support.


Get an ergonomic keyboard (that doesn’t mean a ‘happy hacking’ style keyboard). The Microsoft natural keyboard is good (although the modern ones have a stupid cursor key layout). Other vendors also supply split keyboards. Some vendors (Maltron etc) supply completely different layout keyboards that are apparently very good. These are very expensive as not many are sold per year. I have one, but you need to use these all the time without returning back to QWERTY keyboards. As I have too many computers, I haven’t managed to do this.

Sitting at your newly adjusted desk on your shiny new chair, we can see how your keyboard should be set up.

  1. Roll your sleeves up so that you can see your forearm and wrists.

  2. Place your hands on your keyboard in the ‘home’ position (where your hands naturally go).

  3. Looking at your arms and hands from above (i.e. looking at the back of your hands), you arm and hand should be in line, with no bend at the wrist. You will find this much easier to acheive with a split or egonomic keyboard.

  4. Looking at each arm in turn, examine your arm and hand position from the side. Your hand should be level with your arm, and should not bend down or bend up at the wrist. If your wrist is bent his maybe caused by the chair/desk combination not being correctly adjusted, or because you have learnt to type like this.


Find a mouse you like, or try a trackball. Some people get on with trackballs very well. I am right handed but use a mouse in my left hand. Experiment, try new options. Trackpads (such as on Dell notebooks) are useful. Experiment with using more than one pointing device (a mouse and a trackpad, or a trackpad and trackball) so that you can vary your hand use.


With your chair and desk adjusted, we can adjust your monitor position appropriately. Sitting in your chair, the top of the visible portion of the monitor image should be roughly at eye level. Taking a 10′ or 11′ degree angle downwards from your eye position to the monitor should bring you to the bottom of the visible portion of the monitor image. Move the monitor further away from you or closer to you until this is acheived.

You may need to prop the monitor up on blocks to get the monitor the appropriate height. I have used (at different times) shoe boxes, redundant loud speakers and bricks for this task. You can also purchase hydraulic arms to move the monitor to a height suitable for you.


If your employer will not provide you with a chair, desk, monitor and keyboard that provides you (*) support, then I would think long and hard about what that says about their committment to you, your health and your future career prospects with them. Or, put another way, find a different and better employer.

(*) I mean you, not the others you work with – you are an individual, whats good for them isn’t necessarily good for you.


The exercises given here are based on the exercises given to me by my physiotherapist. The basis for these exercises is a treatment known as Adverse Mechnical Tension.

All stretches must be held for a minimum of seven real seconds, preferrably ten seconds. The reason I state real is because I mean 7 seconds on a clock, not seven seconds the way people count out loud (too fast). The reason the stretches must be held for this length is that the stretches are stretching nerve tissue. Nerve tissue is elastic and doesn’t actually stretch (without springing back into its original size) until it has been stretched for 7 seconds. So if you do these exercises and don’t stretch for at least 7 seconds, you are wasting your time and doing yourself no good. Please re-read the previous sentence.


These exercises are the exercises that I used to help recover from RSI as part of a treatment regime. I am not a trained physician or medical practioner, so any advice here is my description of the exercises given to me by my physiotherapist. You use these exercises at your own risk. If in any doubt about the validity of these exercises with respect to your physical health, consult a trained physician, physiotherapist or other appropriate medical authority.

If any exercise causes you pain, stop doing the exercise immediately. Try a different exercise.


The exercises given here are intended to help you regain your range of movement and improve your posture. The exercises should not cause you any more pain than you are presently experiencing with your RSI. If any exercise does cause you pain, stop doing that exercise and move on to a different exercise. As your health improves you can revisit any exercises that you had to skip.

The exercises can be done in any order, although you may find that you have a preferred order to do the exercises in. I tend to do all standing exercises, followed by all sitting exercises, followed by all floor exercises.

Good times to exercise are in the morning before you start work, in the evening after work, and before you go to sleep. Additionally you may find doing these exercises at work in your lunch break helpful. Work colleagues may find it unusual to see someone doing these exercises. Dont let that put you off. If you can find somewhere private to exercise that is usually better.

Whilst doing the standing exercises, emphasis is to be put on standing correctly, shoulders back (where they should be) and no slouching. However, don’t lock your knees, don’t stand on tip toes, or with flat feet (ankle collapsed inward). Your feet should be flat on ground, at shoulder width.

You will notice that most of these exercises do not work directly on your hands or arms. That is correct and intended. Your body is a complex machine, with levers (bones) and pulleys (tendons). These exercises are designed to increase range of movement and to also increase muscle strength. The lying down exercises increase the strength of your stomach muscles.

In an ideal world I’d have images and video clips to demonstrate how to do these exercises. I was persuaded to put this article together after chatting with Christian Graus (WDJ Author) about my experience with RSI. I haven’t had time to get any photos scanned or videos made. I will produce these in due course and put them here with the appropriate exercise.

Touch the ceiling

Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching. Whilst breathing in, raise your hands from your sides to above your head as if trying to touch the ceiling. When you are doing this, your aims should raise to your sides, not in front of you. When your arms are above you pointing at the ceiling, you should stretch your arms to the ceiling. Do not stretch your hands. The stretch should end at your wrists. Wait for 7 seconds, and lower your arms (reverse of previous raise, your arms should not go in front of you) whilst breathing out.

Its important to breath in and hold your breath whilst stretching as this improves the stretch. Make sure you can stretch and have your arms straight. If the ceiling is too low and you can’t do this, find a different room or go outside.

Repeat this exercise 10 times with a short break between each stretch.

Touch your toes

Whilst doing this exercise, be sure to use your stomach muscles to support yourself as you bend, otherwise too much strain will be placed on your back and you may hurt yourself.

Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching. Lift your hands above your head, arms pointing straight up. Now start to bend over until you can bend as far as you can, attempting to touch your toes. Do not force it. Wait for 7 seconds and straighten up.

Repeat this exercise 10 times. Each time you do this you should be able to stretch further. Do not bend your legs.


Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching. With your arms straight, swing one arm forwards clockwise, and the other arm backwards. After a few rotations, reverse direction. Your arms should be 180′ out of phase.

Forward stretch

Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching. Clasp both hands together, interlocking your fingers. Place your hands in front of your chest and stretch your arms forward until you can stretch no further whilst your hands are clasped together. Hold the stretch for 10 seconds.

Repeat this exercise 10 times.

A variation is to turn your hands ‘inside out’ when at full stretch so that your wrists are one the outside of the stretch. Do not do this if it is painful.

Sit and twist

Find a typical table chair – i.e. one that is not on castors. Sitting upright on the chair (do not slouch), wrap your arms across your chest so that you have your right hand on your left shoulder and your left hand on your right shoulder. This is to get your arms out of the way. You are sitting down so that the next exercise does not twist you hips, but does twist your spine for the full length of your back.

Now turn to the left, turning as far as you can with your body and your head. Your legs should remain facing forward. By turning left, you are trying to look right around yourself so that you can see objects on your right handside. Turn as far as you can. Hold this for 10 seconds. Now repeat this exercise by turning to the right as far as you can, trying to see around yourself so that you can see objects on your left hand side. Hold this for 10 seconds.

Repeat these two twists. Repeat these two twists, for a total of 3 twists each way.

Typically after doing this exercise you will find that the touch the ceiling and touch your toes exercises are easier to do.

Sit and stretch

Find a typical table chair – i.e. one that is not on castors. Sitting upright on the chair (do not slouch). Lean forwards over your knees and try to touch the floor in front of your feet. Stretch as far as you can. Hold this for 10 seconds. Return to the sitting position.

Whilst doing this exercise you may get an unusual sensation (but not pain) in the base of your back as the stretch starts to work. My experience of this is that it means the stretch is working.

Repeat this exercise 3 times.

Typically after doing this exercise you will find that the touch the ceiling and touch your toes exercises are easier to do.

Punches and shoulder rolls

Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching.

A shoulder roll is where you roll your shoulder up, back, down, and forward to its original position. Shoulder rolls can be done either one shoulder at a time or both shoulders together. I was taught to do shoulder rolls one shoulder at a time, but have found then to be more effective if I do both together.

The exercise is to do ten shoulders rolls, then ten rolling punches, one with each arm, alternately.

Repeat this exercise 10 times. Then finish with another 10 shoulder rolls.

It is important to always start with shoulder rolls and always finish with shoulder rolls. This is because rolling punches pull the shoulder forward, and shoulder rolls pull the shoulder back. We want the shoulder position to be back. People with poor posture often have shoulders that are very far forward of where they should be. This exercise is designed to help put your shoulders back where they should be.

Finally, shoulder rolls also open up your sternum, which on many people is very inflexible, but which should be more flexible.

Prayer and twist

Stand up straight, with your arms at your side. Do not slouch. If in doubt look in a mirror and make sure you are not slouching. Place the palms of each hand together, with your finger tips touching, fingers pointing upwards (thumbs towards your body, little fingers away from your body). Your hands should be in front of your face. This will look similar to a Christian prayer position. Slowly lower your hands (whilst keeping them pressed together and in the prayer position) so that they are half way down your body. At this point your lower arms should be horizontal (or as close as you can get) and your hands should still be pressed together. If there is any pain or tightness, stop at that point. Some people can do this with their arms horizontal, others cannot.

At this point there is another optional part of this exercise. When your reach the point where your lower arms are horizontal, you can rotate your hands away from you body whilst keeping them pressed together. Some people can only rotate their hands a small distance, whilst others can rotate their hands so that they are almost pointing down. Hold this position for 7 seconds, then rotate your hands back to the upright position.

Repeat the whole exercise 3 times.

Lie on floor, lift legs

Lie on the floor, lying on your back with your hands at your side and your legs straight. Slowly lift your left foot about 10 centimetres off the ground. Hold this position for tens seconds, then lower your foot to the ground. Repeat this exercise with your right leg.

Repeat the whole exercise 3 times.

Sit ups

Lie on the floor, lying on your back. Now raise you head and body and try to touch your feet. Repeat three times. Be careful not to strain yourself whilst doing this exercise.

Repeat three times.

Press up that isn’t a press up

Lie on the floor, face down with your hands under your shoulders and your elbows by your sides, as if you were about to a press-up. Slowly raise your body until your arms are straight, whilst trying to keep your hips touching the floor. When your are unfit, your back will be stiff and you won’t be able to do this (your hips will lift off the floor). As you get fitter you will be able to do this (my father, at age 62 can do this, so I’m sure you can too!). Hold this position for 10 seconds. Now lower yourself to the starting position.

Repeat this exercise 3 times.

UX Improvements for Coverage Validator

By , August 3, 2012 11:36 am

We recently released new versions of the Coverage Validator tools for all languages.

The main reason for this release was to make the tools more usable and make using them more satisfying. This work was inspired by some user experience research we commissioned with Think UI.

We’re so happy with these improvements we thought we’d share them so that you can learn from our improvements. We’re not finished with the Coverage Validator tools. This is just the start of changes to come.

I’m specifically going to talk about C++ Coverage Validator, but these improvements cut across all our Coverage Validator tools. Some of the improvements cut across all our development tools.

Summary Dashboard

The first thing a user of Coverage Validator sees is the summary dashboard.

The previous version of this dashboard was a grid with sparse use of graphics and lots of text. You had to read the text to understand what was happening with the code coverage for the test application. Additional comments and filter status information was displayed in right hand columns.

Coverage Validator old dashboard

The new version of this dashboard is split into two areas. The top area contains a dial for each metric reported. Each dial displays three items of information: Number of Items, Number of Items visited. How many items are 100% visited. This is done by means of an angular display for one value and a radial display for another value. A couple of the dials are pie charts.

The bottom area of the dashboard displays information that is relevant to the recorded session. Any value that can be viewed or edited is easily reachable via a hyperlink.

Coverage Validator new dashboard

The result of these changes are that the top area makes it easy to glance at a coverage report and instantly know which session has better coverage than another session. You don’t need to read the text to work it out. The bottom area draws attention to instrumentation failures (missing debug information, etc) and which filters are enabled etc. By exposing this information in this way more functionality of Coverage Validator is exposed to the user of the software.

Coverage Dials

We developed a custom control to display each coverage dial.

A coverage dial displays both the amount of data that has been visited, the amount of data that is unvisited and the amount that has been completely visited. For metrics that do not have a partial/complete status the dial just displays as a two part pie chart. An additional version displays data as a three part pie chart. This last version is used for displaying Unit Test results (success, failure, error).

Coverage dial directories Coverage dial unit tests

The difference between unvisited coverage and visited coverage is displayed using an angular value. Items that have been completely visited (100% coverage) are displayed using a radial value emanating from the centre of the dial. Additional information is displayed by a graded colour change between the 100% coverage area and the circumference of the circle to indicate the level of coverage in partially covered areas.

The coverage dial provides tooltips and hyperlinks for each section of the coverage dial.

Dashboard Status

The dashboard status area shows informational messages about the status of code instrumentation, a filter summary, unit test status and session merging status. Most items are either viewable or editable by clicking a hyperlink.

Dashboard status

To implement the hyperlink we created a custom control that supported hyperlinks with support for email hyper links, web hyper links and C++ callbacks. This provides maximal functionality. The hyperlinks are now used in many places in our tools – About box, evaluation feedback box, error report boxes, data export confirmation boxes, etc.

Coverage Scrollbar

We’ve also made high level overview data available on all the main displays (Coverage, Functions, Branches, Unit Tests, Files and Lines) so that you can get an overview of the coverage of each file/function/branch/etc without the need to scroll the view.

We thought of drawing the coverage data onto the scrollbar. Unfortunately this means that you would need an ownerdrawn scrollbar, but Windows does not provide such a thing. An option was to use a custom scroll bar implementation. But doing that would mean having to cater to every different type of Windows scrollbar implementation. We didn’t think that was a good idea. As such we’ve chosen to draw the coverage overview next to the scroll bar.

Coverage scroll bar

Editor Scrollbar

Similarly to the overview for each type of data we also provide a high level overview for the source code editor.

Editor code coverage

Directory Filter

Coverage Validator provides the ability to filter data on a variety of attributes. One of these is the directory in which a file is found. For example if the file was e:\om\c\svlWebAPI\webapi\ProductVersion\action.cpp the filter directory would be e:\om\c\svlWebAPI\webapi\ProductVersion\.

This is useful functionality but Coverage Validator allows you to filter on any directory. In complex software applications it’s quite possible that you would want to filter on a parent directory or a root directory. That would give the following directories for the example above.


The solution to this problem is to create the context menu dynamically rather than use a preformed context menu stored in application resources. Additionally it is more likely that the current directory will be filtered rather than the parent, so it makes sense to reverse the order of the directories, going from leaf to root.

Coverage filter directory context menu

Instrumentation Preferences

The instrumentation preferences dialog is displayed to the user the first time that Coverage Validator starts. The purpose of this dialog is to configure the initial way coverage data is collected. This provides a range of performance levels from fast to slow and incomplete visit counts to complete visit counts. Both options affect the speed of execution of the software. Given that time to complete is an important cost for this is an option that should be chosen carefully.

Previous versions of the software displayed a wordy dialog containing two questions. Each question had two choices.

Coverage instrumentation preferences (old)

The new version of the instrumentation preference dialog has replaced the questions with a sliding scale. Two questions with two choices is effectively four combinations. The instrumentation level sliding scale has four values. As the slider value changes the text below the slider changes to provide a brief explanation of the instrumentation level chosen.

An additional benefit is that the previous version only implied the recommended values (we preset them). The new version also implies the recommended value (also preset) but also explicitly indicates the recommended instrumentation level.

This new design has less words, less visual clutter, is easier to use and presents less cognitive load on the user.

Coverage instrumentation preferences (new)

Export Confirmation

Coverage Validator provides options to export data to HTML and XML. A common desire after exporting is to view the exported data. Previous versions of Coverage Validator overlooked this desire, no doubt causing frustrating for some users. We’ve rectified this with a confirmation dialog displayed after exporting data. The options are to view the exported file or to view the contents of the folder holding the exported data. An option to never display the dialog again is also provided.

Coverage export confirmation

Debug Information

The previous version of the debug information dialog was displayed to the user at the end of instrumentation. After the user dismissed the dialog there was no way to view the data again. The dialog was simply a warning of which DLLs had no debug information. The purpose of this was to alert the user as to why a given DLL had no code coverage (debug information is required to provide code coverage).

The new version of debug information dialog is available from the dashboard. The new dialog displays all DLLs and their status. Status information indicates if debug information was found or not found and if Coverage Validator is interested in that DLL, and if not interested, why it is not interested. This allows you to easily determine if a DLL filter is causing the DLL to be ignored for code coverage.

Coverage Debug Information

When the dialog is displayed a Learn More… link is available. This presents a simple dialog providing some information about debug information for debug and release builds. We’ve used a modified static control on these dialogs to provide useful bold text in dialogs (something that you can’t do with plain MFC applications). It’s a small thing but improves structure of the dialog. This text was displayed as part of the previous debug information dialog. Removing this text to a separate dialog chunks the information making it more accessible.

Coverage Debug Information Learn More

There is more to be done with this part of the software but this is an improvement compared to previous versions.

Tips Dialog

Coverage Validator has always had a “Tip of the day” dialog. This is something of a holdover from earlier forms of application development. We’d never really paid much attention to it, to how it functioned, how it behaved and what it communicated.

Tip of the day dialog

We’re planning to completely overhaul this dialog but that is a longer term activity. As such in this revision we’ve just made some smaller scale changes that still have quite an impact.

Tips dialog

The first change is that the previous “Tip of the day” dialog was displayed at application startup but with the new version the “Tips” dialog is no longer displayed at application startup. The tips dialog is now displayed when you launch an application and are waiting for instrumentation to complete. This means you get displayed tips during “dead time” that you can’t really use effectively – you’re waiting for the tool. The tips dialog is still available from the Help menu as was the previous Tip of the day dialog.

The second change is that the new Tips dialog is modeless. The previous Tip of the day dialog was modal. This means you can leave the dialog displayed and move it out of the way. You don’t have to dismiss it.

We’ve done away with the icon and replaced it with a tip number so you know which tip you are viewing. Tips are no longer viewed sequentially (Next Tip) but in a random order. At first this seems like a crazy thing to do. But when you try it, it actually increases your engagement. You’re wondering how many tips there are and which one you’ll get next. Hipmunk was an inspiration for this – they do something similar when calculating your plane flights (I hadn’t seen this when I used Hipmunk but Roger from ThinkUI had seen it).

There is more to be done with this part of the software but this is a useful improvement until our completely reworked Tips dialog is ready for release.


All of the changes have been made to improve and simplify the way information is communicated to the user of Coverage Validator. Improved graphics displays, interactive dashboards, better data dialogs, hyperlinks and occasional use of bold text all improve the user experience.

We’re not finished improving Coverage Validator. These are just our initial round of improvements.

Panorama Theme by Themocracy