Another week of socially-distanced, furloughed fun: here are some of the highlights…
“Playing” with tech: Azure Sphere
I took a break from exam study this week, partly because I had some internal meetings that made a big hole in the calendar and diverted my attention. Instead, I finally got my Azure Sphere Starter Kit IoT device working, with both Microsoft samples and with some more practical advice from Brian Willess at Element 14.
I’m blogging my progress (slightly behind the actual learning) but over the course of a few days, supported by Brian’s blog posts, I managed to get the sensor readings from my device working locally, with Azure IoT Hub and Time Series Insights, and then finally in Azure IoT Central.
Thursday meant my usual trip to the local market, followed by the supermarket, buying provisions for my family and others. Because product availability is a bit “hit and miss”, in the supermarket (and because I prioritise supporting local businesses over the big retailers, where I can), I bought some peppers (capsicums) from the market greengrocer. There was no price displayed but, as he bagged them, he said they were expensive… and he was not wrong: £3/lb, I think! But I was too embarrassed to say “no thanks at that price” so bought them anyway. Lesson learned…
Late in 2019, I got my hands on an Azure Sphere Starter Kit, which I’ve been intending to use for an IoT project, using some of the on-board sensors for temperature and potentially an external one for humidity…
Installing Visual Studio Code and the Azure Sphere SDK
Having obtained the kit, the next stop was Microsoft’s Getting Started with Azure Sphere page. I downloaded and installed Visual Studio Code (I don’t really need the whole Visual Studio 2019 application – though I later found that a lot of the advice on the Internet assumes that’s what you’re using…) and then immediately found that there are two versions of the Azure Sphere Software Development Kit (SDK). According to the Microsoft docs, either can be used with Visual Studio Code but I found the setup for the Azure Sphere SDK for Visual Studio failed when it can’t find Visual Studio (not really surprising) and so I used the Azure Sphere SDK for Windows.
Connecting the hardware
I plugged in the Avnet Azure Sphere Starter Kit, using the supplied USB cable, and watched as Windows installed drivers after which a virtual network interface was present and three COM ports appeared in Device Manager.
Setting up my dev environment
Installing Visual Studio Code and the Azure Sphere SDK was only the first part of getting ready to create code for the device. I needed to install the Azure Sphere extension (easily found in the Extensions Marketplace):
The Azure Sphere extension also installs two dependencies:
I also need to install CMake (in my case it was version 3.17.1). Not really knowing what I was doing, I followed the defaults but on reflection, I probably should have let CMake add its directory to the system %PATH% variable (I later uninstalled and reinstalled CMake to do this, but could just have added C:\Program Files\CMake\bin to the Path in the user environment variables).
The final installation was Ninja. Windows Defender SmartScreen blocked this app, but I was later able to work around that, by unblocking in the properties for ninja.exe:
I missed the point in the Microsoft documentation that said I needed to manually add Ninja to the %PATH% environment variable but I later went back and added the folder that I copied ninja.exe to (which, for me, was C:\Users\%username%\Tools).
After completing Multi-Factor Authentication (MFA) and confirming I wanted to allow Azure Sphere to use my account, I was logged in but with a warning that I don’t have access to any Azure Sphere tenants, so I created one:
azsphere tenant create --name "Mark Wilson"
Warning – more research required: I used a Microsoft Account, as per the Microsoft instructions, but am now concerned I should have used an Azure Active Directory (Organisational/Work or School) account (especially as Role Based Access Control is supported from Azure Sphere 19.10 onwards). As a device can only be claimed once and, once claimed, the device is permanently associated with the Azure Sphere tenant, I’m stuck with these settings now…
I then went ahead and claimed the device:
azsphere device claim
Connecting to Wi-Fi and updating the device operating system
I checked the current OS version on the device:
azsphere device show-deployment-status
As can be seen, not only is the OS out of date, but the device is not connected to a network, so I connected to Wi-Fi:
Now, with network connectivity in place, the device had a fighting chance of an OS update and according to the Microsoft documentation:
The Azure Sphere device checks for Azure Sphere OS and application updates each time it boots, when it initially connects to the internet, and at 24-hour intervals thereafter. If updates are available, download and installation could take as much as 15-20 minutes and might cause the device to restart.
I needed to use git to clone the Azure Sphere Samples Repo, so that meant installing git. Then, from the Terminal in Visual Studio Code, I ran git clone https://github.com/Azure/azure-sphere-samples.git.
I then opened the Samples\HelloWorld\HelloWorld_HighLevelApp folder in Visual Studio Code, ready to build and deploy the app.
Building and deploying the app
Having set up my dev environment, set up the device and downloaded some sample code, I followed the instructions in the Visual Studio Code Azure Sphere Extension to run the following in the Command Palette: Azure Sphere: Configure Settings (selecting High-Level Application) and CMake: Build.
I was then able to build and deploy the sample app to my Azure Sphere device, by starting a debug session (F5) .
and was rewarded with a blinking LED on the board!
I can also view the application status with azsphere device app show-status.
The next step is to get the app I really wanted to use working on the device, making use of some of the on-board sensors and then integrating this with some of the Azure services. I’m having trouble compiling that code at the moment, so that blog post may be a while longer…
In 2004 (when I started writing this blog), I was working for a company called conchango*. The developers talked a strange language – about Scrum and XP – and it was nothing to do with Rugby Union or Windows but it did have something to do with sprints…
That was my first encounter with Agile software development methodologies. Not being a coder, I haven’t done a huge amount of agile development, with the infrastructure projects I’ve been involved in generally being run using a traditional “waterfall” approach.
These days, things are different. There’s a huge push for Agile projects and the UK Government Digital Service’s Service Manual even says:
“You must use the agile approach to project management to build and run government digital services.
Agile methods encourage teams to build quickly, test what they’ve built and iterate their work based on regular feedback.”
There’s also a lot of confusion in the marketplace. Colleagues and clients alike are using the word “agile” in different ways. And there’s an undertone that agile is the one true way and waterfall is bad.
Let’s start off by comparing uses of the word “agile” (in IT) and what they mean:
Agile (big A) often relates to a methodology – for example APMG International’s AgilePM project management methodology or the AgileBA approach to business analysis – but really they have their roots in Agile software development, with the Agile Manifesto, written in 2001.
When we talk about being agile (small a), it’s a mindset: the approach taken. Literally, being able to adapt to change and to move quickly. We might use Agile (big A) approaches to help increase our agility (small a).
Agility is about reaction to change. Many business want to be agile. That doesn’t mean they only run projects with Agile approaches. It means they want the ability to flex and change in line with business requirements.
So that’s Agile/agile/agility sorted then. There are Agile frameworks/methodologies/approaches to delivering outcomes in a more agile manner, to increase organisational agility.
Now waterfall. If Agile, is the one true way, waterfall must be old hat and avoided at all costs, right?
Not at all.
Agile projects work well for quickly creating a minimum viable product (MVP) and iterating development – for example as a series of sprints. They are great when there is a known problem but the requirements are less clear. The solution can evolve in line with the definition of the requirements. The requirements may change as the solution develops: respond to market changes; adapt to new requirements; fail fast.
But some projects are less defined. In a 2018 blog post, Matt Ballantine (@ballantine70) referred to unknown problems with unknown solutions as tinkering. That seems fair – if you don’t know what the issue is, then you can’t have a solution!
Similarly, unknown problems with a known solution. That’s nonsense. Or “WTF?” as Matt so succinctly puts it in his 2×2 diagram:
You’ll see though, that there is a place for waterfall project management. Waterfall works when there is a known problem and a known solution. Instead of constantly iterating towards an end, work out the steps to go straight there. It will almost certainly be more efficient. Waterfall projects are based on the golden triangle of time/cost/quality (which together define scope). A known deliverable (scope) bounded by how fast/cheap/good you want it to be – and there’s always a trade-off.
So there we have it. Agile is not a silver bullet and there is still a place for waterfall projects.
What to use, when?
In my line of work, Cloud Transformation might appear to use a combination of Agile and Waterfall approaches. We might create a virtual datacentre in Azure or AWS and take an iterative approach to migrating workloads but that’s still really just Waterfall with incremental delivery – even if a Kanban approach is used to inject some urgency! Similarly migrating batches of mailboxes to the cloud is just iteration, as is a programme that’s adopting Office 365 workloads one by one. An Agile approach comes into its own when we think about Business Transformation, or Digital Transformation, where we can define an MVP and then use sprints to iterate development of a set of new business processes or the digital tools to deliver those processes in a new way.
That’s 3 exams in 7 “working” days since I was furloughed, so I think next week I’ll give the exams a bit of a rest, knock out some blog posts around the things I’ve learned and maybe play with some tech too…
Easter Monday also saw this website move to a new server. The move was a bit rushed (I missed some communications from my hosting provider) and had some DNS challenges, but we took the opportunity to force HTTPS and it seems a little more responsive to me too (though I haven’t run any tests). For a long time, I’ve been considering moving to Azure App Service – if only for reasons of geek curiosity – but the support I receive from my current provider means I’m pretty sure it will be staying put for the time being.
The intersection of cycling and technology
Those who follow me on Twitter are probably aware that for large parts of the year, I’m “Cyclist’s Dad”. At weekends in the autumn, I can usually be found in a muddy field somewhere (or driving to/from one), acting as pit crew, principal sponsor and Directeur Sportif for my eldest son – who loves to race his bike, with cyclo-cross as his favourite discipline.
This weekend, we should have been at Battle on the Beach (not technically cyclo-cross but still an off-road race) but that’s been postponed until the Autumn, for obvious reasons.
Instead, we’ve been having fun as my son upgraded his CX bike to electronic gears, using a Shimano Ultegra/GRX Di2 mix.
It’s all been his work – except a little help from Olney Bikes to swap over the bottom bracket (as I lack the tools for changing press-fit BBs) – and the end result is pretty spectacular (thanks also to Corley Cycles/@CorleyCycles with their help sourcing some brake hose inserts at short notice). I’ve never had the good fortune (or budget) for electronic shifting on my bikes but having ridden his yesterday (long story involving a mid-ride puncture on my bike) I was blown away by the difference that all the components he’s swapped to save weight have made and the smooth shifting. Oh yes, and it’s finished with a gold chain. I mean, who doesn’t need a gold chain on their bike?
Electronic shifting has its critics but first impressions, based on a couple of off-road rides this weekend, are very positive. Maybe I need to get a couple of newspaper delivery rounds to start saving for upgrades on my bikes…
Right, it’s getting late now and Sunday night is a “school night” (especially true since my Furlough Leave is being spent focusing on learning and development). I’m off to watch an episode of the BBC’s new drama, “Devs”, before bed. I’m 4 episodes in now and it’s a bit weird but it’s got me hooked…
Continuing the series of weekly blog posts, providing a brief summary of notable things from my week.
Cancelled holiday #1
I should have been in Snowdonia this week – taking a break with my family. Obviously that didn’t happen, with the UK’s social distancing in full effect but at least we were able to defer our accommodation booking.
It has been interesting though, being forced to be at home has helped me to learn to relax a little… there’s still a never-ending list of things that need to be done, but they can wait a while.
It was my first online-proctored exam and I had some concerns about finding a suitable space. Even in a relatively large home (by UK standards), with a family of four (plus a dog) all at home, it’s can be difficult to find a room with a guarantee not to be disturbed. I’ve heard of people using the bathroom (and I thought about using my car). In the end, and thanks to some advice from colleagues – principally Steve Rush (@MrSteveRush) and Natalie Dellar (@NatalieDellar) – as well as some help from Twitter, I managed to cover the TV and some boxes in my loft room, banish the family, and successfully pass the test.
In both cases, I used the official study materials from Amazon/Microsoft and, although they were not everything that was needed to pass the exams, the combination of these and my experience from elsewhere helped (for example having already passed the Microsoft Azure Fundamentals exam meant that many of the concepts in the AWS exam were already familiar).
Thoughts on the current remote working situation
These should probably have been in last week’s weeknote (whilst it wasn’t the school holidays so we were trying to educate our children too) but recently it’s become particularly apparent to me that we are not living in times of “working from home” – this is “at home, during a crisis, trying to work”, which is very different:
I think I might have figured out why all of this “work from home” stuff is driving me crazy.
I’ve been a WFH employee for 10 years. But that’s not what’s happening now.
People are at home trying to work during a crisis.
Some other key points I’ve picked up include that:
Personal, physical and mental health is more important than anything else right now. (I was disappointed to find that even the local Police are referring to mythical time limits on allowed exercise here in the UK – and I’m really lucky to be able to get out to cycle/walk in open countryside from my home, unlike so many.)
We should not be trying to make up for lost productivity by working more hours. (This is particularly important for those who are not used to remote working.)
And, if you’re furloughed, use the time wisely. (See above re: learning and development!)
In spite of my feelings on social video conferencing, I still took part in two virtual pub quizzes this week (James May’s was awful whilst Nick’s Pub Quiz continues to be fun) together with trans-Atlantic family Zooming over the Easter weekend…
Not driving and not going out for lunchtime solo dog walks has had a big impact on my podcast-listening…
I now need to schedule some time for catching up on The Archers and the rest of my podcasts!
Just looked in my Podcasts app and realised how long the backlog is… that’ll be the drop off in travel/lunchtime dog-walking taking effect. Nice excuse to relax in the afternoon sun ????
In what spare time I’ve had, I’ve also been continuing to edit the Remote Work Survival Kit. It’s become a mammoth task, but there are relatively few updates arriving in the doc now. Some of the team have plans to move things forward, but I have a feeling it’s something that will never be “done”, will always be “good enough” and which I may step away from soon.
On the work front, I had a couple of conversations around potential client work, but was also grappling with recording Skills Framework for the Information Age (SFIA) skills for my team. Those who’ve known me since my Fujitsu days may know that I’m no fan of SFIA and it was part of the reason I chose to leave that company… but it seems I can’t escape it.
A few weeks ago, most people in the UK would never have heard of “Furlough Leave”. For many, it’s become common parlance now, as the UK Government’s Job Retention Scheme becomes reality for hundreds of thousands, if not millions of employees. It’s a positive thing – it means that businesses can claim some cash from the Government to keep them afloat whilst staff who are unable to work due to the COVID-19/Coronavirus crisis restrictions are sent home. In theory, with businesses still liquid, we will all have jobs to go back to, once we’re allowed to return to some semblance of normality.
On Tuesday, I was part of a management team drawing up a list of potentially affected staff (including myself), based on strict criteria around individuals’ current workloads. On Wednesday it was confirmed that I would no longer be required to attend work for the next three weeks from that evening. I can’t provide any services for my employer – though I should stay in touch and personal development is encouraged.
Social distancing whilst shopping for immediate and extended family
So, Thursday morning, time to shop for provisions: stock is returning to the supermarket shelves after a relatively small shift in shopping habits completely disrupted the UK’s “just in time” supply chain. It’s hardly surprising as a nation prepared to stay in for a few weeks, with no more eating at school/work, no pubs/cafés/restaurants, and the media fuelling chaos with reports of “panic buying”.
Right now, after our excellent independent traders (like Olney Butchers), the weekly town market is the best place to go with plenty of produce, people keeping their distance, and fresh air. Unfortunately, with a family of four to feed (and elderly relatives to shop for too), it wasn’t enough – which meant trawling through two more supermarkets and a convenience store to find everything – and a whole morning gone. I’m not sure how many people I interacted with but it was probably too many, despite my best efforts.
Learning and development
With some provisions in the house, I spent a chunk of time researching Amazon Web Services certifications, before starting studying for the AWS Cloud Practitioner Essentials Exam. It should be a six hour course but I can’t speed up/slow down the video, so I keep on stopping and taking notes (depending on the presenter) which makes it slow going…
I did do some Googling though, and found that a combination of Soundflower and Google Docs could be used to transcribe the audio!
Struggling with AWS training: talking heads and dull content (plus stopping and starting video to take notes) so I tried Soundflower and Google Docs Voice Typing to create a transcription. It’s not bad for American presenters, less so for other dialects. No punctuation though… pic.twitter.com/uBawtXvROj
Saturday night was a repeat of the previous week, taking part in “Nick’s Pub Quiz”. For those who haven’t heard of it – Nick Heath (@NickHeathSport) is a sports commentator who, understandably, is a bit light on the work front right now so he’s started running Internet Pub Quizzes, streaming on YouTube, for a suggested £1/person donation. Saturday night was his sixth (and my family’s second) – with over 1500 attendees on the live stream. Just like last week, my friend James and his family also took part (in their house) with us comparing scores on WhatsApp for a bit of competition!
Ending the week on a high, Sunday saw my birthday arrive (48). We may not be able to go far, but I did manage a cycle ride with my eldest son, then back home for birthday cake (home-made Battenberg cake), and a family BBQ. And the sun shone. So, all in all, not a bad end to the week.
With social distancing in effect here in the UK and all pubs, bars, cafés and restaurants closed for the foreseeable future, we need to find new ways to socialise.
So, Friday night saw the opening of the “Virtual Boozer”, with me in my Man Cave and my mates James, Pete and Phil all on a video conferencing link. I have to admit it was a little odd, but it worked… and, as we couldn’t meet in person, it was a good way to hook up – even if most of the conversation was COVID19/Coronavirus-related.
I’ll admit the idea is not my own:
For a while now, Matt Ballantine (@ballantine70) has been running a “Global Canteen” on an ad-hoc basis for some of us on the WB-40 Podcast WhatsApp group to meet virtually. Last week, the idea of a “Global Boozer” was suggested as a natural extension of this.
And Sharon O’Dea Tweeted about using Zoom to meet up with her friends:
In the end, I went with Microsoft Teams. Mostly because it’s a tool that’s familiar to me (I use it every day at work) and because it works cross-platform but partly because I have an Office 365 E1 subscription and it’s included. There is a free tier for Microsoft Teams too…
These are by no means all of the tools available though – there’s a huge list that’s been collated in the Remote Work Survival Kit.
I tried creating a Team for the Virtual Boozer and inviting external recipients. In the end, it was just too complicated – with six steps to ensure that external access was granted (and still failing to invite external people). So I fired up Outlook, created a meeting, used the Teams add-in to drop in some meeting details, and emailed my friends.
It worked, but as Matt Ballantine highlighted to me, using the same tools for work and home is perhaps not the best approach to take (he equated it to going for a drink with my mates in the office!). Next time I’ll be seriously considering using Google Hangouts, which seems to work as a mobile app or a browser add-in – and is perhaps a little more consumer-friendly than Microsoft Teams. Everyone has their own preferences – just go with what works for you!
The Virtual Boozer opened again last night (27/3/2020); this time using Google Hangouts. It seemed to work well, in a browser or in-app but it does require that you have a Google Account. Much like Teams, scheduling involved creating a calendar appointment (which, for me, meant re-activating my dormant GMail/Google Calendar). Also, it jumps around to show you the person who is talking at the time – some of my friends would have prefered to have all faces on the screen together (which is one of the advantages of Zoom).
Another option, which my youngest son has been using with his mates is Houseparty.
With the current COVID-19/CoronaVirus health crisis, there’s a huge focus on working from home – for those who are able to.
I’ve been contractually based from home since 2005 and remote working has been the norm for a good chunk of my career. That means I kind of take it for granted and didn’t really appreciate some of the things that others struggle with – like how to focus, finding space to work, and social isolation. (I’m also an introvert, so social isolation is probably not a huge concern to me!)
Somewhat disappointingly, there also seems to be a surge of articles on “how to work from home” – mostly written by people who seem to have very little real-world experience of it. But there are some notable exceptions:
Last year, Matt Haughey (@mathowie) published his tips from 16 years of working from home. Whilst some of the advice about his chosen tech (wide angle lens, special lighting, Apple AirPods and Slack) might not be everyone’s cup of tea, there’s a lot of good advice in Matt’s post.
And, earlier this week, my colleague Thom McKiernan (@ThomMcK) wrote an excellent blog post on what he calls the six rituals of working from home. I hadn’t really twigged that working from home is a fairly new experience for Thom (since he came to work at risual) and Thom’s post also flagged some of the bad habits I’ve slipped into over the years: the 08:55 starts; the procrastination; not taking regular breaks; and going back to work in the evening). It’s definitely worth a read.
But equipping people with the tools and mindset to work remotely is only part of the problem. Whilst I believe (hope) that the current crisis will help organisations to discover the benefits of remote and flexible working, some of the major challenges are cultural – things like:
Trust: comments like “Oh, ‘working from home’ are you?” don’t help anyone. Sure, some people will slack off (it’s human nature) but they will soon be found out.
Presenteeism: linked to trust, this often comes down to a management style that is reliant on seeing people at a desk, between certain hours. It’s nothing to do with how productive they are – just that they are there!
Output: so many people are hung up on hours worked. Whilst we owe it to ourselves not to over-do things, or for employers to take advantage of employees, much of today’s work should be output-driven. How effective were you? Did you manage to achieve x and y, that contribute towards your personal goals (which ideally contribute towards the company’s goals)? It’s not about the 9-5 (8-6, or 6-8), it’s about delivery!
For managers, it can be difficult when you have a remote team. I struggle sometimes but in some ways, I’m fortunate that I have a relatively senior group of Architects working with me, who are (or at least should be) self-starters. If they don’t deliver, I will hear soon enough, but then I’ll have another problem in that I’ll have a dissatisfied client. So, ideally, I need to make sure that the team understands what’s expected of them.
My approach is this:
Trust: everyone I work with is trusted to “get on with it”. That’s not to say I don’t check in on them but there is a huge reliance on people doing what they have been asked to.
Empowerment: I don’t micro-manage. I’ll make sure that we have regular 1:1s, and cross-team communications (see below) but everyone in the team is empowered to make decisions. I’ll be there to support them if they want guidance but I need people to make their own choices too… which means I need to be ready to support them if those choices don’t work out the way they, or I, might have liked.
Clear guidance: of course, I have a manager too. And he reports to our Directors. Things get passed down. I may not like everything that “passes my desk” but sometimes you just need to get on with it. Communication to my team about what’s required/expected, why it’s needed and when it needs to be done by is vitally important.
Communication: related to the above but making sure there are regular team calls. Even once a fortnight for 45 minutes (because we always over-ran 30 minute meetings and an hour is too long) is an opportunity to disseminate key messages and for everyone to share recent experiences. Every few months we’ll meet face to face for a day and work on something that gets added value from being together – but that’s not really remote working (or advisable in the current climate).
Understanding my limits: I’m a practicing Consultant as well as a people manager, so I’m not always there (I also work part-time). This goes hand in hand with the empowerment I mentioned above.
Tools: everything I’ve written in this post up to now has been about the people but technology can play its part too. I use Microsoft Teams extensively (you may have another choice – email, Slack, SharePoint, Yammer, or something else):
I work in the open – on Teams. Email in an Inbox is hidden whereas a post on Teams is visible to all who may have an interest.
When I’m not at work, my out of office reply directs people to post on Teams, where another member of the team might be able to help them.
I changed the language order in my Office settings so that English was the first option after Match Windows. Whatever was causing Windows to fall back down the list then went to English rather than Arabic.
Now I can read the dialogue boxes on my Office updates!
I often come across confusion with clients trying to understand the differences between tenants, subscriptions and domain names when deploying Microsoft services. This post attempts to clear up some misunderstandings and to – hopefully – make things a little clearer.
Each organisation has a Microsoft Online Services tenant which has a unique DNS name in the format organisationname.onmicrosoft.com. This is unique to the tenant and cannot be changed. Of course, a company can establish multiple organisations, each with its own tenant but these will always be independent of one another and need to be managed separately.
It’s important to remember that each tenant has a single Azure Active Directory (Azure AD). There is a 1:1 relationship between the Azure AD and the tenant. The Azure AD directory uses a unique tenant ID, represented in GUID format. Azure AD can be synchronised with an existing on premises Active Directory Domain Services (AD DS) directory using the Azure AD Connect software.
Multiple service offerings (services) can be deployed into the tenant: Office 365; Intune; Dynamics 365; Azure. Some of these services support multiple subscriptions that may be deployed for several reasons, including separation of administrative control. Quoting from the Microsoft documentation:
“An Azure subscription has a trust relationship with Azure Active Directory (Azure AD). A subscription trusts Azure AD to authenticate users, services, and devices.
Multiple subscriptions can trust the same Azure AD directory. Each subscription can only trust a single directory.”