Just a short, simple blog for Bob to share his thoughts.
10 November 2017 • by Bob • Health
Today I found out that I have a disorder called "Essential Tremor," and what I want to know is: who the heck names a disorder with "Essential" as part of the title? There is nothing about this disorder that seems essential. A much better name would be something like "extremely-annoying shaky limb disorder." Nevertheless, I have a deeply-disturbing feeling that nothing will ever the same.
Actually, I've known for months that something was wrong, but I didn't have a definitive answer as to what that was until now, so my wife and I chose to keep quiet about it. Knowing for certain helps, though; not just because I have a name to assign to the symptoms that I have been experiencing, but also to know that I don't have something far worse like Parkinson's Disease, which is fatal. (Note: The Essential Tremor page on the Mayo Clinic website has a great breakdown of the symptom differences between these two disorders.)
I first started experiencing symptoms well over a year ago when I noticed that one of my legs would start to shake. Sometimes my right leg would shake while driving - just enough to be annoying, although occasionally enough for me to ask my wife to drive. At other times one of my legs would shake while standing, and occasionally one of my feet would shake while supporting my balance as I was seated on a stool in our breakfast nook or when performing at church. However, over time my fingers started to shake, too. Sometimes my finger muscles would fire on their own and pull inward into my palm; on one such occasion the thumb on my right hand would pull inward every 30 seconds for almost a week. I soon discovered that if I shook my hands, they would continue to shake on their own, and tasks like pouring liquid from a bottle might result in uncontrolled shaking. In a few episodes, I would be performing a repetitive action such as typing on a computer keyboard or tapping my foot, but when I would mentally signal whichever limb to stop moving, the action continued on its own, and all I could do was watch in amazement as my extremities seemed to have a life of their own. As anyone can imagine, between typing on a computer for a living and playing various musical instruments as a hobby, I am typically extremely aware of exactly what my fingers are doing, and you cannot imagine how terrifying it was to watch my fingers simply quit responding correctly while playing classical guitar or some other delicate task. Needless to say, as my symptoms increased in both frequency and severity, my emotions quickly moved from amusement to confusion to concern and then alarm, and my wife progressed through many of those emotions as well as she witnessed my rapid decline during the first half of this year.
I started a diary of my symptoms earlier this year, and I had hundreds of episodes documented by August when I was finally able to see a neurologist who specializes in movement disorders. That being said, my neurologist quickly dispelled any fears of Parkinson's Disease and he prescribed medication for Essential Tremor, to which I have been responding rather well. There are some side effects, though, and a common effect is drowsiness. This led to a brief work-related experiment recently, where I was off my medications for a week or two due to long hours and a heavy work schedule; I couldn't afford the luxury of being tired, so I simply stopped taking my medication. As expected, my symptoms quickly returned. However, when I restarted the medication my symptoms abated, so I feel pretty confident about my current course of treatment. That being said, stress exacerbates my condition, so I've had to have a talk with my boss about changing what I do; we'll see how that goes in the months ahead. (Microsoft isn't known for being a stress-free environment.)
So what does all this mean? For now, it means that when I behave myself and I stay on my medication, I am usually symptom-free. I have good days, and I have bad days - but thankfully the good days far outweigh the bad, and even when I have a bad day, it's nowhere near as bad as when I wasn't on medication. Occasionally I'll be playing something intricate on the guitar and it simply falls apart; sadly, I'm learning to live with that as a part of my new reality. However, I try to be an optimist, so I told my wife that I have an unexpected benefit from all of this: whenever I play something incorrectly on the guitar now, I can blame it on a tremor, and no one will ever know if I'm telling the truth or if I just suck at the guitar. ;-)
19 October 2017 • by bob • Military
Someone posted to Facebook that he liked going on Temporary Duty (TDY) when he attended the Army's Primary Leadership Development Course (PLDC). I'm not sure where he was sent for PLDC, but I had to attend the 3rd Armored Division's school, which was notoriously awful. However, PLDC was required in order to become a Non-Commissioned Officer (NCO), and therefore it wasn't TDY for me, but I had to attend if I wanted to be promoted.
With that in mind, here is the response that I posted to Facebook:
3rd AD PLDC in Butzbach was pretty bad.
We started out with 320 students and graduated with only 240 - they threw out 33% of the students for the most-ridiculous of reasons; I watched the cadre as they literally yanked students out of the class for looking sideways in a chow line and tossed them from the program.
I had an instructor tell me on day one of PLDC that he personally hated my MOS; he promised to make my life a living hell because of it, and he delivered on his promise. I got lots of crap for my MOS, and I was assigned to an extra cleaning detail every evening with another person in the same MOS.
The cadre used sleep deprivation for the duration of the course; so lights out was at 2400 every night, followed by reveille and morning PT at 0400. (Although everyone stayed up for at least another hour or so each night shining boots/shoes by flashlight and ironing uniforms.) Rooms had to be perfect for inspections, so no one ever used their wall lockers or slept in their beds; we slept on the floor next to the bunks and hid the clothes we wore in rucksacks.
I attended in January, 1990, and as you might imagine - German winters can be quite cold. Because of that, I developed a debilitating case of Trench Foot during our week-long bivouac ("field problem") because my feet (and every ounce of clothing) were continuously soaked for several days and exposed to temperatures below 45 degrees. One of the instructors caught me limping, and despite my insistence that nothing was wrong, he forced me to go see the medic. I had severe blisters all over my feet, and after the medic applied copious amounts of moleskin and bandaged my feet, she said: "I'm supposed to report this, but they'll bounce you from the course and you'll have to start over. So do your best to pretend not to limp." (I lost the feeling in my toes for a few weeks, and after I returned to Fulda I walked with a limp for the next several months.)
Although to make matters worse, our bivouac happened to coincide with the "Burns' Day Storm," which was - according to Wikipedia - "one of the strongest European windstorms on record." (http://bit.ly/2gQHNnM) Gigantic trees were being knocked over everywhere and literally crushing tents, so with huge branches falling from the trees around us we had to hurriedly break camp and expeditiously evacuate from the forest before someone got injured or killed.
Despite all of that - I had the 2nd-highest GPA for the course and was one of only five students to graduate with honors. (I was promoted to E5 upon graduation since I had already made my points.)
PS - If the military taught me anything, it's that I can push myself to persevere through conditions that I never thought possible.
19 September 2017 • by bob • Music
It was on this day 20 years ago that Rich Mullins was killed in a car accident on his way to a benefit concert in Kansas. At the time of his death, Rich was only moderately popular and had never won any awards - not even for his internationally-famous worship songs that are still sung in churches throughout the world.
The exact cause of the crash that took Rich's life is still unknown, although you can read the details about the crash online. That being said, I will never forget how I learned about Rich's untimely death. My daughter and I were driving through the empty deserts of west Texas on our way home to Dallas after attending a youth conference in Tucson, AZ. I had been channel surfing on the radio and trying to find something to listen to, which was rather difficult since we were out in the middle of nowhere. I discovered a radio station that was playing a song by Rich Mullins, whom I had always admired, and I remarked to my daughter that we needed to see Rich in concert whenever he came through Dallas.
After the song had ended, an announcer came on the radio and delivered the news that Rich Mullins had just been killed in a car accident. My daughter and I were both stunned, and for some reason I found myself crying a lot over the next several hours as we continued our drive home to Dallas. (This has always been a mystery about myself for which I have yet to find an acceptable answer: why was I so upset about someone whom I had never met? It has been 20 years, and I think that part of my emotional makeup will remain unsolved, but to be honest - I'm not too worried about it.)
Nevertheless, I often wonder where Rich's career might have gone if he had not passed away at the young age of 41. He tended to be openly blunt about sin and judgmentalism within the church, which is one reason why he was largely overlooked and often ostracized by the "Contemporary Christian Music" industry until after his death, (when the establishment was suddenly forced to deal with the reality of their hypocrisy). With that in mind, if Rich were alive today, he would probably still be living in veritable obscurity in a hogan on the Navajo reservation in northern New Mexico, where Rich was working as a music teacher in self-imposed destitution after taking a voluntary vow of poverty.
If nothing else, Rich Mullins was certainly unique; I still miss him and his music.
10 September 2017 • by Bob • Music
I used to live in the Dallas Forth Worth area, which helps form the lower band of the Bible Belt. While we were there, my wife and I were fortunate to have a wealth of local Christian radio stations and concerts to choose from. It didn't matter which subgenre you preferred: pop, rock, gospel, praise, etc.; there was always a radio station for you to listen to.
However, after moving away from that region, we have been forced to suffer through the following syndicated options:
All three of these syndicated radio stations continually spew never-ending streams of utterly forgettable music. The playlists for these stations often consist of unimaginative and trite originals, or generic attempts at copying secular music genres (yet falling several years behind what is current).
One of the most-common problems the Christian music genres face is endemic to Christian music in general, and this is the constant insistence that "the lyrics are more important than musicianship." This mindset is, of course, a ridiculous proposal. Not only does it completely ignore Psalm 33:3, but it means that the bulk of Christian music cannot be taken seriously; because if the people who are creating Christian music cannot take their craft seriously, then no one else will.
That being said, the Christian music industry is just that - an industry. And like it's secular counterparts, the Christian music industry attempts to crank out hit after hit in an effort to prolong their revenue stream. Let me be clear: I am a capitalist at heart, and I have no problems in principle with anyone who chooses to make their living by sustaining a successful product line. However, those responsible for producing Christian music fail to realize that by turning out an endless torrent of pedestrian drivel, they are putting themselves out of business. I guarantee that fewer and fewer people are buying Christian music because - to put it bluntly - most of it is crap.
While the Christian music industry is afflicted with serious problems with regard to a general lack of musical inspiration, a willing accomplice to Christian music's crimes against itself are the syndicated radio stations who continue to cycle through hideously short playlists of repetitive melodies and prosaic, middle-school rhymes. I ask anyone who listens to Christian music to answer these questions honestly:
In closing, there are thousands of wonderful Christian musicians around the globe, but chances are good that you'll probably never hear them. The people at the helm for charting the course of the Christian music industry are not interested in talented musicians; they are far too preoccupied with trying to produce next year's crop of bland and predictable "hit makers." In a like manner, if you tune into any of the syndicated radio stations that I listed above, then you'll have to endure hours of songs from Chris Tomlin, Matthew West, tobyMac, and something from MercyMe or Casting Crowns, (who are secretly the same band anyway... yes they are, yes they are, yes they are).
UPDATE: The following comedy video from John Crist perfectly illustrates a lot of what's wrong with contemporary Christian music these days:
HOW IT'S MADE: Christian Music
https://youtu.be/bwwhkKPEieE
04 August 2017 • by Bob • Batch Files, Scripting, FFMPEG, Audio Editing
I recently ran into a situation where I needed to adjust the pitch of an MP3 file for a song that I needed to learn. The problem was that song was recorded in a specific key, and I needed to play the song a half-step different. Of course, rehearsing in the original key and transposing on-the-fly is pretty trivial, but sometimes I prefer to learn a song in the key which I will be playing.
In the past I have always used a tool like Cakewalk Sonar to load the MP3 file, adjust the pitch, and then save out the adjusted audio. But I thought that was far too prosaic of an approach; I wanted a way to script the pitch change. This got me thinking about one of my favorite tools: FFmpeg.
I have mentioned FFmpeg in previous blogs, and it's one of my favorite tools; I use it almost every day for one purpose or other, and I have a large collection of batch files to automate various tasks. But unfortunately, I didn't have anything for adjusting audio pitch. That being said, I have done a lot with various FFmpeg audio and video filters, and after a little while of sifting through some of the various settings I came up with a way to easily change the pitch for an MP3 file. (And if I ever need to automate a whole directory of MP3 files, it would be simple to update this script with a loop.)
Here's the secret to the way this works - there are two audio filters that I am using:
So the trick is to use these two filters inversely; in other words:
With that in mind, I pulled out one of my favorite math constants: 2^(1/12), which is roughly 1.0594630943592952645618252949463. You might recall from some of my other blogs that this is the value by which every pitch in Equal Temperament is derived; in other words, that value is used to create every note in the chromatic scale which is used throughout the planet.
Taking that into account, I looked at the filter settings that were possible for use with FFmpeg:
The math is a little weird, I'll admit - but it's pretty straight-forward. And here's the great part for you: I've already done the math, and I've written a batch file which defines a set of constants that can be used in batch files to script the raising or lowering the pitch of an MP3 file.
Here's the code for the batch file:
@echo off set TMPFILE1=InputFile.mp3 set TMPFILE2=OutputFile.mp3 set RAISE_PITCH_01=asetrate=r=46722.3224612449211671764955071340,atempo=0.94387431268169349664191315666753 set RAISE_PITCH_02=asetrate=r=49500.5763304433484812188074908520,atempo=0.89089871814033930474022620559051 set RAISE_PITCH_03=asetrate=r=52444.0337716199990422417487017170,atempo=0.84089641525371454303112547623321 set RAISE_PITCH_04=asetrate=r=55562.5183003639065662339877809700,atempo=0.79370052598409973737585281963615 set RAISE_PITCH_05=asetrate=r=58866.4375688985154890396859602340,atempo=0.74915353843834074939964036601490 set RAISE_PITCH_06=asetrate=r=62366.8181006534916521544727376480,atempo=0.70710678118654752440084436210485 set RAISE_PITCH_07=asetrate=r=66075.3420902616540970482802825140,atempo=0.66741992708501718241541594059223 set RAISE_PITCH_08=asetrate=r=70004.3863917975968365502186919090,atempo=0.62996052494743658238360530363911 set RAISE_PITCH_09=asetrate=r=74167.0638253776226953452670037700,atempo=0.59460355750136053335874998528024 set RAISE_PITCH_10=asetrate=r=78577.2669399779266780879513330830,atempo=0.56123102415468649071676652483959 set RAISE_PITCH_11=asetrate=r=83249.7143785253664038167404180770,atempo=0.52973154717964763228091264747317 set RAISE_PITCH_12=asetrate=r=88200.0000000000000000000000000000,atempo=0.50000000000000000000000000000000 set LOWER_PITCH_01=asetrate=r=41624.8571892626832019083702090380,atempo=1.05946309435929526456182529494630 set LOWER_PITCH_02=asetrate=r=39288.6334699889633390439756665420,atempo=1.12246204830937298143353304967920 set LOWER_PITCH_03=asetrate=r=37083.5319126888113476726335018850,atempo=1.18920711500272106671749997056050 set LOWER_PITCH_04=asetrate=r=35002.1931958987984182751093459540,atempo=1.25992104989487316476721060727820 set LOWER_PITCH_05=asetrate=r=33037.6710451308270485241401412570,atempo=1.33483985417003436483083188118450 set LOWER_PITCH_06=asetrate=r=31183.4090503267458260772363688240,atempo=1.41421356237309504880168872420970 set LOWER_PITCH_07=asetrate=r=29433.2187844492577445198429801170,atempo=1.49830707687668149879928073202980 set LOWER_PITCH_08=asetrate=r=27781.2591501819532831169938904850,atempo=1.58740105196819947475170563927230 set LOWER_PITCH_09=asetrate=r=26222.0168858099995211208743508580,atempo=1.68179283050742908606225095246640 set LOWER_PITCH_10=asetrate=r=24750.2881652216742406094037454260,atempo=1.78179743628067860948045241118100 set LOWER_PITCH_11=asetrate=r=23361.1612306224605835882477535670,atempo=1.88774862536338699328382631333510 set LOWER_PITCH_12=asetrate=r=22050.0000000000000000000000000000,atempo=2.00000000000000000000000000000000 ffmpeg -y -i "%TMPFILE1%" -af "%RAISE_PITCH_01%" "%TMPFILE2%"
The only parts that you need to configure are:
There are, of course, hundreds of other parameters which you can pass to FFmpeg in order to customize how FFmpeg processes the audio, but those are way out of scope for this blog.
With that in mind, that's it for now; have fun!
19 July 2017 • by bob • Family
I stumbled across the following article recently, which briefly discusses an issue that our family has struggled with:
How to Forgive When It's Hard to Forget
Without going into too much detail, someone in our family hurt my children; and by that I mean this person really hurt my children - in life-altering ways. When someone injures your children, you want that person to be punished; you want them to suffer for the years of pain your children have had to endure. And yet for reasons I cannot explain, this person has never faced justice. We cut this person out of our lives as you would with any other cancer, but unfortunately that is the most that we can do.
That being said, our family is predominantly populated with Christians who want everyone and everything to be "forgiven," and for all of us to get along as one big, happy family. However, since the person who caused all of this pain and suffering has never changed, any semblance of restoration is probably never going to happen, for reasons that should be obvious to anyone who loves their children. But seeing as how it was only my children who were hurt, my wife and I have received countless comments from other family members asking whether we have "forgiven" the pernicious person who is the source of our family troubles. We have assured everyone that we have, which then leads to the questions about why can't our "lives go back to the way they were before all of this started."
First of all, the way our lives were before "all of this started" does not mean that the guilty party wasn't hurting other people; it was just happening to people outside our immediate family, and being swept under the rug because people chose not to see that it was happening. But that is a different problem for a different day.
The problem that currently faces our family is: what does it mean to forgive someone?
For some of our family members, "forgiveness" means a complete and total restoration. But that is a totally naïve sentiment, and it completely ignores or trivializes the suffering of those whose lives were damaged. My wife and I have tried to explain time and again that we have "forgiven" the person who wounded our family, but we have no desire to rekindle a relationship with the guilty party. To other family members this looks like "unforgiveness," whereas to me this looks like "common sense." One should not willingly subject their loved ones to a harmful person in the name of "forgiveness."
This is why I enjoyed the article that I mentioned earlier; in that piece, Dr. Cloud did a great job of summarizing the different parts of a restoration process, which I will paraphrase and adapt to our family's situation:
Forgiveness: This is letting go of what you believe is your right to punish someone for how they hurt you. My wife and I have done so; it was difficult, but holding onto unforgiveness is more harmful to yourself than it is to others. Or as a popular idiom states, "Holding on to unforgiveness is like drinking poison and expecting the other person to die."
Reconciliation: This is when the other person apologizes and accepts forgiveness; this has not happened within our family. In fact, the guilty party is still asserting that he or she has never done anything wrong, and recently demanded an apology for the years that he or she was denied access to our family. With this person's attitudes in mind, any hope of reconciliation is currently impossible.
Trust: This is when you allow a person whom you have forgiven back into your life. This may be a long, slow process, because it involves re-establishing your confidence that the person who hurt you will not do so again. In our family's situation, the person responsible for all of the suffering still insists no wrong-doing, so there can be no reasonable assumption that this person will not hurt someone again. Perhaps he or she will not wound someone in the same way as before, but still - I do not trust this person around my spouse or children.
Bringing this discussion to a close, we need to make a clear distinction between "forgiveness" and "reconciliation" in our lives. When we confuse these actions, we may subject ourselves to further injury. We certainly need to forgive those who harm us, but it is up to the other person to reconcile the situation and to re-establish trust. If the other person is unwilling to do so, then you are far better off without them in your life.
By the way, the following book by Jerry Cook is a good resource for anyone who is faced with difficult life situations and questions about forgiveness:
Love, Acceptance and Forgiveness: Being Christian in a Non-Christian World
UPDATE:
This blog originally pointed to the article How to Extend Forgiveness and Set a Boundary, but that article has been removed from Dr. Cloud's website and the Internet Archive does not have a cached version, so I replaced it with the article you now see.
14 July 2017 • by Bob • Ponderings, History
I was going through some boxes recently, where I discovered the following book...
My parents gave me this book in the early 1970s when I was eight years old, and I carried that book everywhere. Way back then, my life's ambition was to become a paleontologist, and this book had some excellent chapters on dinosaurs which I read over and over again.
However, my copy of this book was definitely showing its 45 years of age; it's binding had worn away to nothing, countless pages were torn... even though I didn't check, I'm pretty sure that some pages were missing. There is no doubt - this was a well-loved volume of knowledge back in its day; but now it was little more than a shadow of its former self, and a sad relic of days gone by.
Still, though, it's amazing the history through which this book persisted in my personal (albeit negligent) care... when I received this book as a gift, Richard Nixon was President of the United States, the average price for a gallon of gasoline was 39 cents, the United States was still embroiled in the waning years of the Vietnam War, Pink Floyd released Dark Side of the Moon, and the biggest single of the year was "Tie a Yellow Ribbon" by Tony Orlando and Dawn.
Nevertheless, this compendium of natural history knowledge had outlived its usefulness several years ago, and it was time to say goodbye. So with a heavy heart I unceremoniously dispatched my once-faithful companion to the recycle bin, where I hope that some part of it might wind up as another book which will spark another child's imagination in decades to come. Or perhaps that's just what I tell myself in order to feel a little less guilty...
24 June 2017 • by bob • Bicycling, Arizona
During today's 32-mile ride through the deserts on the east side of Tucson, I probably should have called it quits when the temperature hit 120 degrees on my GPS... but then again, I was out in the desert with nowhere to stop, so my choices were: 1) keep riding, or 2) die. Or as Winston Churchill famously remarked, "If you're going through hell, keep going."
Originally this was supposed to be my usual 40-mile Saturday ride, but I decided right before my departure to drop the 8-mile loop through Saguaro National Park. (Which in hindsight was undoubtedly a really good idea.) On a positive note, there appeared to be no other cyclists riding today, so I had the roads all to myself.
(PS - I didn't get a photo for when the temperature hit 133 degrees on my GPS because my cell phone shut down due to the excessive heat. Of course, my lack of cell phone meant that I was also unable to abort the ride and call my wife to come find me.)
20 June 2017 • by Bob • Guitar, Music
I had a song continuously running through my head, and as I have done before, I decided to transcribe it in order to get it unstuck and move on with life... Tonight's song was "Unchained" by Van Halen, which was a perennial favorite of mine to play live back in the early 1980s. I used Guitar Pro to do the transcription and playback, and while the transcription isn't 100% it's pretty good for an hour's worth of work. Plus, I think I did a pretty decent job of dialing in Eddie's tone when compared to the original.
Note: I didn't transcribe the guitar solo section because the intro, verses, bridges, and choruses were enough to get the song out of my system.
But you never know, I might come back to this later...
UPDATE:
A few years after my original post, I looked over my transcription, and what I called "Bridges" probably should have been called "Pre-Choruses." Oh well... it's a free transcription, so deal with it.
15 June 2017 • by Bob • CPP, Programming
Trying to get someone else's 20-year-old C++ code to compile is like trying to translate hieroglyphics without the use of the Rosetta Stone...
"Safe strings to prevent buffer overruns? Bah! Who needs 'em..."
UPDATE: True story - the original C++ code which was the impetus behind this blog post was written sometime around the release of Visual Studio 5 or 6, so the way that I eventually managed to get this code to compile on an up-to-date version of Visual Studio was to do the following: I set up a virtual machine in Hyper-V running Windows XP, installed Visual Studio 6.0, and compiled the code. Once I had it compiling with no errors, I kept updating the version of Visual Studio and recompiling; e.g. VS.NET, VS2003, VS2005, VS2008, VS2010, VS2012, VS2013, and finally VS2015, (which was good enough for what I needed to accomplish). As I upgraded each version of Visual Studio, I fixed whatever errors were introduced on a version-by-version basis. A few hours later and all the errors were gone, and the original program worked great.