Successful Software Delivery with DevOps

With DevOps best practices and Microsoft’s DevOps tooling, Black Marble can deliver agile planning, source code control, package management, build, testing and release automation to continuously integrate, test, deliver and monitor your application.

It is crucial to not only have the right people in place for your cloud adoption journey, but also to use the right processes and the right tools. A typical DevOps approach consists of cross-functional teams provisioning their own infrastructure, with high degrees of automation using templates, codified rules for security controls and cloud-native architecture.

This is where the core aspects of continuous value delivery meet the demands currently driving companies; an integrated team approach including enterprise agile and cloud computing.

Successful Software Delivery with DevOps
Successful Software Delivery with DevOps

Delivering AI in Policing

Over the last few years, I’ve spent a great deal of time working with police forces in the UK, and regularly have conversations with them about AI, and the potential impact on policing. More and more police forces are looking at AI in order to take advantage of the services available to drive insights from existing data, to produce the next generation of artificial intelligent applications. AI can be thought of as the pinnacle of data comprehension, analysis and insight, as a destination and a focused target for police forces to maintain their responsibility for huge amount of personal data which they hold. It needs quality and connected data and relies on solid governance and best practices to achieve reliable and good quality outcomes.

The new Police Digital and Data Strategy supports Policing Vision 2025 (the strategic direction of policing) and a key arm of that strategy includes how best to manage, analyse and share police data. AI offers unparalleled opportunities to police forces to make best use of their data.

For more information on Delivering AI in Policing, get in touch for a copy of my white paper.

Delivering AI in Policing White Paper.
Delivering AI in Policing White Paper.

Delivering an Enterprise Cloud Operating Model

There have been some major paradigm shifts in the history of computing with some of the most notable being marked, not only by changes in technology, but by changes in staffing that technology. When the computing standard for mainframe shifted to client/server, the staff model moved from computer operator to system administrator.

The same is true with a move to the cloud.

The cloud fundamentally changes how businesses procure and use technology resources. Traditionally, having had ownership and responsibility of all aspects of technology from infrastructure to software with the cloud, this allows businesses to provision and to consume resources only as needed. Moving to the cloud can bring increased business, agility, and significant costs benefits.

However, the journey to the cloud needs to be managed carefully at each stage; not just for delivery but for expectations and ROI. Even more significantly, the cloud opens up access to a range of on-demand cloud services, unavailable just 10 years previously. These include hyper-scaling, AI services and computing power; short-term consumption providing significant benefits.

All these services combined, provide business realisations that only the cloud can offer.

Transforming your business into a cloud-business is more than simply moving your systems and infrastructure into the cloud – your organisation needs a Cloud Operating Model (COM) to adopt a cloud-first mentality. It is important to guide your people away from traditional IT thinking, to ensure they realise business benefits and harness the true potential of the cloud, where adoption drives innovation. This white paper will cover how this can be achieved with the assistance of Black Marble.

For more information on Delivering an Enterprise Cloud Operating Model, get in touch for a copy of the white paper I put together with our CCO, Rik Hepworth.

Cover of Delivering an Enterprise Cloud Operating Model White Paper
Delivering an Enterprise Cloud Operating Model White Paper, 2nd Edition.

Time to Give Something Back

Due to the unusual circumstances of 2020, the 15th Developer!Developer!Developer! Day will take place virtually. That means no catering or venue costs to meet, costs that are usually met via sponsorship, as we keep the cost of entry free. And I’ll be covering any incidental costs incurred.

However, we are still looking for support and sponsors, with the aim of using the funds to support TNMOC (The National Museum of Computing) – it’s a tough time for TNMOC right now, and they do such great work preserving our industry’s heritage, we wanted to make sure we put something back. So if your organisation would normally sponsor DDD, please consider making a donation, it would be deeply appreciated. Or if you are a member of our community who wants to support the museum, please do so here: TNMOC.

b.

TNMOC Logo
The National Museum of Computing

The Return of Developer!Developer!Developer! for 2020!

DDD Logo
DDD Logo

We had planned to run a DDD in October, but due to illness, this didn’t happen (we are all well now, phew!). With Christmas so close, hadn’t expected to have time to run a DDD, but with the world being as it is, we wanted to do something to bring some cheer to the Dev and IT community.

Therefore we are running DDD (virtually) on 12th December! We are still formalising the details, but wanted to get the message out there, and looking forward to all the submissions!

Since opening up the Call for Papers on Sessionize yesterday, we already have 12 sessions from 9 speakers! Thank you all so much 😀

b.

Crowd scene for lunch at DDD in Reading
Lunchtime at DDD at Microsoft HQ in Reading.

Back to blogging…

I have been wanting to return to this blog for some time, but a combination of things kept me busy. Not least of which, was a period of illness for me at the beginning of Spring, and for family at the start of September. All good now, and glad to be OK!

Plus, I’ve been keeping myself busy producing articles over on LinkedIn, as well writing a series of White Papers (6 down, more to come!), but I’ll blog more about those over the next few days.

It’s been an interesting year all around, Black Marble still busy, on-boarding new staff, and many new customers, a vast improvement to the start of the year!

b.

Getting my ThinkPad Active Pen working with my Lenovo X1 Carbon Extreme

I have had a ThinkPad Active Pen (model SD60G957200) ever since I got my Lenovo X1 Carbon Extreme.

The pen, when it works, has worked well. However, the problem has been that whether the pen and PC detected each other seemed very hit and miss.

Today I found the root cause. It was not drivers or dodgy Bluetooth as I had thought, but a weak spring inside the pen. It was not so weak that the battery rattled, but weak enough that the electrical circuit was not being closed reliably on the battery.

The fix was to replace the weak spring with new one out of an old ball point pen. Once this was done the pen became instantly reliable.

Wish I had spotted that sooner.

Updated 11 Nov 2020: I may have spoken too soon, it is back to it’s old behaviour today 🙁

However, I think it could just be the AAAA battery. Seems it is not a good idea to leave a battery in when the pen is not is use given the pen has no power switch.

SPWakeUp (SPWakeUp3) v1.1.0 Released

I’ve implemented something that I’ve wanted to for a long time on SPWakeUp: The ability to wake additional URLs.

Version 1.1.0 allows the use of the ‘-Include’:’ command line parameter to specify additional URLs that will be woken once the detected site collections and subsites have been traversed.

SharePoint Online Content Type Hub Publishing Issues

We use the SharePoint Online Content Type Hub extensively as the central location to create, manage and distribute content types throughout our SharePoint Online tenant. We recently saw an issue with the distribution of one of the content types defined in the Content Type Hub which had a specific PowerPoint template assigned to it.

The content type in question had been updated with a revised template and republished, however when we tried to create a new presentation from the content type in SharePoint Online, the older template was still being served. I spent quite a long time testing a variety of PowerPoint template files of varying content and sizes with the content type (upload a new template to the content type in the Content Type Hub –> republish the content type –> wait for distribution to the site collections –> test; a process that can take some time when the content type is being distributed correctly) with no progress at all. It didn’t seem to matter what template file I uploaded to the content type, nothing seemed to be distributed. I even tried a blank Word template, and even that didn’t get distributed. Eventually I raised a Microsoft support case to help resolve the issue.

As the content type used managed metadata columns and I’d made a minor change to those, I tested with content types created using the same columns but a different template file and one using no managed metadata columns, but with what appeared to be the problematic template file uploaded. Only the example with the problematic template file was affected, but in the same way that we’d seen with the original content type, it didn’t matter what template file we uploaded afterwards, the content type and revised template were not distributed. The template we were using was obviously the issue, however it seemed to break distribution of any content type it was uploaded to from then on.

SharePoint content type templates are held in a folder structure in the root of site collections as follows:

_cts/<content type name>/<template file name>

This is true for both the Content Type Hub where the content types are distributed from, and the destination site collections.

Examining this location in the Content Type Hub (initially using PowerShell, but also using the SharePoint Client Browser), showed the following:

SPCB exploration of cts folder

As can be seen, all of the template files that have been uploaded to the content type were still present! Uploading a new template file does not appear therefore to delete the previous file that was associated with the content type. If one of the uploaded files causes issues distributing the content type, even though it may not be associated with the content type anymore, it continues to cause issues simply by being present in the folder for the content type. For example the following PowerShell retrieves the template filename and URL associated with the content type:

Get-PnPContentType -Identity “Black Marble Presentation” | select DocumentTemplate,DocumentTemplateUrl

In our case, this demonstrated that the template that was causing the issue was not associated with the content type, except by its existence in the folder for the content type in _cts.

The following PowerShell could therefore be used to remove the extraneous template files from the content type folder in the Content Type Hub site collection:

Remove-PnPFile –SiteRelativeUrl “_cts/Black Marble Presentation/<template file name>”

Using the above PowerShell I removed all of the unused template files and then republished the content type with a simple blank Word template initially to test whether the content type was distributed successfully. Once that was shown to be successful I uploaded a revised PowerPoint template file and republished the content type. The revised template was also successfully distributed.

SPWakeUp (SPWakeUp3)–Wake Up On-Premises SharePoint and WSS Instances

Since I started working with on-premises SharePoint instances, one of the solutions that I’ve used to wake up (pre-compile) the site collections and sub-sites contained within the web applications hosted by the farm is SPWakeUp.

This was originally a solution hosted on CodePlex and provided binaries for SharePoint 2007, then later SharePoint 2010 (the archive containing those can still be downloaded from the CodePlex Archive). I created compiled binaries for SharePoint 2013 and SharePoint 2016 and made those available as well.

I recently had need to use SPWakeUp on SharePoint 2019, so decided to produce a compiled for that version. As SPWakeUp doesn’t seem to have an active home anymore, I thought that it may be worthwhile putting the code and compiled versions on GitHub in case anyone else wants to use them! Note that if anyone objects to this happening, let me know and I’ll pull it down.

At the moment the repository hosts the original source code, the source code upgraded for use with Visual Studio 2019, compiled versions of SPWakeUp for SharePoint 2013, SharePoint 2016 and SharePoint 2019 and some instructions on how to compile the source yourself using Visual Studio Community 2019.

I hope it’s useful to someone!