NDepend v4

Friday, 25 May 2012

I read today that NDepend v4 is now released.

Probably the most interesting change is the addition of CQLinq – a LINQ language for querying the code base that supersedes the old “CQL” query language (that was more SQL-like).

It also includes support for Visual Studio 11 and a new API to make creating your own static analyzer(s). There’s a full list of new features in the Release Notes.

Upgrades from v2/3 are half the cost of a v4 license.

If you haven’t upgraded from v3 to v4, you can still download the latest v3 from the downloads page (it will say that your v3 license key isn’t valid for v4 but give you a link to the v3 download)

Editing project files in Visual Studio

Friday, 18 May 2012

The standard way of editing a project file in Visual Studio is to first unload the project, and then right-click on the unloaded project in the Solution Explorer and choose 'Edit Project'.

Wouldn't it be nice if this was just one step instead of two?

Well one option is to install the Visual Studio PowerCommands or VSCommands extensions, both which add an 'Edit Project' option to the context menu for loaded projects. But if that's the only feature you want then installing one of those extensions might be more than you need.

Another option is to create a Visual Studio Macro and then add that to the context menu manually. Here's how:

  1. First, go to the Tools menu and choose Macros | Macros IDE.
  2. A "Microsoft Visual Studio Macros" IDE window appears.
  3. In the project explorer, right-click on 'MyMacros' and choose Add | Add Module
  4. Name the module "Projects"
  5. Within the new module, add the following code:
    Public Sub EditProject()
        ' Ensure only projects are selected
        For Each item As SelectedItem In DTE.SelectedItems
    
            If Not (TypeOf item.Project Is Project) Then
                MsgBox("Can't open project(s) for editing as non-project items are selected", MsgBoxStyle.Exclamation)
                Exit Sub
            End If
        Next
    
        ' ensure solution is active
        DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    
        For Each item As SelectedItem In DTE.SelectedItems
            DTE.ExecuteCommand("Project.UnloadProject")
            DTE.ExecuteCommand("OtherContextMenus.StubProject.EditProjectFile")
    
        Next
    
    End Sub
  6. Save and close the Microsoft Visual Studio Macros IDE
  7. Now you can associate a keyboard shortcut with this new macro, and you can optionally add it to the project context menu.

 

  1. To add it to the context menu, go to Tools | Customize
  2. Select the 'Commands' tab and choose 'Project and Solution Context Menu | Project' in the Context Menu dropdown list.
  3. Scroll down the list of controls for this menu to find the location where you'd like this macro to appear.
  4. Select an existing control, and click on 'Add Command'
  5. Select the 'Macros' category
  6. Select the new macro from the Commands list and click on 'OK'
  7. Click on 'Modify Selection' to rename the menu item for the macro to 'Edit Project'
    Visual Studio Customize dialog window

Now, when ever you use the keyboard shortcut or the new 'Edit Project' from the Solution Explorer's context menu, the selected project(s) will now be opened in the text editor.

Asthma First Aid–Windows Phone app

Wednesday, 16 May 2012

Screenshot of Asthma First Aid running in Nokia Lumia 800Asthma First Aid is a free app I've developed in conjunction with Asthma Australia. It informs you of the recommended first aid steps for someone experiencing an asthma attack.

It features a one-click phone dialler to call '112' – the international standard mobile emergency number.

Everyone should know Asthma first aid, so if you have a Windows Phone, install it today

Download from the Windows Phone Marketplace.

SQLSaturday #139 (on a Tuesday)

Thursday, 5 April 2012

PASS SQL Saturday LogoI think continuous learning is an integral part of being a professional. On the 24th April 2012, there's an opportunity for everyone with an interest in SQL Server to further their knowledge at the first SQLSaturday event to be held in Adelaide – SQLSaturday #139 (even though it's on a Tuesday!)

As the number suggests, these events have been running around the world for a while, but this is the first (hopefully of many) to be held here.

The schedule is now finalised and includes two tracks. Speakers include Paul White from New Zealand, Paul te Braak and Peter Ward from Brisbane, Raja N from Sydney, and local luminaries such as Rob Farley, Roger Noble, Andrew Butenko and even me!

So what would you expect to pay for a conference featuring this kind of expertise and experience? $200? $500? $1,000? Well you could pay that if you wanted to, but actually the whole day is free, thanks to the generosity of the event sponsors and speakers.

So run (don't walk) to the registration page and sign up today. Then go and let your manager/boss/social secretary know where you'll be on the 24th!

See you there Smile

Naked ADSL and VoIP 2012-style

Monday, 2 April 2012

Last month I decided to take the plunge and switch over to a Naked ADSL service. Late last year Internode had announced that they'd sorted out number porting for customers on existing ADSL2+ connections (like myself). More recently they also introduced a new tier in their Naked plans, so that leaving my old 50G ADSL2+ plan was now viable.

The switch to a naked line happened on the scheduled day. I didn't realise however that the porting of the phone number would take a few extra days. Not a huge problem, but something to be aware of.

Going naked means you have no dial-tone. If you want to keep your phone number, it needs to be ported to a VoIP service. In this case to NodePhone (Internode's VoIP offering), with $10/month call credit. I've been using first FreeCall and more recently PennyTel as outgoing VoIP providers for a number of years. It will be interesting to see how NodePhone compares.

Two nice features that I discovered was it comes with voicemail (you can customise the greeting, and you can get email notifications), and caller ID is included (instead of paying $6/month for the privilege)

I configured my trusty ATA (a Sipura SPA-3000) with new settings to work with NodePhone. All seemed fine, but it didn't work – the registration was failing. A call to Internode Support didn't identify any issues other than I was using more recent firmware than they were aware of, and that I was using relatively 'old' hardware. In any case just when I was about to give up for the evening, I noticed that it had started working all by itself.

All seemed fine for a few days, then I noticed that we were getting calls going to voicemail but no missed calls were on the phone. Strangely the ATA was still saying it was registered but most calls never rang the phone – they just redirected to voicemail.

Another call to Internode support, but again no joy. Nothing looked out of place with my settings, but they could see the registration was dropping out regularly (which would explain the calls not coming through to the handset). Their final suggestion – get some new hardware.

It turns out I bought the Sipura SPA-3000 way back in 2005. 7 years is a good innings for consumer hardware, so maybe it was time to update to something more current. The Gigaset C610 seemed to be well regarded so I picked up one from Internode's Adelaide office.

It was pretty straightforward to configure, but annoyingly I then discovered I was having the same problem still. Another call to Internode Support, but this time they said they had TWO active registrations – one for the Gigaset and one for the SPA! That didn't make sense, as the SPA was now sitting on a shelf – no power, no network. They reviewed the modem and Gigaset settings and things seemed to settle down, and I received an incoming call ok.

So hopefully that's the way things will stay for now on Smile