Now that you have some basic understanding of classes, it’s time to dive a little deeper into understanding object orientation.
In the last lesson, we observed the following code:
Look at lines 13, 14 and 15, above, where we assign a value to the first_name property of each object. This is the first time we actually do something with “objects of type Person”. In lines 17,18 and 19, we are sending the value stored in the first_name property to the terminal. In all six lines of code, it’s we who are doing something with them (the objects). The objects themselves aren’t doing anything…. yet.
When we write object-oriented code, we use objects created from classes to model the world around us.. or at least.. model the things we need to model for the purpose of our application. Think of yourself as a real world object. In computer terms, you have two categories of capabilities: state and behavior. To be clear, when we say behavior in this sense, we mean the ability to do things.
OK.. let’s address state first. Surely you’ve heard the term “state of mind”, yes? Sometimes your state of mind is happiness.. other times it is sadness. Worry, anxiety, anger.. you get the picture. We also have other “kinds” of state: our body temperature, blood pressure, cholesterol.. any number of things. Very often, the only way to get at that state is to make some sort of inquiry, or test.
Behavior, on the other hand, is the name we give to our ability to perform actions… at least in computer programming parlance. For example, we walk, talk, breathe, eat, read, etc. Notice that some of our behaviors don’t require any additional input, such as walking, or talking, however, others require some sort of additional matter or input. For example, we cannot eat without food, nor can we read without words in front of us. In computer programming terms, these additional things which are required for us to perform some action are called parameters or arguments (there is a subtle difference between the two terms, but for our beginner’s purposes, we’ll think of them as completely synonymous now and differentiate them once you have these concepts more solidly formed in your mind).
Forgetting about Ruby specifically… objects (models of real world things), deal with state and behavior by storing values in properties (for state), and encapsulating behavior inside of methods.
For example.. it makes sense that a human resources application needs to model people. However, it doesn’t need to model human beings in all of our mind-blowing complexity. We only need to model those attributes of a person that are required for the application to do its intended work.
Let us now suppose that we want to give our Person class a new capability… the ability to introduce itself. . Before we can do that though, we need to revisit our class definition. The line that reads “attr_accessor :first_name” is Ruby’s rather kludgy way of declaring a property. It is what makes lines 13-15 above possible. It declares a variable called @first_name. The @ prefix means that this is an instance variable which is visible from anywhere within the class. The name for this visibility is called scope. This concept will become clearer when we add some methods.
To declare a method in Ruby, we begin by using the keyword “def”, followed by the method name. In our case: def say_introduction. We then enter as many lines of code as are required to implement the desired behavior. Finally, we end the method definition with the keyword “end”. Notice that the same keyword, “end” is used to end both the class definition and method definitions.
Notice that we have moved the puts instruction from outside the class to inside the class. Now, when we want to print a greeting, we only need to call the method say_introduction on the object (referenced by a variable, a).
If we save our code in a file called “say_hello.rb” and run it using the ruby command, the output will appear as it does below:
Recall earlier when we described some behaviors as needing a bit more input, such as eating requires food? Also recall that we had a name for the additional information… argument or parameter.
We’re going to add a new method (behavior) to the Person class. We’re going to add the ability to say the greeting to a specific person. Look at the updated class definition below. We’ve created a new method, say_introduction_to, which expects a parameter to be passed to it. If you look at line 27, we do exactly that, passing to it the string “Joe”.
Let’s run this code and see the results below:
This tutorial is written for the person who is an absolute beginner to programming. I will make frequent analogies to real-world things, outside of programming as a means to illustrate important programming concepts in general and object-oriented concepts in particular. Too often, tutorials for a language assume a working knowledge of programming in another language. That is not the case here. If you’ve never written a line of code in your life, you should feel completely comfortable with these lessons.
This course assumes you already have Ruby installed on your computer.
Classes and Objects
Before we can get into Rails, we really need to understand Ruby. There are those who disagree with this statement, but it is helpful, in my opinion, to understand where Ruby, the language, ends and Rails, the framework, begins. We need to get over one other MAJOR mental concept.. We need to understand classes… and objects.
Ruby is what is called an object-oriented language. As such, classes and objects are very central to the design and use of the language. The beginner might ask “What’s a class? What’s an object??”
An analogy (or two) is in order. Consider a cookie cutter. A cookie cutter is a kind of specification, or blueprint for.. cookies. Given cookie dough and a Christmas tree-shaped cookie cutter, one could make zero, one or many cookies using the cookie cutter. In some respects, the cookies will have certain characteristics that will always be the same across all cookies made from it, namely, the outline/shape. They will all be identical. However, it is also possible to use different kinds of dough, sprinkles on some cookies, not others, frosting on some, not others. In this regard, each individual cookie can differ from all the other cookies. In programming terms, we call each cookie an object… and the cookie cutter is the class (blueprint) used to create the objects. Another term you should learn is instance. An instance is merely an individual cookie. Multiple cookies are referred to as “instances”.
The “things” that can vary between objects are called properties. Cookies are a little sloppy. Let’s consider a better example. An automobile assembly line…. and the cars produced by it. Of course, the assembly line is like a “class” and the cars produced are “objects” or “instances of the class” (these are just words.. don’t get too hung up on them….).
Some cars have black interiors, others blue, still others tan. So, “interior color” is something that can vary between vehicles… therefore, interior color is considered a property of the class. So is engine size, so is exterior color, VIN, etc. While every car produced by the assembly line is largely similar, each “instance” can vary in many ways.
Let’s take a look at how this might look in Ruby code:
In the code above, the line that reads “# Class definition: Person” is a special kind of statement in Ruby.. it is called a comment. A comment does not actually do anything… rather it serves as additional information, beyond what merely reading the code alone provides. Why write a comment in our code? Because in the world of professional programming, chances are very good that someday a programmer other than the programmer who originally wrote this code will have to make changes to it. Comments are merely a way of leaving “notes” behind for the next programmer, as two what the original author was thinking at the time they wrote the code.
The next line, “class Person” begins our declaration of the class we’ve decided to name Person. The line that reads “end” ends our class definition. All the lines between “class” and “end” constitute our specification of what we want to the class to do. For now, we’re going to ignore the lines between “class” and “end”, but rest assured they will be thoroughly explained.
Now that we’ve declared or defined a class.. it’s time to use it. Let’s create three instances (objects) of type Person.
This is an important piece of vernacular to get your head around: We create objects of a type, and we say that as “creating objects of type x” (whatever class x happens to be).
Now, you may be asking “What’s up with the letters a, b and c as well as the equals sign in the above examples. Also, what’s up with “.new” at the end of Person? Worthy questions all. Let’s take just one of these lines and examine it in detail.
In the code above, “Person.new” is our way of telling the Ruby interpreter we want to create a new instance of the Person class. More about the interpreter later. Presumably once we create the new instance, we’ll want to do something with it. Just about the only way we can do something with an object is to save a reference to it in something called a variable. A variable is a name we declare simply by typing it and assigning something to it. So then, the code above does three things: 1) creates a new instance of the Person class, 2) declares a variable named “a” and 3) assigns a reference to the newly created Person instance to our variable “a”.
Not long ago I took my trusty Honda Civic in for maintenance. The dealership graciously offers a shuttle service and so I was able to get a ride to work.
“Bob”, the shuttle driver was probably in his late sixties and I was his only passenger this morning.
I don’t recall how it happened, perhaps something was mentioned on the radio, but the topic of conversation turned to professional athletes who kneel as a form of protest during the playing of the national anthem.
It took only a few words for me to know where Bob stood on the issue.
“If they stopped and thought for just one minute about how many soldiers died for their..”
“for their what, Bob? Their freedom?” I interjected.
“Yes!” The word was said with much conviction and energy.
In the very next second though, I saw a cloud of uncertainty wash over his face. Bob looked like a man certain he had been standing on solid rock only to discover it crumbling beneath his feet.
I could tell that the crumbling stone had been some cornerstone of Bob’s belief system. I threw him a lifeline….
“Bob, I served four years in the Marines. I trained for months on how to evacuate American embassies. We did not train to rescue only some Americans. We trained to rescue them all, regardless of their beliefs. I’m a veteran and I have no problem with these guys kneeling during the national anthem. If I don’t, then why should people who never served?”
I have no way of knowing if Bob continues to understand the contradiction and logic errors in his old way of thinking and turned a corner in his life that day, or if he has slid back into the comfort of his old self.
Had I been quicker on my feet that morning, I would have given one more example to Bob. I would have said that if something similar to professional sports existed during Colonial times, I am sure Bob and his brethren would have had no problem with someone refusing to stand during “God Save the Queen”. The only difference between then and now is the oppressor.
In this post, I will explain my theory of how I think the U.S. was complicit in the 2014 annexation of Crimea by Russia.
To begin, you must understand that the “defense industry” in the United States is enormous. The United States spends more on “defense” than the next 20 largest military spenders in the world…COMBINED…. It is an enormous amount of money and where there is money there is corruption and greed.
There is an incestuous circle of defense companies lobbying the U.S. military to continue buying their products. They make their pitches to generals, tasked with selecting and approving weapons systems, and to members of the U.S. Congress who must approve the budgeting of money for the purchasing of these weapons.
The reward for members of congress are large campaign contributions from defense contractors. The reward for generals is the promise of a high-paying position on the company’s board of directors when they retire from active duty military service.
There is a fundamental flaw in the way the U.S. approaches defense. Keep in mind that during the Second World War, there was NO defense industry in the United States. Automobile manufacturers switched over to producing vehicles and planes. Maritime ship builders began producing naval vessels. One of the greatest examples of rapidly arming a military ever to occur happened without a “defense” industry. After the war, these companies simply returned to producing automobiles and maritime ships.
The fundamental flaw is this: Virtually all of the major players in the US defense industry are publicly traded, meaning they have shareholders. Shareholders demand a return on investment and if they do not receive a satisfactory return on investment for a long enough period of time, they vote out the board of directors or demand a change in executive leadership. The only way to keep shareholders happy is to grow the business. But, what do you do if your company’s business is producing weapons of death and destruction? What do you do when the militaries of the world are fully stocked with arms and there are no wars, or no large wars depleting their inventory? The answer is: you create new wars, or you create the fear that there may be a war.
Since September 11, 2001, the U.S. military has been primarily engaged in counter-terrorism efforts. Yes, there have been “battles” in Iraq and Afghanistan, but when placed in historical context, these have not been particularly large military operations.
Considering the vast sums of money the US spends on the military, many people, some in very high places began to question if we (the U.S.) really needed to spend multiple billions of dollars on new aircraft carriers, nuclear weapons, the F-35 fighter jet program, etc. In short, with the Cold War now history, the prospects of the U.S. military engaged in a massive land or sea battles with another world power such as China or Russia, seemed to be growing more dim with each passing year.
With this in mind, let us now look at a few key events in 2014.
On February 23rd, 2014, the New York Times published an article with the following headline: “Pentagon Plans to Shrink Army to Pre-World War II Level”. Such a reduction would necessarily drastically reduce the amount of money spent on military equipment. And this represented a real threat to the profits of the defense industry.
The week of February 28th, a mere one week after the Pentagon announced the reduction of the Army’s size, Russian forces entered Crimea. There had been a build up on the border for months, but until this time, there was no incursion into Crimea.
And here is where my “theory” comes in…. I believe that a delegation of congressmen, all addicted to defense industry campaign contributions, reached out through back channels to the Kremlin and stated something similar to this: “We know you very much want to annex Crimea. Perhaps you are concerned about the international response or perhaps even retribution by the United States. In this matter our interests are aligned. We prefer that you do annex Crimea, though as peacefully as possible. Publicly, we (the U.S.), will sharply denounce Russia’s actions, but there will be no tangible response from the U.S.
The purpose of this, I contend, was to justify the statements that followed such as “Russia is back! They have a strong military and are willing to use it! We cannot allow
our military to be shrunk as the Pentagon has suggested. We must maintain our dominant position in the world to keep Russia in check and not allow it to become the dominant military in the world.”
Since 2014, and especially since the election of Donald Trump as president, the only changes to the size of the American military has been to grow it and the plans are to grow it even more.
In corporate boardrooms all across the defense industry, anxiety has been replaced with smiles once again.
I Love Science (it’s a fact!)
Because I know what I am about to say will be taken out of context any number of ways, let me start by saying: Science is wonderful! Science is fantastic! I love science!
I will stop short of the popular meme: “I <expletive> Love Science!” smugly worn as a badge of intellectual honor on the likes of Facebook.
What is science? I Googled around a bit and while there were any number of sources I could have used, I quite liked the explanation on NASA’s website, some of which appears at the top of this post.
I acknowledge that I am forever indebted to science for the vaccines which have spared me from horrendous illness, for the clean drinking water that flows from taps because of the existence of water treatment facilities and for a million other marvels. Every day, all day, I am surrounded by the fruits of science and they make all our lives better. Hopefully I do not need write a “War and Peace” length treatise to demonstrate that I really do get “science” and that “it is good”.
As much as I appreciate science, I am also aware of its limitations. Referring back to our definition we’ll find the words “observing and recording”. Based on this we must concede that “observing and recording” requires an intellect, which can only mean a human is involved. Though we may be at the top of the totem-pole among all the creatures of the earth, human beings are still fallible and that includes scientists.
Ruh-Roh! Trouble In Paradise
To illustrate that scientists and their work are indeed fallible, take a look at this list of what were once accepted scientific theories but later superseded by better science. This does not even include the thousands of proclamations that never rise to the level of “accepted theory” but that you’ve no doubt heard or read about. You may have even adjusted your life because of them only to be told later “Oops! Sorry guys….” Example:
“Wait! Now they’re saying drinking two cups of coffee a day is bad for you? Two years ago it was bad for you too, but last year they reversed that and said it was good for you. Now they’ve changed their mind again!?”
Because humans are fallible, scientists are a smart enough lot to leverage that old adage “two heads are better than one” or “there’s strength in numbers” and thus a couple of centuries ago the “peer review” was born. The crib-notes version of it goes like this:
“Hey guys, I’ve had this thought for a while now…. I then formulated a hypothesis and I’ve conducted some experiments. The results seem to support my hypothesis. Here’s my hypothesis and the data. Since you’re all scientists in the same field of study as me…what do you think?“
No doubt this improved things, but not everything…. as several of the disproved theories on the list referenced above were accepted as scientific theories since the age of peer review.
Today’s Theory is in Tomorrow’s Trash Heap
You would think as time marches on, scientific rigor would always be on the increase and that the vast majority of those things finally declared to be scientific theory would stand the test of time, but…you would be wrong about that.
In 2013, the U.K’s “The Guardian” ran a piece entitled Not breaking news: many scientific studies are ultimately proved wrong!
The subtitle of the piece was “Most theories are eventually consigned to the rubbish heap, but this is scientific business as usual”
The article’s author was Dr. Sylvia McLain. She runs a biophysics lab at a school named Oxford. You may have heard of it. In the piece, Dr. McLain asserts:
That most scientific studies are ultimately wrong is normal for science. There are more theories in the graveyard of science than theories that stand the test of time. Why? Because new data is always emerging and theories have to be adjusted. Theories are only as good as theories are, until new data comes along and ruins them.
This leads to my main point. Science is not static, it is not final and it certainly is not ever “settled”. By its very nature science can never be irrevocably settled.
Science has not yet revealed all of reality
Even among the scientific theories that have stood the test of time, a mere glance at the timeline of scientific discoveries demonstrates very clearly that every scientific discovery is nothing more than marking the beginning of mankind’s awareness of that which was already there. I don’t mean to dismiss the substantial education, training and intellect required to make these discoveries, but it doesn’t change the fact that what was discovered was already there.
With the understanding then, that science is simply the gradual awareness of what already exists, can’t we say that there are most likely all sorts of realities that surround us that science simply hasn’t “revealed” to us yet?
The Really Big Stuff
All of this then brings us to the question of God, of creation vs. evolution…and all that stuff, that really BIG stuff.
I did not write this post to prove to you that there is a God, or that mankind was divinely created. I cannot prove that and I admit it.
I took this time to demonstrate that not only are you misinformed, but embarrassingly so. You chant “science!” with righteous smugness, with the assuredness of one who holds but a single card, convinced it is the trump card. All the while, you don’t even understand the limitations of your argument. Don’t take it out on me when you realize the card you hold is the joker.
Science cannot, and will not ever be able to prove that God does not exist. It can only show that he has not been proven to exist, yet. This is not because of the greatness of God, though He is great, it is because of the limitations of science. Saying that “science has limitations” doesn’t make me a hater, a denier or a religious zealot; it means that I am aware of how scientific theories rise and then collapse when faced with new information. Similarly, I am aware that scientific discovery is merely mankind’s newfound awareness of what was already there. It is the essence and nature of science itself. Hopefully this has been made abundantly clear by now.
With this background in place, I was about to start on the whole Darwin’s Theory thing, but it’s taken two hours just to get this far, so I’m going to leave that until the next post. Peace, out.
One of the things we’re always told is that God answers prayers in His time, not ours.
When I was fourteen years old, my parents divorced. I took it very hard. Though I wasn’t particularly religious (I had stopped going to church a few years before), I remember praying every night for months, “Please God, let my parents get back together.”
Not only did my parents not get back together, but they both remarried. The marriage of my mother and step-father lasted only about seven years. Truth be told, I did not care for the man in the least.
When my father first married my step-mother I would visit them occasionally on weekends. I remember my new step-mom, Linda, and the efforts she made to be kind to me. I didn’t rebuke her, but I didn’t have the appreciation for her kindness that I should have. I was only sixteen and still very wounded.
Time heals all wounds, no matter the scar tissue left behind and I did come to love Linda very much. I loved her as much as any child could love a step-mom. My mom and Linda had even become friends and used to talk at length over dinner on holidays.
Thirty three years passed. Then one day, Linda passed away, suddenly, unexpectedly. It was the first time in my adult life that someone very close to me had passed away. And it hurt. Badly.
About a year after Linda’s passing, of all the unexpected things in the world, my parents got back together. I confess at first, it felt very weird. It felt to me as if Linda was being slighted in some way. Eventually that feeling passed, passing more easily as I reflected that my parents were married for nearly fifteen years before my dad and Linda married. It was right that they were together.
Now it is four years later. Tomorrow, my wife and two daughters and my sister, her daughter, son-in-law and three grandchildren will leave on vacation together, with our parents, our Mom and Dad. I’ve not been on a vacation with my parents since my early teens. I am ecstatic. It would be easy to mourn the lost years, but I’ll not waste my time. I’m overjoyed. My prayers have been answered…in God’s time.
Pizza mogul, sports-team owner and entertainment magnate Mike Ilitch passed away last Friday, February 10, 2017. I’ve worked at Little Caesars’ corporate headquarters for the last eighteen months but sadly, never had the opportunity to meet Mike Ilitch in person.
Fortunately, not having the opportunity to meet “Mr. I” didn’t preclude me from hearing great stories about him, firsthand, from his son Chris who serves as CEO of Ilitch Holdings.
It was at a day-long internal conference about a year ago and I had the good fortune to be seated at the same table as Chris. During lunch I asked him the question “I understand your dad was both a minor league ball player and a Marine. Those are both young men’s activities. How did he do both? What was the timeline on that?”. What follows is the gist of the remarkable story Chris told to me. Note: I didn’t record the conversation so it’s not word for word, but it is as accurate as I can be about something told to me a year ago.
Mike Ilitch was a very good baseball player in high school. So good in fact that he enjoyed an open-invitation to workout after school with the Tigers whenever they were in town.
Upon his graduating, the Tigers offered a contract to Mike to which he replied “I want a signing bonus”. The Tigers responded with an offer of a $5,000 signing bonus. Mike countered with “I want a $10,000 signing bonus, or I’m going to join the Marine Corps.” The Tigers didn’t budge. At this point in the story, Chris Ilitch said that his dad, while telling him this story looked at Chris and said “first big mistake I ever made.”
The year was 1948 and Mike shipped off to bootcamp. Following bootcamp he was assigned to duty in Florida. Mike’s ability at baseball didn’t go unnoticed and he ended up playing ball for his unit against the teams from other units.
In 1950, the Korean War broke out. Mike went to his commanding officer and asked to be shipped out to Korea. The C.O. was fond of his winning baseball team and even more fond of its star player and thus told Ilitch “You’re not going anywhere. You’re staying right here and playing ball.”.
As time passed, Ilitch felt bad about the young marines that passed through the base on their way to Korea. He wanted to do his duty and so time and again he appealed to the C.O. for orders to Korea and again and again the request was denied.
One thing was already apparent in the young Ilitch: He did not give up easily. After repeated requests, his C.O. finally relented and Ilitch received orders for Korea. After traveling to San Diego by train, Mike boarded a ship, a troop transport, bound for Korea. Amphibious troop transport ships have a distinguishing feature in that the hull is comparatively “flat bottomed” and as a result do not cut smoothly through the water. In short, it was a rough ride. For nearly a week the marines were cramped below deck, rolling, swaying and… vomiting. At this point, once again, Chris said that his father told him “second big mistake I ever made.”.
One day land came into view on the horizon. Ilitch thought “well, this is it. I’m going into combat.” However as the ship drew closer to land and docked, it turned out it wasn’t Korea at all, but Hawaii. The general in charge of the Marine Corps base on Hawaii had heard there were a couple of young stellar ballplayers on the ship, one of which was Ilitch, and ordered them off the ship, giving them new orders to Hawaii. The troop transport continued on to Korea without Mike. Ilitch spent the remainder of his four year tour playing baseball in the middle of the Pacific Ocean.
Upon returning home to Detroit, he approached the Tigers to let them know he was back and asked if they still wanted him to play for them. They did. Ilitch said “before, you offered me a $5,000 signing bonus.” The response was the Tigers organization was “you’re four years older now. The signing bonus is $3,500” to which Ilitch quickly replied “I’ll take it!” (he was learning…).
While in the minors, Ilitch rode the team bus all across the country. In many of the small towns he noticed there was nowhere to get pizza, a treat he liked very much. He thought to himself “if this baseball thing doesn’t work out, I think I’m going into the pizza business.”
On the field, Ilitch thrived. He batted over .300, which for a shortstop is excellent. Never one to “wait” for things to happen, Mike rather audaciously called the Tigers general manager and demanded to know why he wasn’t being called up to “the bigs”. “I’m killing the ball down here. Why am I not being called up?”
On another team or at another time, Mike probably would have been called up to the parent team, but at the time, the Tigers’ shortstop was a fellow named Harvey Kuenn, who had just broken in with the Tigers during Ilitch’s last year in the Marine Corps. True, Mike was hitting over .300 in the minors, but Kuenn batted .325 during his rookie year with the big club and was two years younger than Ilitch. Though never elected into baseball’s Hall of Fame, Kuenn was one of those players “on the bubble” – in the discussion, but never quite making it into “the Hall”. In short, the Tigers “were set” at shortstop.
Had it not been for the twist of fate that the Tigers had a shortstop who could smoke the ball to all fields, Ilitch almost certainly would have enjoyed a career as a big league ballplayer and things would have been quite different as a result.
Your Interpals profile is the embodiment of that old saying “You get out of it what you put into it”.
Far too many profiles on Interpals consist only of a picture, a user name and “Friendship” selected as one of the “Looking for” items With so little information, how can someone decide if they have enough in common with you to initiate contact?
Let’s go though the user profile one item at a time:
Username – Other than being unique, it is not really important what it is.
SCAMMER ALERT: Do not enter anything that can be used to uniquely identify you. Example: Your email address, your first and last name, your cell phone number, etc.. Using any of these, or other things like it is a TERRIBLE idea.
Name – Simply put your first name here. Period.
Birthdate – This information is required. This is simple enough. Interpals does not display this birthdate to others, except for those to whom you have extended or accepted a “Friend” request. Presumably you trust someone pretty well by the time this takes place.
Sex – This information is required. You might think that this is a very simple bit of information to enter; after all, there are only two possibilities. Still, it is astounding to see the number of male users who appears as female on Interpals. Always double-check this field before saving your information.
Current City – This information is required. You may or may not want to use your actual current city here. I definitely recommend putting a city with the country you’re currently living in, but it need not be your current city. It all comes down to how comfortable you having strangers know the city in which you live.
It is certainly arguable that the U.S. government favors the welfare of its corporations over the welfare of its citizens. In a twist of poetic justice, its blatant disregard for the rights of its citizens is dealing a blow to the gut of one of its newest and most promising industries, cloud computing.
As it becomes more and more clear that U.S. surveillance programs don’t limit their insatiable appetite for data to U.S. citizens, “data sovereignty laws” are being enacted by governments around the world. These laws require that multi-national corporations doing business in a particular country store their citizens information in that country. Some countries may even strengthen these laws in the near future, covering data in motion as well as data at rest. In short, these governments do not trust the surveillance programs of the United States and are acting to protect their citizens. (What a concept,right?)
Cloud computing providers such as Microsoft’s Azure and Amazon’s AWS are not at all structured to support this turn of events. Far from it. Rather, they are designed to replicate data around the world into their various data centers in order to provide fast performance. These data centers exist in relatively few countries, selected for a combination of proximity to population centers and to the Internet backbone.
The effect of all this is not just a blow to cloud computing providers. By requiring multi-national corporations (read: “U.S. multi-national corporations”) to keep an individual’s data in the country of their citizenship is a very costly proposition. It may make doing business in certain countries no longer financially feasible.
Congratulations, U.S. government. The long arm of the NSA has shot many of your corporations and a promising new industry in the foot. Cheers!