Microservices are a type of software architecture where large applications are made up of small, self-contained units working together through APIs that are not dependent on a specific language. Each service has a limited scope, concentrates on a particular task and is highly independent.


Service-oriented architecture (SOA) is a software design where components deliver services through a network protocol. SOA supports Web Services Definition Language (WSDL), which defines service end points rigidly and is strongly typed while microservices have dumb connections and smart end points. SOA is stateless; microservices are stateful and use object-oriented programming (OOP) structures that keep data and logic together.

Microservices handle HTTP request/response with APIs and messaging. They respond with JSON/XML or HTML sent to the presentation components. Microservices were seen as an easier solution than SOA, much like JSON was considered to be simpler than XML
and people viewed REST as simpler than SOAP.

Characteristics of micro services on different platforms:

  • Java

– Avoids using Web Archive or Enterprise Archive files
– Components are not auto-deployed. Instead, Docker containers or Amazon Machine
Images are auto-deployed.
– Uses fat jars that can be run as a process

  • PHP

REST-style PHP microservices have been deployed for several years now because they
– Highly scalable at enterprise level
– Easy to test rapidly

  • Python

Easy to create a Python service that acts as a front-end web service for microservices in other languages such as ASP or PHP.
Lots of good frameworks to choose from, including Flask and Django.
Important to get the API right for fast prototyping.
Can use Pypy, Cython, C++ or Golang if more speed or efficiency is required.

  • Node.js

Node.js is a natural for microservices because it was made for modern web applications.
Its benefits include:
– Takes advantage of JavaScript and Google’s high-performance, open-source V8
– Machine code is optimized dynamically during runtime.
– HTTP server processes are lightweight.
– Nonblocking, event-driven I/O.
– High-quality package management.
– Easy for developers to create packages.
– Highly scalable with asynchronous I/O end-to-end.




Programming Languages

Programming Languages



Apr 2017 Apr 2016 Change Programming Language Ratings Change
1 1   Java 15.568% -5.28%
2 2 C 6.966% -6.94%
3 3 C++ 4.554% -1.36%
4 4 C# 3.579% -0.22%
5 5   Python 3.457% +0.13%
6 6   PHP 3.376% +0.38%
7 10 change Visual Basic .NET 3.251% +0.98%
8 7 change JavaScript 2.851% +0.28%

Languages becoming more popular:

R :  open source programming language and software environment for statistical computing and graphics

Swift :  general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux. Replacing objective-C

GO:  (often referred to as golang) is a free and open source programming language created at Google. It is a compiled, statically typed language, with garbage collection, limited structural typing, memory safety features and CSP-style concurrent programming features added. Java, C++ replacement.

Hack is a programming language for the HipHop Virtual Machine (HHVM), created by Facebook as a dialect of PHP.

Functional programming: Scala, Clojure (java),

RedMonk Top Ten languages

1 JavaScript
2 Java
4 Python
5 C#
5 C++
5 Ruby
9 C
10 Objective-C



StackOverflow Most Popular Technologies


  • Javascript
  • PHP
  • Angular
  • Java
  • Node.js
  • Python
  • React
  • MongoDB
  • Cloud (AWS, GAE, Azure, etc.)


  • Notepad++
  • Sublime Text
  • Eclipse

Java vs Python

Speed :

Java wins due to JVM optimisations / JIT compilation.

Java supports concurrency. The Global Interpreter Lock (GIL) in the dominant implementation of Python, CPython, stands in the way of such scaling.

Neither suited for high performance

Agility :

Java wins with JUnit and its association with test-driven development (TDD). Its strong typing leads to more consistent refactoring support in IDEs.

Python has a more dynamic type system and has test features in its standard library.

Reference: https://www.webcodegeeks.com/python/best-way-learn-python/

Ebay Listing

Ebay Listing


  • Longer titles with more (key) words are better.
  • Don’t use acronyms.
  • Add item specifics to title.
  • Add Brand to item specifics and remove from title.
  • Use listing subtitle if price is right.
  • Don’t use NEW in title.
  • Use as many Popular and Searched for keywords as possible.
  • Check keywords with title-builder.
  • Use title-optimizer to check titles.

Reference: http://www.webretailer.com/lean-commerce/ebay-title-seo/


  • 7 day – start Sun 8pm
  • 10 day – start Thu 8pm

Reference: http://www.ebay.co.uk/gds/Timing-The-Start-of-Your-Auctions-For-Maximum-Profit-/10000000000299131/g.html


Web Stacks

Web Stacks

LAMP stack is a popular open source web platform commonly used to run dynamic web sites and servers. It includes Linux, Apache, MySQL, and PHP/Python/Perl.



  • Apache not fast.
  • Hard to write readable, reusable, fast PHP.
  • Front and back end in different languages.
  • Too many conversions.
  • No separate server-side and client-side development.


MEAN stack is a free and open-source full-stack JavaScript framework. The MEAN stack is MongoDB, Express.js, AngularJS (or Angular), and Node.js. Because all components of the MEAN stack support programs written in JavaScript, MEAN applications can be written in one language for both server-side and client-side execution environments


  • MongoDB –  NoSQL document-oriented JSON-like DB with dynamic schemas.
    • HTML5


  • ExpressJS –  web application framework for Node.js
    • Frameworks built on ExpressJS
    • NGINX – second most widely used web server. Docs
    • SASS – Sass is a scripting language that is interpreted into Cascading Style Sheets (CSS3)
  • AngularJS ( Angular2 ) – w3schools – a JavaScript MVC framework – frontend part of the MEAN stack
    • Client side MVC
    • two-way data binding
    • Very testable


  • NodeJS – a runtime environment for event-driven non-blocking IO model server-side and networking applications. Built on Chrome’s JavaScript runtime.


Front-end framework alternatives to Angular:


Platform as a Service (PaaS) Providers

Platform as a Service (PaaS) Providers


  • FREE for small apps.
  • PHP, Java, Clojure, Go, Scala, RubyOnRails, Node.js.
  • Ideal for building applications quickly. Setup is painless.
  • Heroku is easy to manage, well-known, simple to use and is great for building apps rapidly. It can get pricey, so you need to manage dynos carefully.

Google App Engine

  • Ideal for creating scalable web apps and backends for mobile apps.
  • Services, e.g. application logging, health checks and load-balancing.
  • APIs including Memcache, NoSQL data stores and user authentication.
  • Automatic scaling.
  • You do not have to worry about provisioning or maintaining servers.
  • Compatible with Git, Jenkins and Maven.
  • Although simple to use, it is not easy to customise.

Microsoft Windows Azure

  • Hybrid IaaS/PaaS personality supports both Windows and Linux users.
  • Gained market share quickly by providing lots of components and user control.
  • It supports PHP, .NET, Node.js, Ruby, Python and Java.
  • There are no upfront costs to use Windows Azure. You pay for only what you use, and there are no termination fees.

Amazon Web Services

  • A combination of IaaS and PaaS.
  • Because the AWS server is a raw OS, you can implement any language you choose.
  • Use Amazon Elastic Beanstalk for autoscaling, application health monitoring and automatic load-balancing.
  • AWS Software Development Kit for PHP library, documentation and code samples.
  • The Free Tier offers 12 months of service at no charge.
  • Feature products include Amazon EC2 compute capacity, Amazon S3 storage infrastructure, Amazon RDS relational database service, AWS IoT for connecting devices to the cloud and Amazon EC2 Container Registry used to store and retrieve Docker images.
  • One of the drawbacks of Amazon AWS is that you may need to handle more management than other PaaS providers.

Engine Yard

  • For developers who are creating Node.js, Ruby on Rails and PHP applications.
  • Want the power of the cloud without the hassle of operations management.
  • Many of the services are provided on top of Amazon AWS.
  • Manage snapshots, administer databases, manage clusters, perform backups and do load-balancing.
  • Advantages include dedicated instances, lots of control over virtual machine instances and integration with private and public Git repositories.
  • Pricing for Engine Yard is a pay-as-you-go model.



  • https://blog.appdynamics.com/engineering/battle-of-the-paas-php-apps-in-the-cloud/
  • Platform as a service (PaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app. E.g. a public cloud service from a provider, where the consumer controls software deployment with minimal configuration options, and the provider provides the networks, servers, storage, OS, ‘middleware’ (e.g. Java runtime, .NET runtime, integration, etc.), database and other services to host the consumer’s application.
  • Infrastructure as a Service (IaaS) is the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).