Search

SOLVING THE PAST. “THE GO-SLOW” A SHORT STORY BY NNEDI OKORAFOR.





nnedi okorafor. credit: Wikimedia commons.

I live at Satellite town in Lagos and although I cannot speak for other literature enthusiasts, I know it is difficult finding novels or works of literature written by Nigerians living abroad. So, the day I discovered Nnedi Okorafor’s short story on the tor.com website, I quickly downloaded the page.

The short story is titled: The Go-slow. The author used a common situation in the country, traffic jams or go-slows, to paint a picture in her story of what she thought the truth was. I have to agree with her that “go-slows were like getting stuck in time warps.” I must say she has summed up the Nigerian situation very well; we are living a life that is haunted by the past, defeated by the past and indebted to the past that the present has become so frustrating, choked up by so much dirt and pollution, we have lost every desire to be innovative and progressive.

Nkem, one of the central characters in the story, manages to survive a go-slow that was capable of initiating a heart attack. Air pollution, noise pollution, frustration and abysmal deliberations are the elements Nkem has to undergo. Deluded in his belief that he has escaped, he encounters some birds, emus, who turn out to be humans imprisoned in animal bodies. Unaware that the bird he hits, tucked in the trunk of his car, is the leader of the emus, he is eventually arrested by her, a bird woman, Ogaadi, who is stronger than he is. She is a witch, an amusu, running away from her Uncle who had her imprisoned inside the soul of a bird. Ogaadi, though, is not the only prisoner in the story. Nkem is also a prisoner, haunted by the spirits of his birth because he is an Ogbanje child and the spirits want him dead so he can return to their world. Eventually, both persons agree to help themselves. Ogaadi eventually turns Nkem into an Eagle, a predator, a fitting animal that can help him fight the animals the spirit beings are using to disturb his life: hens, goats, horses and cows.

The writer, Nnedi Okorafor, believes that the situation of the characters, which I think mirrors the Nigerian situation, is due to the fact that the past has overtaken their present and future. They must have to defeat the past to live a normal life.

Nkem was born an Ogbanje. He has a rebellious streak that “made him marry [his wife] that much faster.” A popular actor, Nigeria’s “sexiest man alive”, who believes that he has defeated the burden of the go-slow, the general go-slow, Nkem is haunted by his friends in the spirit world who have used a hen, a goat and a horse to try to kill him in the past. As he sits through a depressing go-slow, they attempt, once again, to use an insane cow to kill him but he escapes with scratches on the mirror of his car.

Ogaadi on the other hand, was initiated into witch-hood by her Uncle who is an Ogbanje. I think the Uncle is afraid of her, suspicious that she must have used her powers against her mother and sister, so he imprisoned her in the body of a bird, an emu. Ogaadi has braided hair (I wonder if Nnedi is writing autobiographically here?), is strong willed and the leader of the emus. But Ogaadi is haunted by her powerful Uncle who she believes “… can stop everything! I know his ways!” She is paranoid about her Uncle’s abilities that she has to wrestle Nkem, screaming, ““He sent you!” she screamed. “You think I’m stupid?”

Nkem is the typical westernized Nigerian. He uses foul language a lot, although I object to the writer’s use, often, of the vulgar and obscene word: fuck. He rides an air-conditioned car, placing him in the middle-class, and is on his way for a sexual fling with Agnes, a woman who lives in Owerri, while his wife is waiting for him at Aba. Nkem desires a release from the troubles he is having with supernatural forces that he envies the seeming freedom of a bird flying in the sky. Older than Nkem, Ogaadi is a teacher, an amusu, who will later give Nkem the opportunity to have a taste of that freedom.

Like Nkem and Ogaadi, Nigerians are troubled by events of the past. Nothing seems to work because they are helmed in by traditions and “ways of doing things”, these are spirits that have successfully haunted and defeated the Nigerian persona that we are expect to always follow tradition. This must be what prompted the writer to intentionally use language that would seem distasteful to a moral traditionalist. Unless we become predators who can go back to fight these spirits and defeat them, we will never move forward. The past will forever keep us in retrogressive evolution.

Sometimes the writer uses pidgin in a way that is somewhat annoying. I wonder why she should write “Awo” instead of the exclamation, “Ewo!,” or “Na wow,” when she means “Na waoh!” Maybe Nnedi Okorafor is not pidginized enough. On the other hand though, she writes beautiful prose, prose that is worthy of emulation and her voice is natural and apt.

I’d recommend that you read the short story yourself. the go-slow is a story that struck a cord.

I did, on Tuesday, tweet about her new novel on amazon, akata witch. Pick one of her books and read.



follow me on twitter, @emeka_david or be a friend on facebook, nnaemeka david

Conversion exercise in decimal and binary systems, part 2: fractions

In part 1 of these exercises, we treated whole numbers or integers. This second series will deal with fractions.


Fractions are divisions of numbers, as distinct from whole numbers. 2/3 is a fraction as well as 0.342. Most times, fractions are written as the latter, with a decimal place because it is more intuitive.

converting binary fractions to decimals:

Let us take a binary fraction like 0.1001 base 2 as recurring example. Note that the decimal point makes that number a fraction. The place values of binary fractions are determined starting from the decimal point and we count starting from negative 1 (-1). That is, the first digit after the decimal point has a place value of 2 raised to minus 1 or 2-1. The second digit has a place value of 2-2, the third a place value of 2-3 and so on and so forth accordingly.


Therefore, to convert 0.10012 using the expanded notation to base 10:

0.1001 = 1 x 2 + 0 x 2 + 0 x 2 + 1 x 2 
= 1/2 + 0 +0 + 1/16

Then make all the denominators the same

= 8/16+ 1/16
            = 9/16
            = 0.562510  

Alternatively, you could convert the fractions to decimals and then sum up the decimals although that route might take a long1er time.


Another way is this:

  1. Place the decimal point to a position at the end of the last digit. It is now an integer
  2. Count the number of places you moved the decimal point and denote it as n.
  3. Convert the integer to decimal or base 10.
  4. Divide the result in (3) to 2n.
  5. Produce the decimal from the fraction.

Place the decimal point at the end: 0.1001 becomes 1001.0

Count the number of places you moved the decimal point, n: 4.

Convert the integer to decimal: 1001 base 2 is 9 base 10.

Divide the result by 2n i.e 24: 9/16

Produce the decimal equivalent of the fraction: 0.5625 base 10.


converting decimal fractions to binary


Decimals fractions can take two types, the fractions whose denominators are prime factors of 2 and those which the denominator is not. Denominators of the earlier type have terminating binary fractional equivalents while the latter have binary fractions which do not terminate and this is important when doing the conversions.


Time to stretch your legs? Credit: Wikimedia commons.

Let's take the 0.562510 decimal as an example before we try some other exercise with a fraction without a decimal point.


The technique is:

  1. Multiply the decimal fraction by 2.
  2. If the result is less than 1, place a 0 after the next decimal point else the result is greater than 1, place a 1 after the next decimal point and remove the integer part of result. If the result is equal to 1, place a 1 after the next decimal point; you have reached the termination point for the binary fraction.
  3. If (2) has not terminated, go back to (1).

Decimal to binary fraction. Terminating.
Fraction Result
0.5625 0.
0.5625 x 2 = 1.125 > 1 0.1

The result of multiplying the fraction by 2 is greater than 1, so I added a 1 to the next decimal place after the decimal point. The binary fraction, (or the result) is not going to terminate. So, let's continue. But first, I will take away the integer from the fraction.


0.125 x 2 = 0.25 < 1 0.10
0.25 x 2 = 0.5 < 1 0.100
0.5 x 2 = **1.0 = 1** 0.1001

By repeating the steps above, we arrived at a doubled fraction which is equal to 1. The binary fraction has terminated to arrive at 0.10012 as the result. It's simple, right?


Binary fractions that do not terminate are fractions whose denominators are not prime factors of 2. A denominator is the number under the dividing line in a fraction. Let us say in 2/3 the numerator is 2 and the denominator is 3. Converting this decimal fraction to binary will not terminate, though you might end the manipulation when you get a repeating pattern. Let us take 2/3 as an example.


A decimal fraction producing non-terminating binary fraction.
Fraction Result
2/3 0.
2/3 x 2 = 4/3 = 11/3 > 1 0.1

The initial multiplication by 2 results in a number greater than 1. We place a 1 after the next decimal point, remove the integer in the fraction and continue.


1/3 x 2 = 2/3 < 1 0.10
2/3 x 2 = 4/3 = 11/3 > 1 0.101
1/3 x 2 = 2/3 < 1 0.1010

Note that the last row of the table is a repeat of an earlier row. The result is a repeating pattern: 0.101010... Binary to decimal system conversions and vice versa are fun. I find myself doing them sometimes even while listening to music. You can do the same. Gottfried Leibniz wrote an article about 300
years ago
on the usefulness of binary arithmetic. You will find the discussion on chinese figures of fuxi interesting.

conversion exercise in decimal and binary systems, part 1 :whole numbers


follow me on twitter, @emeka_david or be a friend on facebook, nnaemeka david

Conversion exercises in binary and decimals. Part 1: Whole numbers.

The decimal numeral system, the numbers that start from 0 and end at 9, are of everyday use in our lives. Sometimes we tend to think that all other systems play a little roles because we do not use them or see them in action.


Well, the binary numeral system might appear to be of more importance than the decimal system; especially if you are talking to someone who is conversant with electronics, computer languages and logic. They can also be of importance to you. Unknown to me, until I read a wikipedia article on
binary numbers
, the Ifa priest makes use of this system in divination. I do not recommend though that you learn geomancy or divination because you want to understand the usefulness of maths.




I took the above picture because the positions of the birds is a good example I can use for the positions of the 0s and 1s in a binary system. If you represent a bird sitting on the power line with a 1 and an empty space a 0, the picture will produce the binary number: 10110000100110100110 base 2. Alternatively, if I represent each bird to be a ten in the decimal system, I will oblige your indulgence and make it number 90 base 10. So, for the exercises, we'll try converting the 90 base 10 to base 2 and then 10110000100110100110 base 2 to base 10.


From base 10 to base 2 (or from decimal to binary numeral systems):


A simple system of converting from decimals to binary is to divide the decimal number by 2 and if there is a remainder, place the remainder, which will be a 1, at the rightmost bit position but if there is no remainder, insert a zero. Then divide the resulting decimal number again and continue placing bit positions based on whether or not there are remainders until we arrive at decimal number 0. Then write down the 1 and 0s on the remainder column, starting from the bottom of the column such that the bottom is the leftmost bit position in binary numeral system. Your work is finished.


Let's show this with a table using the birds sitting on the powerline, or decimal number 90.


Converting 90 base 10 base 2.
Result : Decimal number % 2 Remainder (leftmost bit position)
90 / 2 = 45 0
45 / 2 = 22 1

Note our technique. Taking 90 and divide it by 2, we get 45 with a remainder of 0. So we insert 0 in the remainder position. Because the result is not zero, we continue the division. The second division, i.e 45 divided by 2 gives 22 remainder 1.


22 / 2 = 11 0
11 / 2 = 5 1
5 / 2 = 2 1
2 / 2 = 1 0
1 / 2 = 0 1
1011010 base 2

This dividing and inserting remainders continues to the seventh row when the result becomes 0. When you write down the converted number in binary, from the bottom, taking 1 as the left most bit, then the next is 0 and then 1 and until we get to the last remainder, 0, we get 90 base 10 converted to 1011010 base 2.


From base 2 to base 10 (or from binary to decimal numeral system):


This time, we'll convert the bird positions in binary,10110000100110100110 base 2 to base 10. How many positions are there? Let us count: the leftmost is a 1, then a 0 and counting from there we have 20 bit positions.


There is a system of binary to decimal conversions that uses bit positions and successive additions of their face values and place values to get to the result. The face value is the literal value for a bit position and the place value indicates the bit position, counting from the right starting from 0, to which we raise the number 2. 101 base 2, for simplicity has three (3) bit positions, with the rightmost bit 1, having a face value of 1 and a place value of 20. The next bit position has a face value of 0 and a place value of 21 and the last a face value of 1 with place value of 22. This simple system of conversions adds up the face and place values thus: 1 x 22 + 0 x 21 + 1 x 20 = 4 + 0 + 1 = 5 base 10.


If we apply this technique to a binary number with twenty (20) bit positions, how enormous the multiplications and additions that have to be done, and furthermore, mistakes will surely creep in.


There is a simpler technique, and it is very elegant. In fact, this technique, which I found while reading the wikipedia article on
binary numeral system
was what prompted this blog. I just was impelled to share it. It is called the Horner scheme.


These are the steps to apply the scheme:

  1. Create a prior value and give it a value of 0.
  2. Multiply the prior value by 2.
  3. Take the leftmost bit in the binary number and make it the Next Available Bit. Add the result of (2) to the Nest Available Bit.
  4. Let the result of (3) be the value of a box you will call, the Next Value.
  5. Now, assign the Next Value to the prior value, or make the Next Value be the value of the prior value.
  6. Provided there are still some bits that have not been manipulated in the binary number, or the next bit still have some candidates from the binary number, go back to (2).
  7. If the binary number bit positions is exhausted, then the result of the conversion is the value of the Next Value box.

We can illustrate the Horner scheme with a little table using the 20 bit positions of the birds sitting on the powerline representation.


Illustration: Horner scheme for 10110000100110100110 base 2.
Prior Value x 2 + Next Bit Next Value
0 0 x 2 = 0 0 + 1 (the leftmost bit) = 1 1
1 (the previous Next Value) 1 x 2 = 2 2 + 0 = 2 2
2 2 x 2 = 4 4 + 1 = 5 5

We started with a prior value of 0, multiplied it by 2, got 0, then took the leftmost bit as the Next Available Bit, which is a 1 and added it to the earlier result to get a 1 which was placed as the Next Value and then transferred to the prior value. Since there were still bit positions remaining, we continued by multiplying the prior value by 2, adding it to the next bit which is a 0 to get a 2 that was placed into the Next Value box. Continuing this algorithm for the third row resulted in a next value of 5.


Horner scheme for 10110000100110100110 base 2 continued
5 5 x 2 = 10 10 + 1 = 11 11
11 11 x 2 = 22 22 + 0 = 22 22
22 22 x 2 = 44 44 + 0 = 44 44
44 44 x 2 = 88 88 + 0 = 88 88
88 88 x 2 = 176 176 + 0 = 176 176
176 176 x 2 = 352 352 + 1 = 353 353
353 353 x 2 = 706 706 + 0 = 706 706
706 706 x 2 = 1412 1412 + 0 = 1412 1412
1412 1412 x 2 = 2824 2824 + 1 = 2825 2825
2825 2825 x 2 = 5650 5650 + 1 = 5651 5651
5651 5651 x 2 = 11302 11302 + 0 = 11302 11302

So far, we have calculated for fourteen (14) bit positions starting from the leftmost bit. I am sure you have realized how elegant Horner's scheme is compared to the earlier one that depends on face and place values? Especially if your bit positions are in the high numbers. Man, am I breaking out in sweat? Yet, the job has to be completed.


Horner scheme for 10110000100110100110 base 2 continued still.
11302 11302 x 2 = 22604 22604 + 1 = 22605 22605
22605 22605 x 2 = 45210 45210 + 0 = 45210 45210
45210 45210 x 2 = 90420 90420 + 0 = 90420 90420
90420 90420 x 2 = 180840 180840 + 1 = 180841 180841
180841 180841 x 2 = 361682 361682 + 1 = 361683 361683
361683 361683 x 2 = 723366 723366 + 0 = 723366 723366

So, finally, when there are no bit positions remaining, we arrive at the value of 723366 base 10.


Try out some exercises at home. You'll soon using this scheme yourself.


I will like to end this blog by noting that the Horner scheme is the conversion from base 10 to base 2 using division by 2 and noting remainders in reverse.


I leave this as an exercise for you to compare both methods. This underscores a trait in mathematicians that I admire very much: they have an open eye for patterns, even the queer variety. They have a knack for knowing what works most of the time if it has worked once in their life. They have an amazing memory recall system. I know it because I have experienced it myself.

Surprisingly, ancient India used binary numbers and applied binary to decimal conversions prior to 2nd century A.D, more than 1500 years before their discovery in the west.

My next post will cover fractional conversions, conversion exercise in decimal and binary systems, part 2 : fractions.





follow me on twitter, @emeka_david or be a friend on facebook, nnaemeka david

Matched content