Phparchitect Box Of Php Eric Mann Eric Van Johnson Chris Tankersley
Phparchitect Box Of Php Eric Mann Eric Van Johnson Chris Tankersley
Phparchitect Box Of Php Eric Mann Eric Van Johnson Chris Tankersley
Phparchitect Box Of Php Eric Mann Eric Van Johnson Chris Tankersley
1. Phparchitect Box Of Php Eric Mann Eric Van
Johnson Chris Tankersley download
https://ebookbell.com/product/phparchitect-box-of-php-eric-mann-
eric-van-johnson-chris-tankersley-55338112
Explore and download more ebooks at ebookbell.com
2. Here are some recommended products that we believe you will be
interested in. You can click the link to download.
Integrating Web Services With Oauth And Php A Phparchitect Guide 1st
Edition Matthew Frost
https://ebookbell.com/product/integrating-web-services-with-oauth-and-
php-a-phparchitect-guide-1st-edition-matthew-frost-6770040
Phparchitect Domaindriven Resolutions Eric Mann Eric Van Johnson
https://ebookbell.com/product/phparchitect-domaindriven-resolutions-
eric-mann-eric-van-johnson-55258460
Phparchitect January 2022 Domaindriven Resolutions Phparchitect
https://ebookbell.com/product/phparchitect-january-2022-domaindriven-
resolutions-phparchitect-55258476
Phparchitect Php Is Standing Tall Eric Mann Eric Van Johnson
https://ebookbell.com/product/phparchitect-php-is-standing-tall-eric-
mann-eric-van-johnson-55338114
3. Phparchitect One Last Slice 1st Edition Eric Mann Eric Van Johnson
https://ebookbell.com/product/phparchitect-one-last-slice-1st-edition-
eric-mann-eric-van-johnson-55338118
Phparchitect Parallelizing Your Code Eric Mann Eric Van Johnson
https://ebookbell.com/product/phparchitect-parallelizing-your-code-
eric-mann-eric-van-johnson-55338124
Phparchitect World Backup Day Eric Mann Eric Van Johnson Chris
Tankersley
https://ebookbell.com/product/phparchitect-world-backup-day-eric-mann-
eric-van-johnson-chris-tankersley-55338130
Phparchitect Making Code Eric Mann Eric Van Johnson Chris Tankersley
https://ebookbell.com/product/phparchitect-making-code-eric-mann-eric-
van-johnson-chris-tankersley-55338134
Phparchitect Software Archeology Eric Mann Eric Van Johnson
https://ebookbell.com/product/phparchitect-software-archeology-eric-
mann-eric-van-johnson-55338136
8. TITLE
1. Share to Learn
2. A Guide to Practical Usage of PHP FFI
3. Problem in a Box
4. PHP Puzzles: Grade Deviations
5. Education Station: 12 Factor Applications: Parts 1-6
6. The Workshop: What Ben Uses
7. Set Up
8. DDD Alley: “Depend” toward Stability
9. Security Corner: InfoSec 102: Phishing
10. News: New and Noteworthy
11. News and Noteworthy 2023-03
12. Artisan Way: Laravel 10: New Features and Upgrade Impacts
13. PSR Pickup: PSR-17: HTTP Factories
14. finally{}: Nothing Lasts Longer
9. Share to Learn
John Congdon
Sharing ideas has a weird side effect that people don’t often
discuss.
With in-person events starting back up, we finally took the opportunity to
restart our local user group, SDPHP. I highly encourage everyone to find a
local community to be a part of, learn from, talk to, and share ideas with.
We go to presentations, conferences, online videos, etc… to learn from
people that are sharing their ideas. But what happens behind the scenes—
the people sharing those ideas learned along the way. EVERY SINGLE
TIME that I’ve ever presented from my user group, given a conference
presentation, written a blog post, or shared information in any meaningful
way, it has forced me to dive deeper into the topic before sharing. That deep
dive is called learning… I’ve learned about new things just because I
wanted to share information that I already knew.
My most recent example is around Event Sourcing. This technology or idea
isn’t new; however, the way we use it for our applications has some great
benefits, and I have been taking advantage of that in some small way for a
couple of years now. So while I wanted to share how I was using it, I also
took the opportunity to learn more and weave that into my presentations.
Share some small piece of something you have worked on lately with co-
workers, speak at a local user group, submit to talk at php[tek] next year, or
write for this very magazine. Be amazed at what you learn just because you
want to share.
And now this month’s articles …
10. We’ve all heard the expression, ‘think outside the box’, but this month, Ed
Barnard is giving us a feature article all about putting the problem in a box.
If you struggle with debugging your code (and who doesn’t, really?), I
highly recommend reading this. Ed gives us his experience of using an
intuitive approach to solve coding problems.
We move on from there to our next feature article, A Guide to Practical
Usage of PHP FFI, contributed by Bohuslav Šimek. This article breaks
down the benefits of using FFI, including the added benefits of FFI
vs. using PHP extensions alone. Bohuslav gives us a great example of FFI
and Duckdb, pointing out some of the drawbacks of converting code.
Lure—check; hook—check; fishing pole—check, now let’s climb aboard as
Eric Mann takes us into the world of phishing in his latest security column,
‘InfoSec 102: Phishing’. Eric explains the common terms used in the
security world and how understanding them can be helpful to you.
Over in Artisan Way, Matt Lantz shares the latest Laravel news with us.
This month he’s taking a closer look at the new features of Laravel 10. Matt
breaks down some of the potential impacts of upgrading and gives us a look
at Pennant, the feature flag released in the new Laravel 10 package.
We’re getting an introduction to application patterns from Chris Tankersley
this month in Education Station. In his article, ‘12 Factor Applications:
Parts 1-6’, Chris discusses the history and the tenants of 12 Factor
Applications—sharing how they can be applied today.
This month’s PSR Pick Up column, ‘PSR 17: HTTP Factories’ by Frank
Wallen, is taking a closer look at how to standardize the creation of an
HTTP Request and Response. The factory will help to ensure that we are
handling requests and various response types in a consistent manner.
Oscar Merida takes us back to school again this month with standard
deviation. In his latest puzzles column, ‘Grade Deviations’, he explains how
standard deviation is used to calculate grades. Oscar also gives us a new
puzzle, maze rats, so be sure to check it out.
11. In the column, Finally, this month, Beth Tucker Long brings us ‘Nothing
Lasts Longer’, sharing some wisdom gained from tried and true experience.
She shares how writing the ‘ideal’ code seems like the obvious goal;
however, sometimes, the code that fixes the problem is the best choice.
12. A Guide to Practical Usage of PHP FFI
By Bohuslav Šimek
In this article, practical examples will teach you how to communicate
with external libraries using PHP FFI. Together, we will navigate
common challenges and explore the rising star of the database world,
DuckDB.
PHP 7.4 introduced many exciting features, such as typed properties, preloading,
and the foreign function interface (FFI). Some of these features have been highly
anticipated, like typed properties, while others were more surprising. Regardless,
it is clear that out of all the features mentioned, FFI is the least self-explanatory.
So, what is FFI? According to Wikipedia, it is “a mechanism by which a program
written in one programming language can call routines or make use of services
written in another.” However, this is just a book definition and doesn’t tell us
what real-world problems it can solve. Therefore, a more relevant question to ask
might be: What problems does FFI solve in the real world?
FFI can be helpful if you want to reuse code that has been written in a different
programming language. For example, you might have a connector to a database
that has not yet been ported to PHP. Another potential use of FFI is to speed up
certain parts of your code. For instance, you might write an algorithm in a
programming language that performs better for a specific task, such as
completing complicated scientific calculations. Additionally, FFI can allow you
to do things that are not supported in your language, such as communicating with
hardware or directly accessing memory.
You may be wondering, “Can’t we already do all of this with PHP extensions?”
The answer is yes. We can accomplish all of the tasks mentioned above using
PHP extensions. However, FFI still has its advantages, such as easier usage,
maintenance, deployment, and better portability across PHP versions. The main
reason for this is that everything can be done in plain PHP, so there is no need to
set up a compilation toolkit or change deployment procedures.
13. Note: All of the provided code samples require a minimum version of PHP 8.1
and an operating system of Linux or Windows with WSL. They cannot be run on
standard Windows or Mac OS. The complete source code is available at
https://phpa.me/github-kambo, along with a prepared Docker image.
First Steps
We can illustrate the basic usage of FFI by rewriting the abs() function, which
returns the absolute value of a given number: (See Listing 1)
Listing 1.
The first step is to create a proxy object between the library and PHP. One of the
main challenges with FFI is mapping functions from one programming language
to another. The authors of FFI in PHP handled this by parsing a raw C function
definition. Therefore, the first argument of the cdef() function contains a function
declaration in C language. The second parameter is the name of the library from
which the function will be called. In this case, we are using functions from the
standard C library.
But what if we want to use more functions? Do we have to put them all in the
cdef() call? No, there is another way to load these definitions, which is by using
the FFI::load() function. This function loads a file with all of the definitions and
returns an instance of the FFI object. It expects just one parameter: the path to the
so-called header file.
Header files are a concept that does not exist in PHP. Header files contain
functions, declarations, structures, and macro definitions to be shared between
multiple source files. This is important because C requires a forward declaration
for all used functions, structures, or enums.
Function signatures in PHP and C are quite similar, as PHP is a C-style language.
However, there are some differences:
<?php
$ffi = FFI::cdef(
// function declaration in C language
'int abs(int j);',
// library from which the function will be called
'libc.so.6'
);
var_dump($ffi->abs(-42)); // int(42)
14. Variable types must always be defined.
The return type is declared before the function name.
Some data types are not supported in PHP and vice versa.
The function is then called through a method with the same name on the proxy
object. Simple data types like int, float, and bool are automatically converted
during the function call.
A header file can also contain macro definitions. In C, a macro is a fragment of
code that has been given a name. Before compilation, the macro is evaluated and
replaced by the code it represents. Macros are often used to define constants and
create short, simple functions. However, FFI does not support C preprocessor
directives, and they cannot be included in the header file loaded by FFI.
All of these things may seem complicated and a bit dry, so it would be better to
demonstrate them using a practical example. One such example is DuckDB.
Duckdb
DuckDB is an in-process, column-based, SQL OLAP database written in C++
that has no dependencies and is distributed as a single file. It can also be
described as “The SQLite for Analytics” with a PostgreSQL flavor. Its main
strength is its columnar-vectorized query execution engine, which makes it
particularly well-suited for performing analytical queries. However, DuckDB
does not have direct support for PHP, making it an ideal use case for the PHP
Foreign Function Interface (FFI).
16. First we investigated the place of the eyes, and there, sure
enough, was a blood trail. We followed but a few yards to find a
large striped hyæna—a magnificent beast, yellow gray, with black
stripes on his shoulders, and beautiful mane and bushy gray tail. He
measured from nose to tail four feet eight inches. We skinned and
decapitated him, a long and horrid business, and then took up our
none too pleasant loads and departed. We passed the remains of the
dead oryx, but there was little left of him. The hyænas had been
feasting all the night, and now the vultures were picking his bones.
It was still darkish as we took our way campwards, the mad rush of
the ponies being clearly visible to us. Through bushes, anyhow,
helter skelter they had pelted.
I had to stop and rest frequently, as my load was more than a
little heavy, though Clarence carried as much, and more, than he
ought. The rifles alone were no light weight, and when it came to
the slain animals as well we found them all a bit of a trial.
In some thick grass a great wart-hog rose up before me, and after
giving me a look from his tiny fierce eyes, lost himself again. I flung
my load down, all but the very necessary rifle, and went after him.
He made some ugly rushes in the long grass, but I dodged and
chased him to clearer country, until I could get in a shot which,
raking him, ended his career as a perfect king of his kind. I did not
want to take his tusks merely, as I desired his head to be a complete
trophy. But when Clarence strenuously refused to touch the creature
I knew I could not then, tired as I was, play butcher myself. So I had
to be contented with digging out his huge tushes. And a very messy
job it was too.
We took up our loads again, and went back over the ground over
which we had chased the oryx the evening before. I was progressing
wearily enough when I almost stepped on a yellow snake, with a
dark head, lying near a thorn bush. It was only about eighteen
inches long, but quite long enough to make me jump some feet, all
encumbered as I was. Clarence looked genuinely surprised.
17. “You not afraid of aliphint,” he said, a thing we had about as much
chance of meeting as the man in the moon; “what for you ’fraid
now?”
I told him women have a long-standing quarrel with serpents: that
a serpent once spoiled the happiness of a woman and turned her
out of a garden where she fain would be.
“She cousin of yours?” he asked, with true Somali inquisitiveness.
“Very distant,” I answered.
Cecily and a couple of hunters met us quarter way. She told us the
ponies rushed into camp in the early morning, as I had thought they
would. She had not been unduly anxious about me, knowing I was
with Clarence, and guessing we were bushed. They never heard the
shots at all.
I did enjoy my breakfast, and never had a cup of tea that tasted
half so good.
The thought of all that pork wasting in the near vicinity bothered
us no end. Very greedy, I know. But, you see, dainties were not
often to be had. We ordered out a couple of ponies, and rode back
to the scene of my early morning encounter with the wart-hog to
find him, marvel of marvels, intact. Though a thwarted looking
vulture of business-like appearance flapped off and sat down in
stone’s throw. They have a mighty contempt for man, these birds, or
else it is they recognise they aren’t worth powder and shot.
Cecily evolved the idea of converting half the wart-hog into bacon,
putting it into pickle, and promising it would equal the finest home
cured. The ham was to be a treat to which we should look forward
for weeks.
We pickled it all right, or what seemed like all right to us, rubbing
it daily with handfuls of salt as we had seen ham cured at home.
And then one day, when a meal was badly wanted, and the larder
was empty of all else, we essayed to cut the treasured ham and fry
it in slices. Cecily inserted a knife. The resultant odour was appalling.
18. So were the awful little maggots that rose in hundreds. Clearly we
didn’t know how to pickle ham, or else the ham of wart-hog would
not take salt as our pig at home does. We could see the line to
where the pickle had penetrated. Below chaos! Ruefully we had a
funeral of our looked-for supper, and fell back on the never-failing
“Elizabeth Lazenby.”
19. Y
CHAPTER VII—ANOTHER
UNCOMFORTABLE NIGHT
I see a man’s life is a tedious one. I have tired myself; and
for two nights together have made the ground my bed
Cymbeline
ou can imagine with what joy I looked forward to a good
night’s rest after the previous twelve hours’ vigil, and therefore
it is the more amusing to remember that, as Fate would have
it, I had an even more occupied time during the midnight hours than
ever. We had started to march, after returning to camp with the
wart-hog, as we had news of splendid “khubbah” some miles off,
given to us by a Somali who came in riding his unkempt pony. The
Somali ponies, by the way, are never shod.
The ground was very bad going, and over one bit of sandy waste I
thought we never should get. The camels sank in up to their knees
at every forward move, then deeper, and at last so deep—it was
almost like an American mud-hole—I began to fear consequences.
The absurd creatures made no attempt to extricate themselves, but
simply, when they found the place a perfect quagmire, settled down
like squashed jellies.
It was too ridiculous for words, and I laughed and laughed.
Everybody talked at once, and nobody did anything. At last we all,
even the Somali who brought us the news of the distant game, and
who seemed to like us very much, for we never got rid of him again
lent a hand, and began to unload the laden camels, carrying the
goods to terra-firma. some sixty yards away.
20. The moment the camels considered their loads lightened they
condescended to heave themselves up a little. After loading up again
we proceeded but a little way, indeed but a few hundred yards,
when the whole thing repeated itself. The camels were embedded
once more. Cecily and I decided to go on and leave them all to it,
and try and get any sport that might be had, ordering the men to
release the camels from this new quagmire of theirs, and to
afterwards form zareba close to the place, I was really glad to ride
away from the whole thing, confusion and everything. The
disorganised, unsettled feeling I got reminded me of that which
comes to one at home during the annual upheaval known as the
spring-cleaning. The green grass was springing up with the recent
rains, and our little ponies made light of the muddy going. The spoor
of all sorts of game was everywhere apparent, and we were most
interested to see traces of ostrich, although we did not that day
come across any, indeed they are rather difficult creatures to see.
We separated, as was our wont, Cecily taking Clarence, and I the
Baron, whom we had now, in spite of his romancing propensities,
promoted to second in command. He had great acumen when he
chose to display it, and was no sort of a coward. But then, in spite of
what some travellers say, the average Somali rarely is. They are
frightful “buck-sticks,” but I never saw any cowardice to disprove
their boasting stories.
After leaving the ponies with two syces we went off at right
angles, and after a long and heavy walk I came on a bunch of aoul,
who winded me and darted away like lightning. Their flight started a
great prize, whom I had not noticed before, so much the colour of
the reddish-brown earth was he. A dibatag buck. He fled too a little
way, but then halted, appearing to think the sudden fright of the
aoul unnecessary. I was crouching low behind a small bush, and
took most careful aim. Off went the long-necked creature again, its
quite lengthy tail held erect. He stood and faced me. He apparently
mistrusted the bush, but had some weakness for the spot. It was a
very long shot, but I tried it. The bullet found a billet, for I heard it
tell, but the buck sprang feet into the air and was off in a moment. I
21. took to my heels and ran like mad. I don’t know how I ever
imagined I was to overtake the antelope. The Baron tore along
behind me. I ran until I was completely winded, but I could see a
strong blood-trail, so knew the antelope was hard hit. I ran on again,
and we were now in very boggy ground, or rather surrounded by
many oozy-looking water holes. It was a very shaky shot I got in
next time. The dibatag dashed on for a few paces, and then took a
crashing header into—of course—the largest pool in the vicinity. The
Baron and I danced about on the edge in great vexation, but I did
not mean to lose my splendid prize even if I had to go in after him
myself. Satisfying myself that the water was not deep, I bribed the
avaricious Somali to go in and help lift the animal whilst I rendered
active assistance on dry land, and this was done. The Baron went in
with a very bad grace, at which one cannot be surprised, and after
prodigious splashing and any amount of exertion, for the buck was
an immense weight, I held the dibatag out of the water whilst the
Baron extricated himself, together with many leeches, from the pool.
Then we both heaved together, and the buck was mine. The Baron
now began to make such a fuss about his loss of blood caused by
the leeches who would not let go I told him to go home to camp and
put salt on them and then recover, and ordered him meanwhile to
send the syce back to me with my pony.
I sat down and admired my dibatag, and was mightily pleased
with my luck. For this antelope is very shy and difficult to stalk as a
rule. Dibatag is, of course, the native name, but somehow the one
most commonly used everywhere. The correct name is Clark’s
Gazelle. The tail is really quite lengthy, and the one sported by my
prize measured twelve-and-a-half inches. His horns were good and
touched nine-and-three-quarter inches. Only the bucks carry horns.
The dibatag was so large we had the greatest difficulty in packing
him on to the pony as I wanted to do, so we finally skinned him,
keeping his head and the feet, which I afterwards had mounted as
bell-pulls.
22. Going back to camp I came on Cecily, who recounted her
adventures—not a quarter so interesting as mine, though, for she
had drawn blank. It would be boring for any one to have to wade
through stories of stalks that came to nothing.
“What’s hit is history, but what’s missed is mystery,” though, of
course, each several excursion teemed with myriad interests for us
on the spot.
Sometimes I spoored for hours without getting a shot, involving a
great knowledge of the habits of animals, keen eyes and judgment,
all of which Clarence possessed in a high degree. Then his ability to
speak English, even imperfectly, was such an advantage, and we
beguiled many an hour in conversation.
I wonder if we human beings will ever be able to hunt for its own
sake, without the desire for its cruel consummation. Much though I
love the old primitive instinct of pursuing, I am not able to forgo the
shot, and particularly when I want a lovely pair of horns. I suppose
we keep the balance, and if we did not kill the lions and leopards
would get the upper hand. But often I wished when I was flushed
with success, and I saw my beast lying dead, that I had not done it.
It seemed so cruel, and all antelope are so very beautiful. Of course,
23. we had to kill for food as well as sport, and I think we spared
generously on the whole, for we could have trebled the bag.
I began to feel tired of the actual killing as soon as I had perfect
specimens of each sort, and always preferred the nobler sport of
more dangerous game. I think if I went again I could in most
instances deny myself the shot, and content myself with watching
and photographing. As it was, I often lay for an hour and watched
game, after crawling to within fifty yards. On one occasion an aoul
and I eyed each other at twenty paces, and so motionless was I he
could neither make head nor tail of me.
The camp was in a turmoil and every camel-man shouting at the
top of his voice—the one thing I do object to in Somalis. Their very
whispers almost break your ear-drum, and I suppose a loud voice is
the result of many centuries of calling over vast spaces.
Three of the camels, heavily laden, had turned aggressive, bitten
several men, and shaken the dust of the place off their feet. Of
course, the levanting camels proved to be the ones loaded up with
our tents and bedding. They had a very excellent start before
anyone thought it necessary to go in pursuit. It was all gross
carelessness, as a loaded camel is easy enough to stop if the
stopping is done by its own driver.
There was nothing for us to do in the matter, and supper seemed
the main object just then. The cook served us up some soup and
broiled chops, and we topped up with some delicious jam out of the
useful little pots from the A. and N. Stores, holding enough for a not
very greedy person. Cecily voted for blackberry, and I sampled the
raspberry.
Night fell, and still no returning camels. I rode out a little way, but
the going was too impossible in the dark. My pony was a gallant
little beast, a bit of a stargazer, but I prefer a horse with his heart in
the right place, wherever his looks may be.
I was by this time aching all over, and there was nothing to do but
make provision for as comfortable a night as might be. We collected
24. what spare blankets we could, and lay down near one of the fires.
Though so weary I could not sleep, and the camp was never silent
for a moment. The fires were kept high, and shots fired at intervals
to guide the wandering camel-men.
The men lay about or sat about the watch-fires, and in the middle
of the night two of them began to fight. In the lurid light the scene
was sufficiently realistic to be unpleasant. They began with loud
words, progressed to blows, and then advanced to spears. Thinking
that rifles would probably be the next resource, I got up and called
on the men to desist. They took no more notice of me, naturally,
than if I had never spoken. And as the now thoroughly awakened
camp appeared to be going to take sides in the business, I got my
“express” and shrieked out loudly that I then and there meant to
make an end of both the combatants. Although they were not
supposed to understand English, they translated enough from my
resolute manner and threatening gestures to know that I would put
up with no nonsense. They ceased the combat as suddenly as they
began it, but not before camel-man No. 1 had jabbed camel-man
No. 2 in the fleshy part of his thigh.
I told Clarence to hold No. 1 in durance vile whilst No. 2 had to be
attended to with as much care as if we really sympathised with him.
25. All my desire was to be able to shoot both of them on sight. I was so
tired I could hardly see, and too aching to do more than drag myself
around. We had to dress the man’s wound for fear of consequences,
and went on messing away with him until the first signs of dawn saw
the return of the prodigals, travel-stained and weary. The camels
promptly sank down and began chewing the cud composedly. Really
the camel is the most philosophical of all living things!
Next morning I held a court-martial of sorts on the offenders, and
threatened them both with the loss of the promised bonus to be
given at the end of the trip provided all things pleased us. I also
docked them of some pay. This had the desired effect, and battles,
except wordy ones, were “off” henceforward.
The wound by rights ought to have been stitched, but we rather
shied off doing it. The dressing was pantomime enough; I nearly lost
my temper many times. An expedition like ours is a grand field on
which to practise repression, and I was for ever trying conclusions
with my capabilities in that direction.
Out early near here one morning we came on an astonishing sight
—an oryx lying down in a thorn patch, and all around him, like
familiars of a witch, crouched jackals, the length of one of their kind
apart, watching with never flinching stare the centre of attraction.
We cantered up, and the jackals reluctantly made off. One big fellow
struck me as unlike his brethren, and a bit of a prize. So, reining in
the pony, I jumped to the ground, losing a lot of time in the process,
and fired with rather a shaky hand. The result was I hit the loping
animal in the leg only, laming it, causing it to howl terribly, and
causing me much shame for my unskilled aim.
I pursued my quarry, because I could not leave it out wounded,
and overtook it just as it fled into a lair of thick adad bushes.
Dismounting, I let the pony stand, and going to the bushes I
stooped down to peer in, laying my rifle on the sand. A flare of
green eyes and snarling teeth, a flat yellow head shot out as a snake
strikes. My coat sleeve was gripped in a gin of white fangs, but only
the incisors cut into my flesh—caught by the left arm in a flash.
26. Before worse could happen I pulled my shikar pistol from my belt,
and in the tussle—for we neither of us took things lying down—the
weapon went off anyhow. My enemy sank inert, still gripping my
sleeve. He was hit mortally, and died in a moment or two. My arm
began to smart a trifle, and I had some difficulty in dragging the
wolf-creature from its deep-in lair. It was a wolf, not large—no bigger
than a jackal, and much smaller than a hyæna. Its coat was marked
with brown, and right down the middle of the back was a fine
upstanding length of hair that formed a black-tipped mane or ridge.
The tail was long and thick, very black on the lower part and very
yellow at the upper. The fore feet were five-toed; I counted them
carefully.
It was a bit of a struggle to lift the carcase across the pony, and I
had to walk, holding it on, to the place where I left Cecily. She was
watching over the departed oryx, and vultures sat around her
wistfully regarding the feast that might have been. In the side of the
dead antelope an arrow still stabbed, and marks of a whole flight
were in evidence all over the glossy coat. Some Midgans hunting
without dogs had missed their quarry somehow. Cecily had put the
big bull out of his pain, and there we were with an embarras de
richesse miles from camp and alone. The oryx had very finely turned
horns, and it seemed a sin to waste them. We set off to decapitate
him with the only implement we had, a very small shikar knife. It
took a long time in the doing, and we were so hot and tired and sick
by the end of the performance, I thought we must be struck with
the sun. The water in our bottles was quite hot.
The instant we left the carcase of the oryx the vultures came from
all sides, hanging over it with legs poised to alight, screaming as
they flapped along the ground and settled on the bushes around. We
took it in turns to ride the spare pony; the other was a beast of
burden for our spoils. A flock of quail ran ahead and disappeared
beneath the khansa. The walking one walked, and the riding one
rode, and at last we had to take our coats off. The heat grew
insufferable, the sun blazed a-shimmer through the purple-blue
coverlet of the sky. Even the sun loving sun-birds kept in the shade
27. of the bushes. My rifle—best of playthings—took on a pound or two
in weight.
Cecily wears perpetually a single-stone diamond ring, given her by
a friend now in Purgatory, if everyone gets their deserts, as we are
told is the invariable rule. The sun danced on the exquisite stone,
and as she moved her hand a glinting light flickered from it on the
sand here and there, like a will-o’-the wisp.
Our pony shied—actually pretending to possess nerves—at a
porcupine, who suddenly rustled his quills like the upsetting of a box
of pens. The oryx head fell off, and the mettlesome steed backed on
to it, damaging the horn near the tip against a sharp stone. A small
kink, but a pity. Cecily made the pony walk up to our friend of the
quills, but as it seemed likely to result in the wolf being chucked off
also, we abandoned horse-training notions for the present.
Getting back to camp, we found the men lining up for their
devotions, so waited patiently until they were over. Everybody’s
creed, or form of it, should be respected, because each separate
religion, multitudinous though they are, is but one religion, and a
part of the vast whole. The seeming difference in all sects are
merely the individual temperamental superstitions. It does not
matter, therefore, if we worship Allah or Joss, Buddha or Mrs. Eddy.
“What’s in a name? That which we call a rose by any other name
would smell as sweet.” To certain people certain names for religion
are necessary—to others the “Religion Universal” serves. Now, our
chef belonged to—I am sure—the Peculiar People, and didn’t know
it, and called himself a Mussulman of the Shafai sect. He must have
been peculiar to think he deceived us into believing he was a cook,
ever had been, or ever would be. Some people are born cooks, some
achieve cooking, and some have cooking thrust upon them. Our
satellite was of the latter kind.
We bought a couple of sheep that night from a passing caravan,
but told the men they would be the last we should provide if the
animals could not be despatched in a quicker, more humane manner.
The “hallal” slash across the throat seems only to be really
28. efficacious if the animal to be killed is in full possession of its senses.
They might easily be stunned first. When we killed antelope for meat
the shikari always satisfied himself first that the animal was alive
before he bothered to give the “hallal.” This seems rather an
Irishism, but you understand how I mean.
Somali sheep are never shorn, for their wool attains no length.
This is another of dear Nature’s wise arrangements. I do not like to
imagine the condition of any poor sheep in the Somali sun with a
coat on like unto the ones grown by our animals at home. The
number of sheep in Somaliland is as the sands of the sea. Such vast
flocks would be large even in an avowedly sheep-producing country
where the rearing of them is reduced to a fine art. The Somali
animals thrive and multiply with hardly any attention. They never
grow horns, and have the most extraordinary tails, huge lumps of
fat, which wax all very fine and large if the pasturage is good, and
dwindle at once if the herbage is scanty. Carefully fostered, the
sheep raising industry could support the country. The export at
present is as nothing to what it might be engineered into.
29. T
CHAPTER VIII—A BATTLE ROYAL
Take that to end thy agony
Henry V
Our happiness is at the height
Richard III
he Somalis, as I have explained before, are almost entirely a
nation of nomads, and the only settled villages or townships
are those run by Sheiks or Mullahs, or whatever name they
elect to be known by. These men are Mahomedans with an eye to
business, religious, influential, knowing the value of education, and
are often quite learned. We marched into the vicinity of some
hundreds of huts, and sent Clarence on ahead to present our
compliments to the Mullah and express our desire to call on him. We
also sent along a consignment of gifts likely to appeal to a learned
man—a Koran, a tusba, and a couple of tobes, for even a Mullah has
to have clothes, anyway, in Somaliland. I don’t know whether our
sending presents first was correct, or whether we should have
waited for the Mullah to weigh in. We debated the point, and
decided any one with an extra sensible mind would think a bird in
the hand worth two in the bush any day of the week. This village, if
our men’s talk was to be believed, was full of Mullahs, not one
Mullah. We concluded that all the wise and religious-minded men
must have banded together to live as monks do, save that celibacy
was not the fashion.
The Mullah lost no time in sending us return offerings in the shape
of three sheep, and harns and harns of milk. He also asked us to go
30. and see him in his karta, as owing to some infirmity he could not
wait on us. All this was very correct and nice. I should think this
Mullah had been trained in the way he should go.
We put in an appearance that same afternoon, hardly able to push
through the crowds that lined up in readiness for our advent. The
Mullah received us at the door of his hut, a smiling, urbane
personage. I saw no sign of infirmity, but of course I couldn’t ask
what it was. The Mullah would be about fifty years old, so far as I
can judge, and he had the tiniest hands and feet. His face was full of
intelligence, his eyes deep set and alert. In colour he was of the
Arab shade, and some Somalis are almost black. He was exceedingly
gracious, and received our credentials, or passport so to speak, with
serene smiles. He barely read them. I suppose he could. All the
Mullahs can read Arabic.
Myriads of children—our hosts we concluded—sat and squatted
and lay about the earth-floor, two circles of them. Cecily says they
went three times round, but no, two large circles.
The Mullah asked a great many questions about England—who we
were when we were at home? how it was two women could come so
far to shoot lion, and why we wanted to?—to all of which we replied
as clearly and comprehensively as we could through Clarence. Then
more personal questions were asked. Were we married? “Say no,
Clarence.”
“No,” said the stolid shikâri.
The Mullah reflected a little. Didn’t we think we ought to be? A
dreadful flick on the raw this. If we married how many husbands are
we allowed? I instructed Clarence to say that is not so much how
many you are allowed as how many you can get. Cecily broke in and
said that it was enough to puzzle any Mullah, and that Clarence
must explain that one husband at a time is what English women are
permitted, but it is very difficult in the present overcrowded state of
the marriage market to obtain even one’s rightful allowance, hence
our lonely forlorn condition. The Mullah looked really sorry for us. He
31. said he would like to give us another sheep, and that he did not
think he would care to live in England, but he approved of the
English he had seen. “Best people I see.” We thanked him,
salaamed, and left. We were then followed by a pattering crowd who
dodged in front of us, peering into our faces, and when we smiled,
smiled back crying “Mot! Mot! io Mot!” over and over. It was quite a
triumphal progress.
At our own camp we found the place invaded by every invalid of
the Mullah settlement waiting in serried rows for us to cure them.
Why every English person, or European rather, is supposed to
possess this marvellous in-born skill in medicine I cannot tell. Some
of the complaints presented I had never heard of, much less seen,
and even our learned tome of a medical work failed to identify many.
It was very pathetic, as we were so helpless. The poor things
regarded the book as some saviour come to succour them.
There was enough occupation before us to keep a doctor busy for
weeks, that much we could see. We only dared venture on the
simplest plain-sailing cases, and even if we had used up our entire
stock of medicine and remedies required for our own use it would
have been a drop in the ocean of trouble here. We gave presents as
a consoler to the worst of the invalids, and then, lest they should all
return again on the morrow, we folded our tents like the Arabs and
silently stole away.
One of our own men required our attention after this. He showed
all the symptoms of ptomaine poisoning, and ferreting into the
matter I found that—well fed as he was—he had gone after the
contents of a tin of beef I had my doubts of, and which I threw away
over the zareba fence, and had consumed the stuff. I was
exceedingly vexed, because I had told all the men standing about at
the time that the tin was bad and would poison any one. Is it not
odd that people—especially men—always want and like that which is
denied them? If we could only get at the truth of it, I expect we
should find that in taking the forbidden fruit in the Garden of Eden
Eve did it at the express wish of Adam who wanted it badly, and had
32. not the moral courage to take it for himself. By the way, it may not
be generally known that quite a lot of learned people claim that
Eden existed in Somaliland.
To return to the subject in hand again. Just imagine a well-looked-
after camel-man deliberately going and making a meal of doubtful
meat just because it was forbidden him. Ah, well! is it not said that
“the dearest pleasure of the delicately nurtured is a furtive meal of
tripe and onions”? Perhaps our follower took the beef as a
surreptitious dish of that kind. The analogy may seem a little “out,”
but it is there if you look for it.
One day, somewhere about this time, I was fortunate enough to
witness a great and splendid sight, a battle to the death between
two bull oryx. I had been lunching on sandwiches of their kind—alas!
their poor brother!—and was resting awhile on the verge of a thick
bit of country, a natural clearing with thick thorn cover around. I
kept very silent—I was in fact very sleepy—when I heard the war
challenge of some genus buck, imperious and ringing, and not far
away. It was replied to instantly. Again it sounded louder and nearer.
I raised myself and looked about. From out the dense brushwood,
but a few hundred yards away, and from opposite sides, sprang a
fine up-standing oryx. Crash! And the great bulls were at each other.
Clawing with hoofs and teeth and rapier horns. Then backwards they
would sidle, and each taking a flying start would come together with
a sickening crash, and all the while each tried every possible tactic to
drive the merciless horns home. I held my breath with excitement,
as in theirs I was permitted to creep almost up to the panting, foam-
flecked warriors. I could have shot both, but as I was strong so was
I merciful. It was a great and glorious struggle, and the laurels
should be to the victor. For quite a long time it was impossible to tell
which was the stronger, but at last the right-hand buck—for, oddly
enough, though they circled round each other each always charged
from the side from which he commenced to give battle—began to
show signs of tremendous stress, and the telling blows of his
opponent wore him down more and more. No longer was he able to
parry the lunges of his infuriated foe, who, like lightning, took
33. instant advantage of the on-coming weakness of the stricken buck,
and rushing in on a flying charge like a whirlwind, inserted his
rapier-like horns into his enemy’s side and gored him unmercifully.
This is where I came in. I would not shoot the victor, for he had
won his battle in fair fight. It was the survival of the fittest. As he
shook his dripping horns and looked at me with blood-shot eyes and
frothing muzzle, I saw he was a youngster in the height of his prime,
and that the stricken buck was old. The victor and I looked at one
another, and I threw my rifle up. A charge from a maddened oryx
would be no simple thing. But I did not want to take his life unless
compelled. A soft, low whinnying noise in the bush: he was off, and I
was forgotten. Cherchez la femme, even in oryx land! I walked up to
the dying buck, and Clarence, who had seen the whole thing also,
hurried up and asked me if he might “hallal” quickly and save the
meat. A Somali could not be expected to appreciate sentimental
reasons, so I did not urge mercy towards the utterly vanquished,
mostly because the kindest course was to put the beast out of pain.
His horns were the horns of a mighty fighter, and his shield bore the
cuts and indents of many battles. But his day was over, and his
harem passed to a new lord.
The ground was all ploughed up with the scuffle.
The head of the dead oryx was poor. It looked old, and was
moreover the worse for strenuous living, being in parts hairless. As I
now had better heads, I took his shield merely, as a souvenir of the
great fight. It is now a little tea-tray from which I peacefully drink
tea.
34. We struck camp next day, and trekked along the borders of the
Ogaden country. That night we had a camel looted. A camel seems a
bit of an undertaking to run off with, as more often than not he
won’t move when you want him to. I suspect there was some
collusion on the part of the camel-man in charge, but I never could
bring it home to one of them.
Our clothes were now in a shocking state of repair, or disrepair.
What with wait-a-bit thorns, drenching rain, torrid sun, wriggling on
the ground, kneeling and grovelling about, we were the most awful
scarecrows you ever saw. But we were intensely happy. That is the
wonder of the wild. One forgets clothes—and that is much for a
woman to say—newspapers and letters. What was going on in the
world we knew not, nor did we care. I cannot conceive the heart of
man desiring more than was ours just then. The glories of the jungle
were all for us; every dawn brought something new, and everywhere
we could trace the wonders of the world in which we lived: each
morning come on romance in footprints, tragedy in massed spoor,
“sermons in stones, and good in everything.”
It is not to be thought that all things went smoothly. In a big
caravan of the kind such an idyllic condition of things would be well-
nigh impossible. There were the most awkward disagreeablenesses
and unpleasantnesses of all sorts to bother us. I hate sporting books
35. full of grumbling and tales of discomforts. Nobody asked the
sportsman to undertake the job, and nobody cares if he “chucks” it.
Therefore why write reams about miseries when there are so many
things to make up for them? No life is all couleur de rose; but we
can make light of the darkness, “walk in its gardens, and forget the
rain.”
Ostrich spoor was now all about, but they are the most difficult of
all things to come on at close quarters. I stalked odd birds, birds in
twos, birds in trios for hours, but never came within any sort of
range.
All the natural history as told to me in childish days about the
ostrich burying its head in the sand and imagining itself hidden I
found very much of a nursery romance. The ostrich takes no
chances, and, so far from burying its head, has to thank the length
of its neck for much of its safety.
After days of wriggling about on the flanks of ostrich, in the front
and in the rear, I confided my chagrin to Clarence. He said he had a
Plan. I told him I was delighted to know that, and would he unfold it
at once? It seems very ridiculous, but just because I could not bag
an ostrich the bird seemed to me the be-all and end-all of the trip. I
am a woman all over, it seems.
Well, Clarence’s idea was this: Ostrich never eat at night;
therefore, if you persistently chase the same ostrich for two or three
days consecutively it follows, of course, that the bird must give in
sooner or later—sooner, Clarence hoped—from want of food and
exhaustion. Or, if a hen ostrich could only be procured—just as
though I was not prepared to welcome her—it would not be long
before I should have a near view of a cock bird, who would come
along with a view to a possible introduction to Miss Ostrich. She was
to be tied to a thorn bush behind which I should be ensconced. It
did not seem at all a sporting thing to do. Love’s young dream
should not be made a potent factor in a deadly business of the kind.
Love spells life, not death.
36. The other idea did not commend itself to me either with any
gusto. I had no mind myself to go riding after ostrich as though it
were a trophy beyond price. Neither did I want to detail any of the
men for the job. It was just as well we did not trouble for—such are
the chances of hunting, when the position of things may change
from success to failure, from failure to success in the blinking of an
eyelid—I suddenly came on two birds—two grey hens—one
afternoon as I was returning from a fruitless expedition after a lion
that must have left the neighbourhood a week before. One hen was
picking the new grass that was everywhere springing up, the other
was playing sentry. And very well she did it too, marching up and
down with head erect and alert eyes. They had not winded us. We
were covered by fairly dense wait-a-bit. The birds, however, were
entirely out of range. I was now on foot, and flung myself down, as
had Clarence. We then raised ourselves sufficiently to cut as silently
as we could a bunch of the awful prickly grass, all mixed with thorn
spikes, and though it scratched me like fun, and I heard my poor
garments ripping away, I took the screen from Clarence and holding
it well in front of me wriggled to the edge of the open country in
front of me. I did feel absurd, and how was I to get within range of
those knowing birds, all encumbered as I was too, with my weapon
and my wait-a-bit? It was wait-a-bit! I took half an hour to crawl a
few yards. But the birds still went on picking the grass in the peculiar
way they have, taking turns at sentry-go. They had great doubts
about this small tuft that had grown up in a day, mushroom-like, and
it was only when sentry turned and paced the other way I could
progress at all. The bird who was doing the eating did not trouble
itself so much. At last, wonderful to relate, I really got within range,
and then it was a toss up which bird to choose. I really considered it
an embarras de richesse, and told myself that both belonged to me!
Sentry presented the best mark, and as she turned and came
towards me I drew a bead on her breast and fired. She fell—plop!
But her companion simply took a sort of flying run, very quaint to
watch, and vanished in the instant on the horizon. This is, I know, a
prodigious fuss about shooting an ostrich; but I found them harder
to come on and account for than the king of beasts himself. Some of
37. my ostrich found its way to the stock-pot, and a portion was roasted.
We were quite unable to get our teeth through it. Cecily said I had
undoubtedly shot the oldest inhabitant. The stewed ostrich, after
being done to rags, was eatable, but no great treat.
The next day I was taking a breathing space in between moments
of stalking an aoul with peculiarly turned horns, a regular freak
amongst aoul, when I suddenly heard that weirdest of sounds, the
hunting call of a hyæna when the sun is high. I got up and gazed
about, and at some distance there flashed into my vision a disabled
buck, I could not then tell of what variety, haltingly cantering and
lurching along. The hyæna was on his track, running low, but
covering the distance between them magically quickly. In shorter
time than I can write it the hyæna sprang on to the haunches of the
spent buck, and down, down it sank, with head thrown back, into a
pitiful heap, the fierce wolf-like creature worrying it at once. I threw
up my rifle, in the excitement I had been allowed to approach very
near, and the hyæna paid toll. He was a mangy brute of the spotted
variety, but the strength of his teeth was amazing. He hung on to a
piece of the aoul long after death. I kept his head, but the skin was
useless. The buck was an old aoul, evidently in shocking condition
and run down generally. He was dead, or I would have put him out
of his misery. I took the head for the sake of the horns. These
measured on the curves seventeen and a half inches.
Just here Clarence when out spooring, came on an ostrich nest
just about to hatch out, and nothing would do but we must go then
and there to see it. We penetrated some wait-a-bit and then came
on the nest with seven eggs therein. Next we hid ourselves, waited
awhile, and had the pleasure of seeing the father ostrich return to
the domicile. I don’t know where the mother could be. We never
sighted her. Perhaps she was an ostrich suffragette and had to
attend a meeting. We did not want to go too near the nest, or go
too often, but we could not help being very much interested. Our
consideration was quite unnecessary. The eggs hatched out, the
broken eggs told the tale, but some prowling jackal or hungry
hyæna had called when the parents were away and annexed the
38. entire seven. Housekeeping in the jungle has its drawbacks. It must
be really difficult to raise a family.
It was quite strange that Clarence, who was a born shikari, versed
in the ways of the wild, and master of the jungle folk, was not at all
what I call a safe shot. I never felt that I could depend on his rifle if
we got into a tight hole. My uncle says times must have changed, for
in their days together Clarence was very reliable with a rifle. But I
don’t see why a man, so often out in the jungle, should go off as a
shot—rather, one would think, would he improve, like grouse, with
keeping.
We did a most amusing stalk one day here. On a Sunday—I know
it was a Sunday, because ever since we lost the only almanac we
had with us we notched a stick, Crusoe fashion—Cecily and I
decided to part company and go our ways alone, and taking our
ponies rode off in opposite directions. After some time I tethered my
steed and left him for the syce to attend to, and then I mooned
along slowly until I must have traversed a mile or so. I lay down
awhile, and then a bunch of aoul crossed my front, a Speke’s Gazelle
with them but not of them, for he held himself well aloof, and
seemed by his very bearing to say he was only with them by
accident. The aoul moved on, but the Speke began to feed, and I
realised then he carried a head worth having, and I must take it an’
I could. I was out of range, and it meant a careful stalk. I hoped he
would not notice me if I wriggled to the next clump of wait-a-bit,
which showed the crassness of my ignorance! Of course, he knew
something was afoot, and I had to lie still for ages ere I deceived
him into passivity again. The ground was like a razor’s edge; small
stones and sharp-edged flints cut into my poor knees, but I crept
nearer by twenty paces. The sunlight danced again on his shining
coat, and all his thoughts were hemmed in now by a little patch of
green grass he had come on. He consumed this while I squirmed
from point to point, and then with a whisk of his tail he was off
again. A brisk run brought him in view once more, and all this time
my presence had never really irked him. Aha! I pretty well had him.
A few paces more when, wonder of wonders, he saw some danger
39. signal in quite another quarter and dashed away, this time with no
halting. He was gone for ever. I rose and stretched myself, when a
distant bush of wait-a-bit yielded up another figure, doing the same
thing. It was Cecily. And we had both been stalking the self-same
buck for hours—spoiling the other’s chances every time. We laughed
and laughed, for who could help it?
On our walk back to camp we found the vacated hole of a wart-
hog. They dig these entrenchments for themselves, and back into
them so that they face any danger that may come—a most wise and
sound policy. The hole only just admits piggy; there is not one inch
to spare. Living as they do on roots, it can well be understood that
the flesh is really much more appetising than that of the home-
grown porker. Their only drawback as a welcome addition to our
larder was this refusal of the Somalis to have anything to do with
pig. I am quite sure they ran this phase of Mahomedanism for all it
was worth, thereby saving themselves labour, for I never could see
any very strong leanings towards any other teachings of their
religion.
40. V
CHAPTER IX—DEATH OF “THE
BARON”
My very friend has got his mortal hurt
In my behalf, my reputation stain’d
Romeo and Juliet
A piteous corse, a bloody piteous corse,
Pale, pale as ashes, all bedaubed in blood,
All in gore blood
Romeo and Juliet
ery often we made detours from the main caravan, rejoining it
at a given spot, and this spirit of “wanderlust” brought us into
a nice quandary one fine day. Going by the map and guided
by the compass, Clarence was to arrive with the whole outfit at a
precise place by nightfall, and we two, tired of the two-and-a-half
miles an hour pace, did an excursion on sport intent, taking our own
way to meet the caravan. We, with three hunters on the ever-willing
ponies, left camp early, and going easily soon put a good distance
between ourselves and the slow-coach camels. Dik-dik popped up
everywhere, but ’twas no use disturbing the jungle for such small
game. Water-holes next loomed ahead, and into the mud the
Somalis precipitated themselves to drink and dabble. It was really
not fit to swallow, and sudden death would seem to be the probable
result. Not at all! It gave a sudden impetus to our men, who grew
quite lively, game for anything, as they chanted invitations to
imaginary animals to come and be shot. All the song was of the
41. “Dilly, Dilly, come and get killed” pattern, and was for the most part
addressed to a rhinoceros who lived in fancy. “Wiyil, Wiyil, Mem-
sahib calls you,” was the bed-rock of the anthem, and like our home-
made variety one sentence had to go a long way.
We found a track made by tortoises innumerable who evidently
marched in solid phalanx to the water-holes. We followed the trail
for a long way, but it seemed to be taking us to a Never-never land,
so we turned, giving up the idea of discovering the source of the
path. But in a tiny lake, as big as a bath and as shallow, we came on
three tortoises swimming. They drew in their ugly snake-like heads
with a sideway motion beneath their armour-plate residence, and
there was nothing left to see but a flat, dirty, yellow carapace. They
were quite small, and we pulled one out with a deft noose thrown by
the second hunter. Each man took off his turned-up sandals and
rested one bare foot at a time on the shelly back, “to make strong
the feet.” They did this very solemnly, and, of course, in turns,
mounting their ponies when the superstitious rite was well over.
We saw a very immature gerenük standing on his hind legs to
feed on the young tops of a thorn bush. It went off at a crouching
trot, stopping after a short run to turn and stare. It even returned a
few paces, with unparalleled impudence, to gaze. It was a youngster
of last season. The gerenük mother is not the highest type of jungle
matron, frequently abandoning a little one to fend for itself weeks
before it has been taught the ways of the jungle. And so it is that
gerenük fawns are a great mainstay in the lion dietary.
We let our youthful friend investigate us to his liking, after which
he trotted off. Gerenük seldom or never gallop, and get up nothing
like the speed of an oryx for instance.
42. Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.
More than just a book-buying platform, we strive to be a bridge
connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.
Join us on a journey of knowledge exploration, passion nurturing, and
personal growth every day!
ebookbell.com