AI: You’re Using It

Artificial intelligence is being used every day in today’s society. Many don’t believe it. Many are dismissive of the idea of artificial intelligence. Their argument is often similar in nature to John Searle’s “Chinese Room Argument”, which is often stated as follows:

Imagine a native English speaker who knows no Chinese locked in a room full of boxes of Chinese symbols (a database) together with a book of instructions for manipulating the symbols (the program). Imagine that people outside the room send in other Chinese symbols which, unknown to the person in the room, are questions in Chinese (the input). And imagine that by following the instructions in the program the man in the room is able to pass out Chinese symbols which are correct answers to the questions (the output). The program enables the person in the room to pass the Turing Test for understanding Chinese but he does not understand a word of Chinese.

(taken from Stanford Encyclopedia of Philosophy)

Using this argument to argue against the existence of AI is missing the point entirely. John Searle does not argue that we cannot create artificial intelligence. His argument is that an artificial intelligence behaves inherently different to our intelligence, which is debatable but much less absurd.

Any object that can understanding a language would still serve to translate to and from that language. The entire point of the Turing Test is to define intelligence in a reasonable way. The Chinese Room that Searle describes, therefore, is indeed an artificial intelligence.


To Know the Future

The following post is based off a philosophy journal entry I wrote for my Grade 12 Philosophy class, taught by Brian Wildfong.

It’s impossible to know the future.

It’s common cliché that it’s “impossible” to know the future. I don’t agree. For some events, I have strong beliefs about the outcome. When I drop a book, for example, I know that it will fall, even though the event hasn’t happened yet. It would be impossible to live life without being able to predict the future. I know that if I leave the ground, then I will fall back down. If I didn’t know that, then I would risk floating off into space every time I take a step while walking!

I think that the future is at least as knowable as the past. Skeptics may argue that something important could change that invalidates all my predictions. They may contend that if I haven’t seen it happen, then I can’t possibly know that it will happen. But the same skeptics could detract from knowing events in the past as well. Let’s say that I just dropped a book. How do I know that I dropped a book? Maybe my memory is faulty, so I can’t rely on that. Sure, there’s a book on the ground, but maybe someone else put it there—or maybe I’m hallucinating and there isn’t actually a book on the ground. Even an event that happened seconds ago can’t be knowable from a radical skeptic’s perspective.

Such a perspective, in my opinion, is useful only as a thought experiment. It reduces all that one can know to meaningless statements, like “I perceive a book,” or perhaps tautologies like “Either this object exists or it does not exist,” or “If he is real, then he exists.” Some might accept certain innate ideas like “One plus one is two”. And the super-radical skeptic may even dispute the validity of all those statements. What’s the use of knowledge if it can’t apply to the real world, but only some abstract world of Forms, or if it can’t even apply to the world of Forms?

Some would suggest that knowledge implies certain truth, and I disagree with that. I think that requiring certainty for knowledge is absurd. I’m not certain that other people actually exist (maybe this is all a dream), and if someone doesn’t exist then they can’t know anything. I’m not certain that my senses aren’t deceiving me, so I’d have to accept that none of my experiences are knowledge. I’m not certain that I’m sane either, so I can’t accept anything that my logical reasoning suggests is true. Under this definition, there is no knowledge—nobody knows anything. There are already plenty of synonyms for “nothing”, so with that definition “knowledge” becomes just an unfortunate waste of a word.

If it’s probably true (for a very high standard of “probably”), then I would classify it as knowledge. That means that I believe that the future is knowable. I know that there will be a solar eclipse on March 9, 2016 and that it will be seen across Indonesia, because astronomical calculations have shown that. I accept that there’s a non-zero probability that it won’t be true: perhaps the sun will disappear before then, or the astronomical calculations (that have worked for thousands of years) are wrong, or Santa Claus will intervene and prevent the solar eclipse. But then again, maybe I’m just a brain in a vat. Life is too short to consider the non-zero but practically-zero probability that the underlying assumptions I make about the world are false.

This is the interpretation of knowledge accepted by B. F. Skinner, who classified knowledge into three kinds: acquaintance (having experienced an event), description (reading or hearing about an event), or prediction (to believe a future event). Skinner accepted that prediction may be the least reliable form of knowledge, but Skinner argued that it is in fact the most useful form of knowledge. Only with prediction can we decide on the best course of action. Many of the major problems plaguing today’s world are due to past mistakes made due to either incorrect predictions about consequences or not predicting the consequences (Skinner 105).

I know some things about the future, and I think what I know about the future is indeed the most important kind of knowledge. In the end, other forms of knowledge serve as a foundation for the kind of knowledge that helps us make the right choices: knowledge by prediction.

Works Cited

Skinner, B. F. “To know the future.” The Behavior Analyst 13.2 (1990): 103.

Write Once

I am beginning work on a résumé generator that creates beautiful typeset résumés, from HTML.

HTML is quickly becoming the standard format for semantic markup. The purpose of semantic markup is to be understood by computers. The natural step, then, is to convert semantic HTML résumés to TeX for typesetting.

This lets a user have both an expanded, online résumé, as well as a condensed and traditional paper one.

Test to Fail

In most disciplines, tests are important. An untested product is hardly better than no product. Untested products are prone to fail.

But not all tests are built equal. The human tendency is to make tests that test for success. For example, suppose I had a routine that checks if a number is greater than another. And suppose I implemented it as follows:

greater(a, b) = a ≥ b

The error in this code is obvious. There is a greater than or equal sign (“≥”), but I meant to use a greater than sign (“>”). But in practice, in more complex projects, errors will sneak in. Now imagine that my test suite looked like this:

@test greater(2, 1)
@test greater(1, 0)
@test greater(1, -2)
@test greater(100, -100)

What a comprehensive test suite! Unfortunately, this test suite will let my incorrect implementation pass. Why? Because I never once tested for failure.

Each test was written to see if the function returns the correct result when the first argument is actually greater. The test cases were written with passing in mind, not failing. We have a subconscious tendency to test for success, not failure. Tests for success are useful, but tests for failure are necessary too.

Outside of computer science, the same principle applies. Scientists and engineers would benefit from negative results as much as positive ones. In short, give failure a chance.

Design and Delivery

For many things, function is more important than form. But in today’s busy world, we seldom have time to investigate the function of competing products. That’s why we use the form as a way to judge function; in other words, we judge the book by its cover.

That’s why, in terms of making a product, it’s important to consider both the design and the delivery. The design of a product will determine what it’s used for and how useful it is, whereas the delivery of a product will determine its uptake.

Delivery should complement the design. For example, a word processing product should look like a word processor. There are certain motifs that humans expect from products of a particular genre, and without good reason, one should not deviate from those motifs.

At the same time, design must complement the delivery. Features that are hard to use or difficult to access from the UI should be given a lower priority than features that will be centrepieces of the UI.

It is this latter point that most products fail to achieve. Developers have a natural aversion to letting the delivery drive the design. We have an idea in mind of what the product should do, and what it shouldn’t. We think that the UI should match that, and we reject that we should match what our product does with the UI.

But delivery is just as important as design. So it makes good business sense to let it take the front seat once in a while.


CS Club Resources

For SJAM CS Club, from 2014 to 2015, Ian Fox and I created a series of lessons to teach introductory computer science to high school students. These resources for CS enthusiasts are now available to the public.

I hope this is useful to other CS clubs around the world that target high school students. I also welcome any suggestions for improvements to the material.

Flag of France

Je suis français

In the wake of widespread terrorist attacks in France, I stand in solidarity with the French people.

Fundamentalist Islam, like fundamentalist interpretations of any other religion, is fundamentally harmful for society. I am strongly in favour of holding to one’s convictions. But when holding to those convictions involves the slaughter of innocent civilians, then those convictions are harmful. And society must move in a direction that eliminates those harmful convictions.

Whether this must involve violent retaliation is a difficult question that I can’t claim to know the answer to. But doing nothing, as if there is no problem, is not a viable option.

Starting with Setting

My procedural novel generator (see also part one, part two, and part three) has now been augmented with some rudimentary support for settings, both time and place. An example follows:

Here is a tale from the world of Samoa. Samoa is mostly populated by Italians.

I, Giusa Rosi, am a thirty-nine-year-old woman. I have black hair. I have green eyes. I stand 146 centimetres tall. I am somewhat reluctant to accept new ideas. I am easily disturbed or irritated.

Baffaele Bianchiccino is a fifteen-year-old boy. He has black hair. He has green eyes. He stands 184 centimetres tall. He is very open to new ideas and experiences.

I do not know Baffaele Bianchiccino very well. I scorn Baffaele Bianchiccino. I do not trust Baffaele Bianchiccino.

One thousand three hundred sixty-four seconds ago, I walked to Lita.

Seven hundred fifty-four seconds ago, I met Baffaele Bianchiccino. Then, Baffaele Bianchiccino and I walked to Rovo.

Ten seconds ago, Baffaele Bianchiccino kicked me. I kicked Baffaele Bianchiccino.

Clearly, I have been focusing more on the story itself rather than the writing style (no serious author would mark up each line with the exact number of seconds ago the event took place).