Skip to main content

How I can share my Azure Notebook with another person from my team?

The Azure team is offering a service where you can run code and develop Jypyter notebook called Azure Notebooks. Azure Notebooks is allowing us to build our notebooks in multiple languages (e.g. R, Python 2/3, F#) and run them automatically inside our Azure Subscriptions. We don't need anymore to spin up the resources, manage them and think about how we can deploy the notebook from our machine to different environments.

THE PROBLEM
One of the most common questions that I receive is 
How I can share my Notebook with another person from my team?

CONTEXT
In most of the cases, you are not the only one that is working on a notebook, you might have a team of people that would like to work on a collection of notebooks from the same project. In other cases, the client would like to own the notebook project and allow external teams to use the notebooks. 

REALITY
The reality is that at this moment in time, sharing notebooks is limited. Why? Let see below.
A notebook project can be private or public.
  • Public - Anybody can access it using the public URL
    • e.g. https://notebooks.azure.com/vunvulear/projects/rvplayground 
  • Private - The notebook it is not publicly accessible to anybody. The only person that can access the project is the owner of the project.

SHARING
You might be now a little bit confuse because as you can see in the above picture, we have a share button with the ability to share it via email or link. There are two things that you might not be so obvious:
  1. Share button even it is available and works for both Public and Private projects the URL to the notebook project works only for public ones. For private projects, users will receive an error when they want to access it.
  2. There is no mechanism at this moment in time (June 2020) to provide access to another person to a private notebook project.
Another feature that could be used is the ability to upload a GitHub repository to Azure Notebooks.
It means that in theory, we could create a private GitHub repo with our notebooks that could be imported inside Azure Notebooks. The problem is that only public GitHub repos can be imported. For private ones, there is no ability to import them.

At this moment in time, there is no support of a REST API or CLI that would allow us to manage projects and notebooks from a script. Once we have a REST API for management, we could build script that would clone a project automatically, do the merging and other similar things that would enable collaboration. 

CONCLUSION
Azure Notebooks are great to build and play with Jupyter notebooks. The lack of sharing capability for private notebooks makes them almost impossible to be used by organisations. The current sharing ability can be used only for public projects that limit the ability to use them in commercial projects. 
What we are missing at this moment in time? A notebook sharing capability based on AD or integration with private GitHub repos. Why not even support inside Azure DevOps.

Comments

Popular posts from this blog

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(

Azure AD and AWS Cognito side-by-side

In the last few weeks, I was involved in multiple opportunities on Microsoft Azure and Amazon, where we had to analyse AWS Cognito, Azure AD and other solutions that are available on the market. I decided to consolidate in one post all features and differences that I identified for both of them that we should need to take into account. Take into account that Azure AD is an identity and access management services well integrated with Microsoft stack. In comparison, AWS Cognito is just a user sign-up, sign-in and access control and nothing more. The focus is not on the main features, is more on small things that can make a difference when you want to decide where we want to store and manage our users.  This information might be useful in the future when we need to decide where we want to keep and manage our users.  Feature Azure AD (B2C, B2C) AWS Cognito Access token lifetime Default 1h – the value is configurable 1h – cannot be modified

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine: threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration: TeamCity .NET 4.51 EF 6.0.2 VS2013 It see