...

Zahid Amin

browser backbutton Founder BackButton Movement 14/11/2019 -


Mission Statement

Grady Booch: Industrial Strength Software is beyond the intellect of a developer
Industrial Strength Software is impossible without solving the BackButton.
That is to say static Html doesn't have movement; by definition it is Static.
As long as there is the Internet there will be a backbutton movement.



Software Crisis: United States Department of Defence
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), and was renamed ADA. Concurrency was excluded from the original language.

Building complex systems ....

....from scratch is a costly endeavour and one that is almost never successful. Real time bespoke hardware and bespoke software have to be built from scratch due to certain constraints. To achieve success in those environments Systems are built in a methodical administrative manner.

To achieve success in the commercial or business sector where the constraint of building from scratch doesn't apply a different approach is taken. To break down systems into smaller parts one uses technolgies such as 4GL frameworks also known as 4GL Application Generator. Booch describes 4GL application generators as tedious . It is my view The more tedious the more chance of success. Ingres Openroad, Oracle Forms , Visual Basic are examples of 4GL Application Generators. These 4GL application generators are obviously limited in the problems they can solve. These 4GL code generators are FAT client front end with Databases {RDBMS} as back end. I consider building commercial, business orientated Systems using Application Generators is following KISSSS [Keep it Simple Software Solution Strategy].

To over come Booch's challenge, which is to build Industrial Stength Software as a developer, one must start with framework technology. With Framework technology you are not building from scratch. Framework are not tested like Operating Systems by large volume of users so the quality tends to be poor. Obviously it is not practically to learn every framework until you find the one you are looking which will help you to develop applications efficiently, make you self reliant and help you to become a good programmer by giving you examples of good template code. for the self reliancy test I compare any framework against the very first commercial grade program I wrote.


Concurrency

There is a very good reason why concurrency is not permitted in safety critical systems and why large systems are "almost never successful".
It appears in this case freeware Node.js is better than commercial ware.

Value of Simple

There is a startup company in Australia called CANVA. Their ethos is to make it as simple as possible to build a website.
The company is worth 3 Billion Dollars for making the complex and delivering the simple .

LEVEL 0 : Complex Distributed Application Paradigms Made Simple

Web Server

Application Server

Competing Paradigms

nginx web server application server wrox press




LEVEL 0.1 : Zen and the Art of Motocycle Design : N-Tier Application Architectural Considerations

  • Backbutton
  • Secure by Design
  • Direct URL Access
  • Load Balancing
  • DB Connection Pooling
  • Inflexible Development Frameworks
    expect fully Normalised Perfect Database Design
  • Internationlisation
  • Push capability
  • Stable feature Rich IDE
  • Debugging
  • KISSSS & {MUM}
  • Awareness of Time & Disk Space >> Danger System Crash
  • Self Reliant Framework.
    If you did not attend Reading College of Technology and was not taught by Mr Dimitri
    Mr Dimitri gave me golden advice after I ran my first C program,
    just look at the first error message and ignore the rest.
    With this in mind I deleted the index.html in Tomcat (early version). The error should be
    index file missing instead displayed the directory structure.
    A problem and solution error messaging will negate software support.
  • A Good Framework
    will show off good programming language techniques
    thereby improving your programmig language skills. You can kill two birds with one stone
  • The last two considerations will negate the idea
    of needing years of commercial experience
  • Best of luck & Happy skilling up


Vendor Neutral Programming Languages for the N - tier.

The age of the Frameworks for OLTP

To meet all the considerations mentioned, even before the challenge of Business Knowlewdge, the easiest way
is to get know the following frameworks. Struts2, Spring BOOT, CRUD and SQL. and how to integrate them.

The age of the Frameworks for OLAP { BIG DATA }

To the challenges described above, that is even before the challenge of Business Knowlewdge, the easiest way I believe
is to Integrate the following frameworks. Apache Spark, Apache Hadoop, Apache Kafka, Apache Zepplin

An OLTP Application Protoype that is Monumental

You will find RMI helloWorld Swing Clients ONLY but you will NOT find examples of RMI demonstrating both clients. This is the only website on this planet as @ 28/01/2020
This is a more complete demonstration example of integration of tightly bound together with simplicity and Safety. This technology can be integrated with any API, Database API, Mail API or any small device. Both the Cash Register and this example work exactly the same way with grace, simplicity and integrity.

The BUG; As you san see there is a bug. There are a number of ways one can analyse the cause of the bug. I did witness one bug analysis process conducted by a phD holder. I watched him stare at the screen for what seemed the longest time. His mouth wid open, and his thick glasses getting misty. The most interesting movement was his long finger trembling over the down arrow key. I believe he was in a trance of trying to understanding the code so he could scroll down, but the barrier to the understanding was so such a steep climb that he was unable to press the down arrow key to scroll down. I think it happens to phD holders, perhaps it is doing that phD thesis which burns them out even before they start employment. Staring at the screen like that is not a recommended approach. I also saw on one occasion three Indians staring and pointing and smudging the screen. I have a number of much better approaches.

My approach to application development in this prototype is described as chasing the Dragon and if achieved is considered monumental. We can also view the prototype as demonstrating two types of login screens. I was informed that a singleton design pattern is used to create a login box and it was implied the design patterns were associated to Java when they are language independent. I have two login boxes but no singleton. In Software Engineering there are bits (ones and zeros) known as don't care bits. We can consider the design pattern the singleton in application development for a login box in the category of don't care bits. I would describe this prototype as a demonstration of a tightly coupled distributed application. To Build such a prototype with Monumental qualities without guidance requires Jazba and Junoon in the application architect.

Although the technologies I used to build my prototype are great, I am going to have to use equally great commercial ware. For that I am going to have to get certification to prove my worth. No matter how talented you are, you must go commercial ware if you want to put bread on the table, certification is mandatory.

retVal =
Struts 2 RMI

For every strength there is a weakness. Expect failure from the environment and safe guard against that failure. For every action there is an equal and opposite reaction, however for the reaction to be equal to the action the environment has to be Perfect .
What is perfect ? Any Muslim can tell you.
I did not invent the return, it was already there to be realised by those who follow the secret path to the Gold Standard. The provision of the return is also an admission by those who make the environment that they cannot gaurantee a perfect environment for the application developer so he must make use of the retVal if he wishes to develop Industrial Strength software as illustrated in my protoype application.



Programming Skills: Original Algorithm of a cash Register

The first time I attempted this program the IDE (NETBEANS) was crashing so I was without my favourite tool the Step into Step Over Debugger. I resorted to notepad. Added to that there was a BUG outside of my program either in the JVM or the kernel. I thought it was the JVM so I wasn't sure if I wanted to go forward with Java. Anyway this is what I can do with an IDE and the I can't do without tools. I didn't need to use the debugger on this program as I was able to focus on the 150 + lines of source code, so the algorithm worked flawlessly the first time :). The debugger helps you focus on each variable and its current stored value, helps you focus on control flow (route, travel), can even help you understand somebody else's code. If debugger is not available in the event using some crappy archaic tool then you can always use search and replace to follow a variables's travel. Search and replace is close to desparation but better than pointing to screen in a group or staring at a screen.
further explanation to follow on the algorithm compliments of Mr Dimitri's teachings ...
There is in this program an error of understanding it is equal yet opposite. to
Apache Spark when it treated the contents of /etc/hostname file
127.0.0.1 hostname localhost
as
127.0.0.1hostanamelocalhost
Apache Spark error message saying it couldn't find hostname.
Do keep in mind Apache Spark is a network centric ("network heavy") framework. The error in understanding is relative to main (String argv [] ) and how is argv [] created ?

No copy and paste here, you'll have to type it all in. It is the only way to learn. Actually That's a lie too. The only way to be is to work it out yourself


Why I use the Basics

You may well conclude that I am not so skilled a programmer because I only use the Basics. Using the basics as much as possible began when I was set my first programming challenge in College in the C programming course. The challenge I was set was to replicate the counting unix utility wc -c -l -m -w < text_filename >.
The majority of the code was to address user input. Analyse the command line characters passed to main function(). to count the chars I used int getchar function.
To count the lines I used the fscanf
I noticed that if you put some text characters in file and save it without putting carriage return {/n /r } then fscanf could not see the line. I realised that fscanf read one line character at a time like getchar, but fscanf defined a line with the presence of a carraige return while getchar() continues to read until EOF. So if you have characters in the file but no carriage return or new line then the results you will get is an empty file from fscanf(). But not so with getchar(). I realised that to avoid such BUGS when ever possible use the BASICS to avoid the BUGs rather than relying on inherited code such as fscanf() function.
You can see that same bug of the carriage return or new line in Java's Manifest.txt file if you insert Main-Class: classname but do not enter a carriage return at the end of the line.

The Applet Trick

Once I had downloaded and extracted tomcat zip file. I set the JAVA_HOME in the .BAT files and did not set it globally usig the environment variables utility. This way I can just delete Tomcat applicaton Server from windows file explorer leaving behind no residue from the Tomcat Installtion. I found this software after a reading book. I tested each of the JSP and Servlet examples in the browser. All examples worked bar one. The Applet example resulted in a blank page. I realsed that the HTML and TAG libraries code in ehe servlet and JSPs were translated by the browser, but the Applet ran in the JVM once the Microsoft Explorer came across the APPLET TAG sent by Tomcat. I had a clean install of the operating system because I had just completed a project. With the clean install I had an original JVM. To diagnose whether it was the JVM version problem causing the blank page. I deleted the sub directories below the installed JVM JRE directory. I then copied the subdirectries below JRE directory from the recently downloaded JDK. With this one change and refresh of the MS Explorer browser the Applet ws displayed in the browser. The obvious conclusion was that I could not use Applets because it is likely that end user would have same environment as myself. Obviously The testers who passed the Applet and released the Applet as usuable had the latest JVM installed. The same consideration which was important for me was not important for them.

Kuberenetes and Docker can provide an auotomated self contained server side environment but these technologies can not automate or replicate the act of manually copying the JRE sub directories from server side to client side to make the fix as I did. Without Docker I had two separate environments running on same PC.


The Mechanics of OO JVM Memory Allocation



Memory Allocation Sample Program




The Payoff Conceptualisation

Conceptualisation is difficult to believe but if you have reached that stage then you know what I mean. In five years of Software development using more framework, languages than I can remember I began to suffer from a software crisis. I had to think twice how are the variables declared in this language or framework and began to relying on the compiler to correct me. There was only one course of action for me which was to unlearn by taking a break from Software Development. I setup tomcat application server without hardly following the setup instructions. A technology completely new to me. I could see straight away the difference between Apache webserver and Tomcat a Logic Server. For example one was one was required to handle the browser backbutton while it ws not a consideration for the other technology. After that I flicked through a book called Java Server Programming with a variation on the same example application using different competing paradigm technologies. I was able to protoype an internet application by identifying considerations from code in JSPs. I address those issues without actually developing an application. As far as I was concerned there was nothing more for me to do but practice. I also identified that there was minor Java code mixed in with other languages called JSTL with HTML JS.
Making Large and Complex Systems even Simpler
Vaardin with its claim of 100% JAVA, reducing the complexity of HTML JS CSS for front end development} and the author of the book beautiful spark code both use the words getting bogged down.


Evolution from Spring -> Spring Boot . All selling Programming simplicity. They are saying they have solved the cause of the software crisis as identified by the US Department of Defence.
VAARDIN
Vaadin

SPRING BOOT
Vaadin


Coding Standards

This is the NASA's Rule of 10 Coding standards. One rule is to turn on compiler warnings
and rectify the warnings before releasing the software.

Comparatively This is Apache Spark coding standards to ignore warning by setting log level to ERROR and even FATAL.
When I mention these loose standards I began to receive threats by the old timers of the project.



4GL Application Generators

There was serious danger of getting bogged down in learning multitude of programming languages hampering application development production This is not my personal opinion but from my commercial experience and observation of 4GL languages and their use. Software companies who knew how to be Productive and successfull. Obviously these successful companies did not share the same views as those who came up with J2EE {JAVA JS HTML JSTL NOSQL SQL etc.}. Booch Grady described 4GLs as TEDIOUS application generators . I have experience of is OPENROAD and Oracle FORMS and I would say Visual Basic with its features to quickly mockup screens and simple Database connectivity can be included. Obviously my objective is that these new set of technologies for a new set of problems will soon become tedious for me.

What is a Programmer's plateau ?

An Artistic impressionist painting of the programmer's plateau.


The programmer's plateau is when you make your objective to be fluent in a programming language. You can reach that plateau in a short space of time. This is the age of the frameworks whcih began with 4GLs from Database companies for quicker application production. The frameworks are so complicated that even BIG tool vendor companies do not have the talent, resources to build or maintain such complex frameworks on their own. I know of one company who tried building their own framework for thin client and failed. That is of course is the mighty Oracle who gave up and bought weblogic. It is as a result of a world wide effort that a frameworks called J2EE was manufactured. MEGA companies like facebook, google, Amazon have built framework design to address one problem which make up the whole and donated it to Apache foundation. Indiviuals and smaller companies have to learn each framework and figure out how they integrate


Information Structure

If you understand that for a dynamic internet application to be Industrial Strength one must address the backbutton problem, then we are of the same mindset. This note is for you. So if you are reading this then I know what your expectations are of the information structure on this site.I am going to finish the content first. At the moment I am roughing it. I also have a bad habit of cutting and pasting words as I do with code snippets. So I will say it is under construction as long as this paragraph is here.


Acknowledegments

I want to acknowledge my gratitude to those people who helped me to better myself so that I am qualified to do a setup and a startup of my choosing. Mr. Dimitri , 68K Assembly Language teacher, Ada Technical Lead and the one who wrote you have to consider connection pooling, load balancing and your database design have to be perfect for filling my knowledeg gap. A special thanks to the person who redirected me away from EJBs with the words NOT THIS. Also FAG-A-TUNA.


Bespoke Software stability

After years of pain they have finally done it. Ubuntu 19 is a professional quality stable operating system, I can speak only for HP OMEN Laptop. Windows 10 pointed out I requires NVidia but with Ubuntu I had to google ERROR 20. Ubuntu 19 is completely error free , warning free, doesn't freeze unlike Ubuntu 18.04. Ubuntu 18.04 was freezing earlier on the same day {15 March 2020} then I installed Ubuntu 19. It should not be a surprised that MS windows is more stable than any Linux because Windows has millions more users therefore millions more testers reporting back bug. This lack of user base is a significant factor for Bespoke Application Development especially when selecting Frameworks .



KISASSS: Hardware Features

For software to be truly Industrial strength it must not only apply the simple strategy {KISSS} but also must be Safe. The software must compensate not just perform its primary function. I call that Keep It Simple And Safe Software Solution Strategy. The following piece of Java Code illustrate KISASSS. If in Java one could try {try & catch} the code only once to perform the primary algorithm the there was only chance to compensate other outcomes to an exception with no more tries then choose a different language. A resource could be irrecoverable from hardware failure but at the same time A resource could be busy i.e. File Open, database Lock, I/O data buffer monentarily full are also considerations esepcially one has to be aware with network errors when dealing with network centric frameworks. It is amazing the number of Hardware features provided by Hardware Engineers but are not implemented by language writer. for example FILE OPEN, EOF (END OF FILE), NEW LINE \n Carriage Return \r are hardware bit flag on a disk. For over twenty years Java has not implemented one of these in the manifest file. A feature I have known about when Mr. Dimitri asked the class to write a program in C which functions the same way the *nix's wc -l -w -c utility.

for (int i=0; i < maxRetries; i++) {
try {
verify... // try to verify
return; // verify ok
} catch (Exception e) {
LOG.info("Oooh, it went wrong or resource busy on try " + i);
// let the loop run it again after a sleep
sleep(1000);
} // end catch
} // end for



Complexity of Apache Spark made Simple

The easiest way to get started with Apache start is to download and extract Apache Zeppelin. Then simply run bin/zeppelin-daemon.sh start, Point to localhost:8080 in browser. You are now ready to develop Apache Spark. To see debugging and monitoring information on your jobs point to http://localhost:4040. To understand the montioring and debugging you have to read chapter 18: Monitoring and Debugging from the book SPARK defintive guide. This book actually explains the documents on apache.spark.org website. Take that as you will. The Apache Spark frameworks require a rather different mindset than that of OLTP, a complete a set of new terminologies from OLTP.

The second book I found helpful also explains the apache.spark.org documents. This book is called learning Spark. This book picks up from the defintive guide in that the second book explains Apache Spark so a Programmer can understand and relate to. For example this second book explains Transformations and Actions as if you are ever confused whether a given function is a transformation or an action. You can look at its return type: transformations return RDDs , whereas actions return some other data type.

To get to the example as shown. select from home page link Spark Tutorial -> Spark Basic Features. You will see the page below with an input source from S3 amazon. I want you to have good first time user experience you will also have to comment out deprecated code if it is still there
To see keyboard short cuts after you create a new note you can select the gear icon where you will find the word FINISHED & RUN arrow. There another gear symbol which is for interpreter binding.



Documentation For Product Fluency : Rule of three plus one easy reading and real word senarios

This is my way of getting a grasp with the new methodology and framework along with practice , practice , practice.
For me that means actually typing not just copying and pasting and running, leading up to a real world application. In the commercial word it is known as Prototyping. Those two youtubers (below) who fell in the PIT of confusion have never built a prototype.
spark24 spark1 spark24 spark1.1 spark1 spark2 spark3


Apache Spark Copyright Infringement

High Performance Spark page xii: This book is here to help you get your job done ...
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 your are reproducing significant portion of the code.
That means when using Apache client/driver code you are acting illegally moreover it is at the
discretion of the o'reilly publisher and the authors Holden Karau and Rachel Warren


Unleashing the Power of IDE on to Apache Spark



There is a good reason why most developers use command line sbt or mvn for Spark. Spark interface / driver code is available in Java, Python, Scala, R and SPARKSQl {SQL 92}. I have discovered that if you seriously want to get aquainted with Spark you will find that source material heavily leans towards Python and Scala, so if you want to use Java you will first have to get aquainted with Python or Scala. Python is more popular. However to be able to use an IDE like VSCODE with Python you have to be aware of a unique and specific feature to Python. Unless you are aware of it then it is command line for you :), at best using VSCODE as an editor not as an Integrated Development Environment. This is my PAYOFF of having purchased so many books I use the RUN button at the top menu (run with or without DEBUG). You can also see a demonstration in the use of VSCode as Editor and running the command line from terminal while in VSCODE i.e spark-submit program.py in the youtube video tutorial with loglevel also having been set to ERROR. There are two people teaching. One to explain the source code and the other to explain how to run using the command line.



Who says two heads are better than one ? https://www.youtube.com/watch?v=CoYIwoeQxMY&list=PLot-YkcC7wZ_2sxmRTZr2c121rjcaleqv

The screen shot of my VSCODE shows using VSCODE as an Integrated development Environment. The code is executed using the VSCODE Run button from menu In my environment because I have setup the environment following 16 pages of setup instructions in one of the books. My client code is then run from the IDE which connects to network configured Apache Spark architecure.
Meanwhile, comparatively On Apache Flink the advice is to make use of Tools like IDE and the Debugger to understand the code execution flow.



Apache Spark equal to Commercial Product Standards ?

This is the first example waiting for anyone interested in skilling up in Apache Spark
sparkFirstExample
To run this first example you must first download Apache Hadoop, install, setup and then hunt down the internet
these lines of code to load Hadoop prepare prior to running the spark code.
My suspicions are that the location of these lines of code to set up Hadoop is a partner website preying on application
developers wanting to skill up. I noticed my phone was being tracked by commercial training companies until I took
some action to put a stop to it and get back my privacy.
loadhadoopdata
If you ask for the instructions to run the example then you will be ignored.
Once you have both scala and python versions working the results are actually different. You will never find such gaps in product documents from a commercial product.
You will never find such gaps anywhere is because they themselves have experienced the same learning curve and learned from their experience and obviously want as many users as possible. I believe the reason Apache Spark is so lacking because it has been set up as a teaser project under the apache free licence but in partnership with software training companies. I believe this knowledge is shared amongst a few apache users (book authors) and developers. The contrasting difference may not be obvious to all but it is very much evident application developers with experience of working on commecial frameworks. The contrasting evidence between Flink and Spark really is massively obvious. I have spent some time on flink and one thing is obvious you do not need to buy a book.
Anybody who does make youtube videos are just going through flink documents which are in themselves comprehensive. You will not see the word beginner in teh documents. Th eterminology carefully chosen. If you want to master a new framework that does not make you a beginner. The one giving instructions isn't a master either because she/he would be too busy, unable to stop himself from his unleashed creative juices building applications. Another words The instructor can't make use of the framework or apply {MUM} so are not Masters.
loadhadoopdata

Where do we go from Big Data Hadoop ?

Initially I thought there are three roads we can take with Big Data Storage Hadoop. Spark, Flink, Hive. But it turns out the there is a HiveContext API available in Spark. Hive actually came about because senior Data anaylists at Facebook didn't want to learn the map reduce model but stick to ANSI SQL 92. Hive has been extended to become a distributed SQL 92 query Engine since its initial inception.
spark24 spark1
spark24 spark24

MAP REDUCE Model in Python

Illustration of the MapReduce model using Apache Spark's map() flatMap() reduceByKey() functions
Is Map Reduce Still the best AI algorithm to solve the Travelling Salemen Problem ? NO.


MAP REDUCE Model in Scala

Illustration of the MapReduce model in Scala using Apache Spark's map() flatMap() reduceByKey() functions and the dot notation programming WATCH OUT! Spark workers must be able to access file location URI



Kafka

One of the many Point to Point messaging systems, a component for live streaming of data making up
the development environment for Data Analyticals





The Golden Ratio
The golden Ratio expressed using KIS software Solution Strategy. by James Gosling , ken arnold , David Holmes
I can see the approach is to decid how many variables need, what control flow to apply to do those variables to get the desired result. The is how I came up with my algorithm too. The algorithm has nothing to do with OLTP business applications so you can still build applications if you didn't know the fibonnaci, especially if you focus on frameworks, Frameowrks' APIs and applying control flow to those APIs, rather than irrelevances like the Fibonnaci



SYSTEM WORK AROUND

If you are wondering what a system work around is or what it looks like ?, as an application developer you need to be able to recognised a SYSTEM WORK AROUND . The example in this image of Apache Spark is a real PEACH of a SYSTEM WORK AROUND. I am obviously referring to the HARD CODED library import in the middle of the code which is mandatory in this case. System arounds happen when it is discovered that the original design was flawed so one has to compensate for it. The library import statement will not work if declared at the top. import spark.implicits._ This SYSTEM WORK AROUND could also be the result the decision to proliferate the Spark driver source code with multiples programming languages. Proliferation of hundereds of languages is a recognised cause of bringing about an unnecessary software crisis. This was the finding of US Department of Defence.


How will Apache Flink approach the Spark's System Work Around

Apache Flink project started in 2015 while Apache Spark began in 2010.
So we should expect a ground up approach. Let's see if we are going to be disappointed in our expectation.
Apache Flink quite early on in the documents redirects us to a project called Apache Avro.
Apache avro first shows us that we can define our schema (table column name(s)) in a text file.


Next step is to compile the schema using the schema definition file.
The compilation generates Java CLASS Source code { example.avro.User.java } using the schema definition file.
This concept took me by surprise at first.


In the next step we see something unique. We can create an object from the auto generated
class User in three different ways. Overloading constructors which is common, create objects also using
the Builder Pattern. Although this appears to be a simple small project never the less it took many iterations
to get the builder pattern correct to a point it is Industrial Strength.
So are we is appointed in our expectation of a ground up approach ?
I would have to say I am pleasantly and gently over whelmed and expectations have been exceeded
The first commercial bug I fixed which was causing the engine monitoring system to crash,
needing a hard reset was on an avro jet aircraft. A good Omen perhaps
Useful Related projects and article for Application Developers
https://en.wikipedia.org/wiki/Fluent_interface
https://camel.apache.org/manual/latest/java-dsl.html
http://hamcrest.org/JavaHamcrest/



Make Use Method {MUM} makeuse.org

There is an unknown method of programming which makes programming easy. It requires a minimum of effort with most productivity. You can start programming in a few days or use any framework without any training if you have learned two or three programmings already. I call it the Make Use Method. This approach was taught to me by MR Dimitri at Reading College of Technology , co-designer of Two Year HND COMPUTING COURSE. MR Dimitri also taught me C and Unix. During my years of commercial experience I realised that MR Dimitri didn't just teach me C programming language, he taught me concepts using the C programming language and common errors. So in the commercial years that followed, when mostly I was considered a more of a junior because I did not have a phD or Masters and was given mostly software maintenance duties. I applied the concepts to fix the software errors of those regarded more senior than me. I also began to realise that at times I was given problems which others regarded as very very difficult but easy for me thanks to Dimitri. On occasion some software engineers had spent months earlier,the problem popped at me straight away because of MR Dimitri and one his concepts he taught using the C programming language. On one occasion three months were allocated to fix the issue(s). I spent most of the three months coming into work and reading books and quizzing the hardware engineer who was testing my fix on the test rig.

THANK YOU MR DIMITRI ! for making programming, setup and startup so easy

Make Use Method is a mindset or school of thought. It is simple to understand and makes you and programming flexible.

If you want to store a number of value between - 128 to 127 then you Make Use of byte. If you want to store a single character then you make use of char. If you want to store a decimal value in your program then you make use of double . As you build your algorithm meeting your specification requirement. If there are too many lines of code after making use of flow control then you make use of encapsulation feature for easier readability of code with either a function, procedure, method or even a class. You just have to think about coming up with parameters and return value.
During program execution the encapsulated procedures, functions, methods are called. That means the code runs sequentially from top to bottom. So you must declared your variables at the top inside the encapsulation.
If you are programming using an object-orientated language then the encapsulated class is not called but instantiated. This means that only the code in the constructor will executed from top to bottom but not the whole class. In the class one can declare the variables at the top or bottom. I purchased an o'reilly book from USA Java in a Nutshell which sold in thousands stated that Java runs from top to bottom. Fortunately I had my College text book by Grady Booch, so I was able to detect this was a software bug as demonstrated in the code below: Also demonstration of gracefully move up and an abrupt halt. While return or abreak is graceful exit HALT is ugly. HALT should only be used for debugging never in the release software. :


public class newclass {

    public newclass() {
     System.out.println("constructor: sequential execution line 1 ");
     System.out.println("constructor: sequential execution line 2 ");
     System.exit(0); // HALT execution high level I/O interrupt
    // return; // move up level with return, same effect with break in {loop}
   // System.out.println("constructor: sequential execution line 3 "); unreachable code error: because return has moved up
   }


   void someMethod() {
     System.out.println("SomeMethod");
   }

   public boolean AnotherMethod() {
     System.out.println("AnotherMethod");
      return true; // make use of return for validation
   }

  public static void main(String[] args) {
   new newclass().someMethod(); // stateless
    newclass state = new newclass();

    if (state.AnotherMethod()){
    System.out.println("AnotherMethod executed successfully");
    }
    else { /* for this sout to execute previous sout failed to execute in AnotherMethod: So this sout Will never execute to same I/O stream, unreachable code as is but no compiler error */
    System.out.println("H/W error: System Crash");
    }
  }
 
   //-- class fields --
   String strVar;
   byte byteVar;
   short shVar;
 } // end class

console output:
constructor: sequential execution line 1
constructor: sequential execution line 2
SomeMethod
constructor: sequential execution line 1
constructor: sequential execution line 2
Another Method
Another Method executed successfully

What's new in Java

The above illustration of the keyword new in Java shows that it is not necessary to create an object to run some code. An object has state or behaviour. An object can store information and carry forward. The use of the new as I have used it bringing information in that manner is not possible without use of temporary variables as data store. The object is held in memory so will use up memory {OUT-OF-MEMORY ERROR} and of course CPU time has to be taked away from the processing for garbage collection of object(s).

Programming Fluency

The C programming language was accompanied by short book by K&R with essential C code examples aka C Bible . You simply get your starting point code i.e. Socket API , build your algorithm from looking up the syntax as you go along if you can't remember it. making use of the compiler, debugger messages as you go along.
Make Use Method {MUM} of programming is creative, inventive, artistic and most importantly motivating.

Using the Make Use method you will find that in a very short space of time, two to three days you will become so proficient that you will be programming as if you were writing an essay or letter. That was my experience with C programming language. To achieve this goal find a specification. THIS IS VERY IMPORTANT: the more you understand the specification the easier it will be to programme. In my experience I had a previous career in Accountancy so I used that to learn programming. If the specification is understood by the developer then programming is simple and enjoyable. During my TWO year computing course I was the best C programmer by far while other students never got the understanding. I also had diffulty in conceptualising when I was being taught the first language, Pascal. Despite Pascal is meant to be an easy to learn for the purpose of learning programming. 68k assembly was my second language by this time the conceptualising was becoming natural . C programing was my third language and with the specification in my head from my accountancy career set me apart. You may find you have to stop yourself and say that is enough for now for an "A" Grade. As I did.

Source Code example of Make Use Method {MUM}

In Java, there are two types of casting:

Widening Casting (automatically) - converting a smaller type to a larger type size
byte -> short -> char -> int -> long -> float -> double

Narrowing Casting (manually) - converting a larger type to a smaller size type
double -> float -> long -> int -> char -> short -> byte

public class MyClass {
   public static void main(String[] args) {
   double myDouble = 9.78;
   int myInt = (int) myDouble; // Manual casting: double to int

   System.out.println(myDouble); // Outputs 9.78
   System.out.println(myInt); // Outputs 9
} }

From my learnings of 68k assembler from my teacher, the other co-designer of the course, if my memory serves me correctly, the decimal number is stored in two memory registers. The whole number is stored in one memory register and the decimal number is stored in another memory registered. In my mind if I Narrow cast a decimal number to separate the whole number part then the run time has simply discarded one of the memory registers, so without the need to apply complex logic to achieve the same outcome. On one occasion I did Make Use of the narrow cast Java feature and built my algorithm around it. In my mind it was the most efficient way of achieving the outcome. Some may view my make Use Method of programming as just using the basic programming language features. Those who do not realise that one is programming two things specification and a computer.


Useful Error message; call {MUM} but don't provoke her

$ java org/makeuse/iSayHello
Error: Main method not found in class org.makeuse.iSayHello, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

Please note the lack of imagination and the aformentioned self inflicting confusion Naming convention variation on the words application Application. This self infliction will be passed on like a virus of confusion.




What is JAVA {JVM} ?
. JAVA is Object- Orientated, Ground Up, Network Centric Distributed Garbage Collection, Write Once Run self contain in a JVM 1.2 +

Naming Conventions

After the variable went out of scope it remained in memory then the second process (inner procedure) and the following processes picked the value from the same name variable and used it. By used it I mean in this case the value was concatenated. That is to say if variable A ="10" , variable B = "20" then if variable A is not initilaise at the beginning of a process or garbage collected at the end of a process and variable A is global Then the value of variable C {= A + B} will be "$1020". But if the variable A is initialised or garbage collected then the value of variable C will be "$20" which is correct. Variable B's content is of course overridden or reassigned by the incoming process with new data. SO the lack of initialisation for variable B has no effect.
With Use of Naming conventions If we rename those three variables where A is CountryCode , B is TelephoneNumber and C is TeleNumber. These three variables are part of a Telephone Compute Billing Engine. This Billing engine is run once a month to calculate customers' Telephone bills. If the customer made an international call on the 24th day of the month then if the CountryCode is not intialised then the customer would be over billed, every local after that call for that month would become an International call because CounrtyCode is appended to every local telephone number retrieve from the database. Customers can be over billed for years until some one made an international call at the beginning of the month and had a need to check their bill. The programmer confused himself with his own naming conventions and the testers had no hope of detecting the confused phD highly respected programmer. Perhaps the application of {MUM} with naming conventions such as localNumber InternationalNumber would not need half a line code of change of telephoneNumber = "" at the end of the routine. To unconfuse the bug. Avoid naming Variations when naming variables i.e. TeleNum ,TelNumber, TeleNumber , you satisfy the compiler but will end up confusing yourself.


What is Java RMI ?
RMI is an acronym for Remote Method Invocation that is to say executing code in a method from far away. Before RMI there was RPC, acronym Remote Procedure Call. We know that methods and procedures can have parameters and but methods like functions also have return values. First we had punchcards, then low level assembly language followed by high level procedural language. That was followed by C with structs followed by C++ which is also known as C with classes. It has been a long journey but we (application programmers) can now implement an interface on the class. Implement an interface as it was meant to be. We know the importance of using Naming conventions in Software Engineering is critical . This is the sacred path of simplicity and flexibility for application programmers leading to the Gold Standard known only to a few. This innovation means JAVA RMI finally fulfilled the promised prophecy of the Object Orientated paradigm by implementing the double interface. The double interface allows the offloading of heavy processing of the compute engine(s) on to separate server(s). The clients can be either thin, processed by application servers (because of the backbutton) or FAT clients JAVAFX/Swing in the same language. RMI is really easy for me because I have never swayed away from the gold standard, the sacred path known only to a few. {MUM}.

make use
The hardware referred to in reality can now be Strawberry PI at a cost of $10-$30 each,instead of expensive mainframes, desktops, even laptops. The Strawberry PI comes with free and user friendly Linux.

Object-Orientated: Methodolgy or programming language ?

It may appear to be a silly question to a computer science professional, If you agree that Object orientated programming is a methodolgy therefore language neutral then please contact Department of Science Indianan University Bloomington https://cs.indiana.edu/ and let them know. The Indiana Science University is teaching RMI {object orientated}... unlike CORBA, which is intended to be language-neutral, What you give up in neutrality you make up in simplicity. Do remember these are the Computer Science students who are developing software architecures :), the same ones who did not question, for how many years ? the anomoly I am showing you.

RMI Timing

The ability to execute the compute engine on a remote server is the defintion of flexible in Software Development. This is especially useful for business Intelligence or Data Warehousing applications. These two types of applications require heavy processing or separate compute engines.

The other types of applications which make use of a Database is called Online Transaction Processing {OLTP}. Any application looking to be simple and flexible from ground up needs to make use of RMI. By simple I mean RMI uses Object orientated methodology which is in itself simple and flexible. To use the RMI's remote feature one simply applies couple of lines of code in the client like ;
SomeInterface si = (SomeInterface) Naming.lookup ("//SomeHost[:1024-65535]/MyServer");
String retVal = si.SomeMethod("coco");

Design Patterns


OBJECT BLADING with RMI

The Setup prior to RMI StartUp - In case of any security errors hindering you from application development and like me that is not your most important priority then just add this the bottom of file(s) to jdkhome/conf/java.security and or java.policy. Removes all default JVM permissions
grant {
permission java.security.AllPermission;
};
Whilst following the secret path to the Gold Standard Source Code {GSSC},
known only to a few, comments in source isn't necessary. Lack of comments in source code is
the test of the Gold Standard as illustrated here. There are no comments in the source code yet it is a an illustration of a complete distributed application paradigm. If you can see that then I have achieved the {GSSC}.
Please not the body functionality is not exposed to the client machine. Only the interface parameters and return value.
PLUGINS

Communication Protocol is the {i}InterfaceName: Do keep in mind if the two interfaces are not the same the client and the server cannot talk to each other.The interface is sometimes referred to as the protocol.
Pawlan the author of the book refers to RMI as an API and EJB as a RMI based API, However if you are familiar with an API, for example from C++ then you must agree that it is not an API by that definition. I think a more fair description is that it is a paradigm. RMI is an object orientated version of RPC (remote procedure call).


CORBA
If a Class is a Blueprint and an Object is an Instance. The Instance is a Runtime Implementation of the Blueprint that is a Class. Then to add Impl to the class name the Class is not a Blueprint anymore, it then morphs into an Implementation when the Class Implements an Interface. Surely this is an illustration of Pindu-ism. The Oracle pindu has created a virus of confusion because he has relied heavily on Java compiler error message to support his supposation when he should have read a book on OOM which say you can define method body abstract classes but you can ONLY define < abstract > method declaration in interface class. This point is emphasize in the animal dog class illustration with comments on this one page website.
ClassImpl

Secure By design JAVA RMI: Secure by Design.
Once the client programme starts up, the application processing is executed in RAM memory by the kernel like any programme. The behaviour of the local application is transported on an as needed basis across the network over TCP/IP from server codebase somewhere to the client RAM memory. The transported object is garbage collected by JVM's Distributed garbage collection as soon as the client JVM releases reference to the object. The security is that there is no risk of some one decompilimg classes because there are no classes on client disk to decompile.
Secure By design

Latency

The Indiana University suggests that Latency could be an issue and is left to a programmer to address. It took me ten minutes to conduct a latency test with RMI. It was really easy for me with the help from {MUM}. I guess that makes me a progammer as defined by Indiana University. I have also fixed the University's long standing Bug that Object-Orientated is NOT language neutral unlike CORBA. I have demostrated this bug fix by showing Object-Orientated is a Methodology same as {MUM}. I guess that makes me very good programmer or perhaps system Integrator ?

Latency
JAVA RMI Proof of Concept: from UK TO Santa Barbara USA Distance: 18,000 km, Time Taken: Round Trip in 97 Milliseconds

RMI Timing

{Current} Architectures when These Considerations are Irrelevant

Static Html, JavaScript, CSS Websites,JAVAFX,

4 {GL}

Two Tier Architecure is used for Intranet applications, It is a tightly coupled client server Architecure. Two tier are suitable where the use case is Fat Client. Programming Languages used for this use case are called 4 {GL} or 4th Generation Languages. Grady Booch described 4GL as tedious programming tools. These programming languages only use a subset of one programming language making the development of large and complex applications easier to manage. Easier in this context means projects are likely to be on time and on budget.


If you want further details on the advantages of OpenRoad 4.1 over Java, you may contact Computer Associates, a consultancy firm for further details. AFAIK those other technologies cannot download and execute object implementation (behaviour) only data.


What is the difference between a Bean and an E-bean ?

If you are from the United Kingdom and work in Information Technology then you probably know the answer is in the question because for you words with a prefix of e or i means internet i.e. commerce with an e prefix becomes e-commerce or commerce on the internet. If I was to say will it be real (compiled) or virtual (interpretive) ...hhmmm that is also not a question but a realisation. If you are from the UK and working in a company then intranet and internet are also part of your vocabulary. So you can look away now.

commerce is business and e-commerce is business on the INTERNET also known as Wide Area Network. An INTRANET is a local Area Network. An INTRANET is a tightly coupled because due to the short and isolated area of data packet travel, it is possible to have high network traffic. So it is possible to make frequest checks of data packets and resend them in the event of errors. INTERNET on the other hand you can not have high traffic from each browser request due to volume of users. So INTERNET is loosely coupled or stateless. The amount of traffic can travel down a network is a CONSIDERATION. So the INTERNET being loosely coupled stateless while INTRANET tightly coupled is due to a CONSIDERATION.

So when a difference between a BEAN and an Enterprise Java BEAN is described Intraprocess (tightly coupled) and Interprocess (loosely coupled ) now you know what is meant by. The BEAN is tightly coupled to the JSP {Java Server Page} and an Enterprise Java Bean is loosely coupled. Both Beans are come from Classes which we know is a blueprint. Once instantiated from classes into objects so there is now state or behaviour. These two BEANs are container managed. What this means is that a container is a complex process which allows the objects to have a lifecycle or scope. Same as we have scope/access of variables at different levels procedure/functional level, class level, local variables, global variables.

When we declare and use variables in our front end FAT CLIENT {One instance of Application} at different scope there is one or two instances, with may be maximum 10 variables held in memory while the program is running. Once the program finishes the environment takes care of cleaning up and reclaiming the memory. In an Application server however there are multiple instances of FAT CLIENT APPLICATIONs running on one machine. On machine because the The application is on one machine. This is where the lifecycle of BEAN comes in. OBJECTS PERSIST at different levels {request, page, session, application} for access to and passing information across pages to sessions for example. In an Enterprise Java Bean the state of an objects also PERSISTS in a container but are not tightly coupled but loosely coupled. For example in my RMI example both FAT clients and thin clients have access to objects, where they pass data , data is processed on a separate JVM {physical machine}. In my RMI protoype objects STATE does not persist, but one can use a database which holds persistent data to work the same problems as Enterprise Java BEANS. The sole purpose of this technology is faster performance or better user experience.

A JAVA BEAN DESIGN PATTERN on the other hand is a document suggesting every CLASS MEMBER should have Getter and Setter methods associated with them. If you do provide GETTER and Setters then you can refer to that CLASS or any object instantiated from that class as a JAVA BEAN or now a days refer to as Plain Old Java Bean. I think there is room for confusion on what a bean is when it is in a container and when the blueprint is created.



Java Bean tightly coupled TO JSP as an object from class without Interface

Java Bean with JSP
< jsp:useBean id="RefId" scope="[page|request|application|session]"
class="packagename.className" />
retval = <% = RefId.getBeanPropety() %>

JSP to direct API Database

< jsp:setproperty name='db' property"*" />
<% int numColumns = 0 ;
ResultSet rs = null; %>

// abstract class
abstract Animal {
   public void animalSound(); // interface method (does not have a body)
   public void sleep(); // interface method (does not have a body)

public void animalSound() {
   // The body of animalSound() CAN be provided here
   System.out.println("The dog says: woof woof");
 }  
}


JAVA BEAN tightly coupled to JSP with Interface

Academia's Version             Commercial Versions
Java RMI    E-Bean    MBean IoC

// Interface
interface Animal {
   public void animalSound(); // interface method (does not have a body)
   public void sleep(); // interface method (does not have a body)  
}

// Dog "implements" the Animal interface
class Dog implements Animal {

public void animalSound() {
   // The body of animalSound() is provided here
   System.out.println("The dog says: woof woof");
 }

public void sleep() {
   // The body of sleep() is provided here
   System.out.println("Zzz");
 } }

class MyMainClass {
   public static void main(String[] args) {
   Dog coco = new Dog(); // Create a Dog object
   // coco wants attention
   coco.animalSound();
   // coco is sleeping
   coco.sleep();
  } }

IoC Code

beans.xml
< bean id= "DogRefId" class= "co.uk.backbutton.Dog"/>

public class MyMainClass {
private static final String CONFIG_LOCATION = "beans.xml";

// create context (container)
ConfigurableApplicationContext context
= new ClassPathXmlApplicationContext(CONFIG_LOCATION);
Dog coco = context.getBean("DogRefId", Dog.class);
// coco wants attention
coco.animalSound();

// coco is sleeping
coco.sleep();
// close context (container)
context.close(); }

The Latest Annotated in IOC SPRING BEAN Version 5.0

There is clearly alot of difference while still trying to solve the same problem.
The problem which differentiates the webserver and the application server
One thing is for sure by bring coco to life with an Interface coco, is going to have mental health issues.
Whether It is going to be a Dog in one instance and Cat in another instance. One way to make that decision is with the @Primary annotation.
You can do same with RMI interface too with added benefit of bringing coco to life on another physical Machine



HND Interview with Mr Dimitri

Mr Dimitri asked at the interview if I was to give you place on the course you are not going to give up and leave the course. What a strange questions I thought at the time. Anyway I said to him why would I enroll if I was going to give up. Although when I was being taught my first language,Pascal, I was asking myself what am I doing here ?

Mr Dimitri drew a linear project lifecycle diagram on the classroom board. He said coding should be 15%-20% of project time. He then went on to say for some reason when a project is over running or late, project managers tend to panic and throw more people at it. He said that is the worst thing to do because now you take away resources to train more people to get to know the project. Running even more late.
There is c
l So was it wrong
then or now ?early alot of difference while still trying to solve the same problem.
td>
Best practices Commercial
Project Software Development Lifecycle



Commercial Product Support

bytel product Support

bytel had three lines of product support. An end user contacted the support team. If it was a case of the end user misunderstanding the software then the end user was helped with a step by stepas 1st line support. If the customer had identified legitimate software problem then it was ascertained by the support team whether the issue was a dirty data issue. It it was dirty data issue then that was 2nd line support. If that was not the case then the issue was categorised as a software bug. The software bug was then categorised as to the severity by the support team. The bug was first logged into the bugs database. If it was the highest level of severity then the bug was investigated the data analyst. The data analysts then made a report and gave it to the particular contractor who specialised in that software subsystem. When the data anlayst came to the contractor that is when his constant chatter with other contactors came to a sudden halt and became an invisible member of the team. After the bug was fixed then it went to testing team. Once the fix passed the test then the code file changes were installed on the live client site.

product Support

The manager gave me the task of calling mail API from database centric think client framework . I looked through the Oracle Database documents and found two ways. One was to use ext proc DLL by binding it to the Database Agent server and the other was from a database to execute PL/SQL and use write a listener in C as an intermediatory which would interact with both PL/SQL and Mail API/server.
There was example code on how to use PL/SQL but not the ext proc DLL method. So I went to book shop to get a book on the dll syntax. I then tried to install C/C++ { WINDOWS (GUI)}IDE , but it was crashing. I got the Windows NT MS service pack installed it then install the IDE.On the *nix operating system they hav enuilt in gcc command compiler. I tried the syntax I found in the {WINDOWS(GUI)} IDE help system but wasn't getting the expected outcome from {printf()} system.out.println. I tried the book code too but no luck. As it happened The company had a support contract with Oracle. So I told him that the C code I was trying wasn't working and if he can give me tried and tested code. First he said that is CONSULTANCY . I said to him how can that be CONSULTANCY when you provide code for PL/SLQ. So then he decided to cooperate and asked me to give him my code and he will have a look. He gave back the code, cleaned it up a bit and called the two files runit.c and testit.c . I found that to be derogatory, but it still didn't work. I called him and told him so. I expected him to say I have tried it on my machine and it works, of course if he couldn't install the IDE then he couldn't try it. So he said we don't support Oracle Database on NT. I didn't tell him how I installed the {WINDOWS (GUI)} IDE, because that would definitely have been consultancy for free . I got the job done with the alternative method in my simple and safe way and felt really great of getting one over the mighty . So it seems generates revenue by converting its bugs into consultancy and making you the developer feel like it is your fault their software doesn't work. MY protoype application shows how to properly call a mail API from a Thin Client so I got one more over the Mighty ORACLE.

Career Path

Rather than accepting a safe career job as product support, I began my career working as a junior software Engineer in a safety critical bespoke hardware and software development environment. The client is equally technically aware. Only best practices are followed. ADA was developed by the Aerospace & defence Industry solely to avert a software crisis. Other Language I came across was Pascal. Does not have Persistent Objects & Concurrency. 3 {GL} Languages such as C, C++ {CPP} are frowned upon. One reason, Syntax readability. There are others reasons too. Use of Concurrency is a consideration so not permitted, simplicity or use of basic programming concepts is encouraged. In such environments there is only one production version. 1.0. On one project a mathematician was a member of the team. His role was to make complex calculations for the technical lead to programme the bespoke hardware. The technical lead was provided datasheets {communication protocol, port addresses i.e. watchdog,ACK, handshaking, etc.} of the bespoke hardware from hardware engineer(s) {in-house, client} . There is a clear separation of roles between hardware engineer, mathematican and two programmers. The Tech Lead was an ADA programmer , the other programmer was the assembley language programmer. He is the one who wrote assembly language subroutines from the hardware data sheets. The assembly language routines were then used by Tech Lead for devising application logic.

Do you have a minute ? I asked. He replied yes sure. I know I am supposed to do unit testing, I look around there is so much going on, the big Rig test room and all these documents, Do you have a top level document how the system works. He wrapped his sandwitch up and put it away neatly in his lunch box. Pulled an A4 sheet from one his document bundles. Flipped the page over to the blank side.Picked up the bic pen and began to draw. After he had drawn a number of components he then began to explain each of the components. He explained it is so clearly that I was asking questions as he was explaining and he was giving answers. He shocked me a bit with one detail. When he was finished I asked him that I heard that aeroplane software has black box and the software is supposed to be fail safe. He pulled his chair back and said here is the black box. He then explained how the bespoke software was fail safe proofed. It took all of 20 minutes and I had been downloaded with hundered of Millions of Dollars US of best research and development in the world.

After that day my best time of day was as I came in to work. The moments when I walked past the Iranian phD student who was doing his thesis on the project. He was going to spend a year writing his thesis from the specification, test documents etc. Searching through Bundles and Bundles of documents. He was always holding his head and always looked stressed trying to figure out the system so he can document it. I on the other hand accomplished the same in 20 minutes with a diagram from the project Technical Lead who developed the system over the past 4 years. The diagram labelled "competing paradigms", means so much to me because it reminds me of the diagram the Technical Lead drew for me. He then went on to send me to do fix of crashing system of aircraft engine monitoring system.



I then moved into an environment where a large and complex product was development using a 4GL. A 4GL language, principally is very much like Ada, designed to make software development simple. Further Best Practices were also followed leading to successful product Generating £18 GBP Million Pounds Revenue per annum from the work of 9-11 4GL developers, 2 testers, 3 Data Analyst , 250 tables on Ingres database B.I. not included.


To complete the challenge Booch Grady had set I needed Software Development experience where projects would be at different stages. I found such exposure at a software house. It was there I discovered one has to be diligent when choosing the right vendor solutions. In my case choosing the right skills.





The Developer's developer

The Human Resource officer organised a career development meeting with the project manager and the three permanent application developers. There were two development employees who were long term from the beginning of the company and so were senior developers. The project manager started out the meeting by saying the purpose of the was to progress your skill development, unless you progress further to analysis, with programming skills you will reach a plateau and remain will as juniors. This remarks sparked a uncomfortable exchange of words with the one of the other developers who objected to programmers being referred to as junior. Incidentally the programmer objecting to being called a junior had been trained in OPENROAD {4GL} by an employment agency and then the agency found a job for him. I had heard that the project manager was given a verbal warning by Human Resource officer prior to this meeting because he was rude to one of the Contactors. I did pick up one other tip from the meeting which is that an application threads runs from login screen to the end of a route is called a application thread test .

The next meeting arranged was with what heard was one of the world's top DataBase expert who explained the importance and role of databases. He explained the features and how the databases worked. My take away is that where ever possible get the database to handle the persistence data for you.

FAG-A-TUNA

I was sitting outside my office building during my lunch break having a FAG. I used to smoke then. A guy came outside with a cigarette in his hand. I quickly offered him a light before he could take out his lighter. It is a good way to start a conversation. I have not seen him before so I asked If he just started. He said he was here only for two weeks and he was to go to customer sites to TUNE the live running databases. I was taken a back by this because we had three DBAs and they had a department of their own. I didn't know there was even such a thing. I asked him what did TUNING a database involved. He explained to me what he did and they all led improving application speed and performance.

BAD DATA ?

This youtube video https://www.youtube.com/watch?v=l764YAGPlIs {July 2019 } is supposed to be a talk on Data Ingestion with Apache Airfow and Spark. During the dicussion Dr. Johannes Leppä mentions a discovery a developer made by accident. That is one of the jobs the FAG-A-TUNA was hired to do amongst others as he explained to me. He was hired because The Database Expert called him in and not due an accidental discovery by a developer. In the youtube video at the end of the discussion all the questions are surronding that issue. One asks if there is an API available which could be used to perform this task. DOH!!!
Another enquires how often do you change the schema ? HUH!!!
These questions are a result of not getting your hands dirty but joining an organisation straight at the top. I can see that For me it has paid off to have worked at a place where there was one of the TOP 5 Database experts in the world. There is actually a very common data for this type of data and it is not bad! data.




Coming from a 4GL background, I became aware of the importance of the backbutton.co.uk over a decade ago and the need to solve it in order to produce Industrial Strength Software. I was able to purchase the domain backbutton.co.uk just recently. It has been available all these years. backbutton.com has an image of a game. The HTMLer can't appreciate its value in the same way an application developer can. It is NOT one of their considerations.


WORDS in a Dictionary

There are over 1,000,000 words in the English language. An average person only makes use of 5,000. Some Academic may know up to 7,000 - 10,000 words. So make it a habit to look up any word you are not sure of. Never read past a word you don't understand. Stop ! look it up then continue. In the UK there is an organisation called Plain English Campaign, so the issue I described is a recognised issue. It is part of the english culture. Making use of good Naming conventions is a recognised part of good software development. Understanding words is critical to software development. If there is a lack in making use of Naming Conventions then that software could do with improvement. Software development doesn't involve digging ditches so you don't need big muscles just a dictionary.



Very Good Books

I always have at least two or may be three resources on the same subject in case one fails to explains so I can turn to another resource for a better explanation on the same topic or a topic is not covered. If RMIs are in the book essential Java then perhaps it is essential to have not just knowledge but also skills in RMIs.

RMI Java

The Setup

This book is indeed written by a professional, previously a staff writer with Sun Microsystems and now a staff writer with Oracle. If you follow the setup instructions you will indeed have RMI up and running. The author does make use of unsetenv classpath or classpath="" extensively. As you can see from the image above of my protoype, I never use classpath, class-path etc. nor do I have need to do so

When I setup RMI for the first time I did not quite follow the instructions. I started out with the belief the software was written by an expert born from an idea or experience. It was up to me to determine the RMI Environment. Remembering Mr Dimitri's directions, I began with one error at a time starting with the first one. When you get to my level of conceptualisation you will realise, --class-path is for Pindoos.

The Startup

After the rmiregistry has started, it will take with it any byte code you bind up to RAM. The rmiregistry will use reflections to execute object behaviour as requested by the clients. The application developer must keep the byte code compact so as not to oveload the rmiregistry. That is to say the remiregistry should not have to place any byte code on to the disk because you have not made enough RAM available for the rmiregistry. This will slow down the application run time response because disk is over a 1000 times slower than RAM. If you overload the rmiregistry then you have neutralised RMI benefits. I have no scientific proof, this is my observation from the Java Language characteristics.

Java Server Side

With the Internet comes the Server Side Programming. So for a MainFrame manufacturer sponsoring and supporting a language like Java which appears to be designed from ground up as a server side programming language probabaly made sense. However Java is also described as network centric. RMI, is a network centric API, RMI is a java JVM core. we have already discovered RMI gains, simplicity and language neutrality. The purpose of an API is so that an application developer can make use of it instead of re-inventing the wheel. One can say use of an API is a means of rapid application development. so RMI API is a means of rapid application development. RMI API is a means of modular development in a large system. RMI is a means of application deployed on smaller machines [load balancing][Compute Engine]. Should Sun Microsystems have looked further in to Java and realised network centric capabilities ? Where is SUN Microsystems now ? How does an application developer go to Sun Microsystems and say I am interested in Java server side programming NOT because I am interested in mainframe programming, but because I do not have to use expensive mainframes with JAVA ? [AWKWARD!]

Hobbies

https://docs.oracle.com/javame/8.0/api/dio/api/index.html If I spend two hours a week on this page I will end up with serious number of inventions, probably integrated into Struts and/or Javafx.application.Application. Some Api names sound familiar, blast from the past, i.e jdk.dio.uart, jdk.dio.watchdog, jdk.dio.gpio . I know I will not find any disagreement or issues here. This is strictly by the professionals. I may learn to program a robot arm + hand , turn it upside down and call it a dog, The more versatile the arm + hand is, the more human like the arm is , the more versatile the dog will be.