This exposition is dedicated to my FEP Team.
For we are always the one adjusting to the clients call, and relying heavily in the vendors knowledge. By realization, we become more focus on our tasks, and by contemplation we become more knowledgeable.
Contemplation leads me to this path.
Let me list down the following premises, which were gathered from my pasts lessons in Computer Systems Architecture with Assembly Language and Operating System Principles, with reference to our basic text before, Computer Organization and Design, Hardware and Software Interface, let me abbreviate it by CODHSI, by David Patterson and John Hennessy.
- … programming languages allow programs to be independent of the computer on which they were developed, since compilers and assemblers can translate high-level language programs to binary instructions of any machine. (CODHSI1)
- Operating Systems are programs that manages the resources of a computer for the benefit of the programs that run on that machine. (CODHSI2)
- Bit patterns have no inherent meaning. (CODHSI3) Its meaning depends on how you interpret it.
- … microprocessors presenting a low activity will present a too large static power compared to dynamic power… In other words, if a transistor or a logic gate is not switching for a very long period it is not very efficient.4
Let me start with the Hardware.
Computer Science and Computer Engineering majors, I believe, do know that in Computability Theory, there is a hypothesis known as the Church-Turing Thesis, after Alan Turing and Alonzo Church, which states the equivalence between the mathematical concepts of algorithm or computation and Turing-Machine. It asserts that,
if some calculation is effectively carried out by an algorithm, then there exists a Turing machines which will compute that calculation.5
So what is the implication of this? The answer is just simple. We learned that, all computers are capable of computing exactly the same things. That any type of computer (netbook, desktop computer, automaton, and the likes) with a minimum capability, is in principle, capable of performing the same tasks that any other computer (like supercomputer, clusters) can perform, irrespective of speed, size, or cost.
Another one. Recall the basic statement of professor Andrew Tanenbaum between Hardware and Software?
Hardware and software are logically equivalent. Any operation performed by software can also be built directly into the hardware and any instruction executed by the hardware can also be simulated in software.
I believe, that the meaning of the statement is explicit already. He also added that The decision to put certain features in hardware and others in software is based on such factors as cost, speed, reliability and frequency of change. Now, more or less, I can stand firmly on my beliefs before that machine upgrade is not the solution to the memory issue. One more thing related to this. When professor Tanenbaum said, “Today’s software is tomorrow’s hardware, and vice
versa.” What have you observe on our mobile phones before? what about today? Have you carefully observed and asked yourself why is the keypad already replaced by capacitive sensing technology (e.g. iPhones), or resistive sensing (e.g. LG Optimus) controlled by softwares on smart phones? Because, as John Baguley of VMware said, “everything that’s currently being done in hardware will eventually be done in software”. And what about Apple?
We will take as our working example the conversion of 16 bit integers to floating point values. On PowerPC, there is no direct conversion for ints to floats in hardware. Everything is done in software. (developer.apple.com)
Enough for Hardware part.
Towards a Software-controlled Everything.
It is in the arrangement and structuring of data - Data Structure and Algorithm Analysis
Do you remember the reasons why we do have Data Structure and Algorithm Analysis, Structure of Programming Languages, and Operating Systems? Because these subjects discusses the importance of careful planning and structuring the data to be process by the computer.
Analysis of Algorithms, is
the determination of the number of resources (such as time and storage) necessary to execute them… [It] provides theoretical estimates for the resources needed by any algorithm which solves a given computational problem. These estimates provide an insight into reasonable directions of search for efficient algorithms.
An algorithm is a a step-by-step procedure, finite sequence of instructions, each of which has a clear meaning and can be performed with a finite amount of effort in a finite length of time. Analysing this simple definition, and applying its meaning to FEP, we are already in chaos in terms of determining the amount of effort (i.e. structuring the program modules), and in terms of determining special business processes like what if the line disconnected between modules, or what if a specific module is not yet finish processing the request, et cetera.
Improper use of an inefficient algorithm in a project will have a big impact in the system’s performance. FEP is a time-critical and sensitive application. Time-critical because a request must be process as soon as possible, and sensitive since the request and response messages contains information of the credit card holder. An improperly designed algorithm will require an uneconomical amount of computing power or storage in order to run. Therefore we must conduct not only Program Profiling, but also a complete Runtime Analysis.
It is said that even the simplest application on a modern computer would not be possible without algorithms being utilized behind the scenes to manage memory and load data from the hard drive. Let meshare to you what one of the best reasons I found before why analysis of algorithm to be use is a must.
to make sure it will correctly solve your problem. If our algorithm doesn’t work, nothing else matters. So we must analyze it to prove that it will always work as expected. We must also look at the efficiency of our algorithm. If it solves our problem, but does so in O(nn) time (or space!), then we should probably look at a redesign.(wiki.answers.com) 6
And what specific analysis we need to perform?
- determine the running time of a program as a function of its inputs;
- determine the total or maximum memory space needed for program data;
- determine the total size of the program code;
- determine whether the program correctly computes the desired result;
- determine the complexity of the program—e.g., how easy is it to read, understand, and modify; and,
- determine the robustness of the program—e.g., how well does it deal with unexpected or erroneous inputs?7
Sometimes, even if the algorithms used to solve problems were correct, programs are not structured correctly, providing slowness, and not effectivity - not producing a desired or intended result. Then, Data Structuring must be our friend.
According to Paul E. Black, as cited by Wikipedia,
a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently... Data structures provide a means to manage huge amounts of data efficiently.8
In Java, data structures, known as containers, are the classes and interfaces compactly gathered under Java Collections Framework (JCF). I believe that Java sources for these containers are very well optimized by the Java Specification Committee so no problem on that. But I remember our lectures before that the choice of data structure determines which operations on your data will be efficient and which operations will be slower, and how much RAM will be required to store a given number of data items. Even if we are using the using Java, the best model of Object-Oriented Programming Language, and using its collection framework, if our codes are not utilizing the right data structure for a certain operation or business process, the main memory of the computer (RAM) suffers the most; and I assume this is one of the factors why the memory usage of FEP is still unstable and consistently high. Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won’t usually need your code; it’ll be obvious (Fred Brooks).
As recommendation, we need to think on how we would like to store our data before anything else in starting a program. It is very important that we store our data in such a way that, it gives us the easiest method to access them when we want to retrieve them in the future. Good programmers worry about data structures and their relationships (Linus Torvalds).
I am not versed in choosing the right data structures and algorithms to be use in a certain tasks, since I am just in my 2+ years of working, but knowing these things, safely assures me that these things must be considered and reconsidered.
No one consider the how to exploit and use the microprocessor’s capabilities, we just focus on memory issues and thinking that electricity bills will not be our concern because, on the other side, be shouldered by the clients, though. No one consider the impacts of the upgrades from 32-to 64-bit OS and middlewares, because we are biased on the vendors stands and business backgrounds. No one consider because we are afraid of clients’ fury and flames, and in the end, we, as a team suffers the most of exhaustion.
I will leave you questions for you to think. and I hope these things motivates each one of us to think independently and collaborate effectively in the next.
- When we say one computer has better performance than another, what do we exactly mean?
- Why having an ISO-compliant software is important? What is the importance of following the ISO Standards?
- Can we still follow Java’s basic philosophy Write Once, Run Anywhere after we upgrade our FEP servers, and update the Operating System and Middlewares?
Curious to know why Oracle’s motto is Hardware and Software, Engineered to Work Together? What about Apple’s Senior Vice President Scott Forstall, “The seamless integration between the hardware and software makes everything you do on iPhone 5 just feel more fluid, more responsive and fast.”
Apple has a wonderful design philosophy which states that the company’s aim is to avoid everything that “does not need to be there”. It achieved Apple that minimalist design that was the reason of its popularity among masses and allowed the company to charge a premium for it.
4. High-Performance Energy-Efficient Microprocessor Design
7. Data Structures and Algorithms with Object-Oriented Design Patterns in Java http://www.brpreiss.com/books/opus5/html/page36.html
My advice is to leap in and try things. If you succeed, you can have enormous influence. If you fail, you have still learned something, and your next attempt is sure to be better for it.
Do something you really enjoy doing. If it isn’t fun to get up in the morning and do your job or your school program, you’re in the wrong field. Not everyone is lucky enough to have a job or an academic program that rewards them continually, so perhaps your fun will come instead from some outside activity, or friends and family. But there has to be something that makes your life rewarding. Be open to as many experiences as you can, to maximize your chances of finding the really rewarding things. Dick (Richard) Hamming once told me, “Never say no.” That has to be applied with a bit of caution, of course, but the basic idea — try new things — is completely sound
Don’t retire. Or, more precisely, don’t stop doing things. Keep learning and exploring. I retired from Bell Labs 10 years ago and took up teaching; it’s been more fun that I could have imagined and it’s probably added 10 years to my life. And if I retire from Princeton, I’ll try to find something new that has that same effect — something that keeps me active, involved, learning, and meeting new people.
… But I still think that if I could only use one language, I’d use C, just because I could build anything with it.
Adversity builds character.
latin, why you so difficult? :’(
THE Lord is my shepherd; I shall not want.
He maketh me to lie down in green pastures: he leadeth me beside the still waters.
He restoreth my soul: he leadeth me in the paths of righteousness for his name’s sake.
Yea, though I walk through the valley of the shadow of death, I will fear no evil: for thou art with me; thy rod and thy staff they comfort me.
Thou preparest a table before me in the presence of mine enemies: thou anointest my head with oil; my cup runneth over.
Surely goodness and mercy shall follow me all the days of my life: and I will dwell in the house of the LORD for ever.
- PSALM 23 of The Bible, Authorized King James Version, 1611
- The translators of The Bible, Authorized King James Version, 1611 has a very good command of the English Language. One can find peace and harmony in reciting the above passage.
Why write a blog for the physics of hot air balloon? Well, no important reasons, it just that it’s the 17th Philippine International Hot Air Balloon Festival, and I am frustrated that I didn’t saw any flying balloons but only saw suspended balloons in the air, due not of bad weather, but of strong winds. But it is so cool that I had been to Pampanga, even for a short time.
Anyway, have you been asked yourself why hot air balloons are like that, I mean what is/are so special to them that the have the ability to maintain suspended or floating in the air by using fire?
First I made this guess. Remember the water cycle? Evaporation -> Condensation -> Precipitation. When water evaporates due to sufficient heat, the liquid state of water would turn into vapor quickly. Condensation happens when water vapor transformed to liquid water droplets in the air, creating clouds and fog. How water vapor transform into liquid water droplets? Due to heat, water evaporates, thus turned into its gaseous state. And since water is now in gaseous state, then it will rise from ground up. The molecules of gas are so dense so it will rise, and this rising movement condenses the vapor because the environment where it rises are “more cooler” than that what made them transform from water to vapor, thus creating clouds. Then, because these processes are continuous in nature, there will come a time that the condensed suspensions will fall, in a form of rain or snow, etc. and this is what we call precipitation. Enough for water cycle.
So, what made me relate these things to the WHYs of Hot Air Balloons? I just thought that because of the fire’s extreme temperature, the molecules of the condensed suspensions were made to be lighter than those that are not in the inside of the balloon. And this is just a wild guess. And sequentially, following Archimedes’ Law of Buoyancy, and so it rise. Then, I just check the information regarding hot air balloons, and the following explanations made me happy because my wild guess is somewhat in parallel to the real physics of the hot air balloons. Resources in the internet contains more descriptive, and offered clear explanations of the physics.
Hot air balloon physics is essentially the use of hot air to create buoyancy, which generates lift.
Lift is any force that opposes gravity, and so the one that make an object float.
A hot air balloon consists of a large bag, called an envelope, with a gondola or wicker basket suspended underneath. A burner (with power typically of several megawatts) sits in the basket and is used to heat the air inside the envelope through an opening. This heated air generates lift by way of a buoyant force. The hot air inside the envelope is less dense than the surrounding (cooler) air. This difference in density causes the hot air balloon to be lifted off the ground due to the buoyant force created by the surrounding air. The principle behind this lift is called Archimedes’ principle, which states that any object (regardless of its shape) that is suspended in a fluid, is acted upon by an upward buoyant force equal to the weight of the fluid displaced by the object. So an object floating in water stays buoyant using the same principle as a hot air balloon.
… For a hot air balloon, the upward buoyant force acting on it is equal to the weight (or mass) of the cooler surrounding air displaced by the hot air balloon. Since the air inside the envelope is heated it is less dense than the surrounding air, which means that the buoyant force due to the cooler surrounding air is greater than the weight of the heated air inside the envelope. And for lift to be generated, this buoyant force must exceed the weight of the heated air, plus the weight of the envelope, plus the weight of the gondola, plus the weight of passengers and equipment on board. As a result, the hot air balloon will experience sufficient buoyant force to completely lift off the ground.
Credits to Hot Air Balloon Physics.
Recall also the Gas Laws? One of them relates temperature and pressure.
If the air is unconfined and heated — as would be the circumstances in the atmosphere — the density of the gas decreases. Cold air is more dense (has a greater weight per unit volume) than warm air.
And that is why hot air balloons are able to float in the denser surrounding air.
Relating to Bernoulli’s:
“Bernoulli’s Principle” states that when the velocity of a fluid is faster, the pressure of the fluid is lower. In contrast, this means that slower moving fluids have higher pressure.
Bernoulli’s principle provides a very good explanation of how to a lifting force was created in the hot air balloon. When the temperature is higher, molecules tends to move faster, summing up, the pressure inside the hot air balloon’s envelope is of lower pressure. And since the outer air is cooler than that of the inside then, the pressure outside is greater. The pressure difference creates a lift because the outer air has a high pressure than that of the inside air. In parallel, consider a bubble in water. Why it floats? because the pressure inside the bubble is so small as compared to that of the water, and so the bubble is dense. Similarly to hot air balloon.
A very good description of theory, practices, and history of hot air balloons can be found in Wikipedia.
I enjoyed our trip to Pampanga, though. I saw not only Hot Air Balloons, but also kite flying, parachutes, and aircrafts flying exhibitions, one of my dream studies before - to know how aeroplanes, helicopters, jets, space ships fly… - the physics of aerodynamics, and aeronautics. The World Is Just Awesome… :)
Waaaahhhh… to truly support my intention of following the Principle of Regularity in the design of Instruction Set Architecture, i need to modify AGAIN my design. This is a big mess that I haven’t anticipated before. I do have options to solve this though, but the mere fact that those options could possibly break the beauty of the design, pattern-regularity in the arrangement of the components, and waste of time in thinking what also needs to be done, I think it is more good to revise the design as soon as possible, for this activity is actually delaying my schedule. I thanked God that I found this problem while not yet in the prototyping phase, for this is no good if I’m already at that phase - time, money, effort will be wasted, everything will be thrown in vain.
Before, I have already estimated the cost of doing the module, the components to be use, testing methodology, possible outputs and breaks, resolution if problems exist. Now, everything is thrown to /dev/null. Lessons learned. Modules must be loosely-coupled so that whenever I change or modify or revise the design (again), the other modules will not be affected, somehow.
My notebook, pen, and ruler will be again in war, and I will be again toiling the mountains :’( . Reading plan will be re-schedule, Nihongo and Latin lessons will be stop for the mean time. I will work on this, as fast as possible for it is better to do this now, than to suffer in the future. Quality of work must always be embedded in the design, for this is the Engineer’s responsibility not only to his self, but for those that will use his design - this is part of the Ethics, of Excellence; one of the Moral Values specifically rooted in the culture and tradition of Engineering.