Warning: Table 'edadmin_drpl1.accesslog' doesn't exist query: SELECT uid, timestamp FROM accesslog WHERE (path = 'node/24' OR uid > 0) AND sid = '0f101d4523d46f3c4177d45bae765d0f' ORDER BY timestamp DESC LIMIT 0, 1 in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:5e7c9e1fefc0c8e17d60db7933cab0f7'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:7686:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<p><i>Bias alert: I know <a href=\\"http://nalohopkinson.com/\\" target=\\"_blank\\">Nalo Hopkinson</a>. It would be a stretch to claim a close friendship, but we\\'ve socialized and we exchange hugs when we see each other. Had I not liked this novel, I would most likely have noted it here, but otherwise passed it over in silence. I </i>did<i> like it, though &mdash in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:349:\"Table 'edadmin_drpl1.captcha_sessions' doesn't exist\nquery: INSERT into captcha_sessions (uid, sid, ip_address, timestamp, form_id, solution, status, attempts) VALUES (0, '0f101d4523d46f3c4177d45bae765d0f', '54.163.210.170', 1513339343, 'comment_form', '64ade2ea6bd80ae7340eb5acbb59e190', 0, 0)\";s:5:\"%file\";s:63:\"/home/edadmin/public_html/sites/all/modules/captcha/captcha.inc\";s:5:\"%line\";i:125;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170 in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:124:\"Table 'edadmin_drpl1.captcha_sessions' doesn't exist\nquery: SELECT token FROM captcha_sessions WHERE csid = 0\";s:5:\"%file\";s:66:\"/home/edadmin/public_html/sites/all/modules/captcha/captcha.module\";s:5:\"%line\";i:214;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:125:\"Table 'edadmin_drpl1.captcha_sessions' doesn't exist\nquery: SELECT status FROM captcha_sessions WHERE csid = 0\";s:5:\"%file\";s:63:\"/home/edadmin/public_html/sites/all/modules/captcha/captcha.inc\";s:5:\"%line\";i:155;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:125:\"Table 'edadmin_drpl1.captcha_sessions' doesn't exist\nquery: SELECT status FROM captcha_sessions WHERE csid = 0\";s:5:\"%file\";s:63:\"/home/edadmin/public_html/sites/all/modules/captcha/captcha.inc\";s:5:\"%line\";i:155;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:165:\"Table 'edadmin_drpl1.captcha_sessions' doesn't exist\nquery: UPDATE captcha_sessions SET timestamp=1513339343, solution='RRNNEn' WHERE csid=0\";s:5:\"%file\";s:63:\"/home/edadmin/public_html/sites/all/modules/captcha/captcha.inc\";s:5:\"%line\";i:137;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a777d0249b540b4111ef42e9d15d7638'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:2124:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<p><center></center></p>\\n<table align=\\"center\\" style=\\"width: 225px;\\">\\n<tbody>\\n<tr>\\n<td style=\\"width: 225px; background-color: rgb(176, 83, 162); text-align: center; vertical-align: bottom;\\">\\n<div><span style=\\"font-size: 19px;\\"><span style=\\"font-fami in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:0abc4daf3615eae37d92fac6774cbdca'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:1083:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<table align=\\"center\\" style=\\"width: 200px;\\">\\n<tbody>\\n<tr>\\n<td>\\n<script type=\\"text/javascript\\"><!--\\ngoogle_ad_client = \\"pub-5278265615507417\\";\\n/* 160x600 picture-only, created 9/29/10 */\\ngoogle_ad_slot = \\"3058889442\\";\\ngoogle_ad_width = 160;\\ngoogle_ad_height = 600;\\n//--><!--\\ngoogle_a in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:44e05be548c17efbc6463c731ca1d7c4'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:870:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<p><center><br />\\n<table align=\\"center\\" border=\\"0\\" cellpadding=\\"0\\" cellspacing=\\"0\\">\\n<tbody>\\n<tr>\\n<td>\\n<div style=\\"text-align: center;\\"><a href=\\"http://ed-rex.com/bumblepuppy\\" target=\\"_blank\\"><img src=\\&qu in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:1587bce80743d25a13699439e1436ddf'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:828:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<p><center><br />\\n<table style=\\"height: 645px; width: 285px;\\">\\n<tbody>\\n<tr>\\n<td><a href=\\"http://www.bppress.ca/product/old-mans-last-sauna/\\" target=\\"_blank\\"><img alt=\\"The Old Man\\'s Last Sauna, cover image\\" src=\\"/sites/default/files/2013_06/sauna_ad04.jpg\\" st in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:224:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a641667eb8686ec6a410a6d1682e9f16'\";s:5:\"%file\";s:44:\"/home/edadmin/public_html/includes/cache.inc\";s:5:\"%line\";i:27;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170', 1513339343) in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:2569:\"Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired\nquery: UPDATE cache_filter SET data = '<p><center><br />\\n<table style=\\"width: 275px;\\">\\n<tbody>\\n<tr>\\n<td style=\\"background-color: rgb(176, 83, 162); text-align: center;\\">\\n<div><a href=\\"http://ed-rex.com/mailman/listinfo/ed-rex-update_ed-rex.com\\" target=\\"_blank\\"><strong><span style=\\"font-f in /home/edadmin/public_html/includes/database.mysql.inc on line 135
Review: Midnight Robber, by Nalo Hopkinson | www.ed-rex.com


Review: Midnight Robber, by Nalo Hopkinson

  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:5e7c9e1fefc0c8e17d60db7933cab0f7' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><i>Bias alert: I know <a href=\"http://nalohopkinson.com/\" target=\"_blank\">Nalo Hopkinson</a>. It would be a stretch to claim a close friendship, but we\'ve socialized and we exchange hugs when we see each other. Had I not liked this novel, I would most likely have noted it here, but otherwise passed it over in silence. I </i>did<i> like it, though &mdash; a lot &mdash; but think it only fair to let you know the context in which I write about it.</i></p>\n<table cellpadding=\"0\" cellspacing=\"0\" width=\"250\" align=\"left\" style=\"margin:0px 20px 10px 0px;\">\n<tr>\n<td style=\"padding:0px; background-color:#DDDDDD;\"><a href=\"http://www.amazon.ca/gp/product/0446675601/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;tag=edirexonl-20&amp;linkCode=as2&amp;camp=15121&amp;creative=330641&amp;creativeASIN=0446675601\" target=\"_blank\"><img src=\"http://ed-rex.com/sites/all/themes/edrex/images/midnight_robber.jpg\" alt=\"Midnight Robber Cover\" height=\"387\" width=\"250\" border=\"0\" /></a></td>\n</tr>\n<tr>\n<td><small><i><a href=\"http://www.amazon.ca/gp/product/0446675601/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;tag=edirexonl-20&amp;linkCode=as2&amp;camp=15121&amp;creative=330641&amp;creativeASIN=0446675601\" target=\"_blank\">Midnight Robber</a></i>, by <a href=\"http://nalohopkinson.com/\" target=\"_blank\">Nalo Hopkinson</a><br />\n# ISBN-10: 0446675601<br />\n# ISBN-13: 978-0446675604</small></td>\n</tr>\n</table>\n<p>One of SF\'s major claims is that it is a \"literature of ideas\", whether exploring the possible implications of new technologies or the ramifications of therefrom. Implicit in both is that the reader should be prepared for something new and unexpected &mdash; but most of the time, the cultural subtext is entirely mainstream, western and white (not to mention, usually male, though that at least seems to be less and less true as time goes by) and no matter how exotic or alien the background, most SF and fantasy reads like it was written by Some White Guy in a small apartment somewhere in Middle America.</p>\n<p>Nothing wrong with that, but you\'d think a literature at home in the past, the future and on other planets might be a little more willing to play with language and cultural assumptions more than it usually is.</p>\n<p>Nalo Hopkinson\'s <i>Midnight Robber</i> does both, and in spades.</p>\n<p>On the level of the plot, <i>Midnight Robber</i> is a fairly standard coming-of-age story, female version.</p>\n<p>Tan-Tan is eight or nine years old, and a real daddy\'s girl, when <i>her</i> daddy &mdash; mayor of Cockpit County on a world long since colonized by a Caribbean diaspora &mdash; murders his wife\'s lover and the story, Tan-Tan\'s story, really begins.</p>\n<p>The world of Toussaint deals with its dangerous criminals through exile. Not to another continent, but to yet another world entirely, New Half-Way Tree, with no way back. New Half-Way Tree, or at least the small part of it in which the novel is set, is a jungle world, full of exotic and sometimes dangerous life forms, including at least one other intelligent species, the <i>Douen</i>, an avian species with a remarkable (and surprising) sexual dimorphism.</p>\n<p>The power in <i>Midnight Robber</i> comes not from its setting (though that is more <i>strange</i> and better thought-out than many another book set on an alien world) or its plot-turns (though here too Hopkinson\'s story finds nearly virgin forests where most plow well-furrowed ground) but from its subtle characterizations and, especially through its use of language.</p>\n<p>Though she\'s been a Torontonian since the 70s, Hopkinson was raised in Jamaica and Trinidad before coming to Canada as a teenager, and she has clearly reached back to her roots to tell this story.</p>\n<p>It takes some getting used to, if you\'re used to SF\'s standard \"plain prose\" style. A significant portion of the narrative &mdash; and all the dialogue &mdash; is written in (what reads to me like) a sort of creole. I\'m ashamed to admit that the opening pages stopped me more than once before I managed to break through the mental barrier.</p>\n<blockquote><p>Oho. Like it starting, oui? don\'t be frightened, sweetness; is for the best. I go be with you the whole time. Trust me and let me distract you little bit one anasi story:</p>\n<p>It had a woman, you see, a strong, hard-back woman with skin like cocoa-tea. She two foot-them tough from hiking through the diable bush, the devil bush on the prison planet of New Half-Way Tree. When she walk, she foot strike the hard earth <i>bup!</i> like breadfruit dropping to the ground. She two arms hard with muscle from all the years of hacking paths through the diable bush on New Half-Way Tree. Even she hair itself rough and wiry; long black knotty locks springing from she scalp and corkscrewing all the way down she back. She name Tan-Tan, and New Half-Way Tree was she planet.</p>\n</blockquote>\n<p>The main narrative is written in something closer to standard Canadian English, but small twists of usage and slang serve to remind us that we aren\'t in Toronto anymore.</p>\n<p>Tan-Tan\'s story begins with privilege and falls from exile to exile. When she hides in a basket in order to see her father, Antonio &mdash; a monstrous but entirely human figure &mdash; decides to take her in exile with him, the first of his genuinely abusive acts.</p>\n<p>Antonio is a weak man, and so a proud one, given to rage and violence and as Tan-Tan grows closer to womanhood the reader, dreading it, is not surprised when his abuse becomes sexual. Over the course of the first half of the book, Antonio grew from a character I disliked to a <i>man</i> I loathed. Hopkinson is too good a writer not to empathise with her characters, even when they are monsters.</p>\n<p>But this <i>is</i> a coming-of-age story. Tan-Tan escapes her father, running away into the jungle and that is when the novel really comes into its own, both as science fiction and as genuine <i>bildungsroman</i>. Hopkinson juggles world-building with psychological growth while always telling a fascinating story with an almost poetic prose in a way few writers can manage. The \"legends\" of the Mightnight Robber, interspersed with the main narrative, feel entirely real, as do Tan-Tan\'s own closely-related adventures.</p>\n<p>This is science fiction as it it is meant to be: literary, rigorously imaginative, emotionally intense and moving, and utterly believable, no matter how strange its setting.</p>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:5e7c9e1fefc0c8e17d60db7933cab0f7' in /home/edadmin/public_html/includes/cache.inc on line 112.
  • user warning: Table 'edadmin_drpl1.captcha_sessions' doesn't exist query: INSERT into captcha_sessions (uid, sid, ip_address, timestamp, form_id, solution, status, attempts) VALUES (0, '0f101d4523d46f3c4177d45bae765d0f', '54.163.210.170', 1513339343, 'comment_form', '64ade2ea6bd80ae7340eb5acbb59e190', 0, 0) in /home/edadmin/public_html/sites/all/modules/captcha/captcha.inc on line 125.
  • user warning: Table 'edadmin_drpl1.captcha_sessions' doesn't exist query: SELECT token FROM captcha_sessions WHERE csid = 0 in /home/edadmin/public_html/sites/all/modules/captcha/captcha.module on line 214.
  • user warning: Table 'edadmin_drpl1.captcha_sessions' doesn't exist query: SELECT status FROM captcha_sessions WHERE csid = 0 in /home/edadmin/public_html/sites/all/modules/captcha/captcha.inc on line 155.
  • user warning: Table 'edadmin_drpl1.captcha_sessions' doesn't exist query: SELECT status FROM captcha_sessions WHERE csid = 0 in /home/edadmin/public_html/sites/all/modules/captcha/captcha.inc on line 155.
  • user warning: Table 'edadmin_drpl1.captcha_sessions' doesn't exist query: UPDATE captcha_sessions SET timestamp=1513339343, solution='RRNNEn' WHERE csid=0 in /home/edadmin/public_html/sites/all/modules/captcha/captcha.inc on line 137.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a777d0249b540b4111ef42e9d15d7638' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><center></center></p>\n<table align=\"center\" style=\"width: 225px;\">\n<tbody>\n<tr>\n<td style=\"width: 225px; background-color: rgb(176, 83, 162); text-align: center; vertical-align: bottom;\">\n<div><span style=\"font-size: 19px;\"><span style=\"font-family: georgia,serif;\"><strong>Like what you&#39;ve read?</strong></span></span></div>\n</td>\n</tr>\n<tr>\n<td style=\"width: 225px; background-color: rgb(176, 83, 162);\">\n<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\"><input name=\"cmd\" type=\"hidden\" value=\"_s-xclick\" /> <input name=\"hosted_button_id\" type=\"hidden\" value=\"MR496TCXQQXQL\" /> <input alt=\"PayPal - The safer, easier way to pay online!\" border=\"0\" name=\"submit\" target=\"_blank\" src=\"http://ed-rex.com/sites/default/files/adverts/donate_button02.gif\" type=\"image\" /> <img alt=\"\" border=\"0\" height=\"1\" src=\"https://www.paypalobjects.com/en_US/i/scr/pixel.gif\" width=\"1\" /></form>\n</td>\n</tr>\n<tr>\n<td style=\"width: 225px; background-color: rgb(176, 83, 162); text-align: center; vertical-align: top;\">\n<div><span style=\"font-size: 26px;\"><em><strong><span style=\"font-family: georgia,serif;\">Tip the author!</span></strong></em></span></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p></p>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:a777d0249b540b4111ef42e9d15d7638' in /home/edadmin/public_html/includes/cache.inc on line 112.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:0abc4daf3615eae37d92fac6774cbdca' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<table align=\"center\" style=\"width: 200px;\">\n<tbody>\n<tr>\n<td>\n<script type=\"text/javascript\"><!--\ngoogle_ad_client = \"pub-5278265615507417\";\n/* 160x600 picture-only, created 9/29/10 */\ngoogle_ad_slot = \"3058889442\";\ngoogle_ad_width = 160;\ngoogle_ad_height = 600;\n//--><!--\ngoogle_ad_client = \"pub-5278265615507417\";\n/* 160x600 picture-only, created 9/29/10 */\ngoogle_ad_slot = \"3058889442\";\ngoogle_ad_width = 160;\ngoogle_ad_height = 600;\n//-->\n</script><script type=\"text/javascript\"\nsrc=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n</script></td></tr>\n\n</tbody></table>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:0abc4daf3615eae37d92fac6774cbdca' in /home/edadmin/public_html/includes/cache.inc on line 112.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:44e05be548c17efbc6463c731ca1d7c4' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><center><br />\n<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n<tbody>\n<tr>\n<td>\n<div style=\"text-align: center;\"><a href=\"http://ed-rex.com/bumblepuppy\" target=\"_blank\"><img src=\"/sites/default/files/2011_06/BPad4TNP_04.jpg\" style=\"width: 225px; height: 227px;\" /></a></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p></p></center></p>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:44e05be548c17efbc6463c731ca1d7c4' in /home/edadmin/public_html/includes/cache.inc on line 112.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:1587bce80743d25a13699439e1436ddf' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><center><br />\n<table style=\"height: 645px; width: 285px;\">\n<tbody>\n<tr>\n<td><a href=\"http://www.bppress.ca/product/old-mans-last-sauna/\" target=\"_blank\"><img alt=\"The Old Man\'s Last Sauna, cover image\" src=\"/sites/default/files/2013_06/sauna_ad04.jpg\" style=\"width: 285px; height: 634px;\" /></a></td>\n</tr>\n</tbody>\n</table>\n<p></p></center></p>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:1587bce80743d25a13699439e1436ddf' in /home/edadmin/public_html/includes/cache.inc on line 112.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a641667eb8686ec6a410a6d1682e9f16' in /home/edadmin/public_html/includes/cache.inc on line 27.
  • user warning: Table './edadmin_drpl1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p><center><br />\n<table style=\"width: 275px;\">\n<tbody>\n<tr>\n<td style=\"background-color: rgb(176, 83, 162); text-align: center;\">\n<div><a href=\"http://ed-rex.com/mailman/listinfo/ed-rex-update_ed-rex.com\" target=\"_blank\"><strong><span style=\"font-family: georgia,serif;\"><big>Stop being late to the party!</big></span></strong></a></div>\n<p>\n<div><span style=\"color: rgb(204, 255, 0);\"><em><span style=\"font-size: 24px;\"><strong><span style=\"font-family: georgia,serif;\">Subscribe!</span></strong></span></em></span></div>\n</p><p><a href=\"http://ed-rex.com/mailman/listinfo/ed-rex-update_ed-rex.com\" target=\"_blank\"><img alt=\"Subscribe to my newsletter!\" src=\"http://ed-rex.com/sites/default/files/2011_07/subscribe_ad02.jpg\" style=\"width: 275px; height: 108px;\" /></a></p>\n<div><span style=\"color: rgb(255, 255, 0);\"></span></div>\n<div><strong><span style=\"font-family: georgia,serif;\">Subscribe to the <em>Edifice Rex</em> mailing list to be notified whenever there&#39;s an update!</span></strong></div>\n<div>&nbsp;</div>\n<div><strong><span style=\"font-family: georgia,serif;\"><big><big><big><a href=\"http://ed-rex.com/mailman/listinfo/ed-rex-update_ed-rex.com\" target=\"_blank\">Click here to sign up</a></big></big></big><br />\n(I promise, I won\'t abuse your trust; I won\'t sell your address to anyone or anything else, no matter how tempting the offer.)</span></strong></div>\n<div><a href=\"http://ed-rex.com/mailman/listinfo/ed-rex-update_ed-rex.com\" target=\"_blank\">&nbsp;</a></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p></p></center></p>\n', created = 1513339343, expire = 1513425743, headers = '', serialized = 0 WHERE cid = '2:a641667eb8686ec6a410a6d1682e9f16' in /home/edadmin/public_html/includes/cache.inc on line 112.

Bias alert: I know Nalo Hopkinson. It would be a stretch to claim a close friendship, but we've socialized and we exchange hugs when we see each other. Had I not liked this novel, I would most likely have noted it here, but otherwise passed it over in silence. I did like it, though — a lot — but think it only fair to let you know the context in which I write about it.

Midnight Robber Cover
Midnight Robber, by Nalo Hopkinson
# ISBN-10: 0446675601
# ISBN-13: 978-0446675604

One of SF's major claims is that it is a "literature of ideas", whether exploring the possible implications of new technologies or the ramifications of therefrom. Implicit in both is that the reader should be prepared for something new and unexpected — but most of the time, the cultural subtext is entirely mainstream, western and white (not to mention, usually male, though that at least seems to be less and less true as time goes by) and no matter how exotic or alien the background, most SF and fantasy reads like it was written by Some White Guy in a small apartment somewhere in Middle America.

Nothing wrong with that, but you'd think a literature at home in the past, the future and on other planets might be a little more willing to play with language and cultural assumptions more than it usually is.

Nalo Hopkinson's Midnight Robber does both, and in spades.

On the level of the plot, Midnight Robber is a fairly standard coming-of-age story, female version.

Tan-Tan is eight or nine years old, and a real daddy's girl, when her daddy — mayor of Cockpit County on a world long since colonized by a Caribbean diaspora — murders his wife's lover and the story, Tan-Tan's story, really begins.

The world of Toussaint deals with its dangerous criminals through exile. Not to another continent, but to yet another world entirely, New Half-Way Tree, with no way back. New Half-Way Tree, or at least the small part of it in which the novel is set, is a jungle world, full of exotic and sometimes dangerous life forms, including at least one other intelligent species, the Douen, an avian species with a remarkable (and surprising) sexual dimorphism.

The power in Midnight Robber comes not from its setting (though that is more strange and better thought-out than many another book set on an alien world) or its plot-turns (though here too Hopkinson's story finds nearly virgin forests where most plow well-furrowed ground) but from its subtle characterizations and, especially through its use of language.

Though she's been a Torontonian since the 70s, Hopkinson was raised in Jamaica and Trinidad before coming to Canada as a teenager, and she has clearly reached back to her roots to tell this story.

It takes some getting used to, if you're used to SF's standard "plain prose" style. A significant portion of the narrative — and all the dialogue — is written in (what reads to me like) a sort of creole. I'm ashamed to admit that the opening pages stopped me more than once before I managed to break through the mental barrier.

Oho. Like it starting, oui? don't be frightened, sweetness; is for the best. I go be with you the whole time. Trust me and let me distract you little bit one anasi story:

It had a woman, you see, a strong, hard-back woman with skin like cocoa-tea. She two foot-them tough from hiking through the diable bush, the devil bush on the prison planet of New Half-Way Tree. When she walk, she foot strike the hard earth bup! like breadfruit dropping to the ground. She two arms hard with muscle from all the years of hacking paths through the diable bush on New Half-Way Tree. Even she hair itself rough and wiry; long black knotty locks springing from she scalp and corkscrewing all the way down she back. She name Tan-Tan, and New Half-Way Tree was she planet.

The main narrative is written in something closer to standard Canadian English, but small twists of usage and slang serve to remind us that we aren't in Toronto anymore.

Tan-Tan's story begins with privilege and falls from exile to exile. When she hides in a basket in order to see her father, Antonio — a monstrous but entirely human figure — decides to take her in exile with him, the first of his genuinely abusive acts.

Antonio is a weak man, and so a proud one, given to rage and violence and as Tan-Tan grows closer to womanhood the reader, dreading it, is not surprised when his abuse becomes sexual. Over the course of the first half of the book, Antonio grew from a character I disliked to a man I loathed. Hopkinson is too good a writer not to empathise with her characters, even when they are monsters.

But this is a coming-of-age story. Tan-Tan escapes her father, running away into the jungle and that is when the novel really comes into its own, both as science fiction and as genuine bildungsroman. Hopkinson juggles world-building with psychological growth while always telling a fascinating story with an almost poetic prose in a way few writers can manage. The "legends" of the Mightnight Robber, interspersed with the main narrative, feel entirely real, as do Tan-Tan's own closely-related adventures.

This is science fiction as it it is meant to be: literary, rigorously imaginative, emotionally intense and moving, and utterly believable, no matter how strange its setting.

Spread the word!

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:338:\"Table &#039;edadmin_drpl1.accesslog&#039; doesn&#039;t exist\nquery: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values(&#039;Review: Midnight Robber, by Nalo Hopkinson&#039;, &#039;node/24&#039;, &#039;&#039;, &#039;54.163.210.170&#039;, 0, &#039;0f101d4523d46f3c4177d45bae765d0f&#039;, 252, 1513339343)\";s:5:\"%file\";s:62:\"/home/edadmin/public_html/modules/statistics/statistics.module\";s:5:\"%line\";i:63;}', 3, '', 'http://ed-rex.com/reviews/midnight_robber', '', '54.163.210.170' in /home/edadmin/public_html/includes/database.mysql.inc on line 135

Warning: Table 'edadmin_drpl1.watchdog' doesn't exist query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:829:\"Table &#039;./edadmin_drpl1/sessions&#039; is marked as crashed and should be repaired\nquery: UPDATE sessions SET uid = 0, cache = 0, hostname = &#039;54.163.210.170&#039;, session = &#039;messages|a:1:{s:5:\\&quot;error\\&quot;;a:1:{i:0;s:430:\\&quot;user warning: Table &amp;#039;edadmin_drpl1.accesslog&amp;#039; doesn&amp;#039;t exist\\nquery: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values(&amp;#039;Review: Midnight Robber, by Nalo Hopkinson&amp;#039;, &amp;#039;node/24&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;54.163.210.170&amp in /home/edadmin/public_html/includes/database.mysql.inc on line 135