“
He knew what he was experiencing was a basic error in programming, and he wished he could open up his brain and delete the bad code. Unfortunately, the human brain is every bit as closed a system as a Mac.
”
”
Gabrielle Zevin (Tomorrow, and Tomorrow, and Tomorrow)
“
I didn’t even know what was wrong. Everything. Myself. I didn’t know. How come everyone else could function and I couldn’t? How could everyone live properly yet I had some sort of error in my programming?
”
”
Alice Oseman (Loveless)
“
Software testing is a sport like hunting, it's bughunting.
”
”
Amit Kalantri
“
Never test for an error condition you don't know how to handle.
”
”
Daniel Keys Moran
“
From a shamanic perspective, the psychic blockade that prevents otherwise intelligent adults from considering the future of our world - our obvious lack of future, if we continue on our present path - reveals an occult dimension. It is like a programming error written into the software designed for the modern mind, which has endless energy to spend on the trivial and treacly, sports statistic or shoe sale, but no time to spare for the torments of the Third World, for the mass extinction of species to perpetuate a way of life without a future, for the imminent exhaustion of fossil fuel reserves, or for the fine print of the Patriot Act. This psychic blockade is reinforced by a vast propaganda machine spewing out crude as well as sophisticated distractions, encouraging individuals to see themselves as alienated spectators of their culture, rather than active participants in a planetary ecology.
”
”
Daniel Pinchbeck (2012 The Year of the Mayan Prophecy)
“
Computers need to bond with their users to avoid panicking with fatal errors, like skittish horses at spring thunder.
”
”
Dmitry Galuscenko
“
Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software-development techniques you use determine how many errors testing will find.
”
”
Steve McConnell (Code Complete: A Practical Handbook of Software Construction)
“
I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out it was an awful lot of fun. Of course the paying customers got shafted every now and then and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them setting them off in new directions and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all I hope we don’t become missionaries. Don’t feel as if you’re Bible sales-men. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands I think and hope is intelligence: the ability to see the machine as more than when you were first led up to it that you can make it more.
”
”
Alan J. Perlis
“
In 1953, Allen Dulles, then director of the USA Central Intelligence Agency (CIA), named Dr Sidney Gottlieb to direct the CIA's MKULTRA programme, which included experiments conducted by psychiatrists to create amnesia, new dissociated identities, new memories, and responses to hypnotic access codes. In 1972, then-CIA director Richard Helms and Gottlieb ordered the destruction of all MKULTRA records. A clerical error spared seven boxes, containing 1738 documents, over 17,000 pages. This archive was declassified through a Freedom of Information Act Request in 1977, though the names of most people, universities, and hospitals are redacted. The CIA assigned each document a number preceded by "MORI", for "Managament of Officially Released Information", the CIA's automated electronic system at the time of document release. These documents, to be referenced throughout this chapter, are accessible on the Internet (see: abuse-of-power (dot) org/modules/content/index.php?id=31). The United States Senate held a hearing exposing the abuses of MKULTRA, entitled "Project MKULTRA, the CIA's program of research into behavioral modification" (1977).
”
”
Orit Badouk Epstein (Ritual Abuse and Mind Control)
“
I like my code to be elegant and efficient. The logic should be straightforward to make it hard
for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance
close to optimal so as not to tempt
people to make the code messy with unprincipled optimizations. Clean code does one thing well.
-Bjarne Stroustrup, inventor of C++
and author of The C++ Programming
Language
”
”
Robert C. Martin (Clean Code: A Handbook of Agile Software Craftsmanship)
“
[A]s a species, we are very poor at programming. Our brains are built to understand other humans, not computers. We’re terrible at forcing our minds into the precise modes of thought needed to interact with a computer, and we consistently make errors when we try. That's why computer science and programming degrees take such time and dedication to acquire: we are literally learning how to speak to an alien mind, of a kind that has not existed on Earth until very recently.
”
”
Stuart Armstrong (Smarter Than Us: The Rise of Machine Intelligence)
“
The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs.
”
”
Maurice Wilkes (Memoirs of a Computer Pioneer (History of Computing))
“
Why is it that we reward programmers who work all night to remove the errors they put into their programs, or managers who make drastic organizational changes to resolve the crises their poor management has created? Why not reward the programmers who design so well that they don’t have dramatic errors, and managers whose organizations stay out of crisis mode? Organizing
”
”
Gerald M. Weinberg (Becoming a Technical Leader)
“
At the first such gathering, I politely sat with them for half an hour, drank some vodka, and even recited a toast about how great it was that Gulya had such great friends. This proved to be a tactical error, since afterward Gulya wanted me to drink vodka and recite toasts with them every night, which was not compatible with my program of study of the great Uzbek language.
”
”
Elif Batuman (The Possessed: Adventures With Russian Books and the People Who Read Them)
“
The universities are an absolute wreck right now, because for decades, any graduate student in the humanities who had independent thinking was driven out. There was no way to survive without memorizing all these stupid bromides with this referential bowing to these over-inflated figures like Lacan, Derrida, Foucault, and so on. Basically, it's been a tyranny in the humanities, because the professors who are now my age – who are the baby boomer professors, who made their careers on the back of Foucault and so on – are determined that that survive. So you have a kind of vampirism going on.
So I've been getting letters for 25 years since Sexual Personae was released in 1990, from refugees from the graduate schools. It's been a terrible loss. One of my favorite letters was early on: a woman wrote to me, she was painting houses in St. Louis, she said that she had wanted a career as a literature professor and had gone into the graduate program in comparative literature at Berkeley. And finally, she was forced to drop out because, she said, every time she would express enthusiasm for a work they were studying in the seminar, everyone would look at her as if she had in some way created a terrible error of taste. I thought, 'Oh my God', see that's what's been going on – a pretentious style of superiority to the text.
[When asked what can change this]: Rebellion! Rebellion by the grad students. This is what I'm trying to foment. We absolutely need someone to stand up and start criticizing authority figures. But no; this generation of young people have been trained throughout middle school and high school and college to be subservient to authority.
”
”
Camille Paglia
“
Having a fear of failure means you believe that even the smallest error could be evidence that you are a worthless and awful person. Having a fear of being imperfect means that it is difficult for you to accept yourself as you are—imperfect and, therefore, perfectly human—and so you interpret any criticism, rejection, or judgment by others as a threat to your very tenuous grasp on perfection. Having a fear of impossible expectations means fearing that even after you’ve worked hard and achieved the goals set for you, your only reward will be continually higher and more difficult goals to achieve, with no rest and no time to savor your achievements.
”
”
Neil A. Fiore (The Now Habit: A Strategic Program for Overcoming Procrastination and Enjoying Guilt-Free Play)
“
The most tragic error into which older people can fall is one that is common among educators and politicians. It is to use youth as scapegoats for the sins of their elders. Is the nation wasting its young men and its honor in an unjust war? Never mind — direct your frustration at the long-haired young people who are shouting in the streets that the war must end. Curse them as hippies and immoral, dirty fanatics; after all, we older Americans could not have been wrong about anything important, because our hearts are all in the right place and God is always on our side, so anyone who opposes us must be insane, and probably in the pay of the godless Communists. Youth is in the process of being classed with the dark- skinned minorities as the object of popular scorn and hatred. It is as if Americans have to have a "nigger," a target for its hidden frustrations and guilt. Without someone to blame, like the Communists abroad and the young and black at home, middle America would be forced to consider whether all the problems of our time were in any way its own fault. That is the one thing it could never stand to do. Hence, it finds scapegoats. Few adults, I am afraid, will ever break free of the crippling attitudes that have been programmed into their personalities – racism, self-righteousness, lack of concern for the losers of the world, and an excessive regard for property. One reason, as I have noted, is that they do not know they are like this, and that they proclaim ideals that are the reverse of many of their actions. Such hypocrisy, even if it is unconscious, is the real barrier between them and their children.
”
”
Shirley Chisholm (Unbought and Unbossed)
“
There is humility in confession. A recognition of flaws. To hear myself say out loud these shameful secrets meant I acknowledged my flaws. I also for the first time was given the opportunity to contextualize anew the catalogue of beliefs and prejudices, simply by exposing them to another, for the first time hearing the words ‘Yes, but have you looked at it this way?’ This was a helpful step in gaining a new perspective on my past, and my past was a significant proportion of who I believed myself to be. It felt like I had hacked into my own past. Unravelled all the erroneous and poisonous information I had unconsciously lived with and lived by and with necessary witness, the accompaniment of another man, reset the beliefs I had formed as a child and left unamended through unnecessary fear. Suddenly my fraught and freighted childhood became reasonable and soothed. ‘My mum was doing her best, so was my dad.’ Yes, people made mistakes but that’s what humans do, and I am under no obligation to hoard these errors and allow them to clutter my perception of the present. Yes, it is wrong that I was abused as a child but there is no reason for me to relive it, consciously or unconsciously, in the way I conduct my adult relationships. My perceptions of reality, even my own memories, are not objective or absolute, they are a biased account and they can be altered. It is possible to reprogram your mind. Not alone, because a tendency, a habit, an addiction will always reassert by its own invisible momentum, like a tide. With this program, with the support of others, and with this mysterious power, this new ability to change, we achieve a new perspective, and a new life.
”
”
Russell Brand (Recovery: Freedom from Our Addiction)
“
Intelligence involves a great deal more than the ability to follow rules ( which is what chess-playing program does). It is also the ability to make up the rules for oneself, when they are needed, or to learn new rules through trial and error.
”
”
Steve Grand (Creation: Life and How to Make It)
“
I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.
”
”
Alan J. Perlis (Structure and Interpretation of Computer Programs)
“
Sam knew the foot was gone. He could see it was gone. He knew what he was experiencing was a basic error in programming, and he wished he could open up his brain and delete the bad code. Unfortunately, the human brain is every bit as closed a system as a Mac.
”
”
Gabrielle Zevin (Tomorrow, and Tomorrow, and Tomorrow)
“
The goal is to minimize the amount of a program you have to think about at any one time. You might think of this as mental juggling—the more mental balls the program requires you to keep in the air at once, the more likely you'll drop one of the balls, leading to a design or coding error.
”
”
Steve McConnell (Code Complete)
“
efficiently means providing slots in our schedules where we can maintain an attentional set for an extended period. This allows us to get more done and finish up with more energy. Related to the manager/worker distinction is that the prefrontal cortex contains circuits responsible for telling us whether we’re controlling something or someone else is. When we set up a system, this part of the brain marks it as self-generated. When we step into someone else’s system, the brain marks it that way. This may help explain why it’s easier to stick with an exercise program or diet that someone else sets up: We typically trust them as “experts” more than we trust ourselves. “My trainer told me to do three sets of ten reps at forty pounds—he’s a trainer, he must know what he’s talking about. I can’t design my own workout—what do I know?” It takes Herculean amounts of discipline to overcome the brain’s bias against self-generated motivational systems. Why? Because as with the fundamental attribution error we saw in Chapter 4, we don’t have access to others’ minds, only our own. We are painfully aware of all the fretting and indecision, all the nuances of our internal decision-making process that led us to reach a particular conclusion. (I really need to get serious about exercise.) We don’t have access to that (largely internal) process in others, so we tend to take their certainty as more compelling, in many cases, than our own. (Here’s your program. Do it every day.)
”
”
Daniel J. Levitin (The Organized Mind: Thinking Straight in the Age of Information Overload)
“
One of the paradoxes of defensive programming is that during development, you'd like an error to be noticeable—you'd rather have it be obnoxious than risk overlooking it. But during production, you'd rather have the error be as unobtrusive as possible, to have the program recover or fail gracefully.
”
”
Steve McConnell (Code Complete)
“
one of the essential insights gained by Turing as he observed his “children” was that if machines were ever to advance toward true intelligence, they would have to be fallible: they would need to be capable not only of error and of deviation from their original programming but also of random and even nonsensical behavior. Turing believed that such randomness would play an important part in intelligent machinery, because it allows for novel and unpredictable responses, creating a large variety of possibilities among which a search program could then find the appropriate action for each particular circumstance.
”
”
Benjamín Labatut (The MANIAC)
“
One of the greatest problems for systems programmers (the people who write compilers, interpreters, assemblers, and other programs to be used by many people) is to figure out how to write error-detecting routines in such a way that the messages which they feed to the user whose program has a "bug" provide high-level, rather than low-level, descriptions of the problem. it is an interesting reversal that when something goes wrong in a genetic "program" (e.g., a mutation), the "bug" is manifest only to people on a high level - namely on the phenotype level, not the genotype level. Actually, modern biology uses mutations as one of its principal windows onto genetic processes, because of their multilevel traceability.
”
”
Douglas R. Hofstadter
“
I find no reason to think that aging is genetically determined. Genes do not provide information for the development of the individual beyond growth and the reproductive process in which the genes are transmitted to the next generation. Once past the reproductive stage, the individual has served the purposes of preservation of the species, and then he is on his own. The wrinkled human face is the victim of gravity and of cumulative errors in the reproduction of cells. Since aging is not programed, but is a badly improvised interference with youthful beauty, we have improvised an operation to counteract its effects. Aging is a form of misinformation. If we get the facts right, you will be able to read it in our faces. ("Motherhood")
”
”
William S. Wilson (Why I Don't Write Like Franz Kafka)
“
In testing primality of very large numbers chosen at random, the chance of stumbling upon a value that fools the Fermat test is less than the chance that cosmic radiation will cause the computer to make an error in carrying out a "correct" algorithm. Considering an algorithm to be inadequate for the first reason but not for the second illustrates the difference between mathematics and engineering.
”
”
Harold Abelson (Structure and Interpretation of Computer Programs)
“
Code should be obvious: When someone needs to make a change, they should be able to find the code to be changed easily and to make the change quickly without introducing any errors. A healthy code base maximizes our productivity, allowing us to build more features for our users both faster and more cheaply. To keep code healthy, pay attention to what is getting between the programming team and that ideal, then refactor to get closer to the ideal. But the most important thing to learn from this example is the rhythm of refactoring. Whenever I’ve shown people how I refactor, they are surprised by how small my steps are, each step leaving the code in a working state that compiles and passes its tests. I was just as surprised myself when Kent Beck showed me how to do this in a hotel room in Detroit two decades ago. The key to effective refactoring is recognizing that you go faster when you take tiny steps, the code is never broken, and you can compose those small steps into substantial changes. Remember that—and the rest is silence.
”
”
Martin Fowler (Refactoring: Improving the Design of Existing Code (Addison-Wesley Signature Series (Fowler)))
“
In 2003, a Dutch clinical psychologist named Christof van Nimwegen began a fascinating study of computer-aided learning that a BBC writer would later call “one of the most interesting examinations of current computer use and the potential downsides of our increasing reliance on screen-based interaction with information systems.”26 Van Nimwegen had two groups of volunteers work through a tricky logic puzzle on a computer. The puzzle involved transferring colored balls between two boxes in accordance with a set of rules governing which balls could be moved at which time. One of the groups used software that had been designed to be as helpful as possible. It offered on-screen assistance during the course of solving the puzzle, providing visual cues, for instance, to highlight permitted moves. The other group used a bare-bones program, which provided no hints or other guidance. In the early stages of solving the puzzle, the group using the helpful software made correct moves more quickly than the other group, as would be expected. But as the test proceeded, the proficiency of the members of the group using the bare-bones software increased more rapidly. In the end, those using the unhelpful program were able to solve the puzzle more quickly and with fewer wrong moves. They also reached fewer impasses—states in which no further moves were possible—than did the people using the helpful software. The findings indicated, as van Nimwegen reported, that those using the unhelpful software were better able to plan ahead and plot strategy, while those using the helpful software tended to rely on simple trial and error. Often, in fact, those with the helpful software were found “to aimlessly click around” as they tried to crack the puzzle.
”
”
Nicholas Carr (The Shallows: What the Internet is Doing to Our Brains)
“
We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.
A computational process is indeed much like a sorcerer's idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer's spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
A computational process, in a correctly working computer, executes programs precisely and accurately. Thus, like the sorcerer's apprentice, novice programmers must learn to understand and to anticipate the consequences of their conjuring. Even small errors (usually called bugs or glitches) in programs can have complex and unanticipated consequences.
”
”
Harold Abelson (Structure and Interpretation of Computer Programs)
“
Inheritance has recently fallen out of favor as a programming design solution in many programming languages because it’s often at risk of sharing more code than necessary. Subclasses shouldn’t always share all characteristics of their parent class but will do so with inheritance. This can make a program’s design less flexible. It also introduces the possibility of calling methods on subclasses that don’t make sense or that cause errors because the methods don’t apply to the subclass. In addition, some languages will only allow a subclass to inherit from one class, further restricting the flexibility of a program’s design.
For these reasons, Rust takes a different approach, using trait objects instead of inheritance.
”
”
Steve Klabnik (The Rust Programming Language)
“
Why do we focus on certain things at the expense of others? We will risk our lives to save a person from drowning, yet not make a donation that could save dozens of children from starvation. We install solar panels when their impact on CO2 emissions is minimal - and indeed may have a net negative effect if manufacturing and installation are taken into account - rather than contributing to more efficient infrastructure projects.
I consider my own decision-making in these areas to be more rational than that of most people but I also make errors of the same kind. We are genetically programmed to react to stimuli in our immediate vicinity. Responding to complex issues that we can not perceive directly requires the application of reasoning, which is less powerful than instinct.
”
”
Graeme Simsion (The Rosie Project (Don Tillman, #1))
“
Everything we do and say will either underline or undermine our discipleship process.
As long as there is one unsaved person on my campus or in my city, then my church is not big enough.
One of the underlying principles of our discipleship strategy is that every believer can and should make disciples.
When a discipleship process fails, many times the fatal flaw is that the definition of discipleship is either unclear, unbiblical, or not commonly shared by the leadership team.
Write down what you love to do most, and then go do it with unbelievers. Whatever you love to do, turn it into an outreach.
You have to formulate a system that is appropriate for your cultural setting. Writing your own program for making disciples takes time, prayer, and some trial and error—just as it did with us. Learn and incorporate ideas from other churches around the world, but only after modification to make sure the strategies make sense in our culture and community.
Culture is changing so quickly that staying relevant requires our constant attention. If we allow ourselves to be distracted by focusing on the mechanics of our own efforts rather than our culture, we will become irrelevant almost overnight.
The easiest and most common way to fail at discipleship is to import a model or copy a method that worked somewhere else without first understanding the values that create a healthy discipleship culture. Principles and process are much more important than material, models, and methods.
The church is an organization that exists for its nonmembers.
Christianity does not promise a storm-free life. However, if we build our lives on biblical foundations, the storms of life will not destroy us. We cannot have lives that are storm-free, but we can become storm-proof.
Just as we have to figure out the most effective way to engage our community for Christ, we also have to figure out the most effective way to establish spiritual foundations in each unique context.
There is really only one biblical foundation we can build our lives on, and that is the Lord Jesus Christ.
Pastors, teachers, and church staff believe their primary role is to serve as mentors. Their task is to equip every believer for the work of the ministry. It is not to do all the ministry, but to equip all the people to do it. Their top priority is to equip disciples to do ministry and to make disciples.
Do you spend more time ministering to people or preparing people to minister? No matter what your church responsibilities are, you can prepare others for the same ministry.
Insecurity in leadership is a deadly thing that will destroy any organization. It drives pastors and presidents to defensive positions, protecting their authority or exercising it simply to show who is the boss.
Disciple-making is a process that systematically moves people toward Christ and spiritual maturity; it is not a bunch of randomly disconnected church activities.
In the context of church leadership, one of the greatest and most important applications of faith is to trust the Holy Spirit to work in and through those you are leading. Without confidence that the Holy Spirit is in control, there is no empowering, no shared leadership, and, as a consequence, no multiplication.
”
”
Steve Murrell (WikiChurch: Making Discipleship Engaging, Empowering, and Viral)
“
Without sex, the only way for bacteria to adapt is through mutation, which is caused by reproductive error or environmental damage. Most mutations are hurtful; they make for even less successful bacteria—though eventually, with luck, a mutation would arise that made for a more heat-resistant bacterium. Asexual adaptation is problematic because the dictate of the world, “Change or die,” runs directly counter to one of the primary dictates of life: “Maintain the integrity of the genome.” In engineering, this type of clash is called a coupled design. Two functions of a system clash so that it is not possible to adjust one without negatively affecting the other. In sexual reproduction, by contrast, the inherent scrambling, or recombination, affords a vast scope for change, yet still maintains genetic integrity.
”
”
Seth Lloyd (Programming the Universe: A Quantum Computer Scientist Takes on the Cosmos)
“
To imagine an end to caste in America, we need only look at the history of Germany. It is living proof that if a caste system—the twelve-year reign of the Nazis—can be created, it can be dismantled. We make a serious error when we fail to see the overlap between our country and others, the common vulnerability in human programming, what the political theorist Hannah Arendt called “the banality of evil.” “It’s all too easy to imagine that the Third Reich was a bizarre aberration,” wrote the philosopher David Livingstone Smith, who has studied cultures of dehumanization. “It’s tempting to imagine that the Germans were (or are) a uniquely cruel and bloodthirsty people. But these diagnoses are dangerously wrong. What’s most disturbing about the Nazi phenomenon is not that the Nazis were madmen or monsters. It’s that they were ordinary human beings.
”
”
Isabel Wilkerson (Caste: The Origins of Our Discontents)
“
For example, say you're an average web developer. You're familiar with a dozen programming languages, tons of helpful libraries, standards, protocols, what have you. You still have to learn more at the rate of about one a week, and remember to check the hundreds of things you know to see if they've been updated or broken and make sure they all still work together and that nobody fixed the bug in one of them that you exploited to do something you thought was really clever one weekend when you were drunk. You're all up to date, so that's cool, then everything breaks. "Double you tee eff?" you say, and start hunting for the problem. You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for "Infinity" when simplifying their code. Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn't, the non-idiot decided to be a dick and make this a failing error in his new compiler. Then he decided he wasn't going to tell anyone that this was an error, because he's a dick, and now all your snowflakes are urine and you can't even find the cat.
”
”
Anonymous
“
Before we conclude that human cognitive mechanisms are riddled with biases and errors of judgment, we need to ask which adaptive problems human cognitive mechanisms evolved to solve and what would be “sound judgment” or “successful reasoning” from an evolutionary perspective. If humans have trouble locating their cars by color at night in parking lots illuminated with sodium vapor lamps, we would not conclude that our visual system is riddled with errors. Our eyes were designed to perceive the color of objects under natural, not artificial, light (Shepard, 1992). Many of the research programs that have documented “biases” in judgment, it turns out, have used artificial, evolutionarily unprecedented experimental stimuli that are analogous to sodium vapor lamps. Many, for example, require subjects to make probability judgments based on a single event (Gigerenzer, 1991, 1998). “Reliable numerical statements about the probability of a single event were rare or nonexistent in the Pleistocene—a conclusion reinforced by the relative poverty of number terms in modern band level societies” (Tooby & Cosmides, 1998 p. 40). A specific woman cannot have a 35 percent chance of being pregnant; she either is pregnant or is not, so probabilities hardly make sense when applied to a single case.
”
”
David M. Buss (Evolutionary Psychology: The New Science of the Mind)
“
This happens because data scientists all too often lose sight of the folks on the receiving end of the transaction. They certainly understand that a data-crunching program is bound to misinterpret people a certain percentage of “he time, putting them in the wrong groups and denying them a job or a chance at their dream house. But as a rule, the people running the WMDs don’t dwell on those errors. Their feedback is money, which is also their incentive. Their systems are engineered to gobble up more data and fine-tune their analytics so that more money will pour in. Investors, of course, feast on these returns and shower WMD companies with more money. And the victims? Well, an internal data scientist might say, no statistical system can be perfect. Those folks are collateral damage. And often, like Sarah Wysocki, they are deemed unworthy and expendable. Big Data has plenty of evangelists, but I’m not one of them. This book will focus sharply in the other direction, on the damage inflicted by WMDs and the injustice they perpetuate. We will explore harmful examples that affect people at critical life moments: going to college, borrowing money, getting sentenced to prison, or finding and holding a job. All of these life domains are increasingly controlled by secret models wielding arbitrary punishments.
”
”
Cathy O'Neil (Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy)
“
one stubborn glitch they couldn’t figure out: the program did a wonderful job spewing out data on the trajectory of artillery shells, but it just didn’t know when to stop. Even after the shell would have hit the ground, the program kept calculating its trajectory, “like a hypothetical shell burrowing through the ground at the same rate it had traveled through the air,” as Jennings described it. “Unless we solved that problem, we knew the demonstration would be a dud, and the ENIAC’s inventors and engineers would be embarrassed.”69 Jennings and Snyder worked late into the evening before the press briefing trying to fix it, but they couldn’t. They finally gave up at midnight, when Snyder needed to catch the last train to her suburban apartment. But after she went to bed, Snyder figured it out: “I woke up in the middle of the night thinking what that error was. . . . I came in, made a special trip on the early train that morning to look at a certain wire.” The problem was that there was a setting at the end of a “do loop” that was one digit off. She flipped the requisite switch and the glitch was fixed. “Betty could do more logical reasoning while she was asleep than most people can do awake,” Jennings later marveled. “While she slept, her subconscious untangled the knot that her conscious mind had been unable to.
”
”
Walter Isaacson (The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution)
“
The main ones are the symbolists, connectionists, evolutionaries, Bayesians, and analogizers. Each tribe has a set of core beliefs, and a particular problem that it cares most about. It has found a solution to that problem, based on ideas from its allied fields of science, and it has a master algorithm that embodies it. For symbolists, all intelligence can be reduced to manipulating symbols, in the same way that a mathematician solves equations by replacing expressions by other expressions. Symbolists understand that you can’t learn from scratch: you need some initial knowledge to go with the data. They’ve figured out how to incorporate preexisting knowledge into learning, and how to combine different pieces of knowledge on the fly in order to solve new problems. Their master algorithm is inverse deduction, which figures out what knowledge is missing in order to make a deduction go through, and then makes it as general as possible. For connectionists, learning is what the brain does, and so what we need to do is reverse engineer it. The brain learns by adjusting the strengths of connections between neurons, and the crucial problem is figuring out which connections are to blame for which errors and changing them accordingly. The connectionists’ master algorithm is backpropagation, which compares a system’s output with the desired one and then successively changes the connections in layer after layer of neurons so as to bring the output closer to what it should be. Evolutionaries believe that the mother of all learning is natural selection. If it made us, it can make anything, and all we need to do is simulate it on the computer. The key problem that evolutionaries solve is learning structure: not just adjusting parameters, like backpropagation does, but creating the brain that those adjustments can then fine-tune. The evolutionaries’ master algorithm is genetic programming, which mates and evolves computer programs in the same way that nature mates and evolves organisms. Bayesians are concerned above all with uncertainty. All learned knowledge is uncertain, and learning itself is a form of uncertain inference. The problem then becomes how to deal with noisy, incomplete, and even contradictory information without falling apart. The solution is probabilistic inference, and the master algorithm is Bayes’ theorem and its derivates. Bayes’ theorem tells us how to incorporate new evidence into our beliefs, and probabilistic inference algorithms do that as efficiently as possible. For analogizers, the key to learning is recognizing similarities between situations and thereby inferring other similarities. If two patients have similar symptoms, perhaps they have the same disease. The key problem is judging how similar two things are. The analogizers’ master algorithm is the support vector machine, which figures out which experiences to remember and how to combine them to make new predictions.
”
”
Pedro Domingos (The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World)
“
Click, hum, click, hum, click, hum. Click, click, click, click, click, hum. Hmmm. A low-level supervising program woke up a slightly higher-level supervising program deep in the ship’s semisomnolent cyberbrain and reported to it that whenever it went click all it got was a hum. The higher-level supervising program asked it what it was supposed to get, and the low-level supervising program said that it couldn’t remember what it was meant to get, exactly, but thought it was probably more of a sort of distant satisfied sigh, wasn’t it? It didn’t know what this hum was. Click, hum, click, hum. That was all it was getting. The higher-level supervising program considered this and didn’t like it. It asked the low-level supervising program what exactly it was supervising and the low-level supervising program said it couldn’t remember that either, just that it was something that was meant to go click, sigh every ten years or so, which usually happened without fail. It had tried to consult its error look-up table but couldn’t find it, which was why it had alerted the higher-level supervising program of the problem. The higher-level supervising program went to consult one of its own look-up tables to find out what the low-level supervising program was meant to be supervising. It couldn’t find the look-up table. Odd. It looked again. All it got was an error message. It tried to look up the error message in its error message look-up table and couldn’t find that either. It allowed a couple of nanoseconds to go by while it went through all this again. Then it woke up its sector function supervisor. The sector function supervisor hit immediate problems. It called its supervising agent, which hit problems too. Within a few millionths of a second virtual circuits that had lain dormant, some for years, some for centuries, were flaring into life throughout the ship. Something, somewhere, had gone terribly wrong, but none of the supervising programs could tell what it was. At every level, vital instructions were missing, and the instructions about what to do in the event of discovering that vital instructions were missing, were also missing. Small modules of software—agents—surged through the logical pathways, grouping, consulting, regrouping. They quickly established that the ship’s memory, all the way back to its central mission module, was in tatters. No amount of interrogation could determine what it was that had happened. Even the central mission module itself seemed to be damaged. This made the whole problem very simple to deal with, in fact. Replace the central mission module. There was another one, a backup, an exact duplicate of the original. It had to be physically replaced because, for safety reasons, there was no link whatsoever between the original and its backup. Once the central mission module was replaced it could itself supervise the reconstruction of the rest of the system in every detail, and all would be well.
”
”
Douglas Adams (The Ultimate Hitchhiker's Guide to the Galaxy (Hitchhiker's Guide to the Galaxy #1-5))
“
Classical liberalism has been reproached with being too obstinate and not ready enough to compromise. It was because of its inflexibility that it was defeated in its struggle with the nascent anticapitalist parties of all kinds. If it had realized, as these other parties did, the importance of compromise and concession to popular slogans in winning the favor of the masses, it would have been able to preserve at least some of its influence. But it has never bothered to build for itself a party organization and a party machine as the anticapitalist parties have done. It has never attached any importance to political tactics in electoral campaigns and parliamentary proceedings. It has never gone in for scheming opportunism or political bargaining.
This unyielding doctrinairism necessarily brought about the decline of liberalism.
The factual assertions contained in these statements are entirely in accordance with the truth, but to believe that they constitute a reproach against liberalism is to reveal a complete misunderstanding of its essential spirit. The ultimate and most profound of the fundamental insights of liberal thought is that it is ideas that constitute the foundation on which the whole edifice of human social cooperation is Liberalism: A Socio-Economic Exposition
constructed and sustained and that a lasting social structure cannot be built on the basis of false and mistaken ideas. Nothing can serve as a substitute for an ideology that enhances human life by fostering social cooperation—least of all lies, whether they be called "tactics," "diplomacy," or "compromise." If men will not, from a recognition of social necessity, voluntarily do what must be done if society is to be maintained and general well-being advanced, no one can lead them to the right path by any cunning stratagem or artifice. If they err and go astray, then one must endeavor to enlighten them by instruction. But if they cannot be enlightened, if they persist in error, then nothing can be done to prevent catastrophe. All the tricks and lies of demagogic politicians may well be suited to promote the cause of those who, whether in good faith or bad, work for the destruction of society. But the cause of social progress, the cause of the further development and intensification of social bonds, cannot be advanced by lies and demagogy. No power on earth, no crafty stratagem or clever deception could succeed in duping mankind into accepting a social doctrine that it not only does not acknowledge, but openly spurns.
The only way open to anyone who wishes to lead the world back to liberalism is to convince his fellow citizens of the necessity of adopting the liberal program. This work of enlightenment is the sole task that the liberal can and must perform in order to avert as much as lies within his power the destruction toward which society is rapidly heading today. There is no place here for concessions to any of the favorite or customary prejudices and errors. In regard to questions that will decide whether or not society is to continue to exist at all, whether millions of people are to prosper or perish, there is no room for compromise either from weakness or from misplaced deference for the sensibilities of others.
If liberal principles once again are allowed to guide the policies of great nations, if a revolution in public opinion could once more give capitalism free rein, the world will be able gradually to raise itself from the condition into which the policies of the combined anticapitalist factions have plunged it. There is no other way out of the political and social chaos of the present age.
”
”
Ludwig von Mises (Liberalism: The Classical Tradition)
“
Today 60% of workers in the private sector receive their insurance through their employer. I believe that by 2025 fewer than 20% of workers at private companies will continue to receive their health insurance through an employer-sponsored program. Nevertheless many will still receive an employer contribution, a so-called defined contribution toward the purchase of health insurance in the exchange. I believe the majority of private-sector workers will get their coverage through the exchanges.
”
”
Ezekiel J. Emanuel (Reinventing American Health Care: How the Affordable Care Act will Improve our Terribly Complex, Blatantly Unjust, Outrageously Expensive, Grossly Inefficient, Error Prone System)
“
There are two ways to write error-free programs; only the third one works.” —Alan J. Perlis
”
”
James A. Whittaker (Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design)
“
Diversity, Equal Opportunity, and Success are Core Principals Driving the Mission of the Green Card Organization of the United States of America
The Green Card Organization is a reputable institution that provides a service for individuals who have a desire to immigrate by implementing a wide variety of services from basic to the most complex. The Green Card Organization can ensure error-free applications by assisting any individual who requires additional aid to simplify the process and guarantee a complete and accurate submission. Plenty of legal procedures are made easier, and by working with the Green Card Organization, their specialized services can fit the need of any client. The Green Card Organization provides expertise on the Diversity Visa (DV) lottery program. This program can be difficult to complete without error, as over 40% of applicants that are self-handled are disqualified due to inaccurate information. This lottery allows only one submission per year, and the Green Card Organization believes their assistance will guarantee qualification and the possibility of obtaining a Green card.
“For everyone the process of receiving a Green card is different, however when that amazing moment comes that you will receive confirmation, we will be here to help. Time is of the essence when it comes to the process of a successful Green card applicant, it is important to go through the immigration process according to the timeline and correctly. Delays in the process can result in termination. Here at our organization, we will make sure that everything happens quickly and correctly for you. Our team of immigration experts will keep everything on track and assist you with all the necessary procedures. We provide personalized services and will make sure that no opportunity is missed to help each and every one of our clients achieve their goal. Your success is our success!”
The Green Card Organization website provides important immigration information, such as different ways to obtain a Green card. The Green Card Organization explains that one of the most common ways to receive a Green card is through the sponsorship of a family member. The family member must be a U.S. citizen, or a Green card holder themselves. Additional details describe instances on who is permitted to apply for a Green card so the client is able to make certain they are eligible. Another way the Green Card Organization explains how to obtain a Green card is through a job, meaning their professional background and/or business dealings. An employer can petition for an employee to get a Green card, but they first must obtain a labor certification and file Form I-140, known as the Immigrant Petition for Alien Worker. Other individuals who deal in American Investments may apply for the Green card if they have sizeable assets in the United States. Any individual can self-petition and apply for a Green card without a labor certification as long as they are able to prove that they considerably contribute to the American workforce. The Green Card Organization provides a list of special jobs regarding professionals who are permitted to apply for a Green card with Form I-360, known as the Petition of Amerasian, Widow(er), or Special Immigrant.
”
”
Green Card Organization
“
You see, the proper use of assertions is to inform developers about unrecoverable errors in a program. Assertions are not intended to signal expected error conditions, like a File-Not-Found error, where a user can take corrective actions or just try again.
”
”
Dan Bader (Python Tricks: A Buffet of Awesome Python Features)
“
The idea behind Information, Please was almost incidental to its long-running success. What made it an immortal piece of radio was the mix of personalities who fit the idea so perfectly. The quiz, in fact, was the least important part of the formula. The questions were an intellectual exercise, something to get the talk rolling and the humor bubbling from within. “An uproarious error or a brilliant bit of irreverence was rated far above any dull delivery of truth,” wrote John Kieran, one of its four major personalities, in his memoir. Kieran had no qualm in naming Information, Please “the most literate popular entertainment program ever to go out over the air on radio or television.
”
”
John Dunning (On the Air: The Encyclopedia of Old-Time Radio)
“
I do not believe we will find the magic here. Program verification is a very powerful concept, and it will be very important for such things as secure operating system kernels. The technology does not promise, however, to save labor. Verifications are so much work that only a few substantial programs have ever been verified. Program verification does not mean error-proof programs. There is no magic here, either. Mathematical proofs also can be faulty. So whereas verification might reduce the program-testing load, it cannot eliminate it. More seriously, even perfect program verification can only establish that a program meets its specification. The hardest part of the software task is arriving at a complete and consistent specification, and much of the essence of building a program is in fact the debugging of the specification.
”
”
Frederick P. Brooks Jr. (The Mythical Man-Month: Essays on Software Engineering)
“
The five most highly correlated factors are: Organizational culture. Strong feelings of burnout are found in organizations with a pathological, power-oriented culture. Managers are ultimately responsible for fostering a supportive and respectful work environment, and they can do so by creating a blame-free environment, striving to learn from failures, and communicating a shared sense of purpose. Managers should also watch for other contributing factors and remember that human error is never the root cause of failure in systems. Deployment pain. Complex, painful deployments that must be performed outside of business hours contribute to high stress and feelings of lack of control.4 With the right practices in place, deployments don’t have to be painful events. Managers and leaders should ask their teams how painful their deployments are and fix the things that hurt the most. Effectiveness of leaders. Responsibilities of a team leader include limiting work in process and eliminating roadblocks for the team so they can get their work done. It’s not surprising that respondents with effective team leaders reported lower levels of burnout. Organizational investments in DevOps. Organizations that invest in developing the skills and capabilities of their teams get better outcomes. Investing in training and providing people with the necessary support and resources (including time) to acquire new skills are critical to the successful adoption of DevOps. Organizational performance. Our data shows that Lean management and continuous delivery practices help improve software delivery performance, which in turn improves organizational performance. At the heart of Lean management is giving employees the necessary time and resources to improve their own work. This means creating a work environment that supports experimentation, failure, and learning, and allows employees to make decisions that affect their jobs. This also means creating space for employees to do new, creative, value-add work during the work week—and not just expecting them to devote extra time after hours. A good example of this is Google’s 20% time policy, where the company allows employees 20% of their week to work on new projects, or IBM’s “THINK Friday” program, where Friday afternoons are designated for time without meetings and employees are encouraged to work on new and exciting projects they normally don’t have time for.
”
”
Nicole Forsgren (Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations)
“
Defensive running strategies thus become an important part of your training plan. If you want to have a long running career, determine what activities most often cause you to become injured, then avoid them. This is particularly true when it comes to overuse injuries that result from what might be called training errors.
”
”
Hal Higdon (Marathon, All-New 4th Edition: The Ultimate Training Guide: Advice, Plans, and Programs for Half and Full Marathons)
“
lack drama. Why is it that we reward programmers who work all night to remove the errors they put into their programs, or managers who make drastic organizational changes to resolve the crises their poor management has created? Why not reward the programmers who design so well that they don’t have dramatic errors, and managers whose organizations stay out of crisis mode? Organizing
”
”
Gerald M. Weinberg (Becoming a Technical Leader)
“
Errors in code are what programmers call bugs, though when our programs go wrong, we prefer to call them “unexpected additional features.” Very
”
”
Paul Wilton (Beginning JavaScript)
“
pdb also includes a postmortem function (pdb.pm()) that you can run after an exception occurs, to get information from the time of the error. See
”
”
Mark Lutz (Learning Python: Powerful Object-Oriented Programming)
“
If you tried to assign any different value to TAX_RATE after that first declaration, your program would reject the change (and in strict mode, fail with an error — see “Strict Mode” in Chapter 2 ).
”
”
Kyle Simpson (You Don't Know JS: Up & Going)
“
But artificial intelligence has moved on since then.7 One of the vogue ideas is called temporal difference learning. When designers created TD-Gammon, a program to play backgammon, they did not provide it with any preprogrammed chess knowledge or capacity to conduct deep searches. Instead, it made moves, predicted what would happen next, and then looked at how far its expectations were wide of the mark. That enabled it to update its expectations, which it took into the next game. In effect, TD-Gammon was a trial-and-error program. It was left to play day and night against itself, developing practical knowledge. When it was let loose on human opponents, it defeated the best in the world. The software that enabled it to learn from error was sophisticated, but its main strength was that it didn’t need to sleep, so could practice all the time.
”
”
Matthew Syed (Black Box Thinking: Why Some People Never Learn from Their Mistakes - But Some Do)
“
A simple, five-command loop expands into a beautiful segmented structure of fifty lines. Little portions of program detach into reusable parts. Neelay’s father hooks up a cassette tape player, for easy reloading of their hours of work in mere minutes. But the volume button must be set just right, or everything explodes with a read error.
”
”
Richard Powers (The Overstory)
“
the executive director of the WHO emergencies program, Dr. Michael Ryan, put his own spin on this observation. “Perfection is the enemy of the good when it comes to emergency management,” he said. “Speed trumps perfection, and the problem in society we have at the moment is everyone is afraid of making a mistake, everyone is afraid of the consequence of error. But the greatest error is not to move. The greatest error is to be paralyzed by the fear of failure.
”
”
Scott Gottlieb (Uncontrolled Spread: Why COVID-19 Crushed Us and How We Can Defeat the Next Pandemic)
“
What happened?” Richard asked. “We put a drone up in the air, or rather, Mark put it up in the air. He’s flown them before with no trouble, but this time it crashed and burned.” Which, Richard thought, is exactly what I programmed it to do: take off, fly flawlessly for a while, and then drop out of the sky for no apparent reason.
”
”
J.A. Jance (Fatal Error (Ali Reynolds, #6))
“
In May 1985 the historic paper was published that announced an “ozone hole” in the Southern Hemisphere.11 The news shocked the scientific world. If true, the results proved that humankind had already exceeded a global limit. CFC use had grown above sustainable limits. Humans were already in the process of destroying their ozone shield. Scientists at the National Aeronautics and Space Administration of the United States (NASA) scrambled to check readings on atmospheric ozone made by the Nimbus 7 satellite, measurements that had been taken routinely since 1978. Nimbus 7 had never indicated an ozone hole. Checking back, NASA scientists found that their computers had been programmed to reject very low ozone readings on the assumption that such low readings must indicate instrument error.12 Fortunately the measurements thrown out by the computer were recoverable. They confirmed the Halley Bay observations, showing that ozone levels had been dropping over the South Pole for a decade. Furthermore, they provided a detailed map of the hole in the ozone layer. It was enormous, about the size of the continental United States, and it had been getting larger and deeper every year.
”
”
Donella H. Meadows (Limits to Growth: The 30-Year Update)
“
My computer had been equipped with a slightly different program which M.I.T. called Colossus IIA; it was aptly named. I felt flea-sized in its presence, and punched the computer keys with a good deal of reverence, as I availed myself of the services of this giant. That is, until it and I started to disagree and it refused to give me the answers I sought. Then I lost my temper. Flash an “operator error” light at me, will you, you stupid goddamned computer, and I would sputter and stammer until the soothing voice of Tom Wilson14 or one of the other instructors came over the earphones and unctuously explained how I had offended their precocious brat.
”
”
Michael Collins (Carrying the Fire: An Astronaut's Journey)
“
This simple idea provides a chemical explanation for an age-old question: Why does love fade? Our brains are programmed to crave the unexpected and thus to look to the future, where every exciting possibility begins. But when anything, including love, becomes familiar, that excitement slips away, and new things draw our attention. The scientists who studied this phenomenon named the buzz we get from novelty reward prediction error, and it means just what the name says.
”
”
Daniel Z. Lieberman (The Molecule of More: How a Single Chemical in Your Brain Drives Love, Sex, and Creativity―and Will Determine the Fate of the Human Race)
“
single or index variables. As an example, consider the dependent variable “high school violence,” discussed in Chapter 2. We ask: “What are the most important, distinct factors affecting or causing high school violence?” Some plausible factors are (1) student access to weapons, (2) student isolation from others, (3) peer groups that are prone to violence, (4) lack of enforcement of school nonviolence policies, (5) participation in anger management programs, and (6) familiarity with warning signals (among teachers and staff). Perhaps you can think of other factors. Then, following the strategies discussed in Chapter 3—conceptualization, operationalization, and index variable construction—we use either single variables or index measures as independent variables to measure each of these factors. This approach provides for the inclusion of programs or policies as independent variables, as well as variables that measure salient rival hypotheses. The strategy of full model specification requires that analysts not overlook important factors. Thus, analysts do well to carefully justify their model and to consult past studies and interview those who have direct experience with, or other opinions about, the research subject. Doing so might lead analysts to include additional variables, such as the socioeconomic status of students’ parents. Then, after a fully specified model has been identified, analysts often include additional variables of interest. These may be variables of lesser relevance, speculative consequences, or variables that analysts want to test for their lack of impact, such as rival hypotheses. Demographic variables, such as the age of students, might be added. When additional variables are included, analysts should identify which independent variables constitute the nomothetic explanation, and which serve some other purpose. Remember, all variables included in models must be theoretically justified. Analysts must argue how each variable could plausibly affect their dependent variable. The second part of “all of the variables that affect the dependent variable” acknowledges all of the other variables that are not identified (or included) in the model. They are omitted; these variables are not among “the most important factors” that affect the dependent variable. The cumulative effect of these other variables is, by definition, contained in the error term, described later in this chapter. The assumption of full model specification is that these other variables are justifiably omitted only when their cumulative effect on the dependent variable is zero. This approach is plausible because each of these many unknown variables may have a different magnitude, thus making it possible that their effects cancel each other out. The argument, quite clearly, is not that each of these other factors has no impact on the dependent variable—but only that their cumulative effect is zero. The validity of multiple regression models centers on examining the behavior of the error term in this regard. If the cumulative effect of all the other variables is not zero, then additional independent variables may have to be considered. The specification of the multiple regression model is as follows:
”
”
Evan M. Berman (Essential Statistics for Public Managers and Policy Analysts)
“
As suggested by Nick Ellis (2003, 2005) and others, language is at least partly learned in units larger than single words, and sentences or phrases are not usually put together one word at a time. As noted in Chapter 1, usage-based research has shown that a learning mechanism, simulated by a computer program, can not only ‘learn’ from input but can also generalize, even making overgeneralization errors.
”
”
Patsy M. Lightbown (How Languages are Learned)
“
A good example is overflow detection on arithmetic, or providing bignums instead of just letting 32-bit integers wrap around. Now,
implementing those is more expensive but I believe that providing full-blown bignums is a little less error-prone for some kinds of programming.
A trap that I find systems programmers and designers of operating-systems algorithms constantly falling into is they say, "Well, we need to synchronize some phases here so we're going to use a take-a-number strategy. Every time we enter a new phase of the computation we'll increment some variable and that'll be the new number and then the different participants will make sure they're all working on the same phase number before a certain operation happens." And that works pretty well in practice, but if you use a 32-bit integer it doesn't take that long to count to four billion anymore. What happens if that number wraps around? Will you still be OK or not? It turns out that a lot of such algorithms in the literature have that lurking bug. What if some thread stalls for 2 to the 32nd iterations? That's highly unlikely in practice, but it's a possibility. And one should either mitigate that correctness problem or else do the calculation to show that, yeah, it's sufficiently unlikely that I don't want to worry about it. Or maybe you're willing to accept one glitch every day. But the point is you should do the analysis rather than simply ignoring the issue. And the fact that counters can wrap around is a lurking pitfall
”
”
Peter Seibel (Coders at Work: Reflections on the Craft of Programming)
“
Programs written in dynamically typed languages require large suites of tests to give some assurance that simple type errors cannot occur.
”
”
Bryan O'Sullivan (Real World Haskell: Code You Can Believe In)
“
The picture of the software designer deriving his design in a rational, error-free way from a statement of requirements is quite unrealistic. No system has ever been developed in that way, and probably none ever will. Even the small program developments shown in textbooks and papers are unreal. They have been revised and polished until the author has shown us what he wishes he had done, not what actually did happen. — David Parnas Paul Clements
”
”
Steve McConnell (Code Complete)
“
Don't use a boolean variable as a status variable. Use an enumerated type instead. It's common to add a new state to a status variable, and adding a new type to an enumerated type requires a mere recompilation rather than a major revision of every line of code that checks the variable. Use access routines rather than checking the variable directly. By checking the access routine rather than the variable, you allow for the possibility of more sophisticated state detection. For example, if you wanted to check combinations of an error-state variable and a current-function-state variable, it would be easy to do if the test were hidden in a routine and hard to do if it were a complicated test hard-coded throughout the program.
”
”
Steve McConnell (Code Complete)
“
Error processing is turning out to be one of the thorniest problems of modern computer science, and you can't afford to deal with it haphazardly. Some people have estimated that as much as 90 percent of a program's code is written for exceptional, error-processing cases or housekeeping, implying that only 10 percent is written for nominal cases (Shaw in Bentley 1982). With so much code dedicated to handling errors, a strategy for handling them consistently should be spelled out in the architecture.
”
”
Steve McConnell (Code Complete)
“
Call an error-processing routine/object. Another approach is to centralize error handling in a global error-handling routine or error-handling object. The advantage of this approach is that error-processing responsibility can be centralized, which can make debugging easier. The tradeoff is that the whole program will know about this central capability and will be coupled to it. If you ever want to reuse any of the code from the system in another system, you'll have to drag the error-handling machinery along with the code you reuse.
”
”
Steve McConnell (Code Complete)
“
Containment is the simple idea that a class contains a primitive data element or object. A lot more is written about inheritance than about containment, but that's because inheritance is more tricky and error-prone, not because it's better. Containment is the work-horse technique in object-oriented programming.
”
”
Steve McConnell (Code Complete)
“
Use locking to control access to global variables. Similar to concurrency control in a multiuser database environment, locking requires that before the value of a global variable can be used or updated, the variable must be "checked out." After the variable is used, it's checked back in. During the time it's in use (checked out), if some other part of the program tries to check it out, the lock/unlock routine displays an error message or fires an assertion.
”
”
Steve McConnell (Code Complete)
“
(e). Hence the expressions are equivalent, as is y = ŷ + e. Certain assumptions about e are important, such as that it is normally distributed. When error term assumptions are violated, incorrect conclusions may be made about the statistical significance of relationships. This important issue is discussed in greater detail in Chapter 15 and, for time series data, in Chapter 17. Hence, the above is a pertinent but incomplete list of assumptions. Getting Started Conduct a simple regression, and practice writing up your results. PEARSON’S CORRELATION COEFFICIENT Pearson’s correlation coefficient, r, measures the association (significance, direction, and strength) between two continuous variables; it is a measure of association for two continuous variables. Also called the Pearson’s product-moment correlation coefficient, it does not assume a causal relationship, as does simple regression. The correlation coefficient indicates the extent to which the observations lie closely or loosely clustered around the regression line. The coefficient r ranges from –1 to +1. The sign indicates the direction of the relationship, which, in simple regression, is always the same as the slope coefficient. A “–1” indicates a perfect negative relationship, that is, that all observations lie exactly on a downward-sloping regression line; a “+1” indicates a perfect positive relationship, whereby all observations lie exactly on an upward-sloping regression line. Of course, such values are rarely obtained in practice because observations seldom lie exactly on a line. An r value of zero indicates that observations are so widely scattered that it is impossible to draw any well-fitting line. Figure 14.2 illustrates some values of r. Key Point Pearson’s correlation coefficient, r, ranges from –1 to +1. It is important to avoid confusion between Pearson’s correlation coefficient and the coefficient of determination. For the two-variable, simple regression model, r2 = R2, but whereas 0 ≤ R ≤ 1, r ranges from –1 to +1. Hence, the sign of r tells us whether a relationship is positive or negative, but the sign of R, in regression output tables such as Table 14.1, is always positive and cannot inform us about the direction of the relationship. In simple regression, the regression coefficient, b, informs us about the direction of the relationship. Statistical software programs usually show r rather than r2. Note also that the Pearson’s correlation coefficient can be used only to assess the association between two continuous variables, whereas regression can be extended to deal with more than two variables, as discussed in Chapter 15. Pearson’s correlation coefficient assumes that both variables are normally distributed. When Pearson’s correlation coefficients are calculated, a standard error of r can be determined, which then allows us to test the statistical significance of the bivariate correlation. For bivariate relationships, this is the same level of significance as shown for the slope of the regression coefficient. For the variables given earlier in this chapter, the value of r is .272 and the statistical significance of r is p ≤ .01. Use of the Pearson’s correlation coefficient assumes that the variables are normally distributed and that there are no significant departures from linearity.7 It is important not to confuse the correlation coefficient, r, with the regression coefficient, b. Comparing the measures r and b (the slope) sometimes causes confusion. The key point is that r does not indicate the regression slope but rather the extent to which observations lie close to it. A steep regression line (large b) can have observations scattered loosely or closely around it, as can a shallow (more horizontal) regression line. The purposes of these two statistics are very different.8 SPEARMAN’S RANK CORRELATION
”
”
Evan M. Berman (Essential Statistics for Public Managers and Policy Analysts)
“
An assertion is a sanity check to make sure your code isn’t doing something obviously wrong. These sanity checks are performed by assert statements. If the sanity check fails, then an AssertionError exception is raised.
”
”
Albert Sweigart (Automate the Boring Stuff with Python: Practical Programming for Total Beginners)
“
In plain English, an assert statement says, “I assert that this condition holds true, and if not, there is a bug somewhere in the program.” Unlike exceptions, your code should not handle assert statements with try and except; if an assert fails, your program should crash. By failing fast like this, you shorten the time between the original cause of the bug and when you first notice the bug. This will reduce the amount of code you will have to check before finding the code that’s causing the bug. Assertions are for programmer errors, not user errors. For errors that can be recovered from (such as a file not being found or the user entering invalid data), raise an exception instead of detecting it with an assert statement.
”
”
Albert Sweigart (Automate the Boring Stuff with Python: Practical Programming for Total Beginners)
“
The most challenging part of programming is conceptualizing the problem, and many errors in programming are conceptual errors. Because
”
”
Steve McConnell (Code Complete)
“
By June 1949 people had begun to realize that it was not so easy to get a program right as had at one time appeared. I well remember when this realization first came on me with full force. The EDSAC was on the top floor of the building and the tape-punching and editing equipment one floor below on a gallery that ran round the room in which the differential analyzer was installed. I was trying to get working my first non-trivial program, which was one for the numerical integration of Airy’s differential equation. It was on one of my journeys between the EDSAC room and the punching equipment that “hesitating at the angles of stairs” the realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs.
”
”
Martin Campbell-Kelly (Computer: A History of the Information Machine)
“
If the application is event-driven, it can be decoupled into multiple self-contained components. This helps us become more scalable, because we can always add new components or remove old ones without stopping or breaking the system. If errors and failures are passed to the right component, which can handle them as notifications, the application can become more fault-tolerant or resilient. So if we build our system to be event-driven, we can more easily achieve scalability and failure tolerance, and a scalable, decoupled, and error-proof application is fast and responsive to users.
”
”
Nickolay Tsvetinov (Learning Reactive Programming with Java 8)
“
People write programs without any expectation that they will be right the first time. They spend at least as much time testing and correcting errors as they spent writing the initial program. ... Software is released for use, not when it is known to be correct, but when the rate of discovering errors slows down to one that management considers acceptable.
”
”
David West (Object Thinking)
“
Rushing to optimize before the bottlenecks are known may be the only error to have ruined more designs than feature creep. From tortured code to incomprehensible data layouts, the results of obsessing about speed or memory or disk usage at the expense of transparency and simplicity are everywhere. They spawn innumerable bugs and cost millions of man-hours—often, just to get marginal gains in the use of some resource much less expensive than debugging time. Disturbingly often, premature local optimization actually hinders global optimization (and hence reduces overall performance). A prematurely optimized portion of a design frequently interferes with changes that would have much higher payoffs across the whole design, so you end up with both inferior performance and excessively complex code.
”
”
Eric S. Raymond (Art of UNIX Programming, The)
“
When the ANSI C standard was under development, the pragma directive was introduced. Borrowed from Ada, #pragma is used to convey hints to the compiler, such as the desire to expand a particular function in-line or suppress range checks. Not previously seen in C, pragma met with some initial resistance from a gcc implementor, who took the “implementation-defined” effect very literally—in gcc version 1.34, the use of pragma causes the compiler to stop compiling and launch a computer game instead! The gcc manual contained the following: The “#pragma” command is specified in the ANSI standard to have an arbitrary implementation-defined effect. In the GNU C preprocessor, “#pragma” first attempts to run the game “rogue”; if that fails, it tries to run the game “hack”; if that fails, it tries to run GNU Emacs displaying the Tower of Hanoi; if that fails, it reports a fatal error. In any case, preprocessing does not continue. —Manual for version 1.34 of the GNU C compiler
”
”
Peter van der Linden (Expert C Programming: Deep C Secrets)
“
Punishing potty errors after they’ve happened is perhaps the most common training mistake; it only aggravates the problem. Going
”
”
Dawn Sylvia-Stasiewicz (Training the Best Dog Ever: A 5-Week Program Using the Power of Positive Reinforcement)
“
The only way to deal with a potty error is to catch the dog in the act and scoop her up and take her, or lead her, quickly outside to the potty area. Until
”
”
Dawn Sylvia-Stasiewicz (Training the Best Dog Ever: A 5-Week Program Using the Power of Positive Reinforcement)
“
The only way to deal with a potty error is to catch the dog in the act and scoop her up and take her, or lead her, quickly outside to the potty area. Until your dog is house-trained, do not allow her to have free access to the entire house, and supervise her always, perhaps by keeping her tethered to you or by using baby gates, x-pens, and closed doors.
”
”
Dawn Sylvia-Stasiewicz (Training the Best Dog Ever: A 5-Week Program Using the Power of Positive Reinforcement)
“
Coming from the field of aviation, where mundane errors could cost lives, he was exact. For all these reasons, Dunie was drawn to testing, the grubby and anonymous side of programming.
”
”
G. Pascal Zachary (Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft)
“
Human beings are weak, prone to errors and superficiality. Our programming eradicates such frailties and there is great freedom in our state of existence.
”
”
Jill Thrussell (The Rich List)
“
From the Bridge” by Captain Hank Bracker
Pebbles, Rocks & Mountains
Rocks can be formed in many different ways and are found in just about every corner of our planet, the Moon, up in space and who knows where else. Now pebbles are the mini-me’s of rocks and generally are about one to three inches in size. Geologists will tell you that they are about 5 millimeters in diameter, but who’s counting? In fact there are two beaches that are made up entirely of pebbles such as the Shingle Beach in Somerset, England. Generally pebbles are found along rivers, streams and creeks whereas mountains are usually a part of a chain that was created along geothermal fault lines. The process of Mountain formation is associated with movements of the earth's crust, which is referred to as plate tectonics. See; now that I looked it up, I know these things!
What I’m about to say has absolutely nothing to do with geology and everything to do about human nature. In the course of events we never trip over mountains and seldom over rocks, but tripping over pebbles is another thing.
Marilyn French, a writer and feminist scholar is credited with saying, “Men (she should have included Women) stumble over pebbles, never over mountains.” She was the lady (I should have said woman) whose provocative 1977 novel, “The Women's Room” captured the frustration and fury of a generation of women fed up with society's traditional conceptions of their roles (and this is true). However, this has nothing to do with the feminist movement and is simply a metaphor. Of course we’re not going to trip over mountains, not unless we are bigger than the “Jolly Green Giant!” and so it’s usually the little things that trip us up and cause us problems.
What comes to mind is found on page 466 of The Exciting Story of Cuba. This is a book that won two awards by the “Florida Authors & Publishers Association” and yet there are small mistakes. They weren’t even caused by me or my team and yet there they are, getting bigger and bigger every time I look at them. Now I’m not about to tell you what they are, since that would take the fun out of it, but if you look hard enough in the book, you’ll succeed in discovering them!
I will however tell you that one of these mistakes was caused by a computer program called “Word.” It’s wonderful that this program has a spell check and can even correct my grammar, but it can’t read my mind. In its infernal wisdom, the program was so insistent that it was right and that I was wrong that it changed the spelling of, in this case, the name of a person in the middle of the night. It happened while I was sleeping! I would have seen it if it had been as big as a mountain, however being just a little pebble it escaped my review and even escaped the eagle eyes of Lucy who still remains the best proof reader and copy editor that I know. When you discover what I missed please refrain from emailing me, although, normally, I would really enjoy hearing from you! I unfortunately already know most of the errors in the book, for which I take full responsibility.
The truth of it is that my mistakes leave me feeling stupid and frustrated. Now, you may disagree with me however I don’t think that I am really all that stupid, but when you write hundreds of thousands of words, a few of them might just slip between the cracks. None of us are infallible and we all make mistakes. I sometimes like to say that “I once thought that I had made a mistake, but then found out that I was mistaken.” And so it is; if you think about it, it’s the pebbles that create most of our problems, not the rocks and certainly not the mountains.
I’ll let you know as soon as my other books, Suppressed I Rise – Revised Edition; Seawater One…. And Words of Wisdom, “From the Bridge” are available. It’s Seawater One that has the naughty bits in it… but that just spices it up. Now with that book you can really tell me what you think….
”
”
Hank Bracker
“
By the end of the meeting, one conscientious human being had cleared up the confusion generated by web-crawling data-gathering programs. The housing authority knew which Catherine Taylor it was dealing with. The question we’re left with is this: How many Wanda Taylors are out there clearing up false identities and other errors in our data? The answer: not nearly enough. Humans in the data economy are outliers and throwbacks.
”
”
Cathy O'Neil (Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy)
“
Thoughtful design, code review, pair programming, and a considered test strategy (including TDD practices and fully automated unit test suites) are all of the utmost importance. Techniques like assertions, defensive programming, and code coverage tools will all help minimise the likelihood of errors sneaking past. We all know these mantras. Don’t we?
”
”
Anonymous
“
In addition to the habituation and education of programmers are the constraints offered by the programming environments themselves which can be very unforgiving. Punctuation, for example, is part of the syntax of programming languages and misplaced punctuation can cause all sorts of strange bugs and errors to occur
”
”
Anonymous
“
There are only 2 hard things in programming: naming, cache invalidation, and off-by-one-errors.
”
”
Mattt Thompson (NSHipster: Obscure Topics in Cocoa & Objective C)
“
debugger, a tool that will preserve your C source code after compilation and enable you to do such things as step through it manually, or alter data as an aid to finding and correcting programming errors.
”
”
Wiki Books (C Programming)
“
When you put him down drowsy but awake and he cries hard, immediately pick him up for more soothing and try again some other time that day or the next day. If he makes very quiet sounds, wait and see. He might drift off to sleep or begin to cry hard. If he now begins to cry hard, quickly pick him up. Don’t be disappointed if he does not fall asleep when you first start to practice putting him down drowsy but awake; it just takes practice. Expect to become frustrated, because initially you may be successful only about 10 percent of the time during the first week. But by the end of the second week, you may be successful 20 percent of the time. This percentage may double each week, so after a few more weeks it becomes much easier. Be optimistic! After a few months of practice and the maturation of sleep rhythms, you will develop an anticipatory sense of when he will need to sleep. Later, when he is completely well rested, don’t be surprised if drowsy signs disappear altogether because you have successfully synchronized the timing of your soothing to sleep with the beginning of his emerging sleep wave. It’s like being good at surfing; you catch the wave for a long ride. Patience, practice, timing, and trial and error will guarantee success.
”
”
Marc Weissbluth (Healthy Sleep Habits, Happy Child: A Step-by-Step Program for a Good Night's Sleep)
“
Numbers JavaScript has a single number type. Internally, it is represented as 64-bit floating point, the same as Java’s double. Unlike most other programming languages, there is no separate integer type, so 1 and 1.0 are the same value. This is a significant convenience because problems of overflow in short integers are completely avoided, and all you need to know about a number is that it is a number. A large class of numeric type errors is avoided.
”
”
Douglas Crockford (JavaScript: The Good Parts: The Good Parts)
“
Systems Test No parts of the schedule are so thoroughly affected by sequential constraints as component debugging and system test. Furthermore, the time required depends on the number and subtlety of the errors encountered. Theoretically this number should be zero. Because of optimism, we usually expect the number of bugs to be smaller than it turns out to be. Therefore testing is usually the most mis-scheduled part of programming. For some years I have been successfully using the following rule of thumb for scheduling a software task: l /3 planning l/6 coding l/4 component test and early system test l/4 system test, all components in hand.
”
”
Anonymous
“
Use manual sanity checks in data pipelines. When optimizing data processing systems, it’s easy to stay in the “binary mindset” mode, using tight pipelines, efficient binary data formats, and compressed I/O. As the data passes through the system unseen, unchecked (except for perhaps its type), it remains invisible until something outright blows up. Then debugging commences. I advocate sprinkling a few simple log messages throughout the code, showing what the data looks like at various internal points of processing, as good practice — nothing fancy, just an analogy to the Unix head command, picking and visualizing a few data points. Not only does this help during the aforementioned debugging, but seeing the data in a human-readable format leads to “aha!” moments surprisingly often, even when all seems to be going well. Strange tokenization! They promised input would always be encoded in latin1! How did a document in this language get in there? Image files leaked into a pipeline that expects and parses text files! These are often insights that go way beyond those offered by automatic type checking or a fixed unit test, hinting at issues beyond component boundaries. Real-world data is messy. Catch early even things that wouldn’t necessarily lead to exceptions or glaring errors. Err on the side of too much verbosity.
”
”
Micha Gorelick (High Performance Python: Practical Performant Programming for Humans)
“
Go does not permit unused local variables, so this would result in a compilation error.
”
”
Alan A.A. Donovan (The Go Programming Language)
“
That night was like the first computer program he ever wrote: a series of run-time errors followed by a quick compilation.
”
”
A.G. Riddle (Pandemic (The Extinction Files, #1))
“
Sir Roy Fedden headed the British team sent to defeated Germany by Sir Stafford Cripps. Fedden, a slim, elegant, clean-shaven man whose photographs usually reveal an expression of focused determination, showed keen intelligence and a fascination with car and aircraft engines at an early age. Passionately fond of his wife Norah Crew, and somehow finding time between engine experiments to sail and fish, Fedden, 60 years of age in 1945, attacked his task with customary gusto. Fedden Years earlier, Erhardt Milch and Hermann Goering, to Fedden's astonishment, permitted him to tour no less than 17 of their secret aeronautics facilities when he visited Germany in 1937 and 1938. The Luftwaffe leaders hoped to overawe Fedden with the potential of German military aircraft design, and thus cause him to influence the British government to reach an accommodation with the Third Reich. Fedden, in fact, urged the English leadership to modernize their aircraft design to match the Germans' potential and was fired. Realizing their error several years later, the government re-employed Fedden in 1944, and a mix of aeronautics engineers, scientists, and RAF officers comprised Fedden's team.
”
”
Charles River Editors (Operation Paperclip: The History of the Secret Program to Bring Nazi Scientists to America During and After World War II)
“
And so we have gone back over the television we recall watching before we gave it up entirely and made a list of those series that never crossed the line into immorality. The list is in the empty box above. Actually that is an exaggeration, but the list is rather short. Antiques Roadshow has never crossed the line in the episodes I watched. Also Extreme Homes never crossed the line. As I recall This Old House didn't. Although I was an avid viewer of Jeopardy it did cross the line by spreading false propaganda. True, I would sit there and correct them, but one cannot recommend a program that habitually teaches error. Our minds are created for truth and we should only allow the truth to enter our minds.
”
”
Pope Michael (The Satan Box)