× Home MicroServices WYSI!WYG Zen IDE AppServer JSP JDBC Pool EJB About Services
Backbutton Frameworks ©

Zen and the Art of Motorcyle design


Dynamic Web Applications & Distributed computing


Machine Learning & Parallelism

HTML5 Markup

CSS Styling

Java Script

System Planning & Design

The system I call the Zen is the first system I designed and it uses distributed technology. Distributed technology was new to me too. Designing a system was also a first. Naturally I wasn't sure of myself. So I decided to go to a community mailing list where I would find system architects.

On this community mailing list I asked one question. I am expecting heavy user actvity, what are my considerations ?

I was working for a software house at the time and dynamic web application was new technology. On the company website there were two commercial frameworks. Both in my view were flawed so I didn't want to train on them, under the circumstances I wanted a response from a system architect who knew both frameworks had design flaws.

The response was, you have to consider connection pooling , load balancing and your database design has to be Perfect.

Perfect database Design has nothing with heavy user activity so why was this included in the response ?

This confirms my observation that the starting point of any e-commerce system planning is the database design. This makes sense because at one software house I worked at, a single product company. This software house developed a customer care and billing system for the telecom industry. The head of the Technical Department was a database expert. I heard office talk he was one of the top ten/five database expert in the world. It was also rumoured the database had 500 tables, on one occasion I was doing OLAP Cubes, I found there were 250 tables. Still alot !

Since then I have no doubt as to the correct approach to System planning & Design. I have seen many who do not know the correct starting place, they all have one thing in common.

At the same I introduced two market leading professional Tools (IBM's Websphere & BAE's Weblogic) for dynamic web application development to the current company working for at the time. The company I was working at the time was a software, however developing applications from specifications wasn't their core business, but their placement meant they came across specifications.

One flawed system was a database centric framework for thin client application development. It was database centric because it belong to a database company, naturally their priority was to promote their primary product, their database.

The other application development was flawed because it was using only servlets for dynamic web development when JSPs were under development at break neck speed because JSP for application development is nice and simple, this Tool did not have a professional IDE either because developing an IDE is also a costly endeavour. This vendor was marketing the application development Tool for dynamic web applications without having made the necessary financial investments. I bought a book following the training course to get some more practice doing servlets. The book recommended JSPs instead because they are simple and easy along with a free tool to build the application and a few other pleasant surprises. This book and the free tool turned out multiple times better than the commercial tool and the expensive training. I feared application developers will have to work for free because freeware and a cheap book can better equip application developers to do their job. If not work for free certainly below minimum wage. :) Companies tend to use commercial products however this makes no difference to the learning curve becuase the commercial products are based on same specification , same application programming code.

Warning, O'reilly books state : This book is here to help you to get your job done. In general, if for example code is offered with this book, you may use it in your programs and documentation. You do not need to contact us for permission unless you're reproducing a significant portion of the code. Wrox Press on the other hand have a disclaimer the authors and publishers have made every effort in the presentation of this book to ensure accuracy of the information. However, the information contained in this book is sold without warranty, either expressed or implied. The benefit of code is, if you Prototype then you can teased out the errors.

Flattening The Curve

Human resources Manager arranged a career development between three the company developers and project Manager. He said the technology's learning curve will flatten, you will remain as junior if you become comfortable remaining at the plateau. He went to say you should focus on other stages also like data analysis leading up to project management. One of the other developers objected to the term juniors when an application is fluent with a framework.

I began my career as a Junior Software starting at testing, maintenance , coding going up the software development life cycle so I had no issue with his advice.

I found the project manager's view quite refreshing especially his view on the framework technology not being an endless learning curve.

The first learning curve I flattened was Programming using C at College. The next milestone was to flatten the architectural learning which I have by finding flaws in two commercial frameworks, then devising a Solution just to see if I can do it.

Software Crisis Averted

Source Grady Booch: The United States Department of defence (DOD) is perhaps the largest user of computers in the world. By the mid-1970s, software development for its systems had reached crisis proportions: projects were often late, over budget and they often failed to meet their stated requirements. It was evident that the problems would only worsen as software development costs continued to rise exponentially. To help resolve these problems which were further compounded by the proliferation of hundereds of different languages.The DOD sponsored the development of a single, common high order programming language. The winning design was originally called the Green Language (so called because of its team colour code during the competition), later renamed Ada.

Poor quality software cost an estimated $2.84 trillion in the US alone in 2018 Source CISQ: [Consortium for IT Software Quality ].
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf

The problem of failing to meet the stated requirements will not get solved by having a common high order language. However if the starting position is by identify entities and their attributes, tables and columns,through ideation. Then let the developers develop the screens around the data, lastly beautify the front end. Tests devised independently of the development team from customer requirements to see if the application met the stated requirements.

Using this workflow any software crisis can be averted if not avoided altogether. This simple and easy technique is agnostic therefore can be applied to both (fat client) two tier or (thin client) three tier applications, can save $2.84 trillion in the US alone.

Distributed Computing

Java RMI Remote Method Invocation was my first interaction with distributed programming, I have been fascinated with distributed or network programming ever since. From that moment I knew the type of programming I want to specialise.

Security

Nothing is really secure yet you have to have ports open to the world wide web to be less secure, BUT it doesn't mean you shouldn't try. The more you try the more secure the system will be. The question one should be asking frequently is

What else can I do to secure my system ?

Recently (16-October-2020) British Airways have been fined £20 million ($25.85 million) for letting people steal the data by having a shitty website for failing to ask the question often enough.

If you don't love it or at the very least fascinated by it you are not going to be good at it.

What is Zen and the art of motorcyle design ?

Framework Developments are complex and costly endeavours. They are developed with a collaboration of ideas. They may have to go through iterative development. You may even get forking of a framework where a group or an individual come to a disagreement on the subject of future direction.

Comparatively Application development is following not ideas but a user specifications and the fixed set of requirements contained within that specification. Skilling up in using a framework is neither a time consuming nor a costly endeavour. If it was then there is not point in developing frameworks.

mod_jk is from Apache.org while Java bean and JSP from the J2EE/JEE specification.

mod_jk/mod_proxy is not compatible with JEE compliant Application servers like glassfish, Weblogic, IBM Websphere so will not work with them. These two diverging approaches for distributed dynamic web application are an example of forking

Rapid Application Development requires a Framework

Connection Pooling, Load Balancing, Perfect Database Design. These are some of the agnostic considerations which should aid in identifying the Framework(s) equipped for commercial use in the Dynamic Web Applications paradigm. Knowledge of these should give the programmer looking to become an application developer confidence they need to know that their investment is fruitful.

There examples of Java Based Dynamic Web application Framework contenders are Spring, Apache Struts and Java EE8.

Some examples of Machine Learning frameworks on the current market are scikit-learn,keras,TensorFlow, Apache Spark, Apache Flink and Ray

I will be detailing the frameworks I believe will prove to be fruitful for my time investment.

In view of forking Frameworks the last step to commitment to any one framework is to Prototype ! Protoytype ! Prototype !

What is KISSSS © ?

KISSSS © stands for Keep it Simple Software Solution Strategy.

The most important word is Strategy meaning method. It is a Method applied to a complex problem so as to make it simple for every one.

KISSSS © doesn't mean to apply a simple solution to a complex problem. That is simply a stupid interpretation of KISSSS ©. It is a KISS interpretation of KISSSS ©. KISS is an unrelated methodology which means Keep it simple stupid.

Connection Pooling

Container Managed Concurrency

Load Balancing

Webserver acts as soft configurable router

Perfect Database Design

ANSI java.sql.ResultSet
Container Managed Concurrency

KISSSS © in Action

The motivation for developing the JSP is to make it simpler to programme a servlet.

A bean's purpose in life is to make a named logical encapsulation of code using OOM ( encapsulation name,properties & methods). An EJB's purpose in life is also the same. The recommended approach for EJB development was to use three developers. A consultant for Business Logic, A developer for making calls to the remote Interface methods and an administrator for bean deployments. I have been on projects with successful approaches in software development, upon reflection this three of a kind methodology seems like KISS interpretation of KISSSS ©, developed by those who have not seen successful application development.

Lines of code for Business Logic is separated from servlets and JSPs using components like Beans and EJB because it is Simpler to read and maintain code. Both Beans and EJBs are based on OOM because OOM makes it Simpler.

OOM makes possible to group lines of code in a logically named encapsulation, <[scope]> class < classname > { }. The lines of code in a class do not get executed same as procedural languages where you must declare the variables at the top or before executing any action on them. Hence C++ is known as C with classes. ODBC, JDBC is name given to the client API to connect to database server for looking up data. There is no confusion there !, makes sense. What is Bean, lookup() name as the client API or javafx.Application.application meant to imply ?

For example Assembly Language doesn't support OOM to separate the lines of code. On the other extreme is having three roles to develop an EJB. The focus leans more on technology to provide the answer and less on the domain design.

Maven Framework-archetype which can generates the template application for you is a consideration to make application development simpler. Maven Archetype is a component of KISSSS ©

I found a multi national company called loadbalancer.org who specialises in one of the aformentioned considerations, load balancing for distributed computing. This service can be offered by a third party because load balancer is an administrative tuning task similar to database tuning.

There are many more considerations to make Software Development Simpler.

key terms to remember Business Logic , OOM , Distributed Computing, Encapsulation, Interface