100% found this document useful (5 votes)
90 views

Download full Python High Performance Programming 1st Edition Gabriele Lanaro ebook all chapters

Python

Uploaded by

anduloungco
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (5 votes)
90 views

Download full Python High Performance Programming 1st Edition Gabriele Lanaro ebook all chapters

Python

Uploaded by

anduloungco
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Download Full Version ebook - Visit ebookmeta.

com

Python High Performance Programming 1st Edition


Gabriele Lanaro

https://ebookmeta.com/product/python-high-performance-
programming-1st-edition-gabriele-lanaro/

OR CLICK HERE

DOWLOAD NOW

Discover More Ebook - Explore Now at ebookmeta.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

High Performance Python 2nd Edition Micha Gorelick

https://ebookmeta.com/product/high-performance-python-2nd-edition-
micha-gorelick/

ebookmeta.com

Programming Crystal Create High Performance Safe


Concurrent Apps 1st Edition Simon St. Laurent

https://ebookmeta.com/product/programming-crystal-create-high-
performance-safe-concurrent-apps-1st-edition-simon-st-laurent/

ebookmeta.com

Clojure High Performance JVM Programming 1st Edition


Eduardo Díaz Shantanu Kumar Akhil Wali

https://ebookmeta.com/product/clojure-high-performance-jvm-
programming-1st-edition-eduardo-diaz-shantanu-kumar-akhil-wali/

ebookmeta.com

Surgery Sixer for NBE 5th Edition R Rajamahendran Harindra


Sandhu

https://ebookmeta.com/product/surgery-sixer-for-nbe-5th-edition-r-
rajamahendran-harindra-sandhu/

ebookmeta.com
Tajikistan Bradt Travel Guides 3rd ed 2020 Sophie
Ibbotson

https://ebookmeta.com/product/tajikistan-bradt-travel-guides-3rd-
ed-2020-sophie-ibbotson/

ebookmeta.com

The Multilingual Turn Implications for SLA TESOL and


Bilingual Education First Edition Stephen May

https://ebookmeta.com/product/the-multilingual-turn-implications-for-
sla-tesol-and-bilingual-education-first-edition-stephen-may/

ebookmeta.com

Algorithms 4th Edition Robert Sedgewick Kevin Wayne

https://ebookmeta.com/product/algorithms-4th-edition-robert-sedgewick-
kevin-wayne/

ebookmeta.com

Machine Learning Design Patterns: Solutions to Common


Challenges in Data Preparation, Model Building, and MLOps
1st Edition Valliappa Lakshmanan
https://ebookmeta.com/product/machine-learning-design-patterns-
solutions-to-common-challenges-in-data-preparation-model-building-and-
mlops-1st-edition-valliappa-lakshmanan/
ebookmeta.com

World War II and the West It Wrought 1st Edition Mark


Brilliant (Editor)

https://ebookmeta.com/product/world-war-ii-and-the-west-it-
wrought-1st-edition-mark-brilliant-editor/

ebookmeta.com
The Dragon King Collection In the Hall of the Dragon King
The Warlords of Nin and The Sword and the Flame 2nd
Edition Stephen R Lawhead
https://ebookmeta.com/product/the-dragon-king-collection-in-the-hall-
of-the-dragon-king-the-warlords-of-nin-and-the-sword-and-the-
flame-2nd-edition-stephen-r-lawhead/
ebookmeta.com
Table of Contents
Python High Performance Programming
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Benchmarking and Profiling
Designing your application
Writing tests and benchmarks
Timing your benchmark
Finding bottlenecks with cProfile
Profile line by line with line_profiler
Optimizing our code
The dis module
Profiling memory usage with memory_profiler
Performance tuning tips for pure Python code
Summary
2. Fast Array Operations with NumPy
Getting started with NumPy
Creating arrays
Accessing arrays
Broadcasting
Mathematical operations
Calculating the Norm
Rewriting the particle simulator in NumPy
Reaching optimal performance with numexpr
Summary
3. C Performance with Cython
Compiling Cython extensions
Adding static types
Variables
Functions
Classes
Sharing declarations
Working with arrays
C arrays and pointers
NumPy arrays
Typed memoryviews
Particle simulator in Cython
Profiling Cython
Summary
4. Parallel Processing
Introduction to parallel programming
The multiprocessing module
The Process and Pool classes
Monte Carlo approximation of pi
Synchronization and locks
IPython parallel
Direct interface
Task-based interface
Parallel Cython with OpenMP
Summary
Index
Python High Performance
Programming
Python High Performance
Programming
Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored


in a retrieval system, or transmitted in any form or by any means,
without the prior written permission of the publisher, except in the
case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure
the accuracy of the information presented. However, the information
contained in this book is sold without warranty, either express or
implied. Neither the author, nor Packt Publishing, and its dealers and
distributors will be held liable for any damages caused or alleged to
be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information


about all of the companies and products mentioned in this book by
the appropriate use of capitals. However, Packt Publishing cannot
guarantee the accuracy of this information.

First published: December 2013

Production Reference: 1171213

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78328-845-8
www.packtpub.com

Cover Image by Gagandeep Sharma (<er.gagansharma@gmail.com>)


Credits
Author

Gabriele Lanaro

Reviewers

Daniel Arbuckle

Mike Driscoll

Albert Lukaszewski

Acquisition Editors

Owen Roberts

Harsha Bharwani

Commissioning Editor

Shaon Basu

Technical Editors

Akashdeep Kundu

Faisal Siddiqui

Project Coordinator

Sherin Padayatty

Proofreader

Linda Morris
Indexer

Rekha Nair

Production Coordinators

Pooja Chiplunkar

Manu Joseph

Cover Work

Pooja Chiplunkar
About the Author
Gabriele Lanaro is a PhD student in Chemistry at the University of
British Columbia, in the field of Molecular Simulation. He writes high
performance Python code to analyze chemical systems in large-scale
simulations. He is the creator of Chemlab—a high performance
visualization software in Python—and emacs-for-python—a collection
of emacs extensions that facilitate working with Python code in the
emacs text editor. This book builds on his experience in writing
scientific Python code for his research and personal projects.

I want to thank my parents for their huge, unconditional love


and support. My gratitude cannot be expressed by words but I
hope that I made them proud of me with this project.

I would also thank the Python community for producing and


maintaining a massive quantity of high-quality resources made
available for free. Their extraordinary supportive and
compassionate attitude really fed my passion for this amazing
technology.

A special thanks goes to Hessam Mehr for reviewing my drafts,


testing the code and providing extremely valuable feedback. I
would also like to thank my roommate Kaveh for being such an
awesome friend and Na for bringing me chocolate bars during
rough times.
About the Reviewers
Dr. Daniel Arbuckle is a published researcher in the fields of
robotics and nanotechnology, as well as a professional Python
programmer. He is the author of Python Testing: Beginner's Guide
from Packt Publishing and one of the authors of Morphogenetic
Engineering from Springer-Verlag.

Mike Driscoll has been programming in Python since Spring 2006.


He enjoys writing about Python on his blog at
http://www.blog.pythonlibrary.org/. Mike also occasionally writes for
the Python Software Foundation, i-Programmer, and Developer Zone.
He enjoys photography and reading a good book. Mike has also
been a technical reviewer for Python 3 Object Oriented
Programming, Python 2.6 Graphics Cookbook, and Tkinter GUI
Application Development Hotshot.

I would like to thank my beautiful wife, Evangeline, for always


supporting me. I would also like to thank friends and family for
all that they do to help me. And I would like to thank Jesus
Christ for saving me.

Albert Lukaszewski is a software consultant and the author of


MySQL for Python. He has programmed computers for nearly 30
years. He specializes in high-performance Python implementations of
network and database services. He has designed and developed
Python solutions for a wide array of industries including media,
mobile, publishing, and cinema. He lives with his family in southeast
Scotland.
www.PacktPub.com
Support files, eBooks,
discount offers and more
You might want to visit www.PacktPub.com for support files and
downloads related to your book.

Did you know that Packt offers eBook versions of every book
published, with PDF and ePub files available? You can upgrade to the
eBook version at www.PacktPub.com and as a print book customer,
you are entitled to a discount on the eBook copy. Get in touch with
us at <service@packtpub.com> for more details.

At www.PacktPub.com, you can also read a collection of free


technical articles, sign up for a range of free newsletters and receive
exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is


Packt's online digital book library. Here, you can access, read and
search across Packt's entire library of books.
Why Subscribe?
Fully searchable across every book published by Packt
Copy and paste, print and bookmark content
On demand and accessible via web browser
Free Access for Packt account
holders
If you have an account with Packt at www.PacktPub.com, you can
use this to access PacktLib today and view nine entirely free books.
Simply use your login credentials for immediate access.
Preface
Python is a programming language renowned for its simplicity,
elegance, and the support of an outstanding community. Thanks to
the impressive amount of high-quality third-party libraries, Python is
used in many domains.

Low-level languages such as C, C++, and Fortran are usually


preferred in performance-critical applications. Programs written in
those languages perform extremely well, but are hard to write and
maintain.

Python is an easier language to deal with and it can be used to


quickly write complex applications. Thanks to its tight integration
with C, Python is able to avoid the performance drop associated with
dynamic languages. You can use blazing fast C extensions for
performance-critical code and retain all the convenience of Python
for the rest of your application.

In this book, you will learn, in a step-by-step method how to find


and speedup the slow parts of your programs using basic and
advanced techniques.

The style of the book is practical; every concept is explained and


illustrated with examples. This book also addresses common
mistakes and teaches how to avoid them. The tools used in this
book are quite popular and battle-tested; you can be sure that they
will stay relevant and well-supported in the future.

This book starts from the basics and builds on them, therefore, I
suggest you to move through the chapters in order.

And don't forget to have fun!


What this book covers
Chapter 1, Benchmarking and Profiling shows you how to find the
parts of your program that need optimization. We will use tools for
different use cases and explain how to analyze and interpret profiling
statistics.

Chapter 2, Fast Array Operations with NumPy is a guide to the


NumPy package. NumPy is a framework for array calculations in
Python. It comes with a clean and concise API, and efficient array
operations.

Chapter 3, C Performance with Cython is a tutorial on Cython: a


language that acts as a bridge between Python and C. Cython can
be used to write code using a superset of the Python syntax and to
compile it to obtain efficient C extensions.

Chapter 4, Parallel Processing is an introduction to parallel


programming. In this chapter, you will learn how parallel
programming is different from serial programming and how to
parallelize simple problems. We will also explain how to use
multiprocessing, IPython.parallel and cython.parallel to write
code for multiple cores.
What you need for this book
This book requires a Python installation. The examples work for both
Python 2.7 and Python 3.3 unless indicated otherwise.

In this book, we will make use of some popular Python packages:

NumPy (Version 1.7.1 or later): This package is downloadable


from the official website
(http://www.scipy.org/scipylib/download.html) and available in
most of the Linux distributions
Cython (Version 0.19.1 or later): Installation instructions are
present in the official website
(http://docs.cython.org/src/quickstart/install.html); notice that
you also need a C compiler, such as GCC (GNU Compiler
Collection), to compile your C extensions
IPython (Version 0.13.2 or later): Installation instructions are
present in the official website (http://ipython.org/install.html)

The book was written and tested on Ubuntu 13.10. The examples
will likely run on Mac OS X with little or no changes.

My suggestion for Windows users is to install the Anaconda Python


distribution (https://store.continuum.io/cshop/anaconda/), which
comes with a complete environment suitable for scientific
programming.

A convenient alternative is to use the free service wakari.io: a


cloud-based Linux and Python environment that includes the
required packages with their tools and utilities. No setup is required.

In Chapter 1, Benchmarking and Profiling, we will use KCachegrind


(http://sourceforge.net/projects/kcachegrind/), which is available for
Linux. KCachegrind has also a port for Windows—QcacheGrind—
which is also installable from source on Mac OS X.
Who this book is for
This book is for intermediate to advanced Python programmers who
develop performance-critical applications. As most of the examples
are taken from scientific applications, the book is a perfect match for
scientists and engineers looking to speed up their numerical codes.

However, the scope of this book is broad and the concepts can be
applied to any domain. Since the book addresses both basic and
advanced topics, it contains useful information for programmers with
different Python proficiency levels.
Conventions
In this book, you will find a number of styles of text that distinguish
between different kinds of information. Here are some examples of
these styles, and an explanation of their meaning.

Code words in text, database table names, folder names, filenames,


file extensions, pathnames, dummy URLs, user input, and Twitter
handles are shown as follows: "The plot function included in
matplotlib can display our particles as points on a Cartesian grid
and the FuncAnimation class can animate the evolution of our
particles over time."

A block of code is set as follows:

from matplotlib import pyplot as plt


from matplotlib import animation

def visualize(simulator):

X = [p.x for p in simulator.particles]


Y = [p.y for p in simulator.particles]

When we wish to draw your attention to a particular part of a code


block, the relevant lines or items are set in bold:

In [1]: import purepy


In [2]: %timeit purepy.loop()
100 loops, best of 3: 8.26 ms per loop
In [3]: %timeit purepy.comprehension()
100 loops, best of 3: 5.39 ms per loop
In [4]: %timeit purepy.generator()
100 loops, best of 3: 5.07 ms per loop

Any command-line input or output is written as follows:

$ time python simul.py # Performance Tuned


real 0m0.756s
user 0m0.714s
sys 0m0.036s

New terms and important words are shown in bold. Words that
you see on the screen, in menus or dialog boxes, for example,
appear in the text like this: "You can navigate to the Call Graph or
the Caller Map tabs by double-clicking on the rectangles."

Note
Warnings or important notes appear in a box like this.

Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what
you think about this book—what you liked or may have disliked.
Reader feedback is important for us to develop titles that you really
get the most out of.

To send us general feedback, simply send an e-mail to


<feedback@packtpub.com>, and mention the book title via the subject
of your message.

If there is a topic that you have expertise in and you are interested
in either writing or contributing to a book, see our author guide on
www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a
number of things to help you to get the most from your purchase.
Downloading the example
code
You can download the example code files for all Packt books you
have purchased from your account at http://www.packtpub.com. If
you purchased this book elsewhere, you can visit
http://www.packtpub.com/support and register to have the files e-
mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our
content, mistakes do happen. If you find a mistake in one of our
books—maybe a mistake in the text or the code—we would be
grateful if you would report this to us. By doing so, you can save
other readers from frustration and help us improve subsequent
versions of this book. If you find any errata, please report them by
visiting http://www.packtpub.com/submit-errata, selecting your
book, clicking on the errata submission form link, and entering
the details of your errata. Once your errata are verified, your
submission will be accepted and the errata will be uploaded on our
website, or added to any list of existing errata, under the Errata
section of that title. Any existing errata can be viewed by selecting
your title from http://www.packtpub.com/support.
Piracy
Piracy of copyright material on the Internet is an ongoing problem
across all media. At Packt, we take the protection of our copyright
and licenses very seriously. If you come across any illegal copies of
our works, in any form, on the Internet, please provide us with the
location address or website name immediately so that we can
pursue a remedy.

Please contact us at <copyright@packtpub.com> with a link to the


suspected pirated material.

We appreciate your help in protecting our authors, and our ability to


bring you valuable content.
Questions
You can contact us at <questions@packtpub.com> if you are having a
problem with any aspect of the book, and we will do our best to
address it.
Chapter 1. Benchmarking and
Profiling
Recognizing the slow parts of your program is the single most
important task when it comes to speeding up your code. In most
cases, the bottlenecks account for a very small fraction of the
program. By specifically addressing those critical spots you can focus
on the parts that need improvement without wasting time in micro-
optimizations.

Profiling is the technique that allows us to pinpoint the bottlenecks.


A profiler is a program that runs the code and observes how long
each function takes to run, detecting the slow parts of the program.
Python provides several tools to help us find those bottlenecks and
navigate the performance metrics. In this chapter, we will learn how
to use the standard cProfile module, line_profiler and
memory_profiler. We will also learn how to interpret the profiling
results using the program KCachegrind.

You may also want to assess the total execution time of your
program and see how it is affected by your changes. We will learn
how to write benchmarks and how to accurately time your programs.
Designing your application
When you are designing a performance-intensive program, the very
first step is to write your code without having optimization in mind;
quoting Donald Knuth:

Premature optimization is the root of all evil.

In the early development stages, the design of the program can


change quickly, requiring you to rewrite and reorganize big chunks of
code. By testing different prototypes without bothering about
optimizations, you learn more about your program, and this will help
you make better design decisions.

The mantras that you should remember when optimizing your code,
are as follows:

Make it run: We have to get the software in a working state,


and be sure that it produces the correct results. This phase
serves to explore the problem that we are trying to solve and to
spot major design issues in the early stages.
Make it right: We want to make sure that the design of the
program is solid. Refactoring should be done before attempting
any performance optimization. This really helps separate the
application into independent and cohesive units that are easier
to maintain.
Make it fast: Once our program is working and has a good
design we want to optimize the parts of the program that are
not fast enough. We may also want to optimize memory usage
if that constitutes an issue.

In this section we will profile a test application—a particle


simulator. The simulator is a program that takes some particles
and evolves them over time according to a set of laws that we will
establish. Those particles can either be abstract entities or
correspond to physical objects. They can be, for example, billiard
balls moving on a table, molecules in gas, stars moving through
space, smoke particles, fluids in a chamber, and so on.

Those simulations are useful in fields such as Physics, Chemistry,


and Astronomy, and the programs used to simulate physical systems
are typically performance-intensive. In order to study realistic
systems it's often necessary to simulate the highest possible number
of bodies.

In our first example, we will simulate a system containing particles


that constantly rotate around a central point at various speeds, like
the hands of a clock.

The necessary information to run our simulation will be the starting


positions of the particles, the speed, and the rotation direction. From
these elements, we have to calculate the position of the particle in
the next instant of time.
The basic feature of a circular motion is that the particles always
move perpendicularly to the direction connecting the particle and the
center, as shown in the preceding image. To move the particle we
simply change the position by taking a series of very small steps in
the direction of motion, as shown in the following figure:
Another Random Scribd Document
with Unrelated Content
Want haar man zat zoowaar in levenden lijve in de hut.—Zie blz.
119.

Hoewel hij erg slap was, na al wat hij geleden had, was hij binnen een
week weêr geheel de oude van voorheen, daar hij door zijn vrouw zóó
teederlijk verzorgd werd, dat hij zijn gezondheid spoedig weêr terug
kreeg.

No. 24. Hoe een jong Warrau-Indiaantje uit de handen der Caraïben
ontkwam. (W.)

Een aantal vrouwen en meisjes trokken er eens op uit om wilde


ananassen* te zoeken. Zij vertrokken van haar dorp in een groote
korjaal en landden ten slotte nabij een savanne*, waarop deze vruchten
veel plegen voor te komen. [120]Nadat zij een poos hadden
omgezworven en een voldoend aantal dezer lekkere vruchten bijeen
hadden, zetten zij zich in een kring neêr, om ze op te eten, terwijl zij
druk lachten en babbelden, zooals vrouwen dit gewoon zijn te doen.

Nu hadden zij een kleinen jongen meêgenomen, die in een


overhangenden boom was geklommen, waaraan de korjaal was
vastgebonden, en waarin hij de wacht hield. De jongen was bang en
had een gevoel, dat er iets zou gaan gebeuren. 56

Na een poos riep hij de vrouwen toe, dat eenige mannen de rivier
kwamen overzwemmen; maar de vrouwen staken er den gek meê, en
riepen hem toe: „Het is best, laten ze maar komen! Wij zullen ons best
met hen vermaken”. De mannen waren echter menschenetende
Caraïben; want pas hadden ze den oever bereikt, of ze wierpen zich op
de vrouwen, slachtten ze allen en begonnen het vleesch te koken. De
jongen in den boom trilde van angst en schrik, maar durfde niet naar
beneden te komen. De Caraïben bewaakten de korjaal om te zien of de
een of ander de boot zou komen halen, maar op onregelmatige
tusschenpoozen liepen zij heen en weêr van de plek van den misdaad
naar de landingsplaats. Gedurende een van deze oogenblikken zag de
jongen kans, vlug van den boom af te komen, en nadat hij zijn pijl in
stukken had gebroken 57 en de stukken over zijn lichaam had gewreven,
om zich dapper te maken, sprong hij in de korjaal en parelde hij zoo
hard hij kon naar het midden der rivier.

Maar de Caraïben hadden gezien wat hij deed en schreeuwden: „Keer


om, keer terug, je zuster leeft nog en roept om je”. Maar de jongen wist
wel beter, zoodat [121]hij stevig doorparelde en veilig in zijn dorp kwam.
Hier vertelde hij zijn vader en anderen, wien het ongeluk getroffen had
en wat er gebeurd was. Deze haastten zich naar de plaats des onheils,
maar toen zij er aankwamen, hadden de Caraïben reeds de vlucht
genomen, zoodat zij geen betaling ontvingen (= niet gewroken konden
worden).

No. 25. Sluit de oogen en doe een wensch. (C.)

Twee jongens hadden ieder eens een springval gezet, om Maipoeri* te


verschalken. Eens op een dag kwam de jongste uit het bosch terug en
riep: ik heb een tapir gevangen. Dit maakte den oudste jaloersch, die
zei: „als je me voor den mal hebt gehouden, zal ik je vermoorden.”
Samen gingen zij toen naar het bosch en zij zagen werkelijk den tapir
met een zijner pooten gevangen in de knip. De oudste doodde het dier,
sneed het vleesch af, en nam alles voor zich alleen, alleen de
ingewanden voor den jongste overlatende. Deze liep daarop naar zijn
moeder, vertelde haar, hoe gulzig zijn broêr geweest was en haalde
haar over, om met hem naar elders te vluchten. Toen zij met hun
tweeën een grooten afstand hadden afgelegd, kwamen zij aan een
hoogte. Hier sprak de jongen: „Moeder! sluit uw oogen en zeg: ik
verlang hier een veld met bananen en patatten*, met een hut er vlak
bij.” De oude moeder deed het, en kijk! alles was er wat zij gewenscht
had.
Langen tijd leefden de twee hier tevreden en gelukkig, maar de moeder
begon oud te worden. Haar zoon zei toen eens: „Moeder! Sluit uw
oogen en zeg: ik wensch weêr een jong meisje te zijn.” Zij deed wat de
jongen gezegd had, en ziet, zij was onmiddellijk een zóó lief en
aantrekkelijk meisje geworden, dat haar zoon trots op haar was, en dat
het verlangen bij hem opkwam, haar ook door anderen te laten
bewonderen. Hij zei toen weder tot zijn moeder: „Moeder! sluit uw
oogen en zeg: ik wensch dat [122]mijn oudste zoon hier komt.” En
nauwelijks had zij die woorden uitgesproken of de oudste zoon stond
vóór haar.

Zij had nu een bezoeker, en natuurlijk moesten zij paiwarri* hebben. De


jongste zoon zei al weêr aan de moeder, dat zij haar oogen moest
sluiten en drank verlangen moest en—weêr werd aan haar verlangen
voldaan en stond er een groote pot met paiwarri gereed.

Alle drie begonnen nu te drinken, totdat de oudste jongen op het laatst


zóó dronken werd, dat hij de lieftallige jonge vrouw begon te liefkozen.
„Hoe durf je dat te doen,” vermaande hem zijn jongere broêr. „Weet je
dan niet, dat zij je moeder is?” „Neen, ik weet het niet,” antwoordde de
oudste, „en wat meer is, ik geloof het niet!” Toen hij voortging met zijn
liefkozingen, begonnen de beide zoons te vechten.

Toen de oudste eindelijk uit zijn dronkenschap ontwaakte, zag hij, dat hij
geheel alleen was in een vreemde bouwvallige hut; er bleef voor hem
nu niets anders over, dan troosteloos naar zijn woonplaats terug te
keeren.

No. 26. De gelukspot. (W.)

Op zijn weg van het bosch naar huis kwam een man eens voorbij een
banab*, zonder bewoner. Hij vond er alleen een Pot, zacht pruttelend op
het vuur. De Pot begon te spreken 58 en vroeg hem of hij honger had.
Toen hij ten antwoord gaf: „Ik ben uitgehongerd”, zei de Pot:
„Uitstekend! Ik zal een vogelbout voor je koken”. Onmiddellijk deed de
Pot, wat hij beloofd had, en toen de man verzadigd was, stond hij op en
vervolgde zijn weg naar zijn hut.

Daar aangekomen, zette zijn vrouw visch, die zij gereedgemaakt had,
voor hem neêr. Maar de man zei, „neen, ik [123]dank je, ik ben
verzadigd”. Zoo nu en dan verzon de man een uitvlucht, om op stap te
gaan, en verzuimde nimmer een bezoek aan den Pot te brengen. „Ik
heb honger, je moet nu eens een hapje vleesch voor me klaar maken”,
zei de man. Dadelijk begon de Pot weêr te koken en na korten tijd had
hij een stevig maal tapir-vleesch. Toen hij weder bij zijn vrouw kwam,
zette zij een cassavegerecht voor hem neêr, 59 maar haar man zei weêr:
„ik heb geen trek, mijn buik staat bol.” Nadat hij twee dagen in de hut
was gebleven en al het voedsel had geweigerd, dat zijn vrouw bij hem
bracht, bracht hij weêr een bezoek aan den gelukspot, die hem
trakteerde op vogelbout en vleesch en bij zijn thuiskomst verzekerde hij
weêr zijn vrouw, dat hij in niets trek had.

De beide zoons begonnen nu argwaan te krijgen en fluisterden tegen


elkaar: „wat moet dat toch beteekenen? Vader blijft twee volle dagen
thuis, en nog heeft hij geen trek. Hij gaat naar het bosch, en als hij terug
komt, wil hij nog niet eten. Waar haalt hij toch zijn voedsel van daan?”
De jongens besloten, hem op een afstand te bespieden en toen zij hun
vader tot bij de banab gevolgd hadden, zagen zij hem in gesprek met
den Pot en hem ten slotte een lekker maal doen.

Bij zijn terugkeer bedankte hij weêr voor hetgeen zijn vrouw hem bracht.
Maar er was een geringe voorraad eten voor de huishouding, en de
vrouw vroeg haar man daarom, om morokot* te gaan schieten. De
zoons echter begaven zich ongemerkt naar de banab, waar zij
eveneens met den Pot begonnen te spreken, en om vogels en vleesch
vroegen. Nadat de jongens zich te goed hadden gedaan, begonnen zij
den Pot zóó goed schoon te maken, dat niet de minste geur
achterbleef. Even daarna kwam de vader van [124]den vischtocht terug
en gaf den morokot aan zijn vrouw; maar hij bedankte als gewoonlijk.
„Ik heb er geen trek in, ik ben voldaan”, zei hij weêr. Stilletjes sloop hij
weêr weg naar zijn Gelukspot in het bosch, en vroeg hem weêr, voor
hem te willen koken, maar hij wilde niet meer koken, noch voor hem,
noch voor iemand anders; zóó schoon hadden ze den Pot* gemaakt.
De man begon toen te jammeren, maar de Pot zei: „je bent begeerig
geweest; je hebt niets van het gevogelte en het vleesch aan je vrouw en
kinderen gegeven; je hebt alles alleen opgegeten.”

No. 27. De honigbij en de zoete drank. (W.)

Er waren eens twee zusters, die voor haar broêr zorgden, en al haar
best voor hem deden, maar die geen drank konden bereiden, die naar
zijn smaak was. De broêr vond het niets prettig, en kreeg er nu genoeg
van; hij beklaagde zich bij zijn zusters, zeggende, dat hij iemand zou
willen vinden, die voor hem een lekkeren zoeten drank zou kunnen
bereiden, even zoet als honig. De zusters verzetten zich er niet tegen,
en zeiden, dat zij maar al te gelukkig zouden zijn, wanneer hij de
geschikte vrouw vond, die drank naar zijn smaak kon maken.

Eens op een dag, toen hij door het bosch ging, sprak hij luide zijn
wensch uit, dat hij een vrouw verlangde, die een drank zou weten te
bereiden, even zoet als de honig, die de bij weet te maken. Niet zoodra
had hij zijn wensch uitgesproken, of hij hoorde voetstappen achter zich
en omziende, zag hij een vrouw naar zich toekomen. „Wat wilt ge, waar
gaat ge heen? Ge sprak mijn naam Kohóra* uit. Welnu hier ben ik.” De
man, erg verheugd, maakte haar zijn wensch en die van zijn zusters
kenbaar en toen zij hem vroeg, of hij dacht, dat zij bij zijn familie in den
smaak zou vallen, antwoordde hij, dat hij daar zeker van was. [125]

Kohóra ging dus met hem mede naar zijn hut, en toen zijn ouders hem
vroegen, hoe hij aan haar gekomen was, antwoordde zij, dat zij meê
was gekomen, omdat hun zoon haar geroepen had. Zij begon nu den
gevraagden drank te bereiden. En hoe deed zij dat? Wel, zij had slechts
haar pink in het water te steken, daarmeê het water wat om te roeren,
en de drank was gereed. De drank smaakte zoet! zoet!! zoet!!! Nooit
nog had de drank zóó lekker zoet gesmaakt. Van dien tijd af hadden zij
nu altijd een zoeten drank; want telkens als Kohóra haar man water
bracht, had zij haar pink er in te steken, het wat om te roeren en het op
deze wijze zoet te maken. Maar ten slotte begon de man al dat zoete te
vervelen, en hij begon er met Kohóra over te twisten. „Wel, dat is
grappig”, zei ze, „je verlangdet zoeten drank; je riep mij, om dien voor je
te bereiden. Ik kwam; ik maakte een lekkeren, zoeten drank voor je, en
nu ben je nog niet voldaan. Je kunt er nu zelf voor zorgen”. En pas had
zij deze woorden uitgesproken, of zij verdween oogenblikkelijk.

Van dien tijd af is het volk gestraft geworden, want het moet zich veel
moeite geven, om in de boomen te klimmen, den honig uit den boom te
snijden, en moet het den honig zuiveren, om hem voor zoetmakende
doeleinden te kunnen gebruiken.

No. 28. De piaiman en de stinkvogels*. (A.)

Maconaura* was een buitengewoon knappe piaiman; wij Indianen


plegen een, die bijzonder uitmunt, een semi-chichi* te noemen.
Wanneer hij zijn val of knip* in het bosch uitzette, was hij altijd zeker
een of ander wild te vangen, hetzij vogels of dieren. 60 Maar eens op een
keer, toen hij weêr naar zijn knip ging zien, zag hij tot zijn [126]groote
ergernis, dat de een of ander hem bestolen had, en het voor hem
bestemde vleesch had weggenomen. Hij peinsde zich suf, wie dat toch
gedaan kon hebben, want er waren geen voetstappen te zien, noch
afgetrokken takken, die de vlucht van een of anderen vreemden gast
verraden kon. Om nu den misdadiger te ontdekken, klom hij den
volgenden morgen in een boom boven zijn knip en hield van uit zijn
verheven zitplaats de wacht. Hij zag nu, dat er wild in zijn knip was en
dat nu en dan een stinkvogel binnensloop en probeerde met zijn mes 61
stukken vleesch af te snijden, om het des te gemakkelijker eruit te
kunnen krijgen. Maar het mes van dezen gier was te bot, zoodat de
vogel wegvloog om den koningsgier* te halen, die een scherper mes
had, en die al het vleesch schoon van het wild kon afhalen. Dadelijk
kwamen nu een menigte stinkvogels aanvliegen om te helpen en in
korten tijd was er geen stukje vleesch meer in den knip overgebleven.

Maconaura zag dit alles, verscholen tusschen de boomtakken, rustig


aan, en telkens zag hij hetzelfde gebeuren; de koningsgier was altijd de
belhamel. Hij zon nu op een middel, om den prachtigen vogel machtig
te worden. Hij nam een hoeveelheid katoen 62, wikkelde zich er geheel
in, zoodat zelfs ooren, neus en oogen er geheel mede bedekt waren, en
legde zich doodstil vlak bij zijn val neêr, waarin zich wild bevond.

Zooals gewoonlijk kwam er al spoedig een stinkvogel aanvliegen, maar


zijn mes was te bot, om hetzij Maconaura buiten den knip, hetzij het
wild in den val aan te snijden. Ook nu weêr vloog de stinkvogel weg, om
zijn gouverneur, [127]den koningsgier te gaan halen. Toen deze
prachtige vogel dichtbij genoeg was, greep Maconaura hem zóó stevig
beet, dat de kleinere stinkvogels, die spoedig reeds present waren, er
van schrokken en allen wegvlogen. De koningsgier vermoedde in zijn
aanvaller dadelijk een piaiman, want nog nooit had iemand hem zóó
leelijk te pakken gekregen. Eigenlijk doe ik verkeerd, hier van hem en
zijn te spreken, want de vogel was een vrouwelijk exemplaar, hetgeen
Maconaura spoedig zou merken, want plotseling legde de gier het
veerenkleed af en veranderde in een vrouw 63, en welk een vrouw!—een
beeldschoon meisje, zóó schoon, dat Maconaura smoorlijk op haar
verliefd werd en haar tot vrouw nam.
… want plotseling legde de gier het veerenkleed af en
veranderde in een vrouw.—Zie blz. 127.

Vele jaren leefde het paar tevreden en gelukkig, en de stinkvogels


hielden het voortdurend gezelschap. Eens op een dag zond de vrouw
Maconaura met een korf naar de rivier om water voor haar te halen;
maar hoe hij het ding ook in het water dompelde, steeds liep het er door
de mazen even hard weêr uit. Toen hij het nog maar niet wilde opgeven,
kwamen er moeneri-mieren 64 opdagen, die zijn pogingen zagen en hem
vroegen, wat hij daar deed; en toen zij van hem hoorden, hoe hij alles in
het werk stelde, om aan het verlangen van zijn vrouw te voldoen, boden
zij hem aan, om alle openingen van zijn korf met „mierenbed” dicht te
stoppen. 65 Toen nu de mieren met hun karrewei gereed waren, liep het
water niet meer weg [128]en zoo bracht Maconaura den korf, tot aan den
rand toe gevuld, huiswaarts.

Toen zijn vrouw dit zag, zei zij bij zich zelf: „Mijn man moet toch wel een
ware semi-chichi zijn, om voor mij water in een korf te kunnen brengen.”
Zij begreep er evenwel niets van en besloot hem nu een tweede maal
op den proef te stellen.

Zij zond hem er nu op uit, om een stuk bosch voor haar schoon te
kappen, maar toen hij iederen morgen het werk wilde voortzetten, zag
hij tot zijn bevreemding, dat alle boomen, die hij den vorigen dag geveld
had, weêr recht overeind stonden. Wat was de oorzaak daar wel van?
Wel, op verzoek van den koningsgier vlogen alle stinkvogels iederen
nacht naar het veld, en zetten de boomen, die op den grond lagen,
weêr overeind! Arme Maconaura! Hij begreep er nog steeds niets van.
Maar hij wist er iets op. Hij ging nl. naar de Koeshi-mieren* en verzocht
hen, al het gevelde: stam, takken en bladeren voor hem te willen
weghalen—hetgeen zij ook deden. Tegen zulke vernielers konden de
stinkvogels niets uitrichten, en met de hulp van dit kleine grut gelukte
het Maconaura het veld spoedig schoon te kappen.
Zijn vrouw, die steeds meer tot de overtuiging kwam, dat haar man een
groote piaiman was, wilde hem toch nog eens voor de derde maal op
de proef stellen. Zij zond hem er nu op uit, om een zitbank voor zijn
schoonmoeder te maken, met aan elk uiteinde de uitgesneden beeltenis
van de oude vrouw. Dit zou, dacht zij, voor hem wel geheel onmogelijk
zijn en Maconaura geloofde dit ook, want hij had nog nooit een oog
naar zijn schoonmoeder* geslagen. Hij dacht: „Nooit opgeven!” Maar
iedere keer, dat hij even in de richting der oude vrouw keek, bedekte zij
onmiddellijk haar gezicht met haar beide handen, en draaide het opzij of
naar beneden. [129]„Hoe nu”, dacht Maconaura, „krijg ik haar gelaat naar
boven, zoodat ik er een goed gezicht op heb”. Daar kreeg hij een inval.
Zonder dat de vrouw het merkte, klom hij tegen het dak van haar hut,
en wierp hij een bajaboe* naar beneden, die in haar lendenkleed terecht
kwam, zoodat de oude haar armen uitspreidde en een klein oogenblikje
naar boven keek, juist lang genoeg, om zijn doel te kunnen bereiken.
Maconaura begon nu met zijn werk; hij hakte het blok hout in een
zoodanigen vorm, dat hij aan ieder uiteinde het goed gelijkende portret
van zijn schoonmoeder kon maken.

Toen het werk gereed was, bracht zijn vrouw het bankje naar de oude
vrouw, die hartelijk begon te lachen, toen zij de beide portretten zag.
Beide vrouwen verbaasden zich er over, hoe Maconaura het had
klaargespeeld, om een zóó goed gezicht op zijn schoonmoeder te
hebben gehad, en daardoor een zóó sprekend gelijkend portret van
haar te hebben kunnen maken.

De jonge vrouw begon nu werkelijk trots op haar man te worden, ja hem


te beminnen, omdat hij steeds aan haar wensch voldeed. Wanneer zij
hem vroeg, wat visch te brengen, ging hij naar de rivier, en als hij er
eenigen meebracht en zij pruilend haar lippen naar voren bracht,
daarmede te kennen gevend, dat het niet veel was, dat hij bracht, zei
hij, dat zij den korf moest openen, en de visschen zouden er, de een na
den ander komen uitduikelen—ja, in zulke hoeveelheden, dat de
geheele hut er meê gevuld zou worden.
Maconaura lachte maar; want hij was een piaiman, die buitengewone
dingen kon doen.

Inmiddels was de gelukkige echt gezegend door een knappen jongen


en .… begon de jonge vrouw heimwee te krijgen en te verlangen, haar
man en kind aan haar eigen volk te laten zien. Haar verlangen werd zóó
groot, [130]dat zij van Maconaura gedaan wist te krijgen, met hem en
den zoon het dorp te verlaten, want zij wilde terugkeeren naar haar
vaderen boven en beneden de wolken.

Zij verlieten dus het dorp, kwamen in hun nieuw verblijf aan en bleven
langen tijd bij hun verwanten, de stinkvogels. De vrouw kon niet
nalaten, telkens van de groote kunde van haar man te vertellen, die
alles kon doen, wat zij hem maar vroeg. De stinkvogels, daardoor
nieuwsgierig geworden, begonnen hem allerlei dingen te vragen, die,
naar zij meenden, onmogelijk waren—maar al het gevraagde bracht hij
tot stand. De stinkvogels konden die knapheid niet velen en begonnen
jaloersch te worden, zoodat zij eindelijk overeen kwamen, den man
gezamenlijk te dooden.

Maconaura, die een echte piaiman was, wist, wat zij met hem voor
hadden, en zei: „Uitstekend, laat mij naar mijn dorp terugkeeren en mijn
vrienden gaan opzoeken. Wij zullen het daar wel uitvechten”.
Onmiddellijk nam hij zijn vrouw en zijn zoontje meê, en met hun drieën
togen zij weder huiswaarts. Hier aangekomen, verzamelde hij alle
vogels uit den omtrek, en vertelde hun, dat zij voorbereid moesten zijn
op een stormloop der stinkvogels.

Toen deze er dan ook aankwamen en het groote leger vogels zagen,
gereed om hen te ontvangen, besloten zij door middel van een krijgslist
zich de overwinning te verzekeren, hetgeen hun door kracht alleen niet
zou gelukken.

Het voornemen der stinkvogels was nl., de geheele wereld in brand te


steken, met Maconaura en al zijn vrienden er bij. Zij legden dan ook
overal in het rond vuren aan en meenden, dat hun vijanden niet
ontkomen zouden, maar nog juist bijtijds ontdekte Maconaura den
zwarten Koeri-Koeri*, die hoog in de lucht vloog, en die aan al zijn
vrienden verzocht, hem te volgen, om zich bij zijn verwenschingen aan
te sluiten. En ziet—onmiddellijk [131]begon de regen bij stroomen neêr te
vallen, die alle vuren uitdoofde.

Toen nu Maconaura bemerkt had, dat zijn vrouw bang voor hem was
geworden, omdat hij het doel van haar eigen volk, de stinkvogels, om
nl. de geheele wereld in brand te steken, verijdeld had, verliet hij haar
en ging hij zijn eigen weg. Zijn vrouw zond toen haar zoon er op uit, om
haar man heimelijk te overvallen, en hem te dooden, maar of hij dit
snoode plan tot uitvoering heeft gebracht, is mij niet bekend.

No. 29. Hoe het ongeluk over de menschen kwam. De geschiedenis


van Maconaura en Anoeannaïtoe. (A.)

Heel, heel lang geleden, voor nog de grootvaders van onze


grootmoeders geboren waren, was, zooals de Caraïben vertellen, de
wereld geheel anders dan nu. De boomen droegen altijd vruchten; de
dieren leefden in volkomen eensgezindheid en de kleine Agoeti*
speelde, zonder vrees te hebben, met den baard van den Jagoear. Er
leefden toen nog geen giftige slangen; de rivieren stroomden
gelijkmatig, er was geen buitengewone droogte, noch had men last van
overstroomingen, en de watervallen gleden langzaam van de hoogste
rotsen.

Er waren toen nog geen menschen op de wereld, en Adaheli, die wij nu


als God aanroepen, 66 doch die toen Zon heette, werd verontrust. Hij
daalde uit den hemel neêr en kort daarna werd de mensch geboren. Uit
een Kaaiman* zagen beide seksen, een man en een vrouw, het
levenslicht. De vrouwen waren van een verrukkelijke schoonheid, maar
vele mannen hadden een terugstootend uiterlijk, en dit was de oorzaak
hunner verspreiding.

Sedert de mannen met een mooi gezicht niet in staat waren, om bij
hunne afzichtelijke kameraden te blijven, [132]scheidden zij zich van hen
af, trokken naar het Westen, terwijl de afzichtelijke mannen naar het
Oosten gingen 67, ieder de vrouwen, die ze hadden gekozen,
meenemend.

Tot den stam der in elk opzicht aantrekkelijke Indianen behoorde een
jonge man, Maconaura geheeten, die met zijn moeder samenwoonde.
De jongen was in één woord bekoorlijk, slank en bevallig, als men dit
ten minste van een man kan zeggen; hij droeg zijn kamiesa* op
elegante wijze, en vond zijns gelijke niet op de jacht en de vischvangst,
zoowel als in het vlechten, zoodat alle mannen hun vischkorven* voor
de laatste afwerking bij hem brachten. De oude moeder was niet minder
bekwaam in het maken van hangmatten en het gereed maken der
tapana*. Zij leefden in volkomen eensgezindheid, zoowel onder
elkander als met de leden van hun stam. Zij hadden geen last van
overmatige warmte, noch van kille vochtigheid; zij hadden niet van
booze dieren te lijden; want deze kwamen in de streek nog niet voor.

Eens op een dag echter vond Maconaura zijn vischkorf gescheurd en


de visschen verslonden, iets wat tot nu toe in de geschiedenis van den
stam niet was voorgekomen. Maconaura zette daarom, toen hij zijn korf
weêr uitzette, een hoedoedi (specht*) op den uitkijk, hem verzoekende
met zijn bek tegen een boomstam te willen kloppen, wanneer iemand,
hetzij mensch of dier, mocht naderen. Maar hoewel hij op het toc! toc!
van den vogel dadelijk kwam toegesneld, hij kwam te laat—weêr waren
de visschen verslonden en was de korf gescheurd.

Met den bananenbek* als waarschuwer ging het beter, want toen de
vogel zijn pon! pon! liet hooren, kwam hij nog juist bijtijds, om zijn pijl
tusschen de leelijke oogen [133]van den kaaiman te schieten, die met
een gloe! gloe! onder water verdween.
Maconaura herstelde nu zijn vischkorf en vertrok. Maar nauwelijks was
hij in zijn hut teruggekomen of hij hoorde weêr het signaal pon! pon! van
den vogel, en toen hij aan de rivier kwam, zag hij daar een
beeldschoone Indiaansche, die tranen schreide. „Wie zijt Gij?” vroeg hij.
„Anoeannaïtoe”, antwoordde zij. „Waar komt Gij van daan?”—„Van heel
ver!”—„Wie zijn uwe verwanten?”—„O, vraag mij dat niet”, zei ze, en zij
bedekte haar gelaat met beide handen.

Het meisje, dat haast nog een kind was, nam haar intrek bij Maconaura
en diens moeder. Naarmate zij grooter werd, nam haar schoonheid en
bevalligheid zóó toe, dat Maconaura haar eindelijk zijn liefde bekende
en haar tot zijn vrouw vroeg. Hoewel zij eerst met tranen in de oogen
een weigerend antwoord gaf, stemde zij ten slotte toe, hoewel het
samenleven niet correct was, daar Maconaura nog niet de toestemming
harer ouders had gevraagd, wier namen hem nog altijd door zijn vrouw
onthouden werden.

Gedurende korten tijd leefde het paar zeer gelukkig, totdat


Anoeannaïtoe door een vurig verlangen werd aangegrepen, haar
moeder te bezoeken. Maar toen Maconaura zei, met haar meê te willen
gaan, dreigde zij in woede, den tocht te zullen opgeven. „Dan zal ik
alleen gaan en je ouders toestemming voor ons huwelijk vragen”, drong
Maconaura aan. „Dat nooit”, riep Anoeannaïtoe, „dat zou onze dood
zijn, evenals die van je lieve moeder”. Maconaura was echter niet te
overtuigen, „want”, zei hij, „ik heb een piaiman geraadpleegd, die mij
verzekerd heeft, veilig te zullen terugkeeren.” Alzoo vertrok hij met zijn
bruid.

Toen zij na verscheidene weken reizen met hun korjaal aan een kamp
aankwamen, riep Anoeannaïtoe: „Wij zijn [134]er, ik ga mijn moeder
opzoeken, zij zal U een kalebas brengen, gevuld met bloed en rauw
vlees, en een andere met beltiri* en cassavebrood. Ons lot hangt van
Uw keus af.” De jongeman koos, toen de oude vrouw verscheen,
zonder aarzelen de beltiri en het brood, waarop zij zei: „Je hebt een
goede keus gedaan. Ik geef de toestemming tot het huwelijk, maar ik
vrees dat mijn man zich er sterk tegen verzetten zal.” Kaikoutji* was de
naam van haar echtgenoot.

Moeder en dochter gingen nu vooruit, om den man te polsen, maar dien


woede was zóó groot, dat het nodig scheen, de jongen man in het
bosch te verbergen, tot dat Kaikoutji eindelijk zóó zacht gestemd werd,
dat hij er in toestemde den jongeman te zien. Toen zijn woede bij zijn
verschijning weêr bovenkwam, riep hij: „Hoe durf je mij te naderen?”
Maconaura, die hem tot bedaren wilde brengen, antwoordde: „Ja, het is
waar, het huwelijk met Uw dochter was niet volgens de gebruiken, maar
ik kom herstel vragen. Ik zal voor U maken wat U verlangt.” „Maak dan
een halla* met de kop van een kaaiman aan de eene zijde en mijn
beeltenis aan de andere,” zei Kaikoutji.

Te middernacht was Maconaura met zijn werk, op het portret na,


gereed, maar dit was niet gemakkelijk, daar de man zijn hoofd door een
kalebas bedekt had, waaruit alleen zijn ogen zichtbaar waren. Toen nu
Maconaura zijn vrouw vroeg, haar vader te willen beschrijven,
antwoordde zij: „Onmogelijk. Mijn vader is een piaiman.” „Hij kent en
weet alles. Hij zou ons allebei doden.” Maconaura verborg zich nu naast
de hangmat van den vader, in de hoop dat hij nu en dan wat van zijn
gezicht zou kunnen zien.

Toen kwam er een makoe*, die om de oren van Kaikoutji gonsde en


hem stak; maar de man, die als een bal in zijn hangmat lag opgerold,
bewoog zich niet. [135]Maconaura vreesde al, het te moeten opgeven,
toen hij iets over zijn been voelde kruipen. Het was een hajara*, die tot
hem sprak: „Vrees niets, heb geduld.” De spin kroop nu tegen de
hangmat van Kaikoutji op en beet den slapende. Maar deze doodde de
spin, en nog liet hij zijn gezicht niet zien. Maconaura werd wanhopig,
maar eindelijk kwam er hulp opdagen; het was een heel leger van
mieren, die hem kwamen aanvallen, en hem zóó toetakelden, dat hij, in
de consternatie uit zijn hangmat oprijzend, zijn heele gezicht, zoo
afschuwelijk als het was, liet zien.
Toen de morgen aanbrak, had Maconaura zijn halla gereed en bracht hij
zijn werkstuk aan den vader. „Dat zal nog niet voldoende zijn,” bromde
Kaikoutji, „je moet voor mij in één nacht nog een hut voor mij maken,
geheel gebouwd uit de mooiste veeren.”

De jonge man voelde zich al verloren, maar plotseling lieten kolibris,


jacamars* en andere vogels met een schitterend gevederte, hun veeren
voor hem neêrvallen, zoodat de verlangde hut nog vóór het aanbreken
van den dag gereed was, waarna Maconaura werd ontvangen als de
erkende echtgenoot van Anoeannaïtoe.

Na verloop van tijd verlangde nu Maconaura zijn moeder weêr te zien,


en toen Kaikoutji aan Anoeannaïtoe weigerde, haar man te vergezellen,
vertrok hij alleen. Gelukkige dagen volgden nu voor hem in zijn oude
hut, als hij zijn avonturen vertelde, en zijn oude moeder verhalen van
heel lang geleden aan het vertellen ging, die zij in haar zwak geheugen
trachtte terug te roepen. Toen nu Maconaura na eenigen tijd weêr naar
zijn vrouw wilde vertrekken, smeekte zijn moeder hem bij haar te
blijven, omdat de piaiman hem voor gevaren had gewaarschuwd. Maar
Maconaura zei, vast besloten te zijn, nog eenmaal te willen vertrekken
en beloofde zijn moeder, iederen dag een vogel te zullen zenden, die
haar van zijn welstand zou [136]verwittigen .… als de uil* kwam, zou zij
hooren, dat hij verloren was.

Toen nu Maconaura eindelijk in Anoeannaïtoe’s hut was aangekomen,


ontving zij hem in tegenwoordigheid zijner schoonmoeder, in tranen
uitroepend: „weg, gauw! Kaikoutji is woedend over het geen hij heeft
gehoord!” Maconaura stoorde zich echter niet aan de waarschuwingen,
en o, onvoorzichtige, toen hij Kaikoutji’s hut binnentrad, werd hij zonder
slag of stoot door een pijl tusschen zijn oogen neêrgeveld.

Maconaura’s moeder had dagelijks het droevige bouta! bouta! van den
Otolin* gehoord, toen het eens op een dag door het afschuwelijke,
onheilspellende popopo! van den uil werd gevolgd.
Nu wetende, dat haar zoon dood was, liet zij zich door den verkondiger
van het slechte nieuws naar de plaats des onheils brengen; en toen zij
zijn korjaal met zijn lijk eindelijk had gevonden, keerde zij diep bedroefd
er mede naar haar volk terug.

De mannen bedekten het lichaam met een lijkkleed van prachtige


veeren, en legden er de wapens en gereedschappen van Maconaura
op; de vrouwen bereidden de tapana* voor de begrafenisviering en
allen vereenigden zich om den doodenzang te laten hooren, het laatst
vaarwel van de moeder aan haar geliefden zoon. Met alle kracht, die
nog in haar was, richtte de oude vrouw zich in haar hangmat overeind
en nadat zij met vuur het tragische verhaal van de liefde en den dood
van haar jongen had gedaan, riep zij, terwijl zij haar schaal met tapana
aan de lippen bracht: „Wie heeft het licht van mijn zoon gedoofd? Wie
heeft hem gezonden naar het dal der schimmen? Woe! Woe! voor hem.
Alas—jelui aanschouwt in mij, o, vrienden en broeders, slechts een
arme, zwakke, oude vrouw. Ik kan niets doen. Wie van jelui [137]wil hem
wreken?” Onverwijld sprongen toen twee mannen naar voren, grepen
hun schaal, ledigden deze, en hieven, naast het lichaam van den
vermoorde, het Kenaima*-lied aan, terwijl zij den dans der wrake
dansten. Op hetzelfde oogenblik sloop in een van hen den geest van
een boa, in den ander dien van een jagoear binnen 68.

Het groote tapana-feest werd in het dorp van Kaikoetji gevierd, waar
honderden Indianen vergaderd waren, mannen, vrouwen en kinderen.
Zij dronken en braakten, dronken en braakten weêr. Plotseling
verschenen onder de feestvierenden twee mannen, een in het vel van
den Jagoear, de ander in de gevlekte schubbenhuid van een Boa-
constrictor 69, en … in een oogenblik waren Kaikoetji en allen, die om
hem heen waren, gedood, een deel vermorzeld door de slagen van den
Jagoear, een ander gekraakt door de omstrengelingen van den boa. 70

De angst had enkelen weêr bijgebracht en deze grepen hun bogen en


richtten hun pijlen op de woedende aanvallers. De beide Kenaima’s
staakten daarop den aanval. Een van hen sprak toen: „Houdt op,
vrienden, wij zijn in uwe handen, maar laat ons eerst spreken”. Toen de
tegenstanders hun pijlen hadden laten zakken, vertelde hij de
geschiedenis van Maconaura. Het droevig verhaal maakte blijkbaar
indruk, want toen hij had uitgesproken, trad een oude piaiman naar
voren en sprak: „Jonge mannen, gij hebt goed gesproken; wij
ontvangen u als vrienden”.

Het feest werd nu nog vroolijker dan te voren voortgezet. Anoeannaïtoe,


die in haar groote smart tot nu toe het feest niet had bijgewoond, kwam
nu te voorschijn, en schreed voort langs de doode lichamen, ze een
voor [138]een onderzoekend; en toen zij eindelijk het lijk, dat zij zocht—
dat harer moeder—herkend had, zette zij er zich bij neêr en hief zij lang
achtereen den lofzang op den dood aan. Plotseling sprong zij daarna
op, en met overeind staande haren en met een woesten blik liet zij met
trillende stem het verschrikkelijke kenaima-lied weerklinken, en danste
zij, danste net zoo lang, totdat de geest van de ratelslang haar lichaam
binnendrong.

Tegelijkertijd vierde het volk van het andere dorp ook het tapana-feest,
om de wraak te vieren, terwijl Maconaura’s moeder, beneveld door den
drank, in haar hangmat van haar verloren zoon lag te droomen. Het
feest was in vollen gang, toen plotseling Anoeannaïtoe verscheen. Maar
zij trad eenige stappen terug, toen zij haar naam hoorde uitspreken
door de droomende vrouw: „Anoeannaïtoe! Mijn kind, jij bent goed,
evenals je moeder! Maar waarom kom je hier? Mijn zoon, die je
verloren hebt, is niet meer. O! mijn zoon Maconaura, verheug je! Jij bent
nu gelukkig, want je bent nu gewroken door het bloed van je
moordenaars. Ja, je bent goed gewroken”. Onder het uitspreken van die
woorden voelde Anoeannaïtoe een verschrikkelijken tweestrijd in haar
ziel—de begeerte naar de liefde en de eisch der plicht. Maar bij de
woorden: „gewroken met het bloed”, kon zij zich niet langer inhouden,
en zich op de oude vrouw werpende, trok zij haar de tong uit den mond
en schoot er het doodend gif overheen. Terwijl zij zich over haar
zieltogend lichaam heen boog, sprak ze: „De kaaiman, die uw zoon bij
zijn vischkorf heeft gedood, was mijn broeder. Evenals mijn vader bezat
hij het hoofd van een kaaiman. Ik zou het willen vergeven. Mijn vader
wreekte den dood van zijn zoon door uw zoon met hetzelfde lot te
bestraffen.….met een pijl tusschen zijn oogen. Uw verwanten hebben
mijn vader en velen van zijn stam verslagen. Ja, ik zou dit alles
[139]misschien nog willen vergeven hebben, wanneer zij mijn lieve
moeder maar gespaard hadden. Maconaura is de oorzaak, dat wat mij
het dierbaarst was, is weggenomen. Ik neem nu op mijn beurt weg, wat
hem het dierbaarst was”.

Onder het slaken van een verschrikkelijken kreet vlood zij naar het
bosch en … onmiddellijk daarna vond in de natuur plaats, wat tot nu toe
onbekend was geweest: de winden antwoordden met een orkaan, die
de boomen neêr velde, en de zwaarste stammen ontwortelde. Dikke
wolken bedekte het gelaat van Ahadeli, terwijl onheilspellende
bliksemstralen en het rommelen des donders de donkere wereld deden
sidderen. Ontzettende regenstroomen deden de rivieren buiten hun
oevers treden. De dieren, die tot nu toe vreedzaam onder elkander
geleefd hadden, begonnen elkander aan te vallen, en elkaar te
verslinden. De slang trof met zijn vergif; de kaaiman verbrijzelde met
zijn vreeselijke kaken al wat van levende wezens onder zijn bereik
kwam; en de jagoear scheurde het vleesch uit het lichaam van den
onschuldigen Agoeti.

Anoeannaïtoe, gevolgd door een heel leger van wilde beesten, zette
haar zinneloozen tocht voort, totdat zij op den top van een enormen rots
aankwam, waarvan een waterval met donderend geweld naar omlaag
stortte. Hier staakte zij haar loop; aan den rand van den afgrond strekte
zij haar armen uit, en toen, zich vooroverbuigend, plofte zij in de diepte
neêr. De wateren namen haar beneden op en sloten zich boven haar.
Niets was er meer van haar te zien dan een verschrikkelijke draaikolk.

Wanneer nu een vreemdeling langs den waterval komt, zal de Caraïb


hem waarschuwen, niet diens naam te noemen. Het zou zijn
onfeilbaren dood zijn; want op den bodem dezer wateren wonen

You might also like