2021-12-31

2021-12-31 Thursday - End-of-Year Personal Metrics for 2021

2021 Personal Metrics

  • 21 technical books reviewed 
  • 269 git commits (mostly in my personal knowledge management repositories)
  • 17,182 lines (including blanks, 162,361 words) in my private "2021 Technology Reading List" notes file (4,062 links to articles, videos, etc.) - a catch-all of what I've read/found to be interesting - and may want to be able to find/recall/reference in the future.
  • 32 sailing-related blog posts

 

 

 

2021-12-24

2021-12-24 Friday - My reply to Adrian Grigoriu's analogy (EA models are like MRI scans)

Adrian Grigoriu posted the following on LinkedIn:

 Enterprise architecture looks (and is used) like an MRI scan
Architecture is about models and blueprints. In the Enterprise, the architects have to devise models that describe the enterprise. 
Enterprise Architecture looks (and is used) like an MRI scan.
On these models the people in the enterprise would visualize, analyse and solve their own issues in the enterprise context.  
The EA "model" looks like an MRI scan, an integrated set of views of the enterprise body, taken from different angles. Each view depicts a virtual section through the body of the enterprise.  
A wide variety of specialists (doctors) diagnose then, using the MRI pictures, the problems the same way business professionals analyse and solve the enterprise problems, using the EA descriptions produced by the architect.
The EA architect may be asked to assist the process but, just like the MRI specialist, the architect does not solve the problems of the enterprise but the specialist.

My reply:

Adrian Grigoriu I agree with Scott Whitmire's positions stated here, as well.

Further - due to the dynamic and constantly changing nature of the enterprise - models are usually imperfect, partial, and incomplete - in the best of times - and out-of-date most of the time.

The value of an architect spending the majority of their time primarily developing/maintaining models - eventually reaches a point of diminishing returns. For those models, too, become technical debt.

A model may be useful as an approximation - as a "tell" on the trail for architects that follow. But, in my experience - across multiple industries - and over the last four decades - no executive has ever asked for an arch model, upon which to base a decision.

Models are useful to guide the direction and intent of design - or to reason about the big picture - but they are not the primary reason for the existence of an architect's role.

Models are just one of the ways in which an architect creates value.

In a fast moving, agile enterprise - my experience has been that executives value the architects' ability to help the organization avoid dead-ends, minefields, and to make recommendations (based on experience) - from imperfect/incomplete information.

2021-12-14

2021-12-14 Tuesday - Why You Should Value The Experience of a Veteran

(image credit: Oregongal on pixabay.com)

 

 As you look forward to 2022, and find yourself evaluating potential candidates to fill roles...here are some thoughts on why you should value the experience a #veteran brings...

Whether they have experienced combat or not - every veteran has experienced training to prepare them for executing under the most trying of combat conditions.

They have a very unique understanding of the commitment it takes to carry on - beyond exhaustion - how to make do with less - and still win, even against overwhelming odds.

They have a bone-deep understanding of the importance of these words: Duty, Leadership, Teamwork, Esprit de Corps, Attention to Detail, Preparation, Execution, Precision, Going The Extra Mile.

To be sure, there are some veterans that represent the fringe of a frayed cloth - but you will find that the major body of that cloth is whole and stout - and it will serve you well, as it served the country.

And, remember: Almost no veteran ever joined their service branch with the required experience to perform their specialty. They had to learn - and learn quickly. Uncle Sam made a bet in investing in training them. So should you.

2021-12-07

2021-12-07 Tuesday - 2021 Packt Christmas Sale - up to 25% Off

 

(image credit: Packt.com)

https://packt.link/4xWRG 

 The 2021 Packt Christmas Sale offers 25% off for your favorite books, on Amazon. Now through Dec 19th.

2021-12-06

2021-12-05 Sunday - Interesting Shopify Black Friday and Cyber Monday performance notes

https://www.linkedin.com/posts/vladmihalcea_shopify-uses-a-monolith-architecture-built-activity-6872785087985946624-Dh1N

Shopify uses a monolith architecture built with Ruby on Rails and MySQL.

https://twitter.com/ShopifyEng/status/1465806691543531525

  • "2021 was our biggest Black Friday Cyber Monday ever! Together with our friends at @GoogleCloud"
  •  "we achieved near-perfect uptime while averaging ~30TB/min of egress traffic across our infrastructure. That’s a massive ~43PB/day!"
  • "To keep up with the traffic over BFCM our Core MySQL fleet performed over 11 Million QPS and delivered 11 TERABYTES per second read I/O."
  • "We use @Splunk to monitor second-to-second data on how production systems are performing. Beyond engineering this is important to our support team for real-time visibility into what's happening on the platform."
  • "The storefront caching infrastructure serviced 1.8B commands. 3.18PB of data written and 15PB of data retrieved!"
  • "To keep our system responsive under heavy load this weekend we processed over 24 Billion (yes, with a B) asynchronous tasks using Resque. The ​​median queue time for those billions of jobs was 16ms."

  • "We can’t do it all alone, we have a lot of friends — over this weekend we answered 42B API calls and delivered 11.67B webhooks to support the thousands of apps in the @ShopifyDevs ecosystem."
  • "We have a strong belief in the role of flash sales in the future of commerce and our platform is built to withstand these huge floods of traffic. In one of the largest holiday shopping events, one merchant generated enough load to use over 20% of our TOTAL computing capacity."

  • "$6.3B in global sales from Shopify merchants."
  • "$3.1M/minute at peak on Friday."
       

Also see the related Google Cloud team's blog post:
 

Shopify engineers deliver on peak performance during Black Friday Cyber Monday 2021
https://cloud.google.com/blog/topics/retail/shopify-and-google-cloud-team-up-for-an-epic-bfcm-weekend


2021-12-04

2021-12-04 Saturday - Preparing my rebuttal to Joe Peppard's WSJ article

Joe Peppard, PhD (Principal Research Scientist, MIT Sloan School of Management) recently published an article in the Wall Street Journal ("It’s Time to Get Rid of the IT Department", Nov 27, 2021).

My ideas for a response have been percolating over the last week. Today, I am just getting started working on the __outline__ for my thoughtful rebuttal - which will certainly grow well beyond my current 25 58 pages.

I look forward to publishing my response - in late January.

 

My 2021-12-04 LinkedIn post mentioning this effort.

2021-11-18

2021-11-19 Friday - Book Review: Salesforce B2C Solution Architect's Handbook

 

(image source: Amazon.com)

Salesforce B2C Solution Architect's Handbook: Design scalable and cohesive business-to-consumer experiences with Salesforce Customer 360

https://www.amazon.com/Salesforce-Solution-Architects-business-consumer/dp/1801817030/

(Link to my Amazon review

Published: 2021-11-19

Pages: 458

by Mike King, Director, Global B2C Commerce at Slalom

Mike King has worked on the most complex B2C Commerce customer implementations, including multiple brands and geographies worldwide. Mike is also a certified Salesforce instructor, teaching the B2C Technical Architect certification preparation course. In January 2019, Mike participated in the inaugural Salesforce cross-cloud academy. He has since worked with Salesforce on the B2C Solution Architect exam development team and in real-world B2C solution architecture implementations. Mike has also presented numerous times with Salesforce on the topic of B2C solution architecture, including at TrailheaDX and Dreamforce.

Thanks to Deepak Kumar (Marketing Coordinator at Packt) - his unexpected invitation to review this book - arrived just when I urgently needed to read a book just like this, the most. I am most grateful for his gracious, and timely, invitation.

 (My LinkedIn post mentioning this review)

Short Summary:

HIGHLY RECOMMENDED. An excellent book for anyone interested in becoming proficient as a Solution Architect in Salesforce B2C.

As the Preface mentions: “This book is primarily aimed at Salesforce technical audiences familiar with one or more of the products in the Customer 360 suite (especially B2C Commerce, Marketing Cloud, and Service Cloud).”

What I particularly liked:

The concise and crisp writing style.

The copious number of links to supplemental information and documentation.

The logical progression of the material, the sequencing of the chapters, and the organization of the material within the chapters.

The inclusion of the Further Reading section at the end of several chapters.

The use of a common thread to help tie things together in the mind of the reader  (page-4, “Throughout this journey, we'll be following along with Packt Gear, a fictional company that manufactures, markets, and sells outdoor supplies directly to the consumer.”)

Chapter-1 is an excellent level-setting chapter.

Chapter-2’s coverage of Limits and Allocations

Chapter-3’s coverage of Order Management, Omni-Channel Inventory, Loyalty Management, and Commerce Payments.

Chapter-4 – all of it.

Chapter-5’s holistic approach – teaching how to build a complete solution – with the “Packt Gear” scenario.

Chapter-6’s coverage of architecture deliverables.

Chapter-7’s coverage of different development life cycles – and integration architecture options. The discussion on middleware – and MuleSoft.

Chapter-9’s discussion on integrating chat bots.

 

What could be improved in the next edition:

Performance is a vital consideration when designing a solution – and it would be helpful if there was a chapter that could illustrate how different design/integration/implementation choices could result in (possibly significant?) different performance profiles.  This chapter could also cover Diagnosing and Debugging Performance Problems.

 

Table of Contents:

Section 1: Customer 360 Component Products

1 - Demystifying Salesforce, Customer 360, and Digital 360

2 - Supporting Your Customers with Service Cloud

3 - Direct-to-Consumer Selling with Commerce Cloud B2C

4 - Engaging Customers with Marketing Cloud

5 - Salesforce Ecosystem – Building a Complete Solution

Section 2: Architecture of Customer 360 Solutions

6 - Role of a Solution Architect

7 - Integration Architecture Options

8 - Creating a 360° View of the Customer

9 - Supporting Key Business Scenarios

10 - Enterprise Integration Strategies

Section 3: Salesforce-Certified B2C Solution Architect

11 - Exam Preparation Tools and Techniques

12 - Prerequisite Certifications

13 - Commerce and Integration

14 - Certification Scenarios

2021-11-14

2021-11-14 Sunday - Book Review: Python for Geeks

 

(image source: Amazon.com)

Amazon: Python for Geeks: Build production-ready applications usingadvanced Python concepts and industry best practices

  • Pages: 546 
  • Published: 2021-10-20

Companion Github Repository: https://github.com/PacktPublishing/Python-for-Geeks

By: Muhammad Asif, (Automation CoC & delivery Lead (ME & Africa) | Principal Solution Architect, Nokia)

https://www.amazon.com/Muhammad-Asif/e/B097R72LW1/

"Muhammad Asif is a software engineer and principal solution architect with a wide range of multi-disciplinary experience in web development, network and cloud automation, virtualization, and machine learning. With a strong background in multiple domains, he has led many large-scale projects to successful deployment in customer production environments. Although moving to more leadership roles in recent years, Muhammad has always enjoyed solving real world problems by using appropriate technology and with skilled teams. Muhammad earned a Ph.D. degree in Computer Systems from Carleton University, Ottawa, Canada in 2012. He has worked for top companies like General Electrics, Eaton Corporation and Alcatel-Lucent. Currently, he is working for Nokia as a solution prime, building automation solutions for large scale network and cloud service providers"

 

(My review on Amazon)  

(My LinkedIn post mentioning this review)

Full Disclosure:

I was invited to review this book by Pooja Yadav (Senior Marketing Coordinator, Packt) - who graciously provided me with a free PDF copy of the book to read.

Short Summary

This book is a broad survey about getting things done with Python.

As noted in the Preface section of the book: “This book is for intermediate-level Python developers”.

While a beginning programmer will certainly get good value out of this book (and learn mature Python software development practices from the beginning) - it is likely to be of greater value to the programmer who has some prior experience with Python – and that may have some urgent need to quickly become effective getting some things done with Python.

The book is quite ambitious – and attempts to cover a significant breadth of Python programming topics – at the risk of sometimes too shallow a treatment.

I noted that the author states that the examples in the book were tested against Python 3.7 and 3.8 – and are expected to work with any future 3.x release. Note: Python 3.10 was the latest stable release at the time of my review.

 

What I particularly liked:

The companion github repository (with code examples) for the book.

The format for each chapter includes a Summary, Questions, Further reading, and Answers. 

The Further reading sections offer a multitude of good recommendations.

The length of each chapter is reasonable – and reasonably organized.

Chapter-1 does a good job of introducing some of the organizational considerations / mechanics of preparing for the coding activities that follow.

Chapter-2 is an important topic (modularization for complex projects) that establishes good practices at the beginning – as opposed to the typical introductory book that begins with simple examples – that introduce bad habits that only have to be rectified later.

Chapter-3’s coverage of testing.

Chapter-9’s coverage of Python Programming for the Cloud.

Chapter-12’s coverage of Serverless Functions

Chapter-14’s coverage of event-driven design considerations.


What could be improved in the next edition:

Overall, the book could be improved by using a consistent enterprise-class design problem as a unifying thread across the various chapters. This might also warrant considering a name change for the next edition, perhaps: Enterprise Python.

Chapter-1 does a great disservice to the reader, by not clearly, explicitly, and strongly advocating for the adoption of virtual environments (using virtualenv, or pipenv), as a standard development practice, from the beginning. Note: The book waits until page-324 to introduce them. Chapter-1 should also include a discussion of pros/cons of using the Anaconda Distribution – and conda (vs. pip, post 20.3 release). I would argue that use of virtual environments is at least of equal importance  - as guidance on documenting code.

Chapter-1’s statements about Docker containers, as a recommendation  - on page-12, should be reviewed, in light of the change to Docker’s licensing changes in 2021 (Docker ended the free Docker Desktop for enterprise users – forcing enterprise customers to sign-up for a paid plan to use its Desktop application)  – and the greater trend to adopt Kubernetes, over Docker, across the enterprise.

Chapter-1, page-22, should clarify that PEP 8 is a Style Guide.

Chapter-1’s discussion on documentation would also benefit from a mention of leveraging Pylint’s additional command (Pyreverse) to generate UML diagrams.

Chapter-3’s coverage of Advanced Object-Oriented Programming feels somewhat incomplete, or premature – before basic OOP has been covered. Or the title conveys a more ambitious teaching goal…than is actually achieved within the limited scope of the chapter’s pages.

Chapter-3 would also benefit from inclusion of a discussion of Functional Programming style of Python vs. the OOP style.  

A chapter to cover examples of some standard software design patterns – implemented in Python.

Chapter-4 should also include messaging and streaming. Suggested: Apache Kafka, or MQTT for examples. I note that Apache Kafka is touched on in Chapter-14 (Network Automation) – but believe it would be better to have Kafka included in Chapter-4.

Chapter-5 should also include a section on performance testing – and guidance (or library suggestions) for capturing, reporting, and visualizing performance benchmark results

Chapter-7 would benefit from inclusion of a discussion on different standard enterprise patterns for distributed computation.

Chapter-8 would benefit from inclusion of a performance benchmark graph – to help substantiate the understanding in the reader’s mind of the performance claims on page-277.

Chapter-8 should include a discussion of designing and deploying Python solution within Kubernetes clusters. Or this could be added to Chapter-11.

Chapter-10 should cover encrypting API traffic via TLS, as well as API Authentication and Authorization. Page-358 should explicitly call out that SSL should no longer be used – and TLS 1.2 should be minimally enforced.

Chapter-10, page-358, should include a recommendation to consider using OpenAPI Specification (OAS) 3.x for defining and documenting APIs.

Chapter-10 should also cover gRPC and GraphQL type APIs – which are more relevant today than the mention of SOAP or CORBA (see page-376) – and an overview of the relative performance trade-off considerations between REST vs. gRPC vs. GraphQL – and in particular when considering Backend-as-Frontend patterns – with mixed device type requirements (e.g., Web UI, mobile, IoT, etc.). Regrettably, gRPC is buried in Chapter-14.

Chapter-11, page-396, in the logging /monitoring - should include a mention of Prometheus.

Chapter-11 should include some basic examples to illustrate the use of Python code/libraries to perform basic API authentication (e.g., OAuth 2.0 Client Credentials Flow, OpenID Connect, etc.)

Chapter-13 – as an introduction to Machine Learning is fine, but I have a feeling that the author has two or three books, struggling to emerge in this single book. Perhaps he should consider a series of books:  Python for the Enterprise, Python for Data Science Geeks, Python for Machine Learning Geeks, etc.  I would be inclined to remove Chapter-13 in a future edition – as it is impossible to do the topic justice in the less than 25 pages allocated.

I noted an absence of any mention of some of the many excellent Github “awesome” type lists – which are great resources for finding useful libraries to solve myriad problems. In many of the “Further reading” sections, at the end of chapters – it would be great to see some of these github repositories cited as well.


Table of Contents:

Section 1: Python, beyond the Basics

1 – Optimal Python Development Lifecycle

2 - Using Modularization to Handle Complex Projects

3 - Advanced Object-Oriented Python Programming

 

Section 2: Advanced Programming Concepts

4 - Python Libraries for Advanced Programming

5 - Testing and Automation with Python

6 - Advanced Tips and Tricks in Python



Section 3: Scaling beyond a Single Thread

7 - Multiprocessing, Multithreading, and AsynchronousProgramming

8 - Scaling out Python using Clusters

9 - Python Programming for the Cloud

 

Section 4: Using Python for Web, Cloud, and Network Use Cases

10 - Using Python for Web Development and REST API

11 - Using Python for Microservices Development

12 - Building Serverless Functions using Python

13 - Python and Machine Learning

14 - Using Python for Network Automation

 

My additional notes

Chapter-14 references certain Nokia developer resources. These are my research notes…

 

Additional suggestions for other Python books to read:

 

 

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.