Movers Mindset Three Words

This essay is also presented as episode Craig Constantine: Discovery, reflection, and efficacy of the Movers Mindset podcast.

In each of the Movers Mindset podcast episodes, I ask guests to pick three words to describe their practice. Each guest’s choice has turned out to be a much more interesting and intriguing part of the conversation than we had initially anticipated.

The word practice goes beyond movement and often evokes broader images and ideas that reflect an approach to life. The idea that parkour and movement techniques in general are more than just physical has always been behind Movers Mindset. This is why I focus on ideas and reflection, for example, rather than on flashy videos of daring movement. The deeper dive into the mindset of movers is where the real magic happens.

(more…)

Content-encoding gzip, plus HTTP range requests, equals bad mojo

This is going to be long. You’ve been warned.

Act 1: Wherein our hero is oblivious to the trouble

Years ago, early in the life of my podcast, someone waved their phone at me and said, “sometimes the podcast playback jumps back to the beginning, and then I cannot skip or scrub forward to resume where I was.” I shrugged. What’s one problem report for Google Podcasts on Android, particularly since this was early days for Google’s Podcasts app.

Curious.

Aside: “scrub” is audio lingo for manually sliding through audio. On apps, there is usually a small grab-here marker at the current play position. If you touch that and slide, the audio will scrub along until the time where you let go. (Versus “skip” buttons which jump forward or backward a set amount of time.)

I have a vague memory of some later time, where some automated analysis of our podcast feed reported that we “don’t support range requests.” I initially ignored this, but made a note. One day—months later—I looked up what an [HTTP] range request is, and verified that our web site does in fact support range requests.

Curioser.

A week ago, I got another problem report. From an Android user with the Google Podcast app. First off, it’s no longer early days for that app, so I’m less inclined to just “blame the app” when someone speaks up. Second, the callout was more thorough. This person had tried several different of our episodes, (all of which exhibited the problem,) and they had verified that some other podcasts they subscribe to did not exhibit this problem.

“Curioser and curioser,” said Alice.

Our podcast is self-hosted. We run a virtual instance of CentOS on BlueHost, with Apache and WordPress, with the Seriously Simple Podcasting (SSP) plugin producing our podcast RSS feed. Seriously, none of that is simple. But it does mean that we have a tremendous amount of control—if we want to look under the hood. (Stop here. Take 4 minutes to watch that if you’ve never seen Mike’s New Car.)

Act 2: Wherein our hero heads into the belly of the beast

I asked the person who waved their problem at me years ago, “hey, uh, do you still see that problem?” (Yes they do.) …and I reached out to James Cridland at podnews.net and he verified that he too sees this behavior with my podcast files. …and he pointed out that he was seeing, (it’s not clear exactly what tool he used—but it doesn’t matter for this story,) content-type: gzip for the media file that we were serving.

Wait, wat.

Why am I serving a compressed (i.e., gzip’d) version of an MP3 file? That’s already a file containing compressed data; It probably increases in size when you gzip it. Not to mention the CPU cycles wasted gzip’ing the many-megabyte sized files for each reqeust.

Next the voice in the back of my head started pointing out that HTTP range requests—where the web client (in this story a podcast player app) can ask for a specific range of bytes from a resource—sure feels like the sort of thing that might be related to pulling down some of a file now, and then more of the file later after you’ve listened to it for half an hour. Maybe if we didn’t support range requests that would mess up skipping and scrubbing? But wait, no, I checked two years ago, (and I just rechecked,) that we support range requests. So what the heck?! Is the problem related to compression, to range requests, the combination, or something else?

Spock mode on. Start checking everything methodically. When you’ve eliminated all other possibilities, whatever remains, must be the case.

What if we don’t actually support range requests on our media files? So I started digging into how Seriously Simple Podcasting (SSP) handles the actual feeding out of files.

Aside: I know enough about Apache and PHP to know that just because Apache supports range requests on files (“here’s 100 bytes from that MP3 you asked for…”) doesn’t mean that a PHP program would necessarily be able to answer a range request. Spoiler: It’s very hard to support a range request programmatically in PHP. So I need to know what exactly—Apache or SSP, which is just a pile of PHP code—actually feeds the media file?

So I posted on the SSP support forum…

I’m trying to troubleshoot a problem reported with the Google Podcasts player on Android. (I’ve one reporting user and I cannot personally reproduce the problem.) In the process, I went down a rabbit hole looking into HTTP range requests.

I’m wondering: If the the SSP plugin is serving the MP3 audio files via PHP (which would require the PHP code to implement supporting range requests) or if, after a redirection from the stats-collection URL, it let’s my web server (Apache) just send out the static file (in which case Apache itself handles range requests.)

One of the devs responded:

Do you perhaps have a URL describing HTTP range requests and how they relate to serving files behind the PHP redirect, so that I can understand how it could be causing the problem? From the cursory review I’ve done, it would appear we should update the plugin to support range requests, would you agree?

Which startled me both because range requests are apparently more obscure than I was thinking they are, and that this was a very nice olive branch from a developer right out of the gate. Anyway. I was already really doubting that SSP was causing this problem, so I put on my big-boy detective pants and dug deeper.

Leading me to post:

…I think it’s not actually a problem [with SSP], but I wanted to double-check my analysis with someone familiar with the code.

For range requests, it’s RFC7233 — but before you even bother looking at that. I think the answer is that SSP doesn’t handle the serving of the audio file via PHP, but rather leaves that to the underlying web server. (In my case, that’s Apache, which handles range requests of static assets.)

Straight from my RSS feed, I have (for example) <enclosure url="https://moversmindset.com/podcast-download/4734/062-chris-and-shirley-darlington-rowat-serendipity-family-and-relationships.mp3" length="29493071" type="audio/mpeg"></enclosure> and if I fetch that URL, I get SSP doing a redirection. Here I’m asking Curl to get me a range of bytes:

Craigs-iMac:~ craig$ curl -I --range 500-600 https://moversmindset.com/podcast-download/4734/062-chris-and-shirley-darlington-rowat-serendipity-family-and-relationships.mp3
HTTP/1.1 302 Found
Date: Fri, 11 Oct 2019 14:55:48 GMT
Server: Apache
Pragma: no-cache
Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Robots: none
X-Redirect-By: WordPress
Set-Cookie: PHPSESSID=6576b49ab4d78ab7628bb05a727805dd; path=/
Location: https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3
Content-Type: text/html; charset=UTF-8

Aside: -I with curl says just give me the headers for a response for the requested resource. Not the actual resource. The 302 HTTP status, combined with the Location: header is standard web-speak for a web server saying, “please go get this resource instead.” Critically this is a 302 which is a “temporary” redirect, not a 301 which is a “permanent” redirect. With 302, if you want this resource again or more of it with another range request, you should ask for it again at the original URL. Versus with a 301, where you should not ask again, you should use the new location going forward with any subsequent requests. tl;dr: 302 + Location is what I expected to see.

…that curl request gives me a standard redirection. As expected(!) since SSP wants to track statistics. That new 302 location is a direct-link into the WP assets storage. When I curl that, making a range request again, it works perfectly. (Apache is happy to give me the 101 bytes I’m asking for.) Below is both the headers-only (-I in Curl) and a full fetch….

Craigs-iMac:~ craig$ curl -I --range 500-600 https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3
HTTP/1.1 206 Partial Content
Date: Fri, 11 Oct 2019 14:58:33 GMT
Server: Apache
Last-Modified: Sun, 06 Oct 2019 14:51:01 GMT
Accept-Ranges: bytes
Content-Length: 101
Vary: Accept-Encoding
Content-Range: bytes 500-600/29493071
Content-Type: audio/mpeg
Craigs-iMac:~ craig$ curl --range 500-600 https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3 > ./foo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   101  100   101    0     0    389      0 --:--:-- --:--:-- --:--:--   388
Craigs-iMac:~ craig$ ls -alh ./foo
-rw-r--r--  1 craig  staff   101B Oct 11 10:58 ./foo

Aside: First a bunch of headers saying that I would receive [if I actually asked] 101 bytes of content-length, and then an actual request where I end up with 101 bytes in a file on my computer. tl;dr: everything as expected.

So I think the answer is that SSP doesn’t interfere with HTTP range requests. And that means the problem I’m trying to solve can’t be caused by my site not correctly answering range requests.

At this point, I folded my arms with one of those “hurumph” noises. Then I thought of something: Ya’ know, since it’s Apache that is going to feed me that MP3 file, it would totally be able to change its behavior based on what the web client, (aka, the podcast player app, Google Podcasts,) said it would accept as a response.

Aside: The Web is a conversation between web clients and web servers. Every request—and there can be hundreds of requests to show you one page—starts with the client asking for a resource and listing the types of responses it will accept. Think: am I wanting an image resource, an audio file, a blob of HTML, etc. Also, what types of encoding of those resources can the client understand. tl;dr: No more tl;dr’s here. We’re in the belly of the beast now.

So how do I tell curl to manipulate the encodings it should tell the server it would accept. Answer: By adding a header via the -H flag.

So reviewing: Here’s a normal ask for the headers for a specific media file. This isn’t a range request, this is just an ask for the headers for an entire resource:

Craigs-iMac:~ craig$  curl -I https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3
HTTP/1.1 200 OK
Date: Thu, 17 Oct 2019 13:09:27 GMT
Server: Apache
Last-Modified: Sun, 06 Oct 2019 14:51:01 GMT
ETag: "220031-1c2074f-5943f1052a358"
Accept-Ranges: bytes
Content-Length: 29493071
Vary: Accept-Encoding
Content-Type: audio/mpeg

That’s exactly what I expect: If I actually asked for the resource, I’d get about 30 megabytes of content back.

And what would happen if I tell curl (note the -H argument on this one) to tell the server that I’d be happy with a gzip’d response:

Craigs-iMac:~ craig$ curl -H "Accept-Encoding: gzip" -I https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3
HTTP/1.1 200 OK
Date: Thu, 17 Oct 2019 13:11:03 GMT
Server: Apache
Last-Modified: Sun, 06 Oct 2019 14:51:01 GMT
ETag: "220031-1c2074f-5943f1052a358-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: audio/mpeg

Oh shit. It would send me a gzip encoded version of my MP3 file. And critically, it doesn’t tell me how big that would be—no Content-length is given—because the server would have to actually compress it with gzip to see how big it would actually be.

Aside: If you know about Apache’s ability to serve out pre-compressed versions of files—so you have the .mp3 and the .mp3.gz files laying on disk ready to go—if you know about that, then you don’t need to read any of this article. I was tempted to set that up just to have Content-length and the gzip encoding header in the shot because you would have noticed. ;)

So IF the client . . . say for example, oh, I don’t know, the Google Podcasts app maybe? . . . happens to mention that it could accept a gzip’d response, then boy-howdy a gzip’d response our Apache would send.

…and that’s a problem why? Because it turns out that you cannot combine compression (any sort, not just gzip) content encoding with range requests. The long version is this Stack Overflow thread, Is it possible to send HTTP response using GZIP and byte ranges at the same time? The short answer is, no, because even if I wanted to waste my time compressing it just to give you 100 bytes out of the middle, it’s not possible for you to then uncompress those 100 bytes. All modern compression algorithms work on streams of data—you have to start decompressing from the first byte.

Aside: The next version of HTTP addresses this because it turns out that being able to have range requests on resources compressed in flight would be very useful.

Ok smart guy, what happens if you try to make a range request and accept compression?

Craigs-iMac:~ craig$ curl --range 500-600 -H "Accept-Encoding: gzip" -I https://moversmindset.com/wp-content/uploads/2019/10/MM_62_Chris_and_Shirley.mp3
HTTP/1.1 206 Partial Content
Date: Sat, 19 Oct 2019 01:58:16 GMT
Server: Apache
Last-Modified: Sun, 06 Oct 2019 14:51:01 GMT
ETag: "220031-1c2074f-5943f1052a358"
Accept-Ranges: bytes
Content-Length: 101
Content-Range: bytes 500-600/29493071
Content-Type: audio/mpeg

Honestly? That’s not what I expected. I was expecting some sort of actual error from the server.

But nope, that’s a perfectly happy, 101 bytes—or it would be if hadn’t specified I just wanted the headers—out of the full 30 megabytes-or-so, and it wouldn’t be compressed. This confuses the hell out of me because it’s exactly what you’d want. The app asked for something we can’t do so we skip the compression part—the app said it would accept compression, not that it demands compression.

Oh, who cares. Compressing MP3 files—especially live on the fly each time they are served—is totally the wrong thing to be doing. Let’s just stop that and hope the problem goes away.

Aside: You thought the wizard behind the curtain always figures it out? I’ve got some bad news for you sunshine, Pink isn’t well, he stayed back at the hotel…

Act 3: Wherein our hero vanquishes the problem by typing four characters

Still in Spock mode, let’s describe the actual problem…

  1. There’s crazy-level complexity with compression and range requests
  2. It’s not clear what exactly the Google Podcast app is requesting—I don’t have any Android devices and I’d have to capture TCP data from the network to even find out
  3. So the app makes some sort of request…
  4. …and the server responds
  5. Making scrub and skip not work.

Oh, well that’s perfectly clear then, isn’t it?

Seriously, screw this. I’m just turning off compression of MIME type “audio/mpeg” files. (MP3 files are an example of MIME type “audio/mpeg”.)

Aside: Yes, I said MIME—the Multipart Internet Mail Extension specification is how we ended up classifying what something is on the web. Major type “audio”, minor type “mpeg”. I know, this stuff is bonkers… it’s just turtles all the way down.

Since Apache does not compress things by default, all I have to do is find where the “DEFLATE”—that’s really what it’s called, gzip is one way of “deflating” files—output filter is assigned to handle files of MIME type “audio/mpeg.” That’s actually easy to do if you are fluent in Apache.

I’m an Apache configuration file wizard. I’ve been using Apache since it was spun off from something else in—I had to look it up—1995. Trivia: It was “a patchy server” cobbled together from some open-source work done—never mind, go read it on Wikipedia. ANYWAY.

I read over the entire Apache configuration, it’s complicated in files that include other files with nesting and logic and lions and tigers and bears… but it’s all perfectly clear and straight-forward to me…

…and yet I can’t see why it would EVER decide to apply the DEFLATE output filter to an audio/mpeg file.

Strike one. Off with the kid gloves.

If I can’t figure out where it’s turned on and remove that, the next best thing to do is to just add a rule that turns if off. But when I went to do that, I found that whoever designed the system architecture had already stumbled upon this mess. (Compressing media files is wrong-headed.) They already had a rule, which confesses the sin of wacky configuration by saying, “yo! for these media files, knock it off with the DEFLATE output filter!”

SetEnvIfNoCase Request_URI .(?:gif|jpg|png|ico|zip|gz|mp4|flv)$ no-gzip

As soon as I saw this, I was like, “you’re kidding me, right?” That says if the thing being requested ends with a period followed by any of those file extensions, then set an environment flag telling the DEFLATE module not to gzip.

…and “mp3” is not listed.

So I cursed like a sailor, threw my hands up in the air, and added “mp3|” to that string right after “mp4|”, restarted Apache, checked with James, and the problem is fixed.

omfg where’s my Tylenol?

ɕ


Georgia Munroe: Goals, Ninja Warrior, and coaching

How does the relationship between creative hobbies, personal challenges, and coaching shape the practice and development of movement disciplines?

Georgia Munroe explains her interest in music and how that relates to her parkour practice, as well as how she became interested in parkour. She discusses the challenges and goals she is working on, before sharing her experiences with motion capture and Ninja Warrior. Georgia unpacks her thoughts on coaching, her personal journey of improving as a coach, and how coaching has affected her own parkour practice.

We always struggle with so much […] like when you first start, everything is fresh, everything is new. The only goal is to just turn up, and you get on with it. […] And now, when you start to find your footing, you start to see your character in your movement, you also see your insecurities, you also see the things that are harder than other things to do. You also see what your fears are, and facing your fears or seeing your fears, you want to overcome them. It’s scary, and you don’t want to, but you want to at the same time.

~ Georgia Munroe (17:32)

The conversation explores the interplay between creative hobbies, such as music and movement disciplines like parkour. Music provides Georgia with a natural sense of rhythm and timing, directly influencing how she approaches physical training and performance. This relationship highlights how artistic practices can cross-pollinate with athletic endeavors, enriching each in unexpected ways.

Another central theme is the transformative power of coaching and personal growth. Georgia reflects on the emotional challenges she faced, particularly her fear of failure, and how coaching others mirrors her own internal struggles. As she develops her coaching skills, she learns to manage self-doubt and anxiety, which ultimately enhances her ability to guide others. Her experiences competing in Ninja Warrior reveal how even high-stress environments can evolve from terrifying to enjoyable through mindset shifts and practice.

(more…)

Daily reminders

I learned then that even when I felt powerless to control my job or education — or anything else that seemed out of my hands — I always had control over my own mind and how I treated others. Even when I had nothing else, I could still be kind, just, generous, honest, loving and compassionate.

~ Susan Fowler

slip:4a1138.

I find that I’ve often committed myself to an unmanageable number of responsibilities. There are so many things I have the personal power to do, that I seem to be compelled to constantly deploy my power. Worse, I feel guilty if I’m not constantly applying my power towards some goal. I end up with a forest of goals and a feeling of being trapped. Shortly after feeling trapped, I find myself sinking into the pits of dispair on the shore of the lake of learned helplessness.

One habit I’ve built to try to keep myself entirely away from that lake is a collection of daily reminders. Ever the process maniac, I have them in my personal task management system in a rotation that brings one up each day. There are enough of them that even though they are in a fixed order I never know which is next. Each feels like a fresh reminder. They are collected from Ben Franklin, Leo Babauta and some other places I’ve neglected to keep track of.

They are:

  1. AM I AN ENERGY-GIVER OR -TAKER? — Strive to lift others up; to leave them feeling better than before the encounter. While being mindful of my own energy level, seek ways to create a zest for life in others.
  2. BECOME MINDFUL OF ATTACHMENTS THAT LEAD TO CLUTTER AND COMPLEXITY — For example, if you are attached to sentimental items, you won’t be able to let go of clutter. If you are attached to living a certain way, you will not be able to let go of a lot of stuff. If you are attached to doing a lot of activities and messaging everyone, your life will be complex.
  3. TEMPERANCE — Eat not to dullness; drink not to elevation.
  4. BE PROACTIVE — While the word proactivity is now fairly common in management literature, it is a word you won’t find in most dictionaries. It means more than meerly taking initiative. It means that as human beings, we are responsible for our own lives. Our behavior is a function of our decisions, not our conditions. We can subordinate feelings to values. We have the initiative and the responsibility to make things happen. (Habit 1)
  5. AM I LIKELY TO “ACT” OR “REACT” TO A TASK? — Seek the reason for the task so that it may motivate me to proper action. Otherwise, determine how to eliminate or avoid the task entirely. Do or do not; there is no try.
  6. SILENCE — Speak not but what may benefit others or yourself; avoid trifling conversation.
  7. WHAT AM I DOING WHILE ON “THE BENCH?” — If there is somewhere I want to be, begin walking. Identify something which I can do now, or very soon, which is interesting. Remember that efficacy is active, not passive.
  8. BEGIN WITH THE END IN MIND — Each part of your life can be examined in the context of the whole, of what really matters most to you. By keeping that end clearly in mind you can make certain that whatever you do on any particular day does not violate the criteria you have defined as supremely important, and that each day of your life contributes in a meaningful way to the vision you have to your life as a whole. (Habit 2)
  9. DISTRACTION, BUSYNESS AND CONSTANT SWITCHING ARE MENTAL HABITS — We don’t need any of these habits, but they build up over the years because they comfort us. We can live more simply by letting go of these mental habits. What would life be like without constant switching, distraction and busyness?
  10. ORDER — Let all your things have their places; let each part of your business have its time.
  11. WHAT CAN I DO TO BE SO GOOD THEY CAN’T IGNORE ME? — Continuous improvement? A “big swing?” A simple but insightful solution? The path to “the best” is not obvious and likely does not directly through the most-obvious next thing.
  12. PUT FIRST THINGS FIRST — The degree to which we have developed our independent will in our everyday lives is measured by our personal integrity. Integrity is, fundamentally, the value we place on ourselves. It’s our ability to take and keep commitments to ourselves, to “walk our talk.” It’s honor with self, a fundamental part of the Character Ethic, the essence of proactive growth. (Habit 3)
  13. AM I AUTHENTIC OR OBSEQUIOUS? — Discerning the difference between obsequiousness and politeness can be difficult, but courtesy should be rooted in benevolence. Politeness should be the expression of a benevolent regard for the feelings of others; it’s a poor virtue if it’s motivated only by a fear of offending good taste. In its highest form Politeness approaches love.
  14. SINGLE-TASK BY PUTTING YOUR LIFE IN FULL-SCREEN MODE — Imagine that everything you do — a work task, answering an email or message, washing a dish, reading an article — goes into full-screen mode, so that you don’t do or look at anything else. You just inhabit that task fully, and are fully present as you do it. What would your life be like? In my experience, it’s much less stressful when you work and live this way. Things get your full attention, and you do them much better. And you can even savor them.
  15. RESOLUTION — Resolve to perform what you ought; perform without fail what you resolve.
  16. THINK WIN/WIN — Most people tend to think in terms of dichotomies: strong or weak, hardball or softball, win or lose. But that kind of thinking is fundamentally flawed. It’s based on power and position rather than on principle. Win/Win is based on the paradigm that there is plenty for everybody, that one person’s success is not achieved at the expense or exclusion of the success of others. (Habit 4)
  17. HOW DO I TREAT SOMEONE I DON’T KNOW? — Your character shows in how you treat those who can do nothing for you.
  18. FRUGALITY — Make no expense but to do good to others or yourself; i.e., waste nothing.
  19. SEEK FIRST TO UNDERSTAND, THEN TO BE UNDERSTOOD — You’ve spent years learning how to read and write, years learning how to speak. But what about listening? What training or education have you had that enables you to listen so that you really, deeply understand another human being from that individual’s own frame of reference? (Habit 5)
  20. CREATE SPACE BETWEEN THINGS — Add padding to everything. Do half of what you imagine you can do. We tend to cram as much as possible into our days. And this becomes stressful, because we always underestimate how long things will take, and we forget about maintenance tasks like putting on clothes and brushing teeth and preparing meals. We never feel like we have enough time because we try to do too much. But what would it be like if we did less? What would it be like if we padded how long things took, so that we have the space to actually do them well, with full attention? What would it be like if we took a few minutes’ pause between tasks, to savor the accomplishment of the last task, to savor the space between things, to savor being alive?
  21. INDUSTRY — Lose no time; be always employ’d in something useful; cut off all unnecessary actions.
  22. SYNERGIZE — What is synergy? Simply defined, it means that the whole is greater than the sum of its parts. It means that the relationship which the parts have to each other is a part in and of itself. It is not only a part, but the most catalytic, the most empowering, the most unifying, and the most exciting part. (Habit 6)
  23. IS THERE AN ELEMENT OF STRUGGLE IN MY HISTORY? — This reminds me to be kind for everyone I meet is working through their own struggle. Through the experience of my own struggle I can better understand and emphathize with others on similar journeys. Furthermore, being reminded of my past struggles suggests perspective on my day-to-day general lack of struggle.
  24. MY OATH — Today is the first day of the rest of my life. I shall make no excuses and hold no grudges. I care not where I came from, only where I am going. I don’t compare myself to others, only to myself from yesterday. I shall not brag about successes nor complain about my struggles, but share my experiences and help my fellows. I know I impact those around me with my actions, and so I must move forward, every day. I acknowledge fear, doubt, and despair, but I do not let them defeat me.
  25. SINCERITY — Use no hurtful deceit; think innocently and justly, and, if you speak, speak accordingly.
  26. SHARPEN THE SAW — It’s preserving and enhancing the greatest asset you have–you. It’s renewing the four dimensions of your nature: physical, spiritual, mental, and social/emotional. … “Sharpen the saw” basically means expressing all four motivations. It means exercising all four dimensions of our nature, regularly and consistently in wise and balanced ways. (Habit 7)
  27. WHAT HAVE I BEEN READING? — I’ve performed this experiment countless times: Read little: nothing happens. Read more: ideas, new connections, inspiration, questions, motivation, short-cuts, wonder.
  28. JUSTICE — Wrong none by doing injuries, or omitting the benefits that are your duty.
  29. FIND JOY IN A FEW SIMPLE THINGS — For me, those include writing, reading/learning, walking and doing other active things, eating simple food, meditating, spending quality time with people I care about. Most of that doesn’t cost anything or require any possessions (especially if you use the library for books!). I’m not saying I have zero possessions, nor that I only do these few things. But to the extent that I remember the simple things I love doing, my life suddenly becomes simpler. When I remember, I can let go of everything else my mind has fixated on, and just find the simple joy of doing simple activities.
  30. MODERATION — Avoid extremes; forbear resenting injuries so much as you think they deserve.
  31. WOULD I WANT TO GO ON A LONG CAR RIDE WITH ME? — Long car rides are a quintessential American experience. Along with the good however, comes the opportunity for bad. With others present the confined space, lack of privacy, and monotony of rolling vistas create a microcosm of life on a tiny stage. How I share that stage with the others in the car, and what specifically I do while on that stage tells all.
  32. GET CLEAR ABOUT WHAT YOU WANT, AND SAY NO TO MORE THINGS — We are rarely very clear on what we want. What if we became crystal clear on what we wanted in life? If we knew what we wanted to create, how we wanted to live … we could say yes to these things, and no to everything else. Saying no to more things would simplify our lives.
  33. CLEANLINESS — Tolerate no uncleanliness in body, clothes, or habitation.
  34. AM I SELF-AWARE? — The first step in my journey was realizing I was unhappy. This realization — detecting it, understanding it, believing it, surrendering to it, and finally owning it — was the first piece of bedrock on which I started building.
  35. TRANQUILLITY — Be not disturbed at trifles, or at accidents common or unavoidable.
  36. PRACTICE DOING NOTHING, EXQUISITELY — No need to plan, no need to read, no need to watch something, no need to do a chore or eat while you do nothing. You will start to notice your brain’s habit of wanting to get something done. This exposes our mental habits, which is a good thing. Keep doing nothing. Sit for awhile, resisting the urge to do something. After some practice, you can get good at doing nothing, and this leads to the mental habit of contentment and gratitude.
  37. CHASTITY — Rarely use venery but for health or offspring, never to dullness, weakness, or the injury of your own or another’s peace or reputation.
  38. WHAT IS MY TALK-TO-LISTEN RATIO? — It’s better to listen to understand, rather than to, (for example,) listen to refute. Silence is fine provided one’s own thoughts are pleasant company. When speaking, think first about why you are about to say whatever it is you’re about to say.
  39. WE CREATE OUR OWN STRUGGLES — All the stress, all the frustrations and disappointments, all the busyness and rushing … we create these with attachments in our heads. By letting go, we can relax and live more simply.
  40. HUMILITY — Imitate Socrates.
  41. FESTINA LENTE — Make haste, slowly. Or, unrestrained moderation. “The worker must be stronger than his project; loads larger than the bearer must necessarily crush him. Certain careers, moreover, are not so demanding in themselves as they are prolific in begetting a mass of other activities. Enterprises which give rise to new and multifarious activities should be avoided; you must not commit yourself to a task from which there is no free egress. Put your hand to one you can finish or at least hope to finish; leave alone those that expand as you work at them and do not stop where you intended they should.” ~ Seneca, On Tranquility [7]
  42. LOOK BACK — Look back at some of the things you’ve accomplished or experienced and think: Well if that isn’t nice, I don’t know what is.
    “One never notices what has been done; One can only see what remains to be done.” ~ Marie Curie (4a585)

ɕ

slip:4b1 et al

Oct 2019: Added the seven habits of highly effective people from Stephen Covey’s book.
Jul 2020: Added, “what am I doing while on ‘the bench’?” and “what can I do to be so good they can’t ignore me?
Oct 2020: Added, “festina lente
Dec 2020: Added, “look back
Jan 2021: Expanded this into a series of posts, Practicing Reflection.
Mar 2023: An updated list of the prompts is now posted at My Daily Reflection Prompts.


§9 – Twenty Minutes a Day

This entry is part 9 of 13 in the series Changes and Results

One of my favorite ideas from Charles Duhigg’s book, The Power of Habit, is the idea of a keystone habit. Keystone habits create a chain reaction; Changing and rearranging your other habits as you integrate the habit into your life. According to Duhigg, “keystone habits influence how we work, eat, play, live, spend, and communicate”, and they “start a process that, over time, transforms everything.”

After self-awareness and self-assessment, my 20 minutes of stretching and recovery work every morning is by far the single most important thing I’ve changed in my journey. (“Every morning” is the goal, not always the reality.) Initially, it was the one critical first little piece of success from which I launched a pile of awesome changes. It continues to be my reliable fallback position when things go off the rails.

Every time I get stuck, fail at sticking to a good habit, or make a mistake with diet, I repeat to myself: Start again tomorrow. Start again tomorrow with one small bit of success first thing in the morning, (and a cup of coffee.)

How my “20 minutes” works:

Declare 20 minutes of “me-time” first thing in the morning. Literally explain to others that you are creating space for yourself to start your day. It’s not leave-me-alone time. If there are others in your household, they are welcome to visit you and interact. You may find they occasionally join you.

Go straight there, as soon as you can. Ok, yes, make a bathroom stop and obtain your beverage of choice on your way to your morning session. But you do not need to arrive at your space awake and ready to exercise. You only need to get there. The stretching and moving will gradually wake you up. It will also wake up your mind; You’re going to have twenty minutes every morning to peacefully review your yesterday, plan your today, or even practice some mindfulness meditation. But only if you want! Your initial goal is to simply get to your space ASAP each morning.

Create (or designate) a space. This is really critical. It cannot be a place that you have to setup; It has to be a place that always exists, that you can simply stumble into first thing in the morning. Find a few square feet and make it your own. A light, a little clock, maybe some music setup ready to go, maybe a yoga mat. Having a physical space (as simple or as complex as you choose to make it) will help your mind shift automatically. “I do this sort of stuff in this space,” becomes automatic.

Music? For a long time, I was really into electronica-esque music for this. (Sometimes I still use the music.) I fanatically groomed a Pandora station with electronic music that has absolutely no vocals—but obviously use whatever works for your, including no music if you prefer. When I use music, I want it to help me zone in on what I’m doing and forget the world.

Props, mats, weights, etc. Start simple. As you go along, you’ll discover things—an article on the Internet, a yoga class, a friend’s ideas—and you’ll take in new moves, stretches and exercises as your own. I started without yoga blocks, then one day found a new stretch I wanted to be able to use when I felt I needed it, and bought two simple yoga blocks for the purpose. This way everything you have in your space, has a purpose rather than being something that nags you, “oh, I should be using that.”

Simply stretching and moving is your first activity. What does your body want to do first? Just learning to be able to answer that question honestly each morning is a great lesson. Then what does it need next? Move when you feel like it. Engage muscles when you feel like it. Engage your brain when you feel like it. Twenty minutes goes by in a blink.

Other tips, tricks and resources

Take some yoga classes. Find a Yin yoga class and spend a few months learning.

No. Right. Now. Oliver Emberton has a great article, How to Debug Your Brain. It’s funny and really exactly what’s wrong with our brains. Emberton’s idea of hijacking a “transition” led me to aim for “first thing in the morning.” I hijack the, “I just got out of bed” transition as many mornings as I can. My rationale is: I was literally just ignoring everything when I was unconscious, so I can continue ignoring everything for a little longer while I put me first.

Focus on what you can control. Iterate. Steve Kamb wrote an article talking about each Avenger’s super power, and Tony Stark’s power specifically, What’s Your Avengers Superpower. Stark is not actually a superhero. Stark simply knows the rule: you can’t edit a blank page, and you can’t improve a machine that hasn’t been built yet. Iterate.

When Life Sucks

Exercise Obstacle

How to Create Habits That Stick

How Lego and Minecraft Will Help You Get in Shape

ɕ


§7 – Exercise

This entry is part 7 of 13 in the series Changes and Results

Exercise is not about weight loss.

Exercise builds physical ability and mental health.

For me, it began when I fell in love– with a bicycle.

The story of a boy and his bicycle

Long after college, way down in my downward death spiral, I bought a cheap mountain bicycle. Today, I don’t recall what possessed me to even want to buy a bike. I guess it just reminded me of the freedom I’d discovered when as a kid I first set out on a bicycle.

At the time, we were living in an apartment a short ride from a long park that followed a meandering creek. The park has long trails—some asphalt, some packed gravel—that follow the creek, and it has a few, short, side trails that almost resemble mountain biking.

I fell in love.

I fell in lust is probably more accurate.

(more…)


How to win the Internet

The difficulty seems to be, not so much that we publish unduly in view of the extent and variety of present day interests, but rather that publication has been extended far beyond our present ability to make real use of the record. The summation of human experience is being expanded at a prodigious rate, and the means we use for threading through the consequent maze to the momentarily important item is the same as was used in the days of square-rigged ships.

~ Vannevar Bush from, As We May Think

slip:4ubaae2.

Over in the Movers Mindset community I’ve started a topic titled, How to win the Internet, where I’ve been trying to unpack all my processes and way-of-thinking around how I manage (or at least, attempt to manage) everything I learn.

ɕ


Lions and tigers and bears oh my

Imagine if the NFL had to choose between receiving taxpayer funds or allowing its players to exercise their First Amendment rights. Imagine if Facebook had to choose between Section 230 immunity and incorporating the First Amendment into its terms and conditions. Imagine if the First Amendment got the shot in the arm that it desperately needs.

~ Marc J. Randazza from, «https://www.popehat.com/2018/06/19/randazza-trump-twitter-the-nfl-and-everything/»

This article is rabid. I mean, feces-flinging monkies rabid.

…and suggests a really intriguing idea: What if, in order to receive federal money, or other special consideration from the Federal Government, that entity had to incorporate the principles of the First Amendment to the U.S. Constituation?

This spun me off on a tangent I had once followed long ago: The Constitutional Law concept of “incorporation.”

Question: It is obvious that the First Amendment to the U.S. Constitution restricts the U.S. Federal government. But does it also restrict each of the State governments?

What if your State constitution happens to NOT have free-speech protections built into it? Would that mean the State could limit your speech? What about all those other layers of government below the State government? What about all the other protections in the U.S. Constitution?

I mean– I bet you just ASSUMED the First Amendment protected you all the way down to your local government.

It turns out that the Judiciary, around the turn of the twentieth century, has been following a principle called “incorporation.” Thanks to the Fourteenth Amendment to the U.S. Constitution saying that States cannot deprive people of “liberty” without “due process of law” … BAM! The first Amendment is incorporated in “due process of law”!

…and then that made me nervous because it seems a little tenuous.

Try this: constitutional law concept of incorporation

…or Wikipedia’s, “Incorporation, in United States law, is the doctrine by which portions of the Bill of Rights have been made applicable to the states. When the Bill of Rights was first ratified, courts held that its protections only extended to the actions of the federal government and that the Bill of Rights did not place limitations on the authority of state and local governments.”

Wait, “portions”?! Oh this is sounding sketchy…

ɕ


Do calories matter?

In a word, yes.  But, technically this is the wrong question.  The correct question is probably closer to, “What is the impact of the calories I consume on my body’s ability to store fat versus burn fat?”

Conventional wisdom, perhaps better referred to as Current Dogma, says that you gain weight because you eat more than you expend. This is almost true! To be 100% true, it would read: when you gain weight, it is the case that you have necessarily eaten more than you expended. Do you see the difference? It’s subtle but very important — arguably more important than any other sentence I will write. The first statement says over-eating caused you to get fat. The second one says if you got fat, you overate, but the possibility remains that another factor led to you to overeat.

~ Peter Attia, from «http://eatingacademy.com/nutrition/do-calories-matter»

slip:4ueanu1.

All of the success in the last (roughly) five years boils down to the following strategy. Notice that “excercise” does NOT appear…

1) realize I would like to improve my health

2) read something (anything) about health, diet, metabolism… anything that piques my interest. But it has to be something I think is TRUE. No crazy “fad” stuff. Something sane like, “yogurt seems to be good for me to eat.”

3) reduce friction to lead to that change. NOT, “force change by making rules.” I want to eat more yogurt? …make sure it’s on the grocery list so it ENDS UP IN THE HOUSE. I want to stop eating Doritos? EAT LUNCH BEFORE GOING TO MARKET, DO NOT BUY DORITOS.

There is no step 4. Everything else happens automatically. There is NO CURE for curiosity. Each thing I read and adjust leads to more, interesting questions. And along the way, more activity just happens automatically as my health improves.

Yes yes yes. I’m personally interested in movement and Art du Déplacement, etc. So I’m also doing this process in that realm. Forget about that. The success with my health, came all from my diet.

ɕ


Simplicity in 2018

Paring down one’s possessions and schedule are go-to ways to seek simplicity because they are outward, accessible, concrete actions that produce fairly immediate results. Their weakness, when practiced as their own ends, however, is that they lack a set of overarching criteria for how they should be carried out, as well as intrinsic motivation for following them through.

Practicing outward moves towards simplification, without this set of criteria, is like placing spokes in a wheel, without connecting them to a hub.

Simplicity needs a heart, and its center must be this: having a clear purpose.

~ Brett McKay, from The Spiritual Disciplines: Simplicity

slip:4uaosi1.

Throughout 2017 I’ve been slowly paring down. Fewer physical things sure, but also changing out some things and hobbies and projects and people. Can I eliminate one? Can I replace two of something with a simpler one?

I’m a “systems” person. I get things done via the observe, orient, decide, and act loop. For 2018 I’ve no delusions of rewiring my brain and kicking all my systems and processes to the curb.

I’ve realized, (far too recently,) that I need to take more time to “zoom out” and to take the time to consider how the really big things in my life fit together. Do they fit together? What if some really big component of who I am — even if it’s a great, fine thing — doesn’t fit with the rest of everything? What should I change; everything else, or that one great, fine thing?

I don’t do New Year’s resolutions, but I do love to spend the indoor, chilly, winter season thinking about the big picture — and now, perhaps a bit more of the really big picture.

Goodbye 2017! I will look back on you fondly.

MEMENTO MORI

ɕ