Featured

So, what now?

I am 40 years old and have been made redundant from my job at a GOOD COMPANY where I have worked in IT for 18 years since joining as a graduate. I have a Wife, 3 children, 3 dogs, 2 cats and a gerbil.

Being made redundant wasn’t a massive surprise but I was pretty much married to my wife and my job so I have zero plans of what to do next. It was, however, a pretty positive experience. The sun was shining and I immediately felt flush with the excitement of what possibilities lay ahead.

The purpose of this blog is to help maintain that sense of optimism and keep that healthy ratio of 80% excitement and 20% fear. There’s no point pretending this isn’t a significant life event for me. It is. I thought it would be interesting to chart what happens next. Part blog, part to-do list, part record.

House rules: Positive blogs only.

That includes challenging and tearing down negativity. Some virtual cognitive behavioural therapy if you will.

 

Microservices

Microservices

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.

microservices

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
are:
– 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
engine.
– 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.

References:

 

Programming Languages

Programming Languages

 

TIOBE Index

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
3 PHP
4 Python
5 C#
5 C++
5 Ruby
8 CSS
9 C
10 Objective-C

lang.rank_.Q316.plot-WM

 

StackOverflow Most Popular Technologies

languages

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

IDEs

  • 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/

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.

lamp

Problems:

  • 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.

lampproblems

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

nomeanproblems

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

mongodb

  • 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

Two_Way_Data_Binding

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

meanjs-1024x492

Front-end framework alternatives to Angular:

References:

Platform as a Service (PaaS) Providers

Platform as a Service (PaaS) Providers

Heroku

  • 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.

Cloud_computing_layers

References:

  • 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).

Mission Statement

Mission Statement

I drafted this post quite a while ago. I’ve decided to post it as I’ve been ‘wobbling’ over the last few days. For anyone who might be wondering ‘wobbling’ means feeling on the verge of being overwhelmed by anxiety and negative thoughts. It means fighting a sense of loss of self, and complete uncertainty about what I am and where I am going. A mental smothering crisis in confidence. It means fighting an exhausting and paralysing battle against a surge of negative thoughts, some of which are successfully combated with an opposing CBT statement, some of which slip through to take a nick out of your soul.

It’s useful to have a statement of what I am and what I want to be. Something in black and white that was updated in a calmer time and can help the brain focus at a time when it is struggling to tune in on the right channel.

I’m reminded of movie quotes. I’m struggling to shake off feeling like Galadriel,

‘I will diminish, and go into the West’

and instead feel more President Whitmore,

‘We will not go quietly into the night! We will not vanish without a fight!  We’re going to live on! We’re going to survive’

 

Preamble aside, my mission statement is a collection of statements that has grown over the last few months:

mission

  • Be A Good Husband And Father
  • Follow Through On The Premium Indulgence Ltd Business Plan
    • Gain Business Skills by Doing a Hands On ‘MBA’
    • Help Louise Have The Most Successful Business Possible
    • Establish a Company that We Can Work On Part Time / Hand Over As This Would Be The True Test Of A Well Run Company
  • Continue To Look For IT Related Work and Study Computer Science
    • IT Business Analyst
    • Analyst Developer
    • IT Tester / QA role
    • Valuation Control/Risk, Mark Review
    • Technical Data Analyst
    • Application Support Analyst
  • Study Something Every Day
    • This was Coding. Right Now It’s Business Planning but I’ve not been doing this Every Day. I Will Fix This.
  • Make Contact With More People, i.e. Expand My Network
    • Make Contact With At Least 1 Person Every Day
  • Practice mindfulness –  focusing one’s awareness on the present moment, while calmly acknowledging and accepting one’s feelings, thoughts, and bodily sensations
    • Notice the everyday
    • Keep it regular
    • Try something new
    • Watch your thoughts
    • Name thoughts and feelings
    • Free yourself from the past and future
  • Be Assertive: Sincere and Direct
  • Show Empathy And Listen to Everybody
  • Give Ongoing Positive Feedback to Everybody
  • Have A Journey Mindset
    • This Means That Personal Development Must Be Continuous
  • Have A You and Me Mindset
    • This Means Putting Other People’s Needs and Wants On An Equal Level As Your Own
  • Acknowledge And Embrace the Temporalness Of Life and Work
    • It’s Fine To Try And Then Quit
  • Fail Fast
  • Do Your Best At Whatever You Do