Protected: The Anatomy of a Solution Architecture Document

This content is password protected. To view it please enter your password below:


Design Thinking – Formalizing Innovation

Innovation has never been as important as it is now, with a market full of asymmetrical competitors and disrupters none innovative enterprises face extinction. innovation has become too important to be considered an organization pastime that employees do in their free time and after they are done with their daily tasks and so many attempts have been made to structure and formalize the innovation process, turning it from a serendipitous hit or miss act to a more structured reliable repeatable business process. Design Thinking has been around since the 60s yet it has been gaining prominence lately with the formalization of innovation trends, organizations such as Procter & Gamble and Pepsi have adopted this methodology and used it to drive innovation internally.

Design Thinking methodology has a broad implementation spectrum, with its design subject ranging from packaging and merchandise to much less tangible such as user experience and business processes.

In enterprises innovation is usually conducted through experimentation, controlled divergent or convergent experiments based on the limitations of the organization with carefully assessed predefined metrics, this analytical sterile nature of experimentation allows for slow progressive improvement of the products but breakthroughs nature do not fit this approach. Design thinking on the other hand is a bridge between intuitive thinking and analytical thinking, it relies on emotions as much as it relies on numbers and completely overlooks the inherited limitations of the current capabilities, what really sets Design Thinking apart though is how it is human centric starting with empathy and including rapid prototyping and experimentation to validate innovative ideas.

For every 1 percent of sales invested in design, profit rose 3 to 4 percent for five years. [1]

One of the ways to implement design thinking is through the 5 Stage-Process proposed by Stanford’s d.School, the process is iterative and includes the following stages: Empathise, Define, Ideate, Prototype and Test. These steps are non-linear and can be iterated over and over again until a refined acceptable product is produced, For instance you can jump back from the Test Phase to the Define phase to understand why the produced prototype was the correct solution for the problem, alternatively you can jump forward from the Empathise phase to the Prototype phase directly skipping both the define and ideate steps.



Design Thinking is a human centric methodology and hence it starts with empathy, this allows the designer to get a deeper more personal insight of the problem at hand, this phase include coming up with the personas and understanding their experience and their world view.


In this phase the problem gets defined as a problem statement in a human-centric manner, this requires some discipline and builds on the first stage for instance rather than defining a design problem as : “reducing water wastage in residential accounts” it should be defined as “Residential water consumers should be equipped with the tools and information to reduce their water consumption”. This phase results in phase 3 Ideate.


In this phase a potential solution is proposed, there are several techniques to achieve that such as Brainwrite, brainstorm and worst possible idea. The main idea here is not to be limited by the organizations limitations and capabilities.


A cheap easy to build prototype is produced in this phase, this prototype should include the essence of the idea and be possible to reproduce at scale. This phase also provides a reality check to the process as limitations and capabilities are explored in this stage.


Once the prototype is produced produced it should be tested by a sample representing the target user. The prototype can be refined and retested until satisfying results are reached.

This 5 stages approach is flexible and can be tailored to fit the problem at hand, the approach can vary based on the setting and the organization as well given how some organizations are more forgiving and failure tolerant than others.


[1] Howkins, John (2003). The Creative Economy: How People Make Money from Ideas. The Penguin Press. pp. 121–122.


[3] Herbert Simon, Sciences of the Artificial (3rd Edition), 1996:

Best Practices Development

In some psychological experiment the test subjects were placed in a room with a light bulb and a console full of keys, buttons and levers. The test subjects were told that the light bulb would blink when a very specific set of actions are done on that console and promised to be rewarded for the number of times they got it to glow. The test subjects would then try several approaches and combinations of buttons and levers until they got it to blink and repeated that pattern until at some point reached the conviction that the pattern was discovered. Almost all of the test subjects left the room believing they had cracked the pattern and knew exactly how to get that light bulb to blink.

The light bulb was actually set up to randomly blink with no relation what so ever to the console in front of the test subjects.

This research was part of a study on Operant Conditioning and its impact on superstition and how the human brain creates associations with potentially unrelated things based on the available inputs even when not nearly enough inputs are available to form a valid association the human brain finds a way and associations are created. Examples range from how red cars are perceived to be faster than black ones to how secure certain passwords are.

In my opinion – and this is an opinion peace – Operant Conditioning is how enterprise best practices are formed, over the years certain practices result in success for reasons that might or might not be related to the practices being the reason behind said results or not, and gradually the enterprise gets conditioned to believe that these practices are guaranteed to generate positive results which explains how some of the best practices I’ve encountered in my career make little or no sense at all, after all best practices can be alternatives defined as superstitions.

MicroCule, A Love Story

Often I find myself in a situation that requires a quick and dirty custom micro-service to support one Proof-Of-Concept or another, with a wide array of NPM available module I usually resort to nodejs and in few minutes I’d have a nodejs script that does exactly what I wanted until just few weeks ago the only option I had for hosting that service would have been, a free micro-services hosting service that provides decent yet none stellar performance QoS such as with any cloud based free service often things didn’t work at the required performance level and sometimes the nodejs module I wanted wasn’t available on the server, however other than starting my own app engine and installing all the containers and all the associated hassle I had to make do with whatever was generously offered by

In comes Micro-Cule,  Micro-cule is a Software Development Kit and Command Line Interface for spawning streaming stateless HTTP microservices for any programming language or arbitrary binary.

Installed on my amazon micro instance it doesn’t take more than one, yes ONE command to spawn a fully qualified micro-service to do my bidding, and here is the fun part it supports 20 different languages, so basically its like self hosting a very lean easy to manage middleware that can turn any of your hacked scripts into webservices. Micro-Cule is part of project but it offers the core service without the whole array of bells and whistles which I think is a very smart move from people, given that most of the potential users would just want to run their own webservices rather than offer a webservices hosting service.

I’m in love with microcule given how it has liberated me from heroku, google apps, amazon lambda and the even more cumbersome self hosted solutions and For all means and purposes i think microcule is the perfect webservices hosting solution for prototyping, testing and development, perhaps even production with some careful configuration.

node js script to send email over SMTP

I’ve had this challenge for which the only solution was building an nodejs webhook adapter for my smtp server. Using webhooks and the following script I was able to enable API access for my email server (which it lacked).



const SMTPConnection = require(‘smtp-connection’);
var options = {
host: ‘’,

port: 465,
secure: true,
// requireTLS: true,
ignoreTLS: true,
debug: true
var envelope = {
from: ‘<user>’,
to: ‘’,


var auth = {
user: ‘<user>’,
pass: ‘<pass>’,

var message=”hello world”

let connection = new SMTPConnection(options);
connection.connect(function(err, connect){
console.log(“error connecting”);
console.log(“attempting to login”);

connection.login(auth, function(err, connect){
console.log(“error logging in”);
console.log(“logged in”);
connection.send(envelope, message, function(err, result){
console.log(“email sent”);



Toxic Technology Behavior

Over my career I observed this behavior in more than one company; the only difference between one company to another is how prevalent this behavior is. Its a cancer that slowly spreads in the company kicking out all the none toxic behavior until the entire organization seizes and productivity drops to zero.


  1. Always create a dependency on someone else.
  2. Always leave an open action item pending on someone else.
  3. Make sure to include as many people into the project as possible. i.e. Generally speaking if a project includes more than 10 people it comes to a stand still.
  4. Raise open ended questions to external parties with little or no background on the project on hand. ex: looping in security team/compliance.
  5. Make sure that the last email in the chain is not addressed to you.

The main directive here is to make sure that the project is always late, because of other people of course, and is not delivered. The product of an undelivered project can not be assessed and the more critical it becomes with delay the importance of the people handling it increases.

The worst thing about this toxic behavior is how the number of people practicing it seems to increase exponentially, with the good employees either turning or simply leaving the organization.

Digital Telecoms Explained

Digital is the new frontier in the telecom industry with digital transformation projects becoming a commonality among telcos, but what exactly is a digital telecom ?

A good starting would be defining what is NOT a digital telecom, A telecom that requires direct interaction between customers and its employees can not be classified as a digital telecom.

A telecom that requires direct interaction between the user and its employees can not be classified as a digital telecom.

A digital telco is a telco that allows customers to enjoy the service without having to think or deal with the telco itself. In the digital world a service provider biggest differentiator is being invisible. Digital telcos don’t try to improve the quality of their call centers they eliminate them all together.

Call centers have no place in the digital services era. The services offered to the customer should be built from the ground up to cater for self-service, customers shouldn’t need anybody to help them complete certain tasks, CallCenters were created in a time when the technology fell short from achieving true customer autonomy certain tasks were simply too hard to automate and thus required that human touch.


Too hard to automate? have someone do it

Technology has gone a long way since these days and digital experiences are now possible and accessible. A good example of a digital experience is gmail, it requires little effort from the user with minimal friction with the service provider, gmail users rarely if ever require any support from Google, there is little a user can’t do online using few clicks.

Digital telcos are typically cheaper to run and operate as most of the operational expenses are minimized or even eliminated, this allows for cheaper rates and affording a higher customer acquisition cost (as in pampering potential customers). Digitizing the user end experience can be conducted by focusing on the following fronts:

  1. Online :
    • No interaction with employees should be required, Everything should be available online.
    • The sale process should be offered online with most of the sales happening through the online channel.
  2. Mobile :
    • Customers should be able to fulfill all of their needs using their devices, no task should be too hard or too complicated to be conducted using the customer’s mobile device. This requires building everything from the ground up with that in mind, customer’s should be able to see his account information, buy services, even terminate his line using his device.
    • The entire experience should be contained within a single application, even when the customer transitions to a web-shop this should be done transparently and offering a consistent look and feel.
  3. Digital Store :
    • Since most of the sales is targeted to be conducted online the digital store should be in the center of the customer experience.
    • Drawing from the accumulated knowledge by eCommerce sites such as amazon and ebay to offer the customer a truly tailed experience based on his usage history and segmentation.
  4. Social:
    • Social networks can be seen as a platform rather than websites, value can be derived by building on top of them.
    • Social promos can be created (such as Member Get Member promos) to motivate users to organically share their experience with the product.

A good example of a digital telco is the company I’m currently engaged with, feel free to check out the experience we are offering