Let’s get physical and spiritual!

1 Corinthians 15:44 It is sown a natural body; it is raised a spiritual body. There is a natural body, and there is a spiritual body.

We can readily see the importance of taking care of our physical/natural body. We must feed it, rest it, wash it, exercise it.

Do we likewise take care of our spiritual body?

How do we feed, rest, wash and exercise our spiritual body?

We must feed it truth, learning, wisdom, and knowledge from books and other media. We must feed it good, uplifting, wholesome interactions with others.

We rest our spiritual body with meditation, prayer, mindfulness, positive self-talk.

We wash our spirit through the sanctifying power of the Holy Ghost and Jesus Christ’s atonement for our souls. We use his enabling power to overcome habits we don’t want with habits we do want. We rid our mind of impure thoughts, our bodies of hurtful actions. We clean our spirits by removing from our thoughts anything that is undesirable, that does not help us become what we want to be.

We exercise our spirits through doing things that are hard; hard work, new skills, healthy thinking patterns, etc. When we have to choose mind over matter. When we choose long term benefit and short term loss over short term gain and long term loss.

Movie control in Processing

This is a quick post to show how to control movie playback with Processing.

/**
 * Loop. 
 * 
 * Shows how to load and play a QuickTime movie file.  
 *
 */

import processing.video.*;

Movie movie;

void setup() {
  size(560, 406);
  background(0);
  // Load and play the video in a loop
  movie = new Movie(this, "tac.mov");
  movie.loop();
}


void draw() {
  image(movie, 0, 0, width, height);

  if (mousePressed == true) {
    movie.play();
    movie.read();
  } else {
    movie.stop();
    fill(0);
    rect(0, 0, width, height);
  }
  
}
Code language: Java (java)

There’s the code. It’s the basic default code to show a movie. But what if you want some event (mouse press, input from Arduino, etc) to control if and when the movie plays.

Not so intuitive, and hence this post.

The trick is to use the play() and read() methods in the if…else statement. In the code above. If the mouse button is pressed, then the movie will play from the beginning.

And if you want the video to disappear after the video is played, then after the movie stops, cover the draw window with a rectangle (filled with black, in this example).

January 20, 2021

Ammon and Jessica Shepherd Family

Petra:

So I went to school. And I was sooo excited, because I love school. When I was in the hallway near ms edwards, she said Hi Petra we have Alex already in our class. She’s staying her all week. This week. Then we did lots of fun games. We went to music and played with xylophones and glockenspiels. And we had this thing that said, it was a video actually, about Christmas music. And then we did tests, two tests, mostly math tests. Then we had two short recesses. Then we did lots of other math tests, then after all of them we did center time. I colored and jogged on the trampoline. Then we colored more. And then we played on the trampoline more on center time. Then we did lots of more things that I forgot. Then we had lunch.

And we were watching a magic school bus video. Then there was more stuff. And then we did lots of math. And then, the principal said on the speaker on the wall that the teachers hadded to take the class out by themselves. Then we played a lot. And then we goed back inside the classroom. Then we cleaned the desks and the chairs and the bins. And then we got our backpacks on and watched something. And then the principal called the classes, the first class that the principal called was the kindergarten class. And then he called out the first grade and second grade class. Then we walked all the way and some other kids including me went down the other hallway. One left and went with me to the gym. Then the principal called out all the names in the gym when their parents came to pick them up. We were the last. And then they called out us (Asher, Anthea and me). Then we went down the concrete pathway. Then we went more left. And we stopped and turned straight. Then I opened this door to the suburban. And then daddy said “How was school kids?” Then we all said Fun, except for Asher. Asher said, “I hated school. I don’t want to go there anymore.” And then we drived to the library. And daddy got a book. The last book of Martin Luther King Jr before he died. And then he got buckled and he started driving home. Then we played a lot until it was dinner time. Then we did the thing that we’re doing right now. It was all on Wednesday. And I’m almost done with this story. 

Jonas:

I went to school for one class. I did some scholarship stuff. Played some video games. Had a meeting with Priests to make our own knives. 

Teancum:

Well, I woke up. Then I layed in bed for 10 minutes with my parents nagging at me to get ready for school. Then I got ready for school and we had prayer. Then we drove to school. Then I went to school. And during the 1st block thing we had a fire drill and I only saw only one other person wearing shorts, but the teachers called me out for not wearing pants because I don’t have any. 36 degrees Farenheith Coach Stevens (XC coach) said she would take me shopping. And then I went through all my classes. In band there were 2 other people, but one was absent. In english there were 4 but one absent. After that was science in which there are 2 other people. In civics there are 2 other people and Math there is one other person. And then I went on the bus. And since there was a bus change I had to tell the driver where I lived. And then we went there. And then I walked off the bus and then I went to the door and opened it. And I went into the kitchen and put down my water bottle and Dad said Yay Tac is home or something along those lines, and mom didn’t even know because she was in a coach call or something. Then I put my stuff away and ate a snack. Then I did some zoom classes. And then I cubed. And then we had dinner and then mutual thingy. We had scriptures and prayer. And then I made popcorn. I ate the popcorn. I went up stairs and got interviewed by dad to see what I was up to today. And then Mom got mad at me for not wearing pants. And at present moment. I will probably go brush my teeth and read a book for a couple of hours.

Anthea:

Umm, giggle. Giggle giggle giggle. 

So I went to school in the car with January and Petra and Asher (and the rest of the family) with my backpack and laptop. When we were almost there we put on our masks (me, Petra and Asher). When we got there, our temperatures were taken, one by one. Petra was last. Asher was first. And I was the 2nd. After I got my temperature taken I got out of the car and walked up the stairs to my class. Before I went in my classroom I went to go get breakfast. After I got my breakfast, I went into my classroom and went to my seat. Which is in the right corner in the front (I can’t see very well there, so I usually move in the middle of math, but that’s my spot). I ate my breakfast while I did my morning work. The kids behind me and next to me were being very annoying while I did it so I moved to a table behind me in the back. I worked there quietly for a few minutes and then I went back to my seat because the kids had quieted down. Then I finished my work. Then after all of the kids were coming today had came, the teacher started the lesson. I can’t exactly remember what happened first, but I know we did some math. Then we did some reading. Then we had snack. After that we went to block which was music. Then we did some math, which was regular math with numbers and stuff. And then we did some word problems. Then we had lunch. Then we did more math. And then we did recess. And then more math. And then the announcement called for us to go home. I went to the gym and waited. Then after a few minutes in the gym they called me, Petra and Asher. We went out of the gym and then we walked down the path to the car. And Dad took us home. The End. just kidding. 

We did some playing, Petra and me. And then, we did more playing. Playing is Petra and me’s favorite thing. Usually. Then we had dinner. And then it is now that we are writing it. So right now we are writing this thing. And it’s 9:25 so I need to go to bed. And dad keeps looking back and forth to his meeting. And Jonas is reading Petra books and I want to go over there in just a minute so I have a minute to finish this. Then we’ll probably go to bed in a few minutes. 

Jessica:

I exercised, I worked, I went to mutual. I had fun. I went to bed.

(Jessica went to bed so quickly, I couldn’t get a better picture of her.)

Asher:

I had a dream that I solved the 3 by 3 rubik’s under 3 sec. and won a trip to the Bahamas and saw purple elephants that did the fortninte default dance and some did the floss then there were also pink giraffes that sang super smash bros song perfectly and there were also playing super smash bros and then I went into a yellow submarine with the Beatles and they were actual beetles. And then a pink blob destroyed the world. But the pink blob got destroyed by alien ships using nuclear weapons. And then I woke up and went to school and then I came home. And then I played a game. And that’s it. Except for I went to bed. 

January:

Woke up, 6:20. Went to seminary. Went back to sleep. And then I went to the Y to exercise. And then, I came home, had class (virtually), did homework, and did more homework, and I also, after that, I watched the Inauguration. The poetry girl was really good. She sounded good. She talked really well. And then I didn’t have work today. I went to mutual (virtually). And then I put ice cubes on my face because I have a headache. And I did drugs. And then I sat outside for ½ an hour. And then I played a game with some cute boys (Tac and Asher). And then I plan on going to sleep after this. Oh, also I swept the dining room. And I’m supposed to fold some laundry. 

Ammon:

It so warms my heart to see my kids being so descriptive in their dictation of this day. They would have had more to say, had I not tried to get this all done after 9pm.

I awoke at 6am, to my and Jessica’s phone alarms. I promptly turned hers off and snoozed mine. Which is what I did when it went off again 10 minutes later. Finally at 6:20am I arose from my slumber and pulled myself out of bed. After a quick relief, I grabbed my laptop, Come, Follow Me manual, triple combination, phone and glasses and headed downstairs. I popped in on Jonas and gave him the 10 minute warning for seminary. I dropped all but my laptop on the living room couch and took my laptop into the family room to set up for seminary. Then I went to the basement to give January the 10 minute warning for seminary. I checked news or my BYU-I class for a few minutes, then gave January and Jonas the no minute warning for seminary. I studied scriptures (reading D&C 5 and preparing a CFM lesson for tonight). 

About 7am, Jessica and I started getting the other kids up by singing songs, and generally being parentally obnoxious (as all things are so early in the morning). Jessica focused on getting the girls ready and hair done (a long and frustrating process if girls are distracted and slow, which they were today). We had everyone in the family room and ready for family prayer by 7:38 or so, and ready for prayer 5 minutes later. Then we all piled into the suburban (January, myself, Jonas in the back, Petra, Anthea and Asher in the middle, Jessica driving and Tac riding shotgun). Discussion enroute (fussing, arguing, finding masks, being annoyed and frustrated) was brief and delightful. We made it to the elementary school, not last, but pretty close, and with a couple minutes to spare. After checking temps, answering no to all the questions, the three youngest were affectionately ejected from the vehicle to enjoy their day at school (just one of two each week). The rest of the family proceeded to the middle school to expunge the Tac in similar fashion. Decibels were much lower during this leg of the journey. Tac was summarily dismissed from the vehicle, and the remaining occupants proceeded to the local YMCA for an exuberant work out. 

Masks, temps, Nos said, we proceeded to wash hands then go up the YMCA stairs for a quick ab workout (crunches, crunches crunches, plank). Then on to the stationary bicycles where we had a gruelling personal live Peloton workout with Jessica instructing. Several series of hover then stand, cycling with resistance. It was sweaty but fulfilling and leg-strengthening. We left promptly after wiping down cycles and mats. I swung by the Library next door to pick up a book, but forgot it wasn’t open for curb-side pickup until 10am (it was 9:18am). 

At home, I showered and prepared for work. It came slowly. Checking news (a nasty habit I have gotten myself into) and figuring out what I was going to do. I encouraged January to follow the family rule of no screens in bedrooms, and brought her from the basement to my room. Jessica went to the basement to work and coach (another reason for January to come upstairs). Jonas sat at downstairs on the couch for a while entertaining himself with educational and entertaining videos. I thusly worked for a few hours, on plans for workshops and events this coming semester. I kept peeking at the Inauguration events. I have never been interested nor cared to watch, but since it was streaming live to my computer, it’s been the easiest ever to partake. January was watching as required by her science class, so she could pick out any science related initiatives or policies that the new president would talk about in his address. I saw the actual swearing in, and that was about it. January enjoyed the recitation from Amanda Gorman, “The Hill We Climb”. I listened to it later. I also enjoyed it. We can be united despite, and because of, differences. Lunch was consumed, leftover potstickers and noodles. Meeting was had (just a check in with my supervisor about the coming semester). More work was done. I played with an Arduino kit for a bit. I tried to learn more about making a phone app. I walked in place for a good 40 minutes so I could get my goal of 10,000 steps every day this year. (Which I have done since I started on January 5. I usually have to spend an hour or so walking in place…) 

Oh, Tac came home from school on the bus around 12:48. At about 2:35 I stood up to take a break from work and realized I was supposed to go get Asher, Anthea and Petra from school. I got all ready and left, getting to the school about 2:45, not last, but pretty close. We stopped by the library to pick up my book on hold, Where Do We Go From Here by Martin Luther King, Jr. This is the last book he wrote before being assassinated a year later. Once we got home and settled, I went back to work on the Arduino and phone app. I worked until about 5:11pm.

Then it was a call to arms. Well, a call to do dinner chores and make dinner. All hands on deck! Asher set the table. Jonas put away clean dishes. Anthea took compost out (with help from me). All went smoothly, quickly, without complaint or frustration. Ha! I made rice bowl fixings (the rice I made yesterday), roasted sweet potatoes, red union, Jessica cut the cucumber and carrots (for the kids), feta cheese, craisins, crackers, spinach, cilantro lime dressing, cannellini beans. Yummy. Dinner was lively. Anthea didn’t want to sit where Asher placed her. Lots of yelling and crying. Finally, we got that settled. Dinner proceeded normally… loudly.

After dinner and a bit of clean up, Jessica went to Young Women’s meeting at the Church building, Tac went to his room for a Teachers Quorum zoom meeting, January went to her basement room for a zoom meeting with the older Young Women class, and Jonas and I went to my room for Priest Quorum zoom meeting. I was hoping Asher, Anthea and Petra would entertain themselves, but after 20 minutes of Anthea and Petra on Jonas and my lap as we watched a video about making knives, we sent them downstairs to watch a show. Asher worked on a 3D model of a submarine he is making with Tinkercad (and surely he watched a bunch of minecraft videos on YouTube, too). Priest Quorum went well. We watched a couple of videos on knife making. Learning the process, the tools, the type of metal. We also discussed the calendar of events and planned for our video we need to make for Stake Standards Night in February. We are covering Language from the For the Strength of Youth. We decided to have each of the boys come up with a scenario where they could use bad language, and some options to use instead. We’ll go to the high school to film this in two weeks. We’ll bleep out the “bad” language, and it should be funny. 

After all of our meetings and Jessica came home, I called us all in for family scripture and prayer. I got some garden tools and had us try and quote D&C 4 (on Monday I gave the challenge that they get candy based on how much they can memorize by Sunday). We talked about what tools we can use to do missionary work. Then I started to take notes for this, but we decided to do prayer first, get kids ready for bed, and I would take them each one by one and write about their day. I started with Petra and followed the order as seen here. In the middle of Anthea’s dictation I remembered that I was supposed to have open office hours on zoom for my BYU-I class. I was 15 minutes late, and two people had logged in, but weren’t there any more. So I continued Antheas monologue. I got a quick note from Jonas, and a terse summary from Jessica as she headed to bed, exhausted from the days work. Tac gave a decent summary of the day. January and Ashere were less verbose. I had one student join the zoom meeting while Asher was typing up his dream. I was practicing guitar, but quickly took the “call” and answered the question. 

I finally made Tac and Asher go to bed a little after 10pm. Fortunately Anthea and Petra fell asleep somewhere between 9:30 and 10pm. January folded laundry and cleaned, then went to sleep around 10:20. I even outlasted Jonas writing up this monstrosity of a memoir of a single day. He went to bed between 10:30 and 10:45 (mostly because his internet shuts off, so nothing to do on his computer). And here I am, a minute to 11pm and finally finishing this overly lengthy journal article. To bed with me. And an end to this truly historic, unprecedented, COVID-19 corona virus pandemic, hybrid, virtual school, and Shepherd journaling day. Phew!

Docker Development Environment for Everyone

One of the biggest challenges when collaborating with others in developing software and websites is setting up the development environment. The good ol “it works on my machine…” problem.

Well, this is no panacea for development, but it does a good job of setting up a basic environment pretty quickly.

You’re in for a special treat, because I’m going to show you not one (1), but two (2) different development environments; one for PHP, MySQL, Apache and phpMyAdmin, and one for Python (Flask) and PostgreSQL with pgAdmin. Each of these in a Docker container for ease of use.

Pre-requisites

For any of this to work, make sure you have Docker Desktop installed and running.

We’ll be using a terminal application for running some commands, so you’ll need some familiarity with that too.

Git is used to copy the files from the GitHub repo, but you can also download them as a zip file.

PMAMP

We’ll tackle the PhpMyadmin Apache Mysql Php (PMAMP) environment first.

After setting this up, we’ll have a place to put PHP code, a running Apache web server, a MySQL server and a running instance of phpMyAdmin.

The quickest way to get this going is to download the files from this GitHub repo https://github.com/ammonshepherd/pmamp

git clone https://github.com/ammonshepherd/pmamp.git

Change into that directory.

cd pmamp

And start the Docker containers

docker-compose up -d

You can view the website at http://lvh.me. lvh.me is just a nice service that points back to your local machine (127.0.0.1 or localhost). It makes it look like you are using a real domain name.

You can view phpMyAdmin at http://pma.lvh.me.

You can even use a real domain name. Just edit the docker-compose.yml file. There is a line like this:  

- "traefik.http.routers.php-apache.rule=Host('lvh.me', 'pmamp.lvh.me', 'example.com')"

Just add your domain to the list (or remove the other ones). Each entry must use the backtick, rather than the single quotes. WordPress mangles the backticks, so I am using single quotes here.

Now you just need to let your computer know to redirect all traffic to that domain name to itself.

You’ll need to edit the /etc/hosts file (Linux or Mac), or c:\windows\system32\drivers\etc\hosts (Windows). Now you can develop for any domain name right on your computer as if it were using the actual domain name.

Put all of your website files in the ‘www’ folder and you’re ready to develop!

Check the README at https://github.com/ammonshepherd/pmamp for more details on how it works and things to change.

To stop the services (turn off Apache, MySQL and phpAdmin) run

docker-compose down

in the same directory where the docker-compose.yml file lives.

pFp

The set up for Python (using a Flask app) and PostgreSQL is exactly the same process.

Grab the files from https://github.com/ammonshepherd/pfp.

git clone https://github.com/ammonshepherd/pfp.git

cd pfp

docker-compose up -d

You now have a running Flask app at http://lvh.me, or http://pfp.lvh.me and a running pgAdmin application at http://pga.lvh.me.

The same trick for custom domain names applies here too.

And also check out the README for more details: https://github.com/ammonshepherd/pfp

Follow the same commands above to shutdown the Python, PostgreSQL and pgAdmin containers.

The Big Leap

Have you ever felt like life was a roller-coaster? You have ups where life is going great. You’re on top of the world. Everything is going your way. You’re performing at peak at work, home, everywhere. Things couldn’t be better. It could be something simple like a job well done at work. Or it could be something huge like making a big sale.

And then, the next thing you know, you are arguing with your spouse or children. Or you’ve got a cold or feel sick, or some other way the Universe is letting you know what “reality” is. Like someone or something is telling you, “don’t go feeling too comfortable up there at the top, because that ain’t going to last for long, you know.”

Life is like a… rollercoaster. Or is it?!

Do you know that feeling? Up one minute, then down the next? Some say life is 50/50. 50 percent great and 50 percent terrible. Life just naturally has those ups and downs.

Well, Gay Hendricks says phooey to that. Life doesn’t have to be 50/50 or any other percentage. It can be 100% happy and great. Hendricks says we totally set ourselves up for failure (or pain, or sickness, or unhappiness) because we can’t handle the joy. The someone or something telling us to not get too comfortable during our highs is our own selves!

Overall, this is a pleasant book with some great, overarching strategic ideas and principles, and a few practical tactics as well.

The first thing this book could use is a Glossary. Hendricks starts using quite a few terms and phrases without really defining them first. So here’s a glossary that I would have found helpful.

Glossary:

  • The Big Leap: jumping out of your normal rollercoaster life into one of continual happiness
  • Upper Limit Problem: reasons why you keep coming out of your Zone of Genius. When you attain higher levels of success, you often unconsciously create barriers for you enjoying that success. You follow big leaps with big mess ups.
  • Zone of Genius: A state of living where you enjoy the ultimate path to success in love, money and creativity
  • Zone of Excellence: A state of living where you do really well at everything, everyone else enjoys you in this state, but you still feel something is missing.
  • Zone of Competence: A state of living where you do OK. Others can do what you do better. Being stuck here leads to chronic illness and fatigue, and a feeling of an unfulfilled life.
  • Zone of Incompetence: A state of living where you do things that you’re no good at. The lowest point in your rollercoaster life.

The thoughts in this book fit really well into the Life Coach Model that my wife, Jessica, uses in her life coaching: CTFAR. Basically, the model states that all of our Results come from our Actions which are driven by our Feelings which are created by our Thoughts as stimulated by our Circumstances. Our circumstances are neutral (neither good or bad). Our thoughts, which we control, determine the positivity or negativity of the circumstance and generate the feeling we have. And those feelings are the fuel that drives our actions. Our results from our actions can sometimes be seen immediately, and sometimes it takes time to measure accurate results.

The Big Leap is good at pointing out the different ways we use our thoughts to limit our success. While the Life Coach Model states that life is 50% good and 50% bad (the roller coaster of life), Hendricks says this is only because we make it so. We could have a 100% good life if we would just let ourselves.

Two things I will focus on here are what Hendricks calls the 4 Hidden Barriers to living in your Zone of Genius, and the 4 questions to help you find your Zone of Genius.

4 Hidden Barriers

Hendricks writes that there are at least four barriers that keep us from reaching our full potential. These thoughts help us create that Upper Limit Problem he talks about.

  1. Feeling Fundamentally Flawed

Limit: Causes cognitive dissonance as you try to hold two opposing thoughts as true: you have worth vs. you are worthless.

Breakthrough: These are just thoughts. You can choose your thoughts. Choose to think you have infinite potential!

  1. Disloyalty and abandonment

Limit: Your success means being disloyal to your past and/or abandoning others.

Breakthrough: Have the hard conversations, and be loyal to yourself.

  1. Believing More Success = More Burden

Limit: Success just means more burden for me, or that I’ll be more of a burden to others.

Breakthrough: You can’t control how others think about you. You are not guilty if others think you are a burden. And success = options!

  1. The Crime of Outshining

Limit: Your success is taking success from someone who needs it more.
Breakthrough: Everyone creates their own success. You can’t steal anyone’s success. Success belongs to the beholder.

4 Hidden Barriers by Gay Hendricks

Genius Questions

It’s not until the fourth chapter that we get to learn what Hendricks calls the Zone of Genius. It’s a great build up, I suppose, and the name is pretty self explanatory. The following questions, Hendricks has discovered, can help you discover what your Zone of Genius will be like, and help you work towards getting there. The questions are not asked and answered as you would a quiz in history class; they are prompts to help you explore your genius with wonder.

  1. What do I most love to do?
  2. What work do I do that doesn’t seem like work?
  3. In my work, what produces the highest ratio of abundance and satisfaction to amount of time spent.
  4. What is my unique ability?
Genius Questions by Gay Hendricks

I usually don’t like that last question. I am insecure about my uniqueness in the world. I have had too many times where I think I have a unique idea, but when research it, there are many, many people who have already documented the completion of the idea, and have done a much better job at it than I could have even dreamed of. But that’s not what Hendricks is talking about here. He doesn’t mean, what are you the best at in the world, or you are the only one in the world that can do ____? He means, among your abilities, skills, interests and desires, which is uniquely special to you? What seems to be a special skill or a natural gift for you (regardless if no one else or everyone else in the world can do it)?

Hendricks offers that your unique skill is often buried deep within other skills, and like a matryoshka doll, you need to dig deep in order to discover your true unique abilities. To do this, he offers a series of questions:

  1. I’m at my best when I’m ________________________________.
  2. When I’m at my best, the exact thing I’m doing is ____________________________.
  3. When doing that, the thing I love most about it is ____________________________.

You recognize your unique ability is close when you feel an inner glow of wonder and excitement.

Gay Hendricks

I have yet to pull myself apart to discover my unique ability, although I have wondered about it for many a year. There are so many things that I like to do that don’t seem like work, but that’s about as far as I get with probing myself for genius. Perhaps I fear I’ll be too successful at it and be disloyal to my fellow beings stuck outside their Zones of Genius.

How to Win Friends and Influence People – Review

Carnegie, D., Carnegie, D., & Thomas, L. (2019). How to win friends and influence people.

This is a highly recommended book from many people. I had a hard time getting through it, though, based on the poor editing, and the plethora of spelling and grammatical errors. I get the appeal of presenting the work as if it were the actual lecture notes from Dale Carnegie himself (or should I write Dale Carnagey, which was his birth name until 1922 when he changed it, perhaps to have his readers subconsciously connect him with Andrew Carnegie?), but at least fix miss-spellings of famous places or people. There is one case where place is spelled three different ways on the same page. And there is even a correct and incorrect spelling in the same sentence. Often it looks like the text was a bad OCR job and nobody bothered to go fix the “l” to an “i” or the “m” to an “rn”. Anyhow, for a book so famous, I can’t see why such errors are not fixed. They would not detract from the message, and in my case, they definitely hurt it.

I obviously didn’t learn much from the book, because I’m breaking three of the “rules” from Part 4: Be a Leader; 1) begin with praise, 2) indirectly mention errors, 3) recognize your own faults first. Well, I certainly have mistakes, in grammar, speling, and tone, but I didn’t make millions off a book with a ton of those errors in them, either.

Anyhow, on to the good stuff. 🙂

The book is broken into four parts:

  1. How to handle people
  2. How to get people to like you
  3. How to get people to think like you
  4. How to be a leader.

Each of the chapters within the parts have little nuggets of good thoughts and attributes to cultivate in order for you to become a good and wholesome person.

Instead of giving a chapter-by-chapter account of the book, I’ll point out just a few things I found worthwhile of cultivating in myself.

  • Don’t criticize, condemn, or complain (see, I haven’t learned that one yet.) (Part 1, Chapter 1)
  • The only way to influence other people is to understand what they want and show them how to get it. (p 48) Henry Ford said the secret to success was to get the other’s point of view and see their side just as well as your own. (p 52) Be genuinely interested in other people. (Part 2, Chapter 1) People always do things for a reason. Figure out what their reason is. Try to understand them. Kenneth M. Goode says “stop a minute to contrast your keen interest in your own affairs with your mild concern about anything else.” (158) Assume the best and noblest of others. (Part 3, Chapter 10) Find the best in people and praise them for the good you believe they can do. (p 205)
  • Your thoughts determine your reality. Happiness is controlled by our inner conditions, not the outer. (p 78) Elbert Hubbard says, “Thought is supreme, the thought you hold is hourly transforming you into that particular individual.” (p 89) These are the most powerful messages in the whole book. It is little understood and believed, but thoughts are ours to control, and they are the motor that gets all of the other gears of our life to start turning.
  • It’s OK to disagree, but not productive to argue. “A misunderstanding is never ended by an argument but by tact, diplomacy, conciliation and a sympathetic desire to see the other person’s viewpoint.” (p 118) Again it really comes down to thinking about and thinking more of others than yourself. We can accomplish so much more when we see ourselves positively and collaboratively connected with others, rather than in competition with them. Get rid of “but” and replace it with “and.” (p 189) Carnegie adds 10 steps from a Bits and Pieces article: (p 119)
    • Welcome the disagreement. This could be a learning opportunity.
    • Avoid the natural reaction to be defensive.
    • Control your temper
    • Listen first. Build bridges of understanding not walls of misinterpretation.
    • Focus first on where you agree.
    • Where can you admit error, and apologize.
    • Promise to think over other’s arguments.
    • If they disagree with you, that means they are interested in the same thing! Be grateful of their interest.
    • Think of others as real people, not opponents.
    • Postpone action. Give it a day to think it over.
  • To positively influence people into action:
    • Be sincere. Do not promise anything you cannot deliver. Forget about the benefits to yourself and concentrate on the benefits to the other person.
    • Know exactly what it is you want the other person to do.
    • Be empathetic. Ask yourself what it is the other person really wants.
    • Match the benefits to the other persons wants.
    • Phrase the request so the other person knows the benefit they get.

There is a lot of good practical advice in this book. The main idea is to decide to be a good person and to follow the age old advice of treat others nicely, and the counter-intuitive reminder that to become your BEST self, you need to think of others more.

The Bonds that Make Us Free

I have a goal this year to read a book each month and then write up a review of that book by the 10th of the following month. I’m making it by the skin of my teeth this first time around.

The book I read in January (actually started reading it in November or December last year) is The Bonds That Make Us Free: Healing our Relationships, Coming to Ourselves, by C. Terry Warner.

This book teaches lessons and principles that I need so much to learn… The fundamental argument is that when we recognize the truth about ourselves and others (our connection as humans to each other through bonds of love) we are able to shed the layers of self-betrayal about ourselves and are free to be the kind of person we want to be.

The Truth About Ourselves

The first order of business is to realize a truth about ourselves. We tell ourselves lies in order to make ourselves feel better and help us believe we are good people. Each individual inherently believes that they are a good person. Problems arise when we fail at being the person we think we should be. In order to believe that we are still good at the core, we have to invent a way for our actions to be right, even if they are against our belief about what is good. We need to realize that when we feel offended, burdened or any negative reaction to another person, we feel those feelings because we are making the other person into an enemy in order to justify the way we are.

Warner talks about the distinctions between a conscience and what is right and wrong. A conscience is our inherent capacity to monitor what we are doing. (134) But if what we are doing seems too costly (for example, doing good to those that mistreat us), then we will convince ourselves that doing good is actually wrong or harmful to us. (111) Our sense of right and wrong can change. We can do what is right, but still be wrong. It reminds me of a phrase I say often to my kids when they leave the house (often enough that they can quote it back to me at any time),  Do good, be good. But if you have to choose, be good. (Bonnie L. Oscarson, BYU-Idaho Graduation speech, 23 July 2014) Anything less than the ideal we hold in mind of ourselves causes us to invent a reason to justify our behavior. In the extremes, we turn others into enemies to keep ourselves in the “right”. It’s not that we don’t really feel the emotions. They are real, which makes the story we invent seem authentic. But really, we accuse others because of our mistreatment of them (30). You may feel anger, a real feeling, but it’s not because I made you feel anger. It’s because you are blaming or redirecting responsibility to me rather than you taking responsibility. That mental exercise of putting someone else in control of your emotions and life is misusing me, which causes you those feelings. If that is not the type of person you want to be, then those feelings are uncomfortable at best and painful at worst. Feeling those emotions makes you want to tell yourself a story about how you were right or justified in your actions and feelings and thoughts, which just further compound the issue.

Humans are fundamentally beings connected to each other with bonds of love. This innate, inherent connection is a human connection, a part of what makes us human. “Believing it is part of our being.” Warner talks about the light or truth that emanates from each human. This light or truth, is the reality of other creatures and of God that guides us in how we ought to respond to them. “The emotion we experience in the presence of the truth is love.” (202) So how we treat others, or our sense of how we should treat others, is connected to our sense of self. When we treat others in violation of our core sense of understanding ourselves, we need to make it seem like it wasn’t our fault that we acted in such a way. (36-37) We accuse others so as to excuse ourselves. (52) We become self-betrayers.

Playing the Victim

We too often make ourselves into victims in order to maintain justification for our actions. “We can’t feel justified in withholding kindness from others unless we find, or invent, some reason why they deserve it.” (64) And what we focus on, we get more of. If we look for it, we’ll find more of it, whatever “it” is. We’ll do almost anything to hold on to our victimhood, even destroying our options for future success and joy, just so we can maintain our sense of self-justification. (67)

Lest we feel worthless and without hope for goodness, Warner reminds us of two important truths:

  1. Humans are not inherently evil. We may do evil things, or be in bondage to evil, but that is because of self-betrayal, not inherent nature.
  2. Humans are infinitely worthwhile because of our infinite potential for good.

We can be victimized, it is true (we have no control what others do to us), but it is our choice to be or remain a victim. Our response to our circumstances is 100% our responsibility, even if we have no control over what circumstances we find ourselves in. (See Lynn G. Robbins, Be 100 Percent Responsible, August 22, 2017, BYU Devotional) 

Because you are in control, you can change!

“Self-betrayers do not accuse others and make themselves miserable maliciously. A real fear motivates them–a real fear of something that is not real.” (78-79) Like a child scared of the dark–or what they think is in the dark. The fear is real, but the monster under the bed is not. They act in self-defense. We need to have compassion on them (and ourselves, for we are all self-betrayers), and understand their frame of reference, their life’s view and perspective. For if we don’t understand, then we can become entrapped in judging and condemning, invariably acting in a way that “proves” they are right and justified in their fears and justifying their actions.

We Do It Together

The cycle of self-betrayal requires others to play along. The cycle often looks like this:

  1. We have self-centered thoughts.
  2. We think we can hide our attitudes and feelings from others.
  3. When interacting (discussing, arguing) with others, we almost always feel accused, so we take offense. The other party is the same way (perhaps), and they respond the same way, feeling accused by our reactions, so they take offense.
  4. Perceiving their response, we feel justified in our being offended. In our minds, this proves our case and justifies our actions.
  5. We don’t see that our actions are mistreating and threatening the other person, and we don’t recognize that they aren’t trying to hurt us.

Warner calls this tango of tangled betrayals collusion, working together to feel justified in your self-betrayal. (95). We see someone elses solution as a problem, and our solution to our problem becomes their problem. “Generally speaking, we share responsibility for the way we are treated… To see ourselves, we need only to look at others’ reaction to us…. Seeing other people as the problem is the problem.” (94) How people treat us, can be a mirror, showing us how we are treating them.

A Change of Heart

Are we always stuck in this mode of self-betrayal? No! Is there any hope for really becoming who we think we are and really want to be? Yes! But it requires the most difficult thing we can offer, and really, the only thing we can offer. A change of heart.  How do we do this?!

The first step, writes Warner, is to see the truth in other people. “Our humanity consists in our ability to sense and respect and respond to the humanity of others.” (129) We can sense the humanity in others, and we know within our heart of hearts, in the innermost part of us that is good and wholesome, the right way to act toward others in order to respect and honor them. (When we go against that, we then start this process of building a story around our actions to frame the experience as something we had to do–to retain our sense of goodness and to justify ourselves–which means that the other person is responsible for the negative outcome.) When we see others as they really are, the light and truth of them as fellow creatures with feelings, needs and desires, we open ourselves to a change of heart. “The fundamental ingredient is an awakening of each individual to the others and a willing effort to respond without any personal agenda in exactly the way that seems most right, considerate and helpful.” (130) Most simply put, we think less of ourselves, and more about others.

The second step is to open ourselves to others. When this happens, we drop the story we wrap around ourselves and others, and see them as they really are. We see their truth and light as a human being. It strips away the false justifications and rationalizations that come with self-betrayal. This usually happens in three ways:

  1. The other person doesn’t respond to us as we expected, thereby allowing us to see them in a new and truer way. Our guard of distortion is down, so that the true light comes through.
  2. The other person suffers in some way as to put our issues in perspective and melts our hearts.
  3. Learning the truth about the other. We often make judgements about others based on half-truths, missing information, and gossip. When we learn the complete truth of what someone has gone through, or the whole story of the situation, we can be open to them being a human. We are open to their light.

Importantly, for any of these to have an effect on us, we must be willing to be humbled. 

But is there a way to get to the melting heart without going through one of these experiences? There is, but there is no scientific proof, no ready formula for changing your heart. Like your body healing from a wound, it will heal when it heals, but there are things we can do to help it. One thing we can do is try to see life through the other person’s eyes. Metaphorically put on their shoes and walk with them a mile. “Occupying the position of another person for even a few moments means admitting that he or she might not be guilty as charged, and with that admission, our previously inflexible accusation crumbles.” (167) A change of heart comes when we stop trying to change others and are willing to let them exist on their own. “Treat me as a person separate from yourself, but just as real–with hopes and needs of my own.” (171)

Another way to encourage a change of heart is to let others influence us. In this case, influence means letting “the truth about them guide us in treating them in the right way.” (176) We let them tell us how we should respond to them. What some people call the platinum rule, Treat others how they want to be treated. Additionally, when we allow others’ truth to influence us, we give them someone different to respond to, which influences them for change, which further influences us for change. In a happy, positive cycle, our change encourages others to change, which again inspires us to keep up the change.

One of the most powerful, and fundamental, things we can do to help our hearts change is to ask ourselves the question, “Might I be in the wrong?” (197) “There is much transforming power in frankly acknowledging the truth about our own wrong doing.” (198) Just pondering this question, or even asking it in the first place with sincerity, puts us on the path of thinking of others. 

Warner offers seven steps of what a changing heart could look like.

  1. You see your fault, and acknowledge it
  2. You no longer see the other as the problem
  3. Resentment evaporates, and accusing and victimized feelings leave
  4. You recognize the real problem is self-absorption
  5. You are able to see the others in truth; to appreciate their feelings and needs
  6. The opportunity to do the right thing appears. You have more options besides defy or submit to the other. But these other options must be done with a changed heart, they can’t be counterfeit.
  7. You are able to influence others positively

Finally, I like the idea that there is no yardstick or rule of thumb to determine your honesty. Just as we don’t have rules about how to make our bodies talk. It’s such a simple, innate process. So it is with knowing when we are honest with ourselves. We just know when we are doing right or wrong. We are absolutely responsible for our own sense of right and wrong. (232)

Building bonds of love is a lifelong process of progression. The decision to change is made each day, each moment. 

New Role in the Makerspace

New Year and New Role

It is my extreme pleasure to announce a change in roles for me (Ammon Shepherd) in the Scholar’s Lab. Beginning this new year, I will be the full-time Manager of the Scholars’ Lab Makerspace and the Lead Research Technologist. I started in the Scholars’ Lab 5 years ago as a Digital Humanities Developer, building websites, working on various projects, and helping to maintain our technical infrastructure. Since then I have enjoyed learning the technology and skills available in the Makerspace, and, like the metaphorical camel, I found a way to get myself all in. 😊

From the beginning (Summer 2014), the Makerspace had a great vision under the outstanding leadership of Laura Miller and Jeremy Boggs. As their roles have changed over the years, this left an opportunity for me to join the Makerspace team full-time. As Manager, I will oversee the administration and day-to-day running of the Makerspace and supervise our wonderful team of student employees who we affectionately call Makerspace Technologists. As the Lead Research Technologist, I will conduct research about Makerspace technology, methodology and pedagogy, and collaborate with scholars throughout the UVA community.

With the new year and the new decade, we’ve enhanced our vision of the Makerspace, and put in place a mission.

Scholars’ Lab Makerspace Vision

The Scholars’ Lab Makerspace is strategically situated within the UVA Library to be open, provide a low barrier to entry, and be a helpful resource of information, technology and support. The space invites all people, and proactively encourages those in underrepresented academic studies, ethnicities, genders, economic classes and skill levels to come, learn, make, and be empowered to improve their education, research, and community. The Makerspace is an active participant in academic research through independent and collaborative work with scholars to explore, understand, and report on emerging technologies, methodologies and pedagogies in a variety of disciplines.

Mission

All humans are dreamers, creators, and achievers. Our mission is to provide the place, the tools, and the support to empower people to dream, create, and achieve.

Follow Us

I encourage you to check the blog often this year, and our social media pages, as we will be more active in posting the very cool things that the UVA community creates in the Makerspace.

Social Media

JS Pagination

Sometimes the seemingly long way round is actually the quickest way. I recently had a project at work that returned a bunch of results from a Solr database. The results are processed by Javascript and written to the page. The original page I was recreating had paginated results (10 results to a page). I thought it would be too much work to get that written into the page, and wanted to just let the JavaScript write all the results to the page. Unfortunately, this meant some queries took up to a full 30 seconds to load! That’s an eternity for the web!

After playing with the settings and different ways of writing the results to the page I finally decided to just implement pagination. I thought it would take forever. It took a few hours…

The trick is to complete the process in two steps.

Step 1) create a function that returns an array of page numbers based on the number of results, the desired number of results per page, and the current page being viewed.

Step 2) create a function that turns the array from the previous function into a bunch of links.

Here is the result:

See the Pen JS Pagination by Ammon Shepherd (@ammonshepherd) on CodePen.

The GitHub repo is here: https://github.com/ammonshepherd/js-pagination

There are two functions, pagination() and buildPagination().

pagination()

pagination() returns an array of page numbers between one (1) and a given end number, returning a maximum of 10 numbers, with missing ranges replaced with elipses (which are included in the maximum return count). A ‘current page’ is supplied, and the current page number is surrounded by the two sequential numbers before and after.

The number of numbers to return is determined by the total number of results to expect divided by the number of results to display per page. This is further affected by the current page displayed. Possible outcomes of the function could look like so:

[1, 2, 3, 4, 5, 6, 7, '...', 44, 45]        // 1-7 is the current page
[1, 2, 3, '...', 7, 8, 9, 10, 11, 12]       // 2 is the current page
[1, 2, '...', 10, 11, 12, '...', 44, 45]    // 8-39 is the current page
[1, 2, '...', 33, 34, 35, 36, 37, 38, 39]   // 33-39 is the current page

The function takes three parameters:

  • total_results (Required: The total number of results to expect, the end number.)
  • start_number (Required: The value/start number of the page currently displayed.)
  • results_page (Optional: The number of results to show for each page. Defaults to 10.)

The function returns an array containing the range numbers that can be turned into links..

This code is modified from this FreeCodeCamp article.

buildPagination()

buildPagination() takes in a number (the total number of results returned from what ever search query you ran), and builds the HTML for the page numbers and links using the pagination() function.

Usage

To use these functions, call the buildPagination() function on page load, and put a script tag in the HTML page where it should be used. It should go at the bottom of the HTML page. In the code below, "200" is where you can put the total number of results returned from the search query.

<html>
<head>
<head>
<body onload="buildPagination(200);">
...
<script src="pagination.js" type="text/javascript"></script>
</body>
</html>

You can change three variables in the pagination.js file (located at the top of the file):

  • RESULTS_PER_PAGE = how many results per page you want to show. The default is ten (10).
  • SEARCH_RESULTS = the ID of the HTML element to use for displaying the search results. This is only used to display text when zero is passed to the buildPagination() function. You should probably have something in place to deal with zero results from a search query before you use this function.
  • PAGINATE = the ID of the HTML element to use for displaying the pagination HTML.

You can also call the buildPagination() function from a JavaScript file and feed the total number of results in dynamically.

Make the BEST of each day!

We’ve been introducing this idea of setting BEST goals to our kids, and they want a way to track it. So I whipped up this sheet to track two months of BEST goals.

Just write your goals on the right side of the calendar. Remember,

B = brain

E = exercise

S = spiritual

T = talent

Then track each day by writing in a B, E, S, or T if you worked on that goal. Simple, easy, progress!