× 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

Zen and the art of motorcyle design

Framework Developments are complex and costly endeavours and hardly ever successful. 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 distinctly different, following not ideas but a user specification 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. Using a framework to develop an application is known as Rapid Application Development

The Curve will Flatten

At one of the places I worked at, Human resources Manager arranged a career development between three the company developers who were not senior application developers and the project Manager. He said the technology's learning curve flattens out, you will remain as junior if you become comfortable remaining at that plateau. This was a refreshing point of view. He went on 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 junior to describe an application developer fluent in an application development 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 refreshing because he focused on the plateau rather than the learning curve. I could relate to this idea of reaching a plateau all the way back to College. It happened to me with Programming using C at College when I concluded that I have learned all there is to learn about programming, let's go find a job and see how they do it in the commercial world. Mind you C was my third programming language not counting SQL which is a RDBMS framework programming language.

Industrial Strength System Planning & Design

Building an application is a fairly simple exercise which you one can learn from following any book, tutorial or udemy course but building an Industrial Strength is an entirely different story, there are umteen considerations and it is not just the technology. The more considerations you know the more complex it becomes, yet all the time you are looking for simplicity. The system I call the Zen is the first system I designed and it uses distributed technology for dynamic web applications. The problem it is trying to solve is the system performance to remain unaffected no matter the number of concurrent end users. Distributed technology was new to me too. Designing a system was also a first. Naturally I wasn't sure of myself.

While I was looking around to decide which framework I should specialise to train on I found two technologies which pretty much did the same thing,which is load balancing, Java Remote Method Invocation API framework and a dll module called mod_jk. Then I came across a third technology which I had not yet protoyped called Enterpise Java Beans, on face of it, it appeared mod_jk required alot less work so it appeared an easier way to do Load Balancing. My priority was to select a good framework I can specialise in, not go around trying out technologies just to find out they are trying to address the same problem. I began to wonder am I misunderstanding these technologies from my protoyping or are these technologies actually designed to do the same thing. I think I fell into the forking frameworks trap. To do a sanity check I decided to subscribe to the EJB community mailing list where I felt I would find system architects who can clarify this confusion, whether EJB did the same thing as the other technologies I found. My question was I am expecting heavy user actvity, what are my considerations ?

The response was, you have to consider connection pooling, load balancing and a perfect database design. It appeared my intuition was correct, these techologies do do the same thing.

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,the software house developed a customer care and billing system for the telecom industry. At the top of the technical heirachy 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 !

Developing an application may earn you a graduation degree , but developing an application where the response time remains unaffected under heay user actvity for example for e-commerce applications (Industrial Strength software) is the one someone will pay for if they know about this.

My search for looking around for a framework I can specialise in was motivated by two flawed commercial application development tools I came across and I wanted to specialise in application development tools I can believe in and had every thing I believe should have.

One of the flawed framework 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. It lacked the cohesive abilities between services.

The other commercial application development framework was flawed because it was using only servlets for dynamic web development when JSPs were under development at break neck speed because JSP for dynamic web application development. The motivation for JSP development was because using JSPs was considered nice and simple way to program servlets. This servlet engine Tool did not have a professional IDE either.

The next Technology I investigated after EJBs was Java-Jini. I Logged on the Jini mailing list because I wanted to get accurate Top Level Framework Information, rather than second hand and most likely inaccurate information from a book. I was told immediately to go Jini-Javaspaces. This is because they identified that my objective is application development from the questions I asked previously on the EJB (RMI-EJB) mailing list. This also means that one doesn't have to know about RMIs to be able to programme distributed applications in EJBs just need to know Enterprise Java Beans which is the next step of evolution in RMIs. My first impression of EJBs was that it was competing paradigm for distributed computing with EJB design for a specific purpose while RMI for any programmer and any use he can find for it. Jini Programmers identified me as an application developer because I identified myself as one from the questions and comments I made. This targeted information saved me alot of time, which was also my objective. This is programmer to programmer advice. I have never come across a job interview where the recruiter was faintly aware of this distinction. In the absence of this knowledge their useless criteria for judgement is number of years and number of lines of code. Even the people logged on the mailing list are not aware of this distinction of technologies. In Java the plethora of technologies is especially confusing because one doesn't know which technology to focus on and which one to ignore. This is the case with many modern high level languages where frameworks are involved. Every modern high level has Frameworks. A programming language can mean different things to different people dependently on your objective.

Recruiters determination of skill is at least five years of commercial experience on a framework technology or so many thousands of lines of code. Protoyping to find a suitable framework , something I was doing doesn't qualify so then it is really fruitless exercise in the end due to indifferent commercial priorities. These recruiters' views are not shared by framework designers.

Framework Training TimeFrame

The first programming language I learned was Pascal for one term. One term lasted half academic year. Pascal is a high level language used to introduce one to programming. I didn't get, couldn't see high I would relate it to the real world.

The next language I learned I was taught was 68K Assembly language. I began to understand the programming concepts and software hardware relationship. The third language was C which was taught at the same time unix Operating System and Unix scripting language. Unix scripting is an interpretive language written in C. MS-DOS is a comparative language to unix scripting, but I realised it is a poor comparison becuse the unix scripting language is a flexible language therefore powerful langauge. Unix scripting obviousy has limitations, for example you can write a script to install and launch an application and launch it, version control it, but it wouldn't be a gui installer or a launcher, You would have to do that with C.

My first project was in C. I had a previous career in Accountancy and this HND course was a change in career because I viewed Accountancy was boring and outdated compare to computing. So I had the project specification which I understood and programming language components which I could relate to with the real world. At first I was looking up the code syntax, then later I began to use the compiler to help me with my typing and language syntax, then about two days later I was typing C code as if I was typing a letter. The last decision I had to make was when to stop and say that's enough to get an A grade. All the other students were at a disadvantage didn't get programming concepts because they didn't have other careers they could use to get comfortable with programming as I did with my past Accountancy experience. That is pretty much true of majority of programmers, all they know is Information Technology. The most important lesson I learned was always start with getting to know use case specification concepts before programming technology.

The final language I was taught in the HND Computing C++. The first thing the teacher said I have good news, no more coding. everybody but me cheered because I had mastered programming by this point and they all still suffered from CODE FEAR. I later realised he was referring to component technology in the form of inheritence, APIs, classes, Object Orientated programming using C++.

The first commercial programming language I was taught was Ada. That was a week long course. After that I was also sent on week long application generator courses namely CA Openroad and Oracle forms. These Application Generators only taught the GUI components and programming conditional expressions and constructs. So I was able to pick up Visual Basic later without training because I had gone on these application generator courses.

With my history I estimated it would take longer than a week to get to a comfort level, to a point where I could program a dynamic web application. The starting point would have to be by knowing the concepts then learn the syntax of the technologies avoiding the pitfall of competing paradigms. This is because there is plethora of technologies involved in dynamic web application, html, xhtml, javascript , flexbox, JMS , EJBs, webserver, app server, IDE to name a few. My estimate is 4-6 weeks.

If you landed on this page https://www.thethingsnetwork.org/ then it would probably take you a week or two before you start developing useful real world services. This technology is currently on the leading edge as opposed to the bleeding edge. I am currently protoyping a weather monitoring system as an Intro in to this low bandwith, low power usage technology. I can build real world applications using this technology without having to show to a recruiter five years previous commercial experience in this Technology.

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 therefore can save $2.84 trillion in the US alone.

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.

Connection Pooling

Container Managed Concurrency

Load Balancing

Webserver acts as soft configurable router

Perfect Database Design

ANSI java.sql.ResultSet
Container Managed Concurrency

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.

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