Let it Enfold You

by Charles Bukowski
(Photograph by Mark Hanauer)

Either peace or happiness, 
let it enfold you

when I was a young man
I felt these things were
dumb, unsophisticated. 
I had bad blood, a twisted
mind, a precarious
upbringing. 

I was hard as granite, I
leered at the
sun. 
I trusted no man and
especially no
woman. 

I was living a hell in
small rooms, I broke
things, smashed things, 
walked through glass, 
cursed. 
I challenged everything, 
was continually being
evicted, jailed, in and
out of fights, in and out
of my mind. 
women were something
to screw and rail
at, I had no male
friends, 

I changed jobs and
cities, I hated holidays, 
babies, history, 
newspapers, museums, 
grandmothers, 
marriage, movies, 
spiders, garbagemen, 
english accents,spain, 
france,italy,walnuts and
the color
orange. 
algebra angred me, 
opera sickened me, 
charlie chaplin was a
fake
and flowers were for
pansies. 

peace and happiness to me
were signs of
inferiority, 
tenants of the weak
and
addled
mind. 

but as I went on with
my alley fights, 
my suicidal years, 
my passage through
any number of
women-it gradually
began to occur to
me
that I wasn’t different 

from the
others, I was the same, 

they were all fulsome
with hatred, 
glossed over with petty
grievances, 
the men I fought in
alleys had hearts of stone. 
everybody was nudging, 
inching, cheating for
some insignificant
advantage, 
the lie was the
weapon and the
plot was
empty, 
darkness was the
dictator. 

cautiously, I allowed
myself to feel good
at times. 
I found moments of
peace in cheap
rooms
just staring at the
knobs of some
dresser
or listening to the
rain in the
dark. 
the less I needed
the better I
felt. 

maybe the other life had worn me
down. 
I no longer found
glamour
in topping somebody
in conversation. 
or in mounting the
body of some poor
drunken female
whose life had
slipped away into
sorrow. 

I could never accept
life as it was, 
i could never gobble
down all its
poisons
but there were parts, 
tenuous magic parts
open for the
asking. 

I re formulated
I don’t know when, 
date, time, all
that
but the change
occurred. 
something in me
relaxed, smoothed
out. 
i no longer had to
prove that I was a
man, 

I didn’t have to prove
anything. 

I began to see things: 
coffee cups lined up
behind a counter in a
cafe. 
or a dog walking along
a sidewalk. 
or the way the mouse
on my dresser top
stopped there
with its body, 
its ears, 
its nose, 
it was fixed, 
a bit of life
caught within itself
and its eyes looked
at me
and they were
beautiful. 
then- it was
gone. 

I began to feel good, 
I began to feel good
in the worst situations
and there were plenty
of those. 
like say, the boss
behind his desk, 
he is going to have
to fire me. 

I’ve missed too many
days. 
he is dressed in a
suit, necktie, glasses, 
he says, ‘I am going
to have to let you go’ 

‘it’s all right’ I tell
him. 

He must do what he
must do, he has a
wife, a house, children, 
expenses, most probably
a girlfriend. 

I am sorry for him
he is caught. 

I walk onto the blazing
sunshine. 
the whole day is
mine
temporarily, 
anyhow. 

(the whole world is at the
throat of the world, 
everybody feels angry, 
short-changed, cheated, 
everybody is despondent, 
disillusioned) 

I welcomed shots of
peace, tattered shards of
happiness. 

I embraced that stuff
like the hottest number, 
like high heels, breasts, 
singing,the
works. 

(don’t get me wrong, 
there is such a thing as cockeyed optimism
that overlooks all
basic problems just for
the sake of
itself- 
this is a shield and a
sickness.) 

The knife got near my
throat again, 
I almost turned on the
gas
again
but when the good
moments arrived
again
I didn’t fight them off
like an alley
adversary. 
I let them take me, 
I luxuriated in them, 
I made them welcome
home. 
I even looked into
the mirror
once having thought
myself to be
ugly, 
I now liked what
I saw, almost
handsome, yes, 
a bit ripped and
ragged, 
scares, lumps, 
odd turns, 
but all in all, 
not too bad, 
almost handsome, 
better at least than
some of those movie
star faces
like the cheeks of
a baby’s
butt. 

and finally I discovered
real feelings of
others, 
unheralded, 
like lately, 
like this morning, 
as I was leaving, 
for the track, 
i saw my wife in bed, 
just the
shape of
her head there
(not forgetting
centuries of the living
and the dead and
the dying, 
the pyramids, 
Mozart dead
but his music still
there in the
room, weeds growing, 
the earth turning, 
the tote board waiting for
me) 
I saw the shape of my
wife’s head, 
she so still, 
I ached for her life, 
just being there
under the
covers. 

I kissed her in the
forehead, 
got down the stairway, 
got outside, 
got into my marvelous
car, 
fixed the seatbelt, 
backed out the
drive. 
feeling warm to
the fingertips, 
down to my
foot on the gas
pedal, 
I entered the world
once
more, 
drove down the
hill
past the houses
full and empty
of
people, 
I saw the mailman, 
honked, 
he waved
back
at me.

Source

“Let it Enfold You” is from Betting on the Muse, pg 378:

 

Betting on the Muse

By Charles Bukowski

 

Collected Musings, 8/25/18

I was inspired by Ruth Malan’s traces to gather my musings together in a single place and to share them regularly. Essentially, this is a public combination of my commonplace book and my journal. I intend for this to be mostly stream-of-consciousness, so my thoughts may be potentially disjointed. You have been warned.


Wisdom seems to be coming to grips with paradoxes. There also seems to be the ability to safely operating within the paradoxes without the feeling of “this isn’t logical!” or “this makes no sense!”. Such a definition of Wisdom confirms to me that our ability to perceive is limited – otherwise we might be able to more readily see and identify these “paradoxes”.


I watched an interview with Chamath Palihapitiya, CEO of Social Capital and a former exec at Facebook. The whole interview is worth watching. Rich capitalists are very rarely this forthcoming. Here are notes I jotted down:

  • Internet businesses are the primary target for the “fail fast” mindset, because they are trying to exploit the psychology of large populations. Failing fast is about exploiting a lot of people – if it doesn’t work you want to learn ASAP so you can adjust.
  • Moderate growth and moderate compounding is the goal for long-term businesses and long-term progress
  • Slow and steady when working hard problems
  • Turn off your social apps and give your brain a break.
    • Social media = short term thinking
    • You don’t want to be motivated by what everyone else is saying/thinking.
    • Acknowledge that the things you spend hours a day doing are rewiring your psychology and physiology. You now have to take that same brain and use it to be successful in the world. If your brain is wired toward short-term thinking and dopamine hits from social media, you’ve made your job much harder.
  • Proactively try to wire your brain chemistry to be long-term focused

It seems to me that it’s quite impossible to use social media and attention-based electronic device (phones, television, games – all reward us with dopamine) without becoming addicted and pulled into a state of distraction. At least, in the default state of their use.

Effects can be mitigated by reducing the systems which feed us dopamine hits: disable notifications, remove email & web browsers, block internet access, limit when and how you check, etc. But these strategies don’t eliminate the distraction or addiction mechanisms. We are always fighting against them.

My phone doesn’t have an email app or a web browser. I block email and social media access on my computer before 12pm. Social media is only available for a short 1-2 hour window, and then it’s off again. Even then, I feel so distracted and impulsive after checking it just once! I’ve also started using Tweetdeck, since I can filter out specific topics, hide all notifications except for direct comments, and avoid seeing what people “like”. Most of my social media posts are scheduled through third-party websites.

One goal I would like to work on: keeping my phone in airplane mode most of the time. I get so many spam calls, and why do people need instant access to me? The interruptions and the frustration from receiving spam calls all day also impacts my thought process.


I watched a Jordan Peterson lecture clip which ties into these thoughts on habit building: Don’t practice what you don’t want to be. Here are my notes:

  • Advice: do not practice things you do not want to become
  • Your brain makes it (whatever you practice) a part of your physical brain structure
  • As you practice the task and routinize it – the activation is easier.
    • You build a little machine – a habit – and it’s really there in your brain
  • If you want to change it, you can’t undo it – it’s there permanently
    • You have to build a machine that shuts it off, and then another machine to replace it
    • When you get stressed the old machine comes back!

Character is “how you build yourself across time”. It really matters. Only practice what you want to become.

I’ve also been listening to Jordan Peterson’s biblical lectures, which are quite fascinating. I just finished with the Cain and Abel lecture, a story I’ve found myself thinking about quite deeply since I finished reading East of Eden (a book that may have saved my life, in a few ways). Peterson talks quite a bit about the idea of the Sacrifice, and its importance in human affairs. After watching this lecture, I’ll be trying out a new morning reflection/journaling prompt:

Every morning, ask: what sacrifice do I have to make to make things better? Not just for me, but also for my family, friends, clients, the world.

Another way to put it:

What thing could I let go of that’s impeding my progress?


Back to programming our brains. We can help keep ourselves on track by intentionally creating momentum in our lives. Rather than create big goals, we can create a series of small goals reached continuously. We benefit from boosts in morale by regularly achieving our small goals. We also get to see much more frequent indications of progress than when we target giant goals.

Tiny Habits is a great (and free) 5-day email course which uses the idea of small goals and continual momentum for building habits.

I’ve used the Tiny Habits method to program many new habits. Today I’ve started intentionally crafting them again. Here are the three I’m currently working on:

  • After I sit down I will reset my shoulders
  • After I flush the toilet, I will do 3 squats
  • Every time my computer prompts me to take a break, I will take three deep breaths

I spent my morning creating a set of Oblique Strategy cards. Oblique Strategies are a creation of Brian Eno and Peter Schmidt, and are meant as a tool to get “unstuck” when working on a creative problem. I view it as almost an oracular method (à la the I Ching, which I consult to get unstuck in my life). The goal is to get unstuck by taking a different approach or viewing our problem from a different perspective.

I used two retired playing card decks to create my Oblique Strategies deck. The strategy list I consulted had more strategies than cards, so I doubled up some related or paradoxical items. You can also consult the Oblique Strategy Oracle online, if you don’t want to go through the work of making your own deck.

After creating the cards, I’m pondering their potential use in meetings with my clients. If they can help me get unstuck by creating a totally new view of the problem, can they also work with clients? The answer is “yes” – but I need to figure out how to deliver that message. “Oh, luckily I carry an oracle in my pocket that we can consult.”

It’s funny that we create and rely on such devices. As I write the cards out, I can picture my self interpreting them in different ways depending on the situation. We think we are rational creatures, but how wrong we are – we are ruled by the irrational. By latching onto irrationality, we can do amazing things. The irrational self is our source of creativity and new ideas.


I’ve been cleaning up some long-standing Evernote notes. These are some quotes that stood out to me.

Goldmund Unleashed (@GoldmundUnleash):

An effective artist is one who studies his own life, records experiences, and finds a medium to share so other lives can be enriched. You can do this at any age.

I’m trying to apply Goldmund’s advice via this ‘Collected Musings’ concept. This brings up another quote from Kapil Gupta:

Then what should you do with your life:
See. Create. Then see. Then create. The seeing is for Understanding. The creating is for immersion.

Confucius:

Everything flows on and on like this river, without pause, day and night.

A recent quotes from Kapil Gupta:

No human being can affect another
The one who is affected affects himself
(But exquisitely rare is the individual who is Truly interested in no longer affecting himself)

A quote from Zen Keys, by Thich Nhat Hanh, attributed to Buddha:

The self of which you speak, great self or small self, is only a concept that does not correspond to any reality.

Timeless Laws of Software Development

This article was originally posted on Embedded Artistry.


I am always seeking the wisdom and insights of those who have spent decades working in software development. The experiences of those who came before us is a rich source of wisdom, information, and techniques.

Only a few problems in our field are truly new. Most of the solutions we seek have been written about time-and-time-again over the past 50 years. Rather than continually seeking new technology as the panacea to our problems, we should focus ourselves on applying the tried and tested basic principles of our field.

Given my point of view, it’s no surprise that I was immediately drawn to a book titled Timeless Laws of Software Development.

The author, Jerry Fitzpatrick, is a software instructor and consultant who has worked in a variety of industries: biomedical, fitness, oil and gas, telecommunications, and manufacturing. Even more impressive for someone writing about the Timeless Laws of Software Development, Jerry was originally an electrical engineer. He worked with Bob Martin and James Grenning at Teradyne, where he developed the hardware for Teradyne’s early voice response system.

Jerry has spent his career dealing with the same problems we are currently dealing with. It would be criminal not to steal and apply his hard-earned knowledge.

I recommend this invaluable book equally to developers, team leads, architects, and project managers.

Table of Contents:

  1. Structure of the Book
  2. The Timeless Laws
  3. What I Learned
  4. Selected Quotes
  5. Buy the Book

Structure of the Book

The book is short, weighing in at a total of 180 pages, including the appendices, glossary, and index. Do not be fooled by its small stature, for there is much wisdom packed into these pages.

Jerry opens with an introductory chapter and dedicates an entire chapter to each of his six Timeless Laws (discussed below). Each law is broken down into sub-axioms, paired with examples, and annotated with quotes and primary sources.

Aside from the always-useful glossary and index, Jerry ends the book with three appendices, each valuable in its own right:

  • “About Software Metrics”, which covers metrics including lines of code, cyclomatic complexity, software size, and Jerry’s own “ABC” metric
  • “Exploring Old Problems”, which covers symptoms of the software crisis, the cost to develop software, project factors and struggles, software maintenance costs, superhuman developers, and software renovation.
  • “Redesigning a Procedure”, where Jerry walks readers through a real-life refactoring exercise

“Exploring Old Problems” was an exemplary chapter. I highly recommended it to project managers and team leads.

My only real critique of the book is that the information is not partitioned in a way that makes it easily accessible to different roles – project managers may miss valuable lessons while glossing over programming details. Don’t give in to the temptation to skip: each chapter has valuable advice no matter your role.

The Timeless Laws

Jerry proposes six Timeless Laws of software development:

  1. Plan before implementing
  2. Keep the program small
  3. Write clearly
  4. Prevent bugs
  5. Make the program robust
  6. Prevent excess coupling

At first glance, these six laws are so broadly stated that the natural reaction is, “Duh”. Where the book shines is in the breakdown of these laws into sub-axioms and methods for achieving the intent of the law.

Breakdown of the Timeless Laws

  1. Plan before implementing
    1. Understand the requirements
    2. Reconcile conflicting requirements
    3. Check the feasibility of key requirements
    4. Convert assumptions to requirements
    5. Create a development plan
  2. Keep the program small
    1. Limit project features
    2. Avoid complicated designs
    3. Avoid needless concurrency
    4. Avoid repetition
    5. Avoid unnecessary code
    6. Minimize error logging
    7. Buy, don’t build
    8. Strive for Reuse
  3. Write clearly
    1. Use names that denote purpose
    2. Use clear expressions
    3. Improve readability using whitespace
    4. Use suitable comments
    5. Use symmetry
    6. Postpone optimization
    7. Improve what you have written
  4. Prevent bugs
    1. Pace yourself
    2. Don’t tolerate build warnings
    3. Manage Program Inputs
    4. Avoid using primitive types for physical quantities
    5. Reduce conditional logic
    6. Validity checks
    7. Context and polymorphism
    8. Compare floating point values correctly
  5. Make the program robust
    1. Don’t let bugs accumulate
    2. Use assertions to expose bugs
    3. Design by contract
    4. Simplify exception handling
    5. Use automated testing
    6. Invite improvements
  6. Prevent excess coupling
    1. Discussion of coupling
    2. Flexibility
    3. Decoupling
    4. Abstractions (functional, data, OO)
    5. Use black boxes
    6. Prefer cohesive abstractions
    7. Minimize scope
    8. Create barriers to coupling
    9. Use atomic initialization
    10. Prefer immutable instances

What I Learned

I’ve regularly referred to this book over the past year. My hard-copy is dog-eared and many pages are covered in notes, circles, and arrows.

I’ve incorporated many aspects of the book into my development process. I’ve created checklists that I use for design reviews and code reviews, helping to ensure that I catch problems as early as possible. I’ve created additional documentation for my projects, as well as templates to facilitate ease of reuse.

Even experienced developers and teams can benefit from a review of this book. Some of the concepts may be familiar to you, but we all benefit from a refresher. There is also the chance that you will find one valuable gem to improve your practice, and isn’t that worth the small price of a book?

The odds are high that you’ll find more than one knowledge gem while reading Timeless Laws.

Here are some of the lessons I took away from the book:

  1. Create a development plan
  2. Avoid the “what if” game
  3. Logging is harmful
  4. Defensive programming is harmful
  5. Utilize symmetry in interface design

Create a Development Plan

We are all familiar with the lack of documentation for software projects. I’m repeatedly stunned by teams which provide no written guidance or setup instructions for new members. Jerry points out the importance of maintaining documentation:

Documentation is the only way to transfer knowledge without describing things in person.

One such method that I pulled from the book is the idea of the “Development Plan”. The plan serves as a guide for developers working on the project. The plan describes the development tools, project, goals, and priorities.

As with all documentation, start simple and grow the development plan as new information becomes available or required. Rather than having a large document, it’s easy to break the it up into smaller, standalone files. Having separate documents will help developers easily find the information they need. The development plan should be kept within the repository so developers can easily find and update it.

Topics to cover in your development plan include:

  • List of development priorities
  • Code organization
  • How to set up the development environment
  • Minimum requirements for hardware, OS, compute power, etc.
  • Glossary of project terms
  • Uniform strategy for bug prevention, detection, and repair
  • Uniform strategy for program robustness
  • Coding style guidelines (if applicable)
  • Programming languages to be used, and where they are used
  • Tools to be used for source control, builds, integration, testing, and deployment
  • High-level organization: projects, components, file locations, and naming conventions
  • High-level logical architecture: major sub-systems and frameworks

Development plans are most useful for new team members, since they can refer to the document and become productive without taking much time from other developers. However, your entire team will benefit from having a uniform set of guidelines that can be easily located and referenced.

Avoid the “What If” Game

Many of us, myself included, are guilty of participating in the “what if” game. The “what if” game is prevalent among developers, especially when new ideas are proposed. The easiest way to shoot a hole in a new idea is to ask a “what if” question: “This architecture looks ok, but what if we need to support 100,000,000 connections at once?”

The “what if” game is adversarial and can occur because:

  • Humans have a natural resistance to change
  • Some people enjoy showing off their knowledge
  • Some people enjoy being adversarial
  • The dissenter dislikes the person who proposed the idea
  • The dissenter does not want to take on additional work

“What if” questions are difficult to refute, as they are often irrational. We should always account for realistic possibilities, but objections should be considered only if the person can explain why the proposal is disruptive now or is going to be disruptive in the future.

Aside from keeping conversations focused on realistic possibilities, we can mitigate the ability to ask “what if” with clear and well-defined requirements.

Logging is Harmful

I have been a long-time proponent of error logging, and I’ve written many embedded logging libraries over the past decade.

While I initially was skeptical of Fitzpatrick’s attitude toward error logging, I started paying closer attention to the log files I was working with as well as the use of logging in my own code. I noticed the points that Jerry highlighted: my code was cluttered, logs were increasingly useless, and it was always a struggle to remove outdated logging statements.

You can read more about my thoughts on error logging in my article: The Dark Side of Error Logging.

Defensive Programming is Harmful

Somewhere along the way in my career, the idea of defensive programming was drilled into me. Many of my old libraries and programs are layered with unnecessary conditional statements and error-code returns. These checks contribute to code bloat, since they are often repeated at multiple levels in the stack.

Jerry points out that in conventional product design, designs are based on working parts, not defective ones. As such, designing our software systems based on the assumption that all modules are potentially defective leads us down the path of over-engineering.

Trust lies at the heart of defensive programming. If no module can be trusted, then defensive programming is imperative. If all modules can be trusted, then defensive programming is irrelevant.

Like conventional products, software should be based on working parts, not defective ones. Modules should be presumed to work until proven otherwise. This is not to say that we don’t do any form of checking: inputs from outside of the program need to be validated.

Assertions and contracts should be used to enforce preconditions and postconditions. Creating hard failure points helps us to catch bugs as quickly as possible. Modules inside of the system should be trusted to do their job and to enforce their own requirements.

Since I’ve transitioned toward the design-by-contract style, my code is much smaller and easier to read.

Utilize Symmetry in Interface Design

Using symmetry in interface design is one of those points that seemed obvious on the surface. Upon further inspection, I found I regularly violated symmetry rules in my interfaces.

Symmetry helps us to manage the complexity of our programs and reduce the amount of knowledge we need to keep in mind at once. Since we have existing associations with naming pairs, we can easily predict function names without needing to look them up.

Universal naming pairs should be used in public interfaces whenever possible:

  • on/off
  • start/stop
  • enable/disable
  • up/down
  • left/right
  • get/set
  • empty/full
  • push/pop
  • create/destroy

Our APIs should also be written in a consistent manner:

  • Motor::Start() / Motor::Stop()
  • motor_start() / motor_stop()
  • StartMotor() / StopMotor()

Avoid creating (and fix!) inconsistent APIs:

  • Motor::Start() / Motor::disable()
  • startMotor / stop_motor
  • start_motor / Stop_motor

Naming symmetry may be obvious, but where I am most guilty is in parameter order symmetry. Our procedures should utilize the same parameter ordering rules whenever possible.

For example, consider the C standard library functions defined in string.h. In all but one procedure (strlen), the first parameter is the destination string, and the second parameter is the source string. The parameter order also matches the normal assignment order semantics (dest = src).

The standard library isn’t the holy grail of symmetry, however. The stdio.h header showcases some bad symmetry by changing the location of the FILE pointer:

int fprintf ( FILE * stream, const char * format, ... );
int fscanf ( FILE * stream, const char * format, ... );

// Better design: FILE is first!
int fputs ( const char * str, FILE * stream );
char * fgets ( char * str, int num, FILE * stream );

Keeping symmetry in mind will improve the interfaces we create.

Selected Quotes

I pulled hundreds of quotes from this book, and you will be seeing many of them pop up on our Twitter Feed over the next year. A small selection of my highlights are included below.

Any quotes without attribution come directly from Jerry.

Intentionally hiding a bug is the greatest sin a developer can commit.

Failure is de rigueur in our industry. Odds are, you’re working on a project that will fail right now.
— Jeff Atwood, How to Stop Sucking and Be Awesome

Writing specs is like flossing: everybody agrees that it’s a good thing, but nobody does.
— Joel Spolsky

Documentation is the only way to transfer knowledge without describing things in person.

Robustness must be a goal and up front priority.

Disorder is the natural state of all things. Software tends to get larger and more complicated unless the developers push back and make it smaller and simpler. If the developers don’t push back, the battle against growth is lost by default.

YAGNI (You ain’t gonna need it):
Always implement things when you actually need them, never when you just foresee that you need them. The best way to implement code quickly is to implement less of it. The best way to have fewer bugs is to implement less code.

— Ron Jeffries

Most developers write code that reflects their immediate thoughts, but never return to make it smaller or clearer.

The answer is to clear our heads of clutter. Clear thinking becomes clear writing; one can’t exist without the other.
— William Zinsser

Plan for tomorrow but implement only for today.

Code that expresses its purpose clearly – without surprises – is easier to understand and less likely to contain bugs.

Most developers realize that excess coupling is harmful but they don’t resist it aggressively enough. Believe me: if you don’t manage coupling, coupling will manage you.

Few people realize how badly they write.
— William Zinsser

To help prevent bugs, concurrency should only be used when needed. When it is needed, the design and implementation should be handled carefully.

Sometimes problems are poorly understood until a solution is implemented and found lacking. For this reason, it’s often best to implement a basic solution before attempting a more complete and complicated one. Adequate solution are usually less costly than optimal ones.

I’ve worked with many developers who didn’t seem to grasp the incredible speed at which program instructions execute. They worried about things that would have a tiny effect on performance or efficiency. They should have been worried about bug prevention and better-written code.

Most sponsors would rather have a stable program delivered on-time than a slightly faster and more efficient program delivered late.

It’s better to implement features directly and clearly, then optimize any that affect users negatively.

Efficiency and performance are only problems if the requirements haven’t been met. Optimization usually reduces source code clarity, so it isn’t justified for small gains in efficiency or performance. Our first priorities should be correctness, clarity, and modest flexibility.

Implementation is necessarily incremental, but a good architecture is usually holistic. It requires a thorough understanding of all requirements.

Buy the Book

If you are interested in purchasing Timeless Laws of Software Development, you can support the website by using our Amazon affiliate link:

 

 

A Poem on Transformation: Ode to the Drum

Gazelle, I killed you  
for your skin's exquisite  
touch, for how easy it is  
to be nailed to a board  
weathered raw as white  
butcher paper. Last night  
I heard my daughter praying  
for the meat here at my feet.  
You know it wasn't anger  
that made me stop my heart  
till the hammer fell. Weeks  
ago, I broke you as a woman  
once shattered me into a song  
beneath her weight, before  
you slouched into that  
grassy hush. But now  
I'm tightening lashes,  
shaping hide as if around  
a ribcage, stretched  
like five bowstrings.  
Ghosts cannot slip back  
inside the body's drum.  
You've been seasoned  
by wind, dusk & sunlight.  
Pressure can make everything  
whole again, brass nails  
tacked into the ebony wood  
your face has been carved  
five times. I have to drive  
trouble from the valley.  
Trouble in the hills.  
Trouble on the river  
too. There's no kola nut,  
palm wine, fish, salt,  
or calabash. Kadoom.  
Kadoom. Kadoom. Ka-  
doooom. Kadoom. Now  
I have beaten a song back into you,  
rise & walk away like a panther.

by Yusef Komunyakaa

Hear Yusef Read His Poem

Source

“Ode to the Drum” can be found in Thieves of Paradise.

Deep Nutrition

Author: Catherine Shanahan
Rating: 10/10
Last Read: July 2018

Deep Nutrition is a book which explains the negative effects that our modern diets are having on our bodies. Dr. Shanahan provides background and reasoning for the traditional “human diet”, which is as close as we can get to the way our great-great-great grandparents ate. She explains why the traditional diet is essential and walks through the damage that vegetable oils and sugars are causing. She also discusses the modern diet’s impact on fetal/childhood development and modern diseases.

Much of the book is dedicated to the link between our nutrition and our health, as well as making the argument that the modern diet of highly processed foods is harming us and destroying our genetic momentum. The book also contains recipes, meal planning guides, and a FAQ section to help you transition as easily as possible.

We completely changed our eating habits as a result of reading Deep Nutrition, and we have never felt better. We’ve replaced all of our cooking oils and condiments, reduced our carb intake to < 50g on most days, started fermenting food, improved the quality of our food purchases, and started eating in a more nose-to-tail style. We’ve also found ourselves less interested in eating out at restaurants, especially since most of them use cheap and highly processed cooking oils (canola, cottonseed, soy, corn, safflower, etc.).

I can’t deny it. We are believers.

My Highlights

I am still working on processing our book highlights. We thought this book was so important that we needed to share our recommendation right away.

Buy the Book

If you are interested in purchasing this book, you can support the website by using our Amazon affiliate link.