From Project to Product Teams: Implementing the Inverse Conway Move for better Software

Modern software engineering techniques within organisations deliver “distributed features” using agile techniques. These features are distributed across different systems and integrated to provide an end-to-end experience. Traditional project delivery brings in  members from different system oriented teams to deliver these features in a loose and ad-hoc fashion and dis-bands the team after a project is…More

Domains and Bounded Contexts: Examples from the industry

The Domain Driven Design (DDD) book and community use the language of Domains and Bounded Contexts. Often there is confusion around what is a Domain, Sub-Domain, Bounded Context and how do we tell the difference between one or other when we are in the trenches. This confusion can lead to poor design where our domain…More

A Pandemic, Open APIs and Citizen Science: Its 2020 baby!

Human societies have been hit by pandemics through the ages and relied on the central governing authorities to manage the crisis and disseminate information. I believe this time around with COVID-19, our societies have access to more information from our governments because we have the internet If this pandemic is an evolutionary challenge, then our…More

History of web services: Monolith to Microservices

If you have struggled with decisions when designing APIs or Microservices – it is best to take a step back and look at how we got here. It helps not only renew our appreciation for the rapid changes we have seen over the past 10-20 years but also puts into perspective why we do what…More

De-mystifying the Enterprise Application Integration (EAI) landscape: Actors, terminology, cadence and protocols

Any form of Enterprise Application Integration (EAI) [1] work for data synchronization,  digital transformation or customer self-service web implementation involves communication between the service providers and service consumers. A web of connections grows over time between systems, facilitated by tools specialising in “system-integration”; this article covers how the clients, services and integration tools communicate and…More

Tackling complexity: Using Process maps to improve visibility of integrated system features

“Entropy always increases “– second law of thermodynamics Enterprise systems are similar to isolated physical systems, where the entropy or hidden-information always increases. As the business grows, our technology footprint grows as new systems are implemented, new products and cross-functional features are imagined and an amazing network of integrations emerge Knowing how information flows and…More

Raspberry Pi Setup – Part II: IoT API Platform

Intro This is the second part in a series of posts on setting up a Raspberry Pi to fully utilize the Software & Hardware functionality of this platform to build interesting internet of things (IOT) applications. Part-I is here https://techiecook.wordpress.com/2016/10/10/raspberry-pi-ssh-headless-access-from-mac-and-installing-node-processing/ … this covered the following: Enable SSH service on the Pi Connect to Pi without a display or router –…More

Raspberry Pi Setup – Part I : Boot, SSH and Headless access

Intro Part I : Documenting the workflow/steps to setup my Raspberry Pi (2 B) – from Installing Raspbian to installing Node, Processing etc Goals: Enable SSH service on the Pi Connect to Pi without a display or router – headless access via Mac Steps Install Raspbian Boot your Pi Setup SSH Connect to Mac Troubleshoot Connection to Mac…More

Complex Form Evaluation with Drools

Introduction Complex business rules are best implemented using a ‘Rules Engine’. Drools is an open source Business Rules Management Product. See here   In this blog we will cover a few basics of using the Drools rule engine, specifically using a Domain Specific Language (DSL) which is a language that is more user focused. The…More

API Contract: Generated vs Designed

Service specifications are key to a well designed and well architected domain or technical service. These contracts contain details about have operations you can do, the information exchange structure and other details surrounding the request Two key aspects of contract design have nothing to do with whats in them, rather around when and how contracts…More

System Integration Engineer’s Observation from the trenches

A general transition has been happening with the nature of work that I do in the integration space … we have been doing less of SOAP/XML/RPC webservices and more RESTful APIs for “digital enablement” of enterprise services .  This brought a paradigm shift and valuable lessons were learnt (rightly or wrongly) … and of course the process of…More

Camunda BPM – Manual Retry

The Camunda BPM is a lightweight, opensource BPM platform (See here: https://camunda.com/bpm/features). The “Cockpit” application within Camunda is the admin dashboard where deployed processes can viewed at a glance and details of running processes are displayed by the process instance ids. Clicking on a process instance id reveals runtime details while the process is running – process variables,…More

Microservices with Docker and Spring Boot

This guide is for someone interesting in quickly building a micro-service using the Spring Boot framework. Works great if you have prior JAX-RS / Jersey experience Step-by-step guide Add the steps involved: Create a Maven Project Final Structure Pom ( Attached here ) Include Spring Boot Dependencies in your pom Parent Project <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>…More

Java Application Memory Usage and Analysis

The Java Virtual Machine (JVM) runs standalone applications and many key enterprise applications like monolithic application servers, API Gateways and microservices. Understanding an tuning an application begins with understanding the technology running it. Here is a quick overview of the JVM Memory management JVM Memory: Stack and Heap form the memory used by a Java Application The…More

Dockerized Java Application Performance Analysis

Using JMX to analyse a Java Virtual Machine (JVM) within a local or remote docker image. The example below explores how to analyse a Tomcat Server (version 7) running in a docker instance using Oracle JRockit Mission Control (JMC) Your JRockit Mission Control is here OSX : “/Library/Java/JavaVirtualMachines/{JDK}/Contents/Home/bin/” Windows: “JDK_HOME/bin/”   Step-by-step guide Add the…More