Who Is the Customer?

This is a question that has been asked in business since there were any businesses. It is obvious that the people who pay the way and the financial shareholders have to be happy to have the business do well. But are they the most important to keep a business going strong? Let us take a look at a couple of organizations. The first one is in the airline industry. Have you ever flown? How do you feel about each airline? In college and when I worked for Hewlett Packard, I usually flew on United or Continental (because that is with whom HP had contracts). In Guam, I enjoyed Pan Am and Continental Air Micronesia. On personal business, I almost always took Frontier Airlines. Unfortunately, they have changed with regard to service to customers and the happiness of employees. I now take Southwest, whenever possible. The reason is because of their service. There are some aspects of the “cattle” loading I do not like, but the people are all great. Could that come from the ideals of the Southwest CEO? There is a fascinating article in Forbes entitled Employee-First Approach is Key to Customer Service Success Herb Kelleher, of Southwest Airlines, stated: “Years ago, business gurus used to apply the business school conundrum to me: ‘Who comes first? Your shareholders, your employees, or your customers?’ I said, ‘Well, that’s easy,’ but my response was heresy at that time. I said employees come first and if employees are treated right, they treat the outside world right, the outside world uses the company’s product again, and that makes the shareholders happy. That really is the way that it works, and it’s not a conundrum at all.”

I remember several conversations I had with Rulon Stacey, who was CEO at Poudre Valley Hospital, about how he turned around Poudre Valley Hospital. It seemed that the previous CEOs turned over quickly until Dr. Stacey brought in a new Philosophy. It is best to put it in his own words.

One of Dr. Stacey’s inspirations was the philosophy of Malcolm Baldrige. He researched the Malcolm Baldrige National Quality Award and submitted the application for 2008. Poudre Valley Hospital won the award that year. Rulon would be the first to admit that it was a team effort to win the award, work by all members of the hospital at all levels. The Malcolm Baldrige Award is a very prestigious award that is awarded to health care organizations, educational institutions, and businesses. It is something that all should strive to attain.

As was shown by Southwest Airlines and Poudre Valley Hospital, companies who treat their employees well thrive. Good employees will go out of their way to help customers, which in turn will help the entire organization.

Posted in Uncategorized | Tagged , , , , | 2 Comments

What are you Hearing that has not Been Said?

Inspiration comes in many forms. It is a gift that everyone alive can access. There are many names that inspiration has been given, including enlightenment, insight, personal revelation. Each word has slightly different meanings, but we will call it inspiration for this article.

Inspiration sometimes comes when we least expect it, but it often depends how we have prepared to receive it. From my experience, inspiration often comes to those who have “studied out” the problem to be solved, looked for possible solutions, and who live by consistent and basic principals. Beyond these basics, there are no formulas to receiving inspiration. The title explains how inspiration often happens. We may be thinking how to solve a problem or listening to others talk about some related topic. If we incorporate what we are hearing with our thoughts about what needs to be solved, we can surprise ourselves with elegant and unique solutions to our problems. This can apply to both academics and to our personal lives.

When we are learning a new subject, at first it can be very frustrating, but attempting to do something hard and listening to those who have done it before will give us insights that will often exceed the sum of the words said and the work we have currently done. We have all experienced “ah-hah” moments where “all of a sudden” something on which we have been working makes a lot more sense. All these inspirations are important to us, some are important to our community, and some are important to the entire world. Those inspiration that are important to the entire world usually come in layered inspiration, with the “break through” inspiration coming at a time that is right for people to understand how the results of the inspiration can be used for good. Unfortunately, there will always be some who use it to fight what is good. To continue to be inspired, we must always use the results of our inspiration for the best possible purpose. In recent history, inspirations led to such devices as the television, computers, flat screen televisions and displays, hand held devices, and eventually cell phones. Think about the order of the invention of these devices. Was the order important? Could cell phones be the compact instruments they are today, without the invention of the other items in this list? Inventions are often based on what has been already invented and asking “what if”, “what problem needs to be solved”. and “how can these inventions be combined and be used differently?” Thinking about what we are learning and living a principled life will give us insights that are important to us but are not always related to what we are hearing or what we think we are trying to solve. Thus the importance of the question: “What are we hearing that has not been said?”

Inspiration can be beneficial to personal safety as well as learning and personal growth. How many of us have been inspired to take a different way home or leave at a different time than we were planning to go? Then we learn later that something bad happened when we would have been at a particular location. I was visiting a friend in Los Angeles and was scheduled to take a particular Pan Am flight on 6 August 1974 back to Guam. Chuck and I wanted to talk a bit longer and play a game of tennis, so I changed my flight to TWA a bit later in the day. As we drove to the TWA terminal, we drove by the Pan Am terminal. Someone had put a bomb in the lockers which were in the terminal lobby and it went off about the time I would have been going through the airport. Three were killed and 36 were injured. I am glad I was inspired to have that game of tennis. As we recognize when and how inspiration comes, we will receive more inspiration.

Since I teach school, inspiration is vital to myself and my students. For me, to know what to teach when and how to better understand when students do not understand an important concept which will be needed later in the class. For the students, it is important to have insights about how to solve either assigned problems or personal projects. Often the insights are not what is being said but what is being heard. Believe it or not, they are not always the same. Sometimes it is just a thought that comes to a student that solves a problem. When I was a student, I can now look back and see when this happened to me. I also see it with some of my students, where someone is struggling on a new concept, one of the other students or I say something that might or might not be related to solving the problem, and the student will suddenly come up with a idea to solve the problem. When one student receives inspiration, I encourage them to share that with other students. Insights will build on each other and both students will come up with a solution that is far better than either one could develop on their own. This is true inspiration.

Know that each of us can receive inspiration when we need that inspiration. It may come all at once, or step-by-step. It often comes as a whisper or thought. We need to live in a way that will invite that inspiration into our lives. It will help us succeed in the things that are important in life.

Posted in Attitude, Becoming, Do, Inspiration | Tagged , , | Comments Off on What are you Hearing that has not Been Said?

Interviewing

Knowing how to interview for a computer programming/design position is almost as important as the learning how to program. Over the years, I have had friends who were excellent programmers, including the design process, who lost out to people who were skilled, but far better interviewers. Know what the company wants far before you go in for an interview. If you have friends at the company, find out as much as you can about the types of interviews that are given and what is to be expected in the interview. Research. Always be honest in your answers, with a confidence that you can come up to speed in the new position as quickly as possible. Starting a new job is saved for another article, but just be ready to work hard to come up to speed as quickly as possible, to make yourself as valuable to the company as you can as quickly as you can.

Information Interview

One way to find out more about a company is to do information interviews. The basics are to develop a list of questions about a particular company that you think will help you better understand the company. Find a person who would know the answers to your questions within the company, go through the proper channels to ask the person for an information interview. Remember this is only an information interview, it is NOT a job application or interview. Be up-front as to how much time you think the interview will take. Still to that schedule, unless the person wants to tell you a bit more. Ask your questions, take good notes (you will not remember more than about 15% of what you heard if you do not write it down (or record it) during the meeting. Always write a thank you after the interview.

Interviews with Practitioners

I am in the process of interviewing people who developed systems (usually based on Software) that helps their customers accomplish needed tasks.

Oracle – Chris Branchflower

The first person I interviewed was Chris Branchflower, a manager at Oracle. One of the tasks his team does is developing applications that are used internally. My purpose of this interview was to find out how his company interviews candidates.

Software Mr. Branchflower’s Group uses

  • Oracle JET, an internally developed JavaScript Extension Toolkit.
  • JavaScript
  • TypeScript – tighter form of JavaScript, helps user be more precise in coding.
  • Templates and libraries to reduce redundancies
  • NetBeans IDE with built-in handling of Oracle JET.
  • HTML and CSS
  • Beyond Compare for side-by-side code comparison. It can compare individual files or each file in a given directory one file at a time.
  • Limited use of Java and C++ (mostly for legacy code)
Most of Oracle’s internal products are moving to web-based tools. This is why there is an emphasis on web development tools (like Oracle JET and JavaScript). They are also looking for code that uses similar algorithms where they can create templates or generics to write the algorithm once and use it for multiple data types. Similarly, class libraries that can be reused are also important to good development (do not reinvent something that can be reused). Templates and libraries can be fixed n one place and be corrected every place each are used. They always use peer reviews on all new or corrected code.

Recommended Sites and concepts for Interview Preparation

  • Freecodecamp.org
  • Freecamp Interview Suggestions
  • Know what peer review is and how to use it
  • Have good comments describing the code and modifications to the code at the start of the file.
  • Never use generic names, always us specific names that describe what is being done or what the variable contains.
  • Know what templates (C++/JavaScript) or generics (Java) are and how to use.

Interviewing Hints

It is good that candidates know several different computer languages. It can help people look at problems in different ways and come up with better solutions. Go through the information above to be better at interviewing. The way that Oracle tests applicants their knowledge of programming is to open a window with code that has problems. They will tell you what is desired for the code to do. You are responsible to fix the code. Follow the previously given rules on good coding standards. The site records your every key stroke. Type in the code. never copy the code from another page and then paste the solution into your code. If you paste a chunk of code, that sends up “red flags” and the interview will not go well. The key is to be confident in your own knowledge and present it well. Most interviewers can see through exaggeration or fraudulent clams. Be yourself and know the material the best you can.
Posted in C++, Code Reviews, Computers, Java, Software, Uncategorized | Tagged , , , , , , , | Comments Off on Interviewing

Are You Fair Dinkum?

Are you “Fair Dinkum” or do “you seek confirmation of the genuineness or truth of something” or do you just “go with the flow?” In Australian, this phrase means a bit more, to have total commitment to what we are doing. Do not be lukewarm, be hot or cold. Bilbo Baggins of Bag End, is the protagonist and titular hobbit of the story, the Hobbit. He was asked to go on a great adventure by Gandalf, but had to leave right away. In many ways we are like Bilbo Baggins starting a new adventure when we start a new project or when we start a new job. Are we totally committed, or do we have in the back of our minds that I can always try something different. Even if the project will be over quickly or the job is not our desired job, intend to contribute as much as possible and learn as much as possible. People with whom we work will be grateful and be willing to help in the future. Some of these people become some of our closest friends. If we do not fully commit, this will never happen. When we work with others, our goal should always be to do what is best for ourselves and for others we work with and serve.

Notice that in this article I prefer to use the terms I and we instead of you. There are two reasons. This applies to me as much as to anyone else. Another reason for this is that when a person uses “you” to start a sentence it may make the other person feel less. Part of being fully committed is to be fully committed to good communication. I teach computer science, many of you who are reading this are students in these classes. As an example of this, which feels better? 1) “I noticed a problem with the code that was produced, to solve that problem, the solution is to …” or 2) “You know better than doing that, you have made that mistake so many times.” Which seems better? Which would each of us prefer hearing? How should we talk with others? 1) “I feel concerned about…” or 2) “You always…” Choose words wisely in working with others. Be totally committed to be “Fair Dinkum.”

I am very impressed with my CSC160 class, each student is dedicated to learning new material and doing it well. I enjoy this group and hope I can work with them second semester. There are many aspects of life that can be related to an acorn. Acorns cannot do much at first, but as they blossom as a tree they can produce so much more, including eventually producing other acorns. Using the computer programming example, as we learn new concepts, we can first implement those concepts in our programs, eventually we can go from using the exact code to using the concepts presented to produce new code, then eventually teaching other people how to best use these new concepts (being the producer of more acorns). Are you Fair Dinkum?

Act on best Instincts (or GUT) and not Intentions. Our intuition works far better than our intentions in making good choices. We all have choices, some are good, some are better, and a few can wind up our best decisions. How do we weed out the best solution in a reasonable amount of time. Each situation is different and requires intuition to solve the problem. Even with the best of plans, we are not guaranteed success the first time around. Failure is one of the biggest teachers to bringing success. When Thomas Edison set out to invent the light bulb, he was not successful for at least 5,000 times. When asked about his “failures” he said that he had not failed but learned 5,000 ways to not create a light bulb. As we learn new skills, we will probably learn many ways that will not solve the desired goal. Those attempts are great learning experiences, treat them as such. To be successful, have high concerns and high expectations. Be Fair Dinkum!

Desired solutions change as we learn more. Some new solutions are more difficult to find than solutions we can base on intuition and past experiences. Whenever we come across a tough situation we think we may have not encountered before, look for similarities to solutions we have developed previously. Other people in our organization may also have ideas on how to solve problems. Freely share ideas. We are all better together. As long as we do not worry about who receives the credit, so much better solutions are created. We each need to be our best to encourage others to be. Share knowledge and experience and others will usually do the same. Occasionally we each come across someone who does not freely share, Usually there is a reason for this. Help each other to be the best to have the best possible team to come up with the best possible solution. No one is the keeper of all good ideas and decisions. Be careful and caring, help those who are in new positions that they have not held before. succeed. We are all in this together. From past experiences leading teams, it is vital that the leader listen to all stakeholders and make decisions that are best for all members of the team. Decisions need to be made, but members of the team will have information that is vital to creating the best outcome for the team. Be Fair Dinkum!

Posted in Uncategorized | Tagged , , , , , , , | Comments Off on Are You Fair Dinkum?

Choosing a Career

In order to choose a good career with which you will be happy, start looking at your options early in your schooling. There are several aspects to consider. One of the most important is researching whether the area is increasing or decreasing. There is nothing worse than working hard to gain the knowledge in a field that is disappearing, or minimally not growing. My father wanted to be an astronomer, until he found that the only way a person obtains a job in astronomy is to have the current astronomer die or quit. There was not a lot of opportunity there for a future. He decided to study nuclear physics and that was a very important field in the 50s and 60s. Because I admire my father, I started following his footsteps but upon some research I discovered physics was no longer a growing field. I had the opportunity to work with a computer between my junior and senior year of high school. That is the basis of why I chose Computer Science as my career. Find something you really enjoy doing and then explore possibilities in thate field.

One quote that I recently saw, but did not see who said it fits in with choosing a career that you love;  “You often feel tired, not because you have done too much, but because you have done too little that sparks a light in you.” If any of us feel tired, look for a possible cause in how we spend our days.

You need to also explore for what type of company do you wish to work. Do you even want to work for a company or do you want to start your own business? IEEE (The Institute of Electrical and Electronics Engineers) Spectrum has an excellent article discussing the differences between working for a large corporation and a startup. The article is titled Software Engineering Grads Lack the Skills Startups Need. This article describes some of the differences between working for a large corporation and a small startup. Some of the skills needed in a small company are actually important no matter where you work. They are especially important if you start your own company.

The best gauge for each of us to determine what we would enjoy the most, is knowing our own strengths. Do you know in what areas you are good? Are you exploring different areas? While in high school, explore as many different areas as possible. If you find something you enjoy, explore it even more. Know your own interests, strengths, and skills. Develop your own passion. Ted Talks are a good area to explore different ideas. One on career choices videos is excellent on students finding their own strengths and building on those strengths. It is  by Chris Wejr:

What are your strengths? How can you best use them? How can you help you teaches help you develop these skills? Have you talked with your teacher about your strengths and interests. Most teachers want to help you succeed. Be the best advocate for what is best for you. Come with a good attitude and do your best. Have the grit to accomplish anything. Be your best in all things.

Posted in Attitude, Becoming, Do, Goals, Mentor, Planning, Self-Worth, Serving, Uncategorized | Tagged | Comments Off on Choosing a Career

What is the main difference between C and Fortran?

The answer here is based on FORTRAN IV, the version of FORTRAN with which I have the most familiarity. The newer FORTRANs may have fixed the following problems.

FORTRAN simply means Formula Translation. It is one of the first languages developed after Assembly language. It is more prone to spaghetti code than C since there is no “structure.” FORTRAN was a great development when it was created. It was the first language I learned and I programmed several major projects with it. But it is not a structured language like C.

C is a structured language based on Algol and developed by Bell Laboratories to develop the UNIX operating System. A structured language has indentations and blocks of code surrounded by curly braces “{“ and “}” that indicate the beginning and the end of each block of code.

FORTRAN passes all variables to subroutine by reference. This means that when the variable is changed in the subroutine it is also changed in the calling program, something that can cause problems. C allows calls by either reference or value. By value is the default. By value passes in the value of the variable in the calling routine and then assigns that value to a variable locally defined in the subroutine. C also allows you to recursive call a subroutine. This cannot be done in FORTRAN IV.

Posted in C, Computers, FORTRAN, Software, Uncategorized | Tagged | Comments Off on What is the main difference between C and Fortran?

The Memory Module for the Saturn V rocket

The Saturn V rocket went to the moon in the summer of 1969. Think about the technology back then and how hard it might have been to program the controls for a rocket that was to fly to the moon and back. The astronauts had not control over the flight of the rocket. It was all done by a computer program dependent on memory made up of individual iron cores that were either magnetized for a “1” or demagnetized for a “0” with the additional knowledge that every time an iron core was accessed, it would demagnetize. The programmer had to remember to rewrite the value into each iron core every time it was accessed.

Videos and Descriptions

YouTube has several good videos describing the memory on the Apollo Saturn V’s. The first one describes the memory module:

and Saturn V Computer ring:

in the rocket itself. The second one describes the Apollo rope memory. Advertisements may come up at the start of the videos, since they do not allow embedding. Skip the ads. I will create a Discussion group in either Teams or D2L to allow you to comment.

Re-entry of Apollo XIII

Apollo 13 had a major catastrophe on its flight to the moon. The final problem was that the heat shield was damaged in the explosion. If it failed, the module would not be able to re-enter. Most re-entries took about three minutes for radio silence. After four minutes of silence, the people in the Houston ground-center became very worried.

Margaret Hamilton

Programming of the Saturn V was difficult. It had room for the large ring containing the computer. Think about the Lunar Lander. Every ounce counted, so the computer had to be much smaller and the program had to be very precise. Margaret Hamilton was the person who had the astronauts lives in her programming skills. She had the privilege of celebrating when the first lunar lander landed and took off safely.

Posted in Uncategorized | Comments Off on The Memory Module for the Saturn V rocket

Adding File I/O to a C++ Program

We have already covered console reads from the keyboard and writes to the display using cin and cout. If you do not know how to use cin and cout, please review it before proceeding. ifstream is for an input file connection and an ofstream is for an output file connection. Once set up, they can be used the same as cin and cout respectively. Both ifstream and ofstream are C++ classes and so you need to create an instance of each class in order to use it. You have been using classes throughout your coding work with C++. The one that is easiest to explain is the class “string”. String is a class and the name of your string is the instance of the class. In your header section, it would described as:

string myString = "This is a string."

later in the code, you might want to find its length.

int len = myString.length();           // This finds the length of the string store in your instance of string.

To be fair, there are five different ways to find the length of a string. The first four are more useful than the fifth. https://www.geeksforgeeks.org/5-different-methods-find-length-string-c/

length() is considered a method of the class string and can be called by adding it to the instance of the class string by adding a “.” and then the name of the method to the instance name, as seen in the example above.

Now getting back to ifstream and ofstream.  First create the instance of each class to use.

ofstream outFile;       // define the interface to the file for writing information.
ifstream inFile;        // define the interface to the file for reading information.

The next thing to do is to open the file and seek the start of the file, again done by two methods:

   inFile.open(fileName);
   inFile.seekg(0);

Now to read something from the file one line at a time until no more lines are left in the file and divide up the line into phrases that are separated by commas:

for (string line; getline(inFile, line); ) {   // Read a line, stopping at newline (\n), keep going until EOF (end of file).
       stringstream stream(line);                // Set up the line to be readable through a stream.
      index = 0;
      while (getline(stream, word[index], ',')) {
          cout << headers[index] << word[index] << "\n";
          index++;
      }
      sum += stod(word[2]);
      count++;
 }

Output to a file is even simpler, First open the file. You have to see if the file exists. If it does, give the user the choice to write over the file or append to the file. If the file does not exist, create it.

if (isFileExist(fileName)) {
     // The file exists, so give the user the choice to start a new file or append to the existing file.
     int appendToFile = stoi(input("Do you want to:\n1) Open fresh file?\n2) Append to current file?\nChose"));
     switch (appendToFile)
     {
        case 1:
           outFile.open(fileName);     // Open an existing file, overwriting current content..
           break;
        default:
           outFile.open(fileName, fstream::app); // Open an existing file and allow appending new data.
           break;
      }
}
else outFile.open(fileName, fstream::out);  // Force the creation of the file and then open.

Once you have opened/created the file you can write to it just like you do to the console through cout.

 outFile << employee << "," << birthdate << "," << wages << endl;

The above code will write a comma separated list with three fields to one line in the file. Be sure to close the files when you are done.

outFile.close();
inFile.close();
Posted in Uncategorized | Comments Off on Adding File I/O to a C++ Program

Celebrating July 4th

Celebrating the 4th of July is important to me and others in the United States of America. Each country has special celebrations based on their own history. Ours is declaring independence from England, a treasonous act that could have brought death to each of the signers of the Declaration of Independence. Having an ancestor, Lieutenant Colonel Cornelius Ludlow (who was in charge of General Washington’s rear guard on the move to Valley Forge), it is a doubly important day to me. Unfortunately, a lot of revisionist history has been given out recently. That is a disservice to the memory of those who set the foundation for our nation. Yes, there were actions some of our forefathers did that were not good. But they set the stone in motion that would eventually lead to the emancipation of slaves and the various civil rights that have been put into law more recently.

Two examples of people who were anti-slavery at the time of the American Revelation were Betsy Ross and Edward Coles. Betsy Ross was the creator of the first flag of the United States. Edward Coles is a cousin of one of my ancestors and freed the slaves he inherited.

Betsy Ross grew up as a Quaker, which was opposed to slavery and helped Pennsylvania become the first state to outlaw slavery. Many Presidents, including Barack Obama, used the Betsy Ross flag in their ceremonies.

As you can see by the above picture, the Betsy Ross flag was not controversial at Barack Obama’s Inauguration. He used it to show the heritage of our United States. Betsy Ross was not a slave owner. By all indications, she opposed slavery.

Growing up, I heard the story of Edward Coles long before I knew his name. My mother would tell me about how a group of descendants of freed slaves heard about one of her cousins medical needs and offered support to my mother’s cousin to help him through his struggles. Slavery is wrong. The original Betsy Ross flag shows a field of blue with thirteen stars in a circle. This represents the equality of opportunity for all citizens of the United States. I wish all those who celebrate a wonderful fourth of July. I wish everyone all the freedom and opportunity that you desire.

Happy 4th of July!

Posted in Uncategorized | Comments Off on Celebrating July 4th

C++ Hardest New Concept

I teach C++ programming to beginners. All of them seem to quickly understand simple programs like “Hello World.” They can get the logic down fairly well in simple flow charts. But where they seem to have the most struggles is with loops, especially “for” Loops. The odd thing, they seem to understand while loops and do-while loops more quickly than for loops. They understand that while loops will skip the execution of the code within the while loop if the condition is false. One gave the example of checking the chemicals in a pool to a do-while loop. You need to check the chemical level at least once. If the level is not within the specified “safe” range, then the system will do something to fix the problem and then retest. This will repeat until the chemical levels are within the “safe” parameters.

Students seem to understand that within the while(condition) statement (either at the beginning or end of the loop), the looping will continuing as long as the condition is true. The for loop is like a while loop, except it has all three main parts within the for statement:

  1. the initialization of the variable, like int i = 0
  2. the check the value of the variable to make sure that it meets the condition to continue the loop.
  3. the change of the variable by the desired amount, usually incrementing or decrementing the variable.

A for-loop looks like:

for (initialization, condition, change)

where the condition is the test to see if the looping needs to continue, identical to the condition in a while or do-while loop. a for loop may look like:

for (int i = 0; i < 5; i++) {
    // Do something 5 times.
}

The three parts of a for statement are separated by semi-colons (;), just like at the end of a C++ statement. In the above for-loop:

  1. i is specified as an integer and set to 0.
  2. The condition for the loop to continue is i being less than 5.
  3. At the end of each loop, i is incremented by one.

I tell my class that the only way they can fully understand and appreciate for loops is to write code that uses them, when they need to loop through a specific set of code a specific number of times. The first code I give them to use a for loop is to create a 12×12 multiplication table. Of course, then they want to learn about formatted printing, but that is another story.

Posted in C++, Code Reviews, Computers, Do, Mentor, Software, Uncategorized | Comments Off on C++ Hardest New Concept