All posts by Alexander Williamson

Planning ahead with BugTracker.NET

Planned Dates Screenshot
Planned Dates columns highlighted

When I joined RedZebra, we were good at supporting customers because there were few requests and few problems. We’ve grown a lot and managing support requests is not easy when there are all the different configurations etc.

I introduced BugTracker.NET several months ago and got buy-in from the rest of the team to use this tool to log and record everything that comes through from support. We also use it to plan support if we’re waiting on someone. Ideally we’d integrate this with Outlook Calendars and resource scheduling so we can plan ahead, but this hits the budget for now.

I wanted a way to add a date to the items, and then be able to see when they’re planned in for, and if something is due for today. We already use BugTracker.NET’s categories, organisation, statuses and priorities, this just helps us organise that little bit better since we don’t have any time to go in and customise it ourselves.

I added a custom field called Planned Date and then modified our Queries (bug lists) to show the planned date, and another column indicating if the job is today. I’d previously joined the two together but mixing datetime and varchar sort wouldn’t be easy in this. I’m sure we could write a custom sort, or just modify the codebehind to do this, but I wanted to try and stay within the confines of the editors if I could.

Adding a Custom Field

  • In BugTracker.NET, navigate to Admin > Custom Fields
  • Click Add New Custom Field
  • Planned Date was the name of the field, and I chose datetime as the type. This hint lets BugTracker.NET display the right component. There’s a few different options here worth exploring, but for now just choose datetime so we get a calendar control.
  • Save

Now when you return to the Add or Edit Bug screens, you’ll be presented with the field.

Adding fields in here actually modifies the bugs table definition in the database (by adding and removing columns), so use with caution.

Selecting dates

When you’ve added your Custom Field, it’s right there when you edit an item.

Custom SQL for Queries

You won’t be able to see Planned Date or Today columns unless you add them to your Queries.

In BugTracker.NET navigate to Queries > Add New Query

Enter “planned” as the Description and copy the code below into the SQL box. Hit Create to add the Query and then navigate to Items > Query dropdown list > planned to see your new list. You can organise by Today or Planned as expected. It should look like the screenshot above.

I used an inline SELECT CASE which is similar to a switch or inline if for dates.

bg_id [id],
isnull(bu_flag,0) [$FLAG],
CASE WHEN CONVERT(DATETIME, bugs.[Planned Date]) >=
AND CONVERT(DATETIME, bugs.[Planned Date]) <
THEN 'Today!'
ELSE '' END [Today],
bugs.[Planned Date],
bg_short_desc [desc],
isnull(st_name,'') [status],
isnull(asg.us_username,'') [assigned to],
isnull(ct_name,'') [category],
isnull(pj_name,'') [project],
isnull(og_name,'') [organization],
isnull(pr_name,'') [priority],
rpt.us_username [reported by],
bg_reported_date [reported on],
isnull(lu.us_username,'') [last updated by],
bg_last_updated_date [last updated on]
from bugs
left outer join bug_user on bu_bug = bg_id and bu_user = $ME
left outer join users rpt on rpt.us_id = bg_reported_user
left outer join users lu on lu.us_id = bg_last_updated_user
left outer join users asg on asg.us_id = bg_assigned_to_user
left outer join projects on pj_id = bg_project
left outer join orgs on og_id = bg_org
left outer join categories on ct_id = bg_category
left outer join priorities on pr_id = bg_priority
left outer join statuses on st_id = bg_status
where bg_status not in (5,6)
order by bg_id desc

Service Management Expo 2012

Service Management Expo - Copyright SME
Service Management Expo 2011 – Copyright SME

Today I went to the annual Service Management Expo which was held in the National Exhibition Centre in Birmingham (the NEC). This is the second time I’ve gone, again with my boss, to check out our competition and get a feel for how the market is changing. It’s nice to see what’s out there, what’s new and where we fit into things – it gives me perspectives and ideas that I just cannot get from sitting and researching behind a computer screen.

The industry, like any other, is smart. It adapts, morphs and constantly pushes and innovates by creating more features and options. These features come at a cost; for the developing teams in terms of hours and other resources, and then to the customer as they purchase it; pushing up the initial and ongoing costs of the software.

There are always new entrants into the field and these are now web-based, look really promising and match our thinking. The industry is pushing HTML5 apps and the cloud in a big way. I have my reservations of cloud storage, I always prefer owning my content and I can understand why customers are hesitant about migrating to the cloud. I saw a demonstration today where the presenter could dip into live systems from a sitemap list and view live installations at will. Imagine if he accidentally saved his password using Chrome or similar – disastrous.

Thankfully we are keeping up with the innovation game and know where we want to go with the software in the next couple of years. There was nothing there we’d not considered or hadn’t thought about before, so there was nothing so shocking or interesting for us this time. I still maintain that it’s important keep up with your competitors through innovation, and I pushed for our apprentice to go and visit it and get a feel for the industry he’s in. He came back with some ideas, some of the features he thought our competitors lacked and saw gaps in the software that he never saw before.

One day, when this business grows enough, we hope to present at the SME, but for now we need to continue developing the features we’re going to add and concentrate on that at a later date.

DataTables with Twitter Bootstrap

No doubt I’ll use this later, so here are some links to getting Twitter Bootstrap working with DataTables.Net.

I extensively use Twitter Bootstrap for all our web applications at RedZebra Software, and our search/finder features are grids with DataTables applied to them.

If you’ve never explored Twitter Bootstrap or DataTables, I strongly advise you to do so – they’re both pretty epic and show what a collaborative spirit can produce!

Remove AVG Secure Search from Google Chrome

AVG Secure Search comes bundled with the AVG Pack. When it’s installed, it overrides the settings in Google Chrome, so you can’t get to your preferred homepage or installed Chrome Applications.

To remove it, go to Wrench > Tools > Extensions and disable AVG Secure Search.

Unfortunately the quite useful AVG Do Not Track tool is disabled too, but other extensions such as AdBlock can fill this gap which is better behaved and honors Chrome’s settings.

Chrome Apps Dashboard

Music Subscription Services

I’m not a fan of giving my money away, and I see the music industry as very greedy at times. Like everyone else, I enjoy music and it’s an integral part of modern living. I also enjoying albums and being able to play the music I love. Lots of people I know have massive collections of music and spend a lot of money on buying new CD’s or downloads of the songs they want to keep.

There are alternatives to downloading or buying music, such as subscriptions services like and Deezer, each with their own drawbacks and merits. Instead of buying music and owning it, you are renting it from them until you stop paying your subscription. If you work out the cost of music, the cost of one new CD  downloadable album on its day of release pays for a whole month of unlimited streaming (and offline DRM’d copies) of any album in the vast archives of music these subscriptions offer. Since I listen to music a lot at home or when I’m coding at work, I thought I’d give a try for a week and see if I would use it. It turns out I listen to a lot of music and many different albums in the space of one day. I do listen to a lot of the same thing if I like it, but then get bored and move on. I figure if I really like an album, I’ll go and buy that album regardless, but really like discovering music so will try a full subscription for a few months.

Spotify is well advertised in the UK and there is a lot of tie ins with Facebook, but too much for my liking. My close friends love Spotify, but there’s something at the back of my mind about them that I don’t like, which must stem from the tight Facebook integration, something that didn’t force on me when I signed up. I also love an underdog and like a fair playing field – so we’ll see how does.


Bing and 118 business data sources

When Bing and other search engines scour and index the web for business and address information, sometimes the information isn’t detailed enough, or they need an authorative answer for business information.

Bing and the UK’s 118 services (directory enquiries) (e.g. 118 118, or 118 192 etc.) share the same base database and then add their own records to it.

To perform a free lookup and check your information is right, it makes sense to go to the source:

Related Links

Apprentice Tests

We’re looking for apprentice developers to join us at RedZebra Software.

There are a few tests we want you to take before coming for interview. The answers are pretty basic, don’t require heaps of maths or complex array pushing and popping and are based on MSTests. Download the sample Solution below and code the tests to pass. You’ll need a version of Microsoft Visual Studio which has tests built in – the Express Editions before 2010 don’t have tests built into them. If you haven’t got a Visual Studio edition with testing support, I’d recommend having a play with Visual Studio 2012 Release Candidate for Web however you may need to ensure you import the right dependencies to get that going. If you can, download the full edition of Microsoft Visual Studio and you’ll be able to code fully until your trial period runs out.

Download the sample Visual Studio Solution (.sln) file here:

When you’ve finished, drop me an email to [cryptex]alex (at)[/cryptex] and we’ll talk about the next steps.

Apprentice Developer Position

I’ve been working for RedZebra for about a year now, and it’s been going well. We’ve refactored a lot of code, fixed a massive amount of bugs and introduced features which blow our competitors out of the water. We’re a small software house and at the moment there’s only three of us; myself, my boss Richard and Darryl, the apprentice we took on earlier this year.

We’re trying to grow and so after working out the figures decided that we are large and stable enough to add an additional developer to our team.

The word “apprentice” means different things to different people, so I am being careful when I’m throwing the word around. Graduate Apprentices have finished university in the last couple of months and are going to start a two or three year placement scheme with a company that will train them and give them a job for about 5 years after that. A step below that is the general apprentice who has just left college or is starting a new career along a new path.

We’re looking for someone in the hybrid of both, someone who can absorb what I’m going to throw at them whilst not being a skip-the-hard-work Graduate. The government apprentice scheme we’re recruiting under has its benefits and it’s drawbacks; the scheme is really useful for us because its backed and part-funded by the government, but also difficult because the scheme has a number of prerequisites including that the apprentice must take a college course (the apprenticeship itself must be from a college), so they’re away at college at least one day a week. The other problem is that we need someone who is a fantastic coder, and loves code itself. These kind of people are hard to find, and are often of the Graduate Apprentice level. They’re aiming for a much higher salary and career, and honestly, at the moment, we simply cannot afford that kind of person. We can’t offer a massive salary but I know what I’m going to teach them will hurtle them forward in their career by about 3 years. I’m going to throw them in at the deep end and they’re going to love it. There are very few opportunities like this at this level.

There are plenty of brilliant coders out there waiting to be discovered, and I know that we’ll find someone that is desperate for a job and good enough to come and work for us. We certainly don’t want to take advantage of anyone, and we’re offering a serious career with us while we grow RedZebra over the years to come.

If you think you or a friend would be interested, drop me an email or IM.