Sign in

Physicist, Machine Learning Scientist and constantly improving Software Engineer. I extrapolate the future from emerging technologies.

Docker is the app-ware for your computers that are not a smartphone.

Photo by Jonas Lee on Unsplash

At The Beginning

You have programmed for a few years and have cluttered up your sandbox, your local development machine, with downloads of many different libraries, frameworks, and maybe a virus or two.

The above described my life in 2008. The arduous tasks below detail the giant PIA (you are on your own to resolve the acronym) in my life at the time:

  1. Upgrading from Python 2.x to 3.x;
  2. Supporting production services written in Python 2.x and you were not allowed, even if you wanted to, upgrade them to Python 3.x;
  3. Upgrading Linux OS servers to the next major release and layers of…


I offer a checklist for your Machine Learning Operation (MLOps) endeavor.

Create a Check List for your MLOps Rollout. Photo by Glenn Carstens-Peters on Unsplash

As part of the AI 1.0 surge (1983–1987), I felt that AI, to be of practical use, had to be distributed. Since then, I have been building distributed operating systems.

I admit I stopped when I encountered Kubernetes in 2016 because from a Software Architect and Engineer viewpoint, there was little I could add, and what I could add would be minor.

Yes, I think Kubernetes is a great distributed operating system architecture for a cloud of virtual machines (VMs) to a hive of Rasberry Pis.

I returned to Machine Learning about nine years ago during the AI 2.0 …


MLOps = DevOps + DataOps+ MLLabOps + MLProdOps + DSOps

MLOps is complex. Photo by Neven Krcmarek on Unsplash

I was taught to transform a complex problem into a simpler problem, by dividing the problem into smaller sub-problems.

I made the process paradigm of Machine Learning Operations (MLOps) simpler by dividing it into five different, but overlapping process groups or Operations (Ops) groups.

What Does MLOps mean to me?

MLOps is automating the Machine Learning product life cycle.

Why Do MLOps exist?

In 1990, we had 80%+ IT projects that were never rolled out. Failure rate dropped because of standardized developer tools, repeatable process iteration, death of the Waterfall method, a rise of the Agile method, and unit testing — to list some of the code development advances.

In…


Let’s expand the definition of refactoring to include new functionalities

coffee cup beside a keyboard and computer screen
Proper refactoring lowers technical debt (Photo by Ryland Dean on Unsplash)

Different Kind of Refactoring

I plan to increase stability and performance and to decrease the cost of maintenance in the Photonai code base. I add clustering functionality to the original code base and change the architecture.

A small code refactoring task is usually fixing bugs. Some consider that it is not refactoring if the bug-fixing occurs before releasing to test.

A significant code refactoring project example is causing a program to be Y2K-compliant but not changing functionality. Y2K compliance is enabling code to operate correctly with dates at or beyond January 1, 2000. (Yes, this was a thing!)

“Refactoring is a disciplined technique for…


Let’s discuss why type hinting techniques and tools improve your Python code

old-fashioned type in a case
Typesetting. Source: Mr. Cup, Unsplash

Overview of Type Hints or Type Annotations

Python is a dynamically typed language. However, starting with Python 3.5 (PEP 484), type hints were introduced. Type hints (note: not strong type checking) make it possible, post coding of Python, to do static type checking of code.

Here’s a great figure showing the evolution of Python type hinting:


There is a dominating idea that extinction events occur suddenly. However, Climate Change Heating, a possible extinction event is occurring over decades. In the context of investing for a decade or more, these are my ideas for the Climate Change Heating macro event.

Photo by Jared Murray on Unsplash

Climate Change is boiling the frog slowly.

Almost all the international participation proposals detail how to slow down Climate Change Heating (CCH).

There are ideas on how to stop and even reverse Climate Change Heating. But they are at the idea stage.

Most people, who think the climate is heating up adversely, believe that technology will save our butts from CCH.

What does the…


This blog article is the second blog article explaining Kubernetes without delving into its internal architecture. I discuss the next seven Kubernetes basic concepts with Minikube code examples.

Kubernetes orchestrates a distribution of virtual machines and applications all connected by a network. Photo by Samuel Sianipar on Unsplash

Install kubectl

I refer to kubectl often throughout this blog article.

kubectl is your local command-line interface (CLI) for exchanging declarative or imperative directives with a single Kubernetes cluster. The Kubernetes cluster is on your local sandbox; we use Minikube or remotely by the network.

You need to install kubectl, before you continue.

A summary of most kubectl commands are:

Install minikube

Besides using kubectl throughout this blog article, I also use minikube.

Minikube is a popular tool to train with or test Kubernetes on your local workstation(s).

Minikube is how you run Kubernetes on your local computer(s).

I think of Minikube as a…


An explanation and usage of Kubernetes should not discuss internal architectural components. Instead, I discuss Kubernetes basic concepts with code examples. In the end, as a bonus, Kubernetes has a glaring hole in its design.

Kubernetes orchestrates a cloud or distribution of virtual machines connected by the network. Photo by Manuel Nägeli on Unsplash

Deploying and Managing an Application Without Kubernetes

Whether a single person, startup, or mega-corp, there will be a small number of users on your first day of offering your application to the public.

What about the second day or the third week? Will it be a dud or go viral?

Viral means lots of users. You have to develop and test the software to spread the increasing user load across the computing…


Literate programming is a superset of DevOps or Change Integration/Change Deployment (CI/CD). I detail how to implement literate programming by customizing nbdev for existing Github repositories. Example code can be used for other vendor repositories, such as Gitlab and Bitbucket.

Figure 1. The book cover of “Literate Programming” by Donald. Source: Author screenshot.

What is literate programming?

Literate programming is a programming paradigm introduced by Donald Knuth in which a computer program is given an explanation of its logic in a natural language, such as English, interspersed with snippets of macros and traditional source code, from which compilable source code can be generated — Wikipedia

Literate programming, as originally conceived, places documentation, code, and test together in…


The Docker image for our Jupyter Python and R users required them to set their Nbextensions preferences after every launch. We were able to increase Jupyter notebook user productivity by setting commonly used Nbextensions preferences in the Docker image.

A Jupyter notebook of R code showing ggplot graphs. Source: Giphy

Directory Structure for Dev for the 1.3.0 Release

We have a shared disk where anybody can copy the template files to their local directory structure.

|-- dockerSeasons
|-- dev
|--- Dockerfile
|--- docker-compose.yml
|-- test
|--- Dockerfile
|--- docker-compose.yml

Each member of Dev and Test copies Release 1.3.0dockerSeasons directory over to their PROJECTS directory.

- PROJECTS
.
.
.
|-- <project-name>
|…

Bruce H. Cottman, Ph.D.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store