Learning Azure Databricks – fix

I’m doing the MS Learn module, Introduction to Azure Databricks, Use Apache Spark Notebooks (https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-databricks/4-using-notebooks) and I hit a problem in the section called ‘Why Apache?’ when the tutorial wouldn’t create the assets, complaing ‘ModuleNotFoundError: No module named ‘pathlib2’.

To fix this – click on Clusters in the left menu and select your cluster to show the configuration page:

Click on the Libraries tab, click Install New, the PyPi and enter pathlib2 into the Package field; click Install and wait for the process to complete. Once that is done, you can re-run the first part of the ’02 Why Apache?’ notebook and it should work.

Adding Chrome extensions to Edgeium

For the last four or five months I have been using the new Microsoft Edge builds based on Chromium – this is via the special release channels that Microsoft set up for people to try it out. I mostly use the Dev channel release which is updated once a week and is pretty stable; there are two other channels – Beta is on a slower release cycle and represents the most polished current version, or, for the really adventerous, the Canary channel is on a daily release cycle and contains really ‘fresh’ code.

As with most people, I’ve been using Chrome for the previous few years; one of the reasons I really liked it was the tabbed page support it had; I first realised how useful tabs were when I used Opera and soon found them indispensable- so much so that I often ended up with dozens of tabs open at the same time.

It wasn’t long before I was searching for a way of managing my predilection for all the tabs all the time! The most useful one I found is The Great Suspender – which ‘unloads’ the tab content after it’s been un-used for a configurable period of time, it releases the memory and eliminates any CPU useage, but the page can be reloaded with a single click.

Of course, now I’m hooked on Edge, the Great Suspender extension was the only thing I missed from Chrome. So I was really pleased to see Edge now has a feature that allows you to load extensions from the Chrome App Store. To find this feature, use the Edge menu and select Extensions; then at the bottom flip the Allow extensions from other stores toggle and accept the disclaimer.

Now you can navigate to the Chrome app store (https://chrome.google.com/webstore/category/extensions) and install any of the extensions you want from there.

Two new adventures for July

I’ve embarked on two new ventures for me in the last few weeks. The first is that I was made a Microsoft MVP for 2019-19 – this is a programme run by Microsoft that recognises community leaders and technical experts for the work they do in helping others learn and grow into becoming better developers and technologists. I’m really excited and proud to have been selected for the award for the work I do in helping to run DotNetNorth.

When I started getting the group going, the obvious aim was to provide free training, especially for people who found it difficult to get it from employers or who wanted to broaden their technical horizons; but equally importantly I wanted to ensure we were a space where technologists could socialise and network, make friends, find out about job openings and informally help each other. That part of the group dynamic has taken longer to grow, but as the group matures I’m beginning to see that realised and it’s very rewarding to be part of that.

Which brings me on to other new venture – becoming a mentor.

About a year ago, at one of the events we run, I met Trish Keating who had just moved to Manchester and joined UKFast to set up a start-up mentoring programme. After several attempts she finally persuaded me to join the ranks for the mentors for TechMcr and a few weeks ago we had a speed-dating session where mentors and mentees get matched. I’m looking forward to (hopefully) being a sounding board for a growing company and being able to provide some assistance from all the knowledge, triumphs and mistakes I have learnt in my career.

Microsoft Insider Dev Tour in Manchester

This week saw Manchester hosting one of the Insider Dev Tours of 2018, we had a great turnout of over 100 people joining us in the city centre, for a full day of content with lunch provided by Microsoft.

These are over thirty events being hosted in cities all over the world and are aimed at developers and IT pro’s who are on the Windows Insider Programme and/or are interested in seeing what features and enhancements are being shipped in the latest and next versions of Windows 10.
The events are run by local MVP’s (Most Valuable Professionals) and community groups with the content and demos provided by Microsoft, so it’s an intensive lap around the key features that Microsoft want to highlight for 2018 and based on sessions provided at last month’s Build conference in Seattle.

I did two sessions, one on Progressive Web Apps and one on Productivity Apps in Office365 and there was a host of MVP talent on show for the others – Pete Vickers, Peter Foot, Rob Miles, Robert Hogg, Rik Hepworth and Simon Jackson.

A big thanks to Pete Vickers, who put in a load of work to make the day the success it was, and also to Aden Earnshaw and Mike Irving, who gave their time running the registration desk and generally doing the unsung heroics on front of house.

If you want to follow any of the labs from the sessions, they are available here.

The robots are coming with cheese!!

Last month saw us meeting once again at Auto Trader for May’s DotNetNorth. We welcomed our old friend Rob Miles over from Hull to talk about his latest passion, dinky robots! Rob has been working on these things for a while and opened with a description of how he designed a little robot using stepper motors, Arduino boards and various sensors (after, of course, a couple of corny opening gags).

Rob has conceived these robots – called Hull PixelBots officially – to be easy to build with off-the-shelf (cheap) electrical components and even a 3d-printable chassis (although you can just use perspex or balsa wood). He has also written the operating system that powers the beasts called HullOS (are you detecting a theme here?); but is adamant that that sounds much harder than it actually is.

Rob then showed us a few demos and explained that using a few of the features in Azure, he could control the beasts remotely. If you want to see the presentation, it was recorded by our friends from Pusher – you can find it here

Global Azure Bootcamp in Manchester

Last Saturday a group of community group leaders and helpers in Manchester joined forces with hundreds of other people for the 2018 Global Azure Bootcamp run in association with Microsoft. At the event we had four sessions covering various parts of the Azure ecosystem, some with hands-on labs so people could get a good feel how Azure solutions come together.

So huge thanks to our session leaders who came together and devise an agenda in just a couple of weeks:
Luce Carter, organiser of the Xamarin user group who did our Intro to Azure and using the portal session.
Aden Earnshaw, who did a great job on his user group presenting debut and covered Web Apps.
Martin Boam, who recently was awarded a Microsoft MVP award and runs the Cloud User Group gave a session on Serverless computing.
Jim Bennett – a Cloud Developer Advocate at Microsoft – came all the way from Reading and delivered a great demo about using Azure AI to augment mobile apps, despite the curse of the demo gods striking!
(And I did one on CosmosDB / DocumentDb too)

We also thank Auto Trader for providing the venue for us and providing coffee and tea for the whole day – especially Helen, the venue event co-ordinator who is always helpful.

This was our first go at running the Bootcamp, it was hectic but very rewarding to work with some new people in the run up and to see everyone learning something new on the day – hopefully we will be doing another one next year too! But I won’t be thinking about it too hard for a couple of months.

Using Table Valued Parameters in Dapper

Today I discovered a neat way of passing values into a SQL Server stored procedure with Dapper using a Table Valued Parameter. Up to now, I’d been using a DataTable, adding the columns programatically and then populating it row-by-row. Whilst re-reading Erland Sommarskog’s detailed post about dynamic SQL, I noticed something I hadn’t picked up on before – that there was another way of doing this. Some more research via Leonard Lobel’s site lead me to this solution, which is much neater that the DataTable shenanigans.

Firstly we need to create a table-valued parameter in SQL Server: In your database, open a new query and type:


Next we create a procedure that will accept the TVP as a parameter:

@KeyList dbo.SimpleKeyList READONLY

This procedure will just return all the keys sent in but in reverse numerical order, so we can see that some processing has occurred.

Now we need to do a bit with Dapper;

This is our basic method:

        public List<int> EchoSomeKeys(KeyList inputData)
            using (var db = new SqlConnection(_connString))
                var data = db.Query<int>("EXEC Core.EchoKey @KeysIn", 
                    new {KeysIn = inputData.AsTableValuedParameter("dbo.SimpleKeyList") }
                return data.ToList();

Looks simple doesn’t it? Now all we need is our input class KeyList:

public class KeyDto
    public int KeyId { get; set; }
public class KeyList : List<KeyDto>, IEnumerable<SqlDataRecord>
  IEnumerator<SqlDataRecord> IEnumerable<SqlDataRecord>.GetEnumerator()
    var sdr = new SqlDataRecord(new SqlMetaData("KeyId", SqlDbType.Int));

    foreach (KeyDto item in this)
      sdr.SetInt32(0, item.KeyId);
      yield return sdr;

You can see that a little bit of magic is injected via the implementation of


Dapper provides the AsTableValuedParameter method which iterates over the enumerator provided by the interface and populates the parameter TVP.

I knocked up a quick NUnit test to check it all works:

public class TestTableValuedParam
  public void TVP1()
    var a = new Tvps();
    KeyList keysIn = new KeyList();
    keysIn.Add(new KeyDto { KeyId = 68});
    keysIn.Add(new KeyDto { KeyId = 12 });
    keysIn.Add(new KeyDto { KeyId = 42 });

    var m= a.EchoSomeKeys(keysIn);
    Assert.That(m.Count, Is.EqualTo(3));
    foreach (var i in m)

Which verifies that we get the values returned in reverse order.

DotNetNorth review of 2017

I thought I’d do a quick look back at the events of the year for DotNetNorth as it’s been a pretty amazing year all told.


The beginning of the year saw our meetup membership exceeding 700. Our attendances had been growing slowly in 2016 and we were beginning to see the effects of the simple marketing tactics that our main sponsors Evolution Recruitment had been doing – a number of their consultants had been adding a short link to the group into their email signatures.

We had also nicely settled into using our latest venue; we made the switch to take advantage of a few things, such as a huge video wall for presentations, microphones and much easier access in the evenings. There were a few disadvantages – the space has a coffee shop alongside and the sound can carry quite far but in general it was a great fit for us with space to sit about 60 comfortably and a few dozen more at a stretch.

We also began a relationship with the guys at Pusher, who offered to come and video our talks to put on their website.


We started to see significant growth in our audience numbers in the summer with numbers reaching 60-70 for each session. The down-side of this, of course, is the cost of pizzas so we were pleased when we re-confirmed our sponsorship agreement with Evolution Recruitment.

We were also contacted by the events team at AutoTrader, a big employer in the city, who were looking at ways to raise their profile within the Tech community in Manchester.

After Oli and I took a visit to see the space we decided to run a trial event in June; this went well with the AT catering team excelling themselves in putting on a great buffet with drinks.

The opportunity to use AutoTrader came just in time as around this time the events organisers at Rise were let go and they declined to take bookings more than a month in advance.


In September we started a run of events at AutoTrader; being able to plan dates in advance with them meant we could schedule some great speakers and our audiences grew to around 60-70 each evening. We also ran a Windows Fall Creators Update launch event with a huge box of t-shirts being shipped from Redmond.

In October we ran our second Xamarin Dev Day which was kindly hosted by UKFast; they have a great theatre space with a stage and huge screen and a breakout area alongside. That event attracted people from as far away as Reading and London, just showing there’s an appetite for these kind of full day events.

We also joined the .Net Foundation Meetup Group, which means we’re now listed alongside 100 other .Net related user groups across the globe.

End of the year

At the close of the year we’re looking in great shape – we have over 1300 members on meetup and it’s growing daily.

Due to some changes in the community outreach programme at AutoTrader, they won’t be able to support us quite as comprehensively as they have in 2017, so we’re pleased to have just signed up another sponsor Dunnhumby; we’re also looking at some alternative venues to mix things up a bit, so we’re not dependent on a single host company and not demanding too much of them either.

We’re also pleased that two DotNetNorth attendees have set up their own user groups – Luce Carter has set up a Xamarin group and Michael Dickens a F# group.

All in all, this has been the best year yet for DotNetNorth; we still have problems cropping up every so often, but I still get a great thrill when the message pops up to say ‘new .Net fans have joined your meetup group’. I especially want to thank the four people who help run the group – this really is a team effort and we could not have got where we are without the work put in by Pete Vickers, Oli Newsham, Mike Irving and Jason Holloway.

Looking forward to 2018 now, deep breath….


A bit about Dot Net North

As you may know, I am one of the co-organisers of a Microsoft oriented community ‘user’ group in Manchester called DotNetNorth. We run a monthly meeting in Manchester city centre with one or two speakers plus pizza (that’s Manchester in the United Kingdom).

When the group started it was run by myself, Pete Vickers and Chris Hardy and was aimed at building a community of Windows Phone developers; we didn’t see many people at the meetings but we built a small core of regular attendees many of whom have become friends.

In 2014 we decided to pivot into a less specialised group and we’ve grown since then to have almost 1000 fans on our meetup group.

Chris has since gone off to work for Xamarin in the USA so Pete and I now have the help of Oli Newsham, Jason Holloway and Mike Irving to keep the group running. Having a team certainly makes the events easier to host and run – we’ve all got different strengths and we use that to our advantage each meeting and it means people can find an ‘organiser’ when they need one.

This last year has been a pretty incredible one for us – we secured a year long sponsorship with Evolution Recruitment which allowed us to stop worrying about how to pay for the pizza each month and they also promoted the meetup site by adding a link to the email signature of all their consultants working with Microsoft related technologies. The company has been commendably ‘hands-off’ about the arrangement with one of their guys, Scott Barker, coming along each month (sometimes with a colleague too) just to chat to anyone who is looking to move jobs.

The group continues to grow at pace and we will soon be looking for a bigger venue to host the meetings and more sponsors to cover the costs.

If you’re interested in coming along or speaking at one of our meetings then you can see the event diary and/or send us a message at http://www.meetup.com/DotNetNorth

HoloLens talk at DotNetNorth Manchester

Last night was the December meeting of DotNetNorth in Manchester at which the excellent Mike Taulty gave us a developers’ first look at the HoloLens. It was an eagerly anticipated meeting and we had just over 50 people in the room.

There’s some seriously powerful stuff going on inside the headgear and it was great to see people getting really excited about what HoloLens can deliver.

The group has been running in this format for just over a year and this was one of the best attended ones we’ve had – thanks to our sponsors and the team of fellow organisers.

DotNetNorth is a community group for techies in Manchester who are interested in Microsoft products. I’ll post more about the group over the next months, but if you’re local to the area and want to join us then head over to https://www.meetup.com/DotNetNorth/ and join the group.