The Sorcerer of the Wildeeps

The Sorcerer of the Wildeeps is a 2015 LGBT science fantasy novella, the debut novella by Kai Ashante Wilson. It is set in the same fictional universe as his later novella A Taste of Honey, as well as several of his short stories. It won the 2016 Crawford Award.

The Sorcerer of the Wildeeps
Official cover art for The Sorcerer of the Wildeeps
AuthorKai Ashante Wilson
LanguageEnglish
GenreFantasy literature; science fantasy
PublisherTor.com
Publication date
1 September 2015
Pages212
ISBN0765385244

Plot

A merchant caravan hires Captain Isa, Sorcerer Demane, and their men to guard them on a journey through the dangerous Wildeeps. The Wildeeps are a forest in which multiple dimensions overlap; only by staying on the Road can travelers be assured of safety. Isa and Demane are both descended from gods, granting them supernatural strength and other powers. They hide both their powers and their romantic relationship from the rest of the convoy. During the journey, the caravan is stalked by a jukiere, a type of magical tiger. Isa and Demane leave the Road to hunt the tiger. Demane kills one tiger while Isa fights another. In an ambiguous ending, it is implied that Demane's missed spear throw kills Isa.

Background

Prior to writing The Sorcerer of the Wildeeps, Wilson had attempted to write "six or seven" novels, but only got through a few chapters each time. He decided to focus on a smaller work that was nevertheless more extensive than his previous short stories. Most of the characters are based on real people. The novella is set in the same universe as his previous short stories Légendaire and Super Bass.[1] A later novella, A Taste of Honey, is also set in the same universe.

The Sorcerer of the Wildeeps was one of the first novellas published by Tor.com Publishing, then a new imprint of Tor.com.[2]

Reception

The novella received positive reviews from critics. Publisher's Weekly gave the work a starred review, calling it a "rich, delicately crafted world ... stocked with vibrant characters". They also praised the author's use of various dialects.[3] The book's writing style has been described as a "blend of very fancy literary writing, Martin-esque fantasy prose, and hip-hop slang".[4]

The novella has also been praised for its inclusion of African-American culture in a secondary fantasy world. Wilson's use of African-American Vernacular English, Spanish, and French further serve to further draw contrast with the "traditionally unmarked white middle-class accent (or dialect) of the typical fantasy protagonist".[5]

The novel won the 2016 Crawford Award.[6]

gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.
gollark: * desired
gollark: I can write some code for this if desisred.
gollark: Surely you can just pull a particular tag of the container.

References

  1. Alasdair Stuart (6 November 2015). "Interview: Kai Ashante Wilson, author of The Sorcerer of the Wildeeps". Retrieved 22 July 2020.
  2. Joel Cunningham (1 September 2015). "Tor.com's Novella Lineup Proves Good Books Come in Small Packages". Barnes & Noble. Retrieved 29 July 2020.
  3. "Fiction Book Review: The Sorcerer of the Wildeeps by Kai Ashante Wilson". Publishers Weekly. 10 August 2015. Retrieved 22 July 2020.
  4. Charlie Jane Anders (6 Jan 2016). "Sorcerer of the Wildeeps Is an Epic Fantasy Unlike Anything You've Read Before". Gizmodo. Retrieved 22 July 2020.
  5. Michael Levy (11 July 2016). "THE SORCERER OF THE WILDEEPS BY KAI ASHANTE WILSON". Strange Horizons. Retrieved 22 July 2020.
  6. Stacie Hanes (2 Feb 2016). "2016 Crawford Award Announced". International Association for the Fantastic in the Arts. Retrieved 29 July 2020.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.