Google Analytics

Saturday, August 12, 2017

Stone Mountain

I haven't been to Mount Rushmore. Not yet. I have been to the Mount Rushmore of the South, Stone Mountain, Georgia. It was on one of the trips down from Michigan to see my aunt who lives outside of Atlanta we made when I was a kid. I don't remember much clearly about the trip, nor exactly how old I was, probably eight or ten. I do remember after learning that the enormous sculpture on the mountain is of Jefferson Davis, Robert E. Lee, and Thomas "Stonewall" Jackson, that they should have just added Darth Vader as well. If you were going to have a big sculpture of those three villains, because that is how I was brought up to think of them, you might as well add the worst villain I could think of at the time. What were these people down south thinking? It also happens that Stone Mountain was the place of the rebirth of the KKK in 1915 shortly before they began work on the huge sculpture.

Since that time I've learned a lot more about the Civil War and the men who fought it, as well as about human nature as well. The reasons for the war were complex. I'm not one of those who will say that it really wasn't fought over slavery; it was. But the Confederate army wasn't comprised of plantation owners either. It was made up largely of men who owned no slaves at all. Robert E. Lee was offered command of the Union army before turning it down to fight for his home state of Virginia, and his own views on slavery were extremely complex. Interestingly, he emancipated the slaves at his Arlington plantation, just days before Lincoln issued the Emancipation Proclamation, slaves which had come down as an inheritance, which had originated with Martha Washington, to his wife. This wasn't out of the good of his heart, though, as he was acting as executor for the estate of his father-in-law who had said in his final will they should be given their freedom.

The institution of slavery is a horrible scar on our American history, one that we will never be rid of, no matter how much we would like to forget it. I think it is important to learn of the horrors of it, not because we are otherwise doomed to repeat our history. Those lessons though are what make me sensitive to the hatred in the current rhetoric of White Pride and this new nationalism. What I hear in the the rhetoric of these "alt-right" protesters of today is that of the plantation owners saying that "really this is about states' rights and our niggers are better off here where we take care of them than out in that world they are just not equipped to manage."

There was talk for a while that the bas relief of Davis, Lee, and Jackson should be blasted off the side of Stone Mountain. Personally, I hope it stays. It is a provocative piece of art in a beautiful, yet equally provocative setting. I hope future young visitors will visit and wonder why someone thought these men were important enough for such a memorial.

The catalyst for the protests in Charlottesville, VA, is apparently the decision by the town to begin removing Confederate memorials including a statue of Lee. I can see the arguments for and against removal of statues like that. I said above that I'd hate to see the sculpture at Stone Mountain go, but I equally would not be comfortable living in a town that had a statue of Lee. I believe it best left to the individuals who live in the community to decide what they want their community to be like. It's disgusting that the protesters who have congregated in Virginia are largely not from there and include groups from my home state of Michigan.

Those protesters are feeding off hatred. The entire alt-right, neo-nationalist movement is feeding off hatred. I say, don't give in to this hatred. It's difficult, because I can't think of those protesters down there without hateful words coming to mind. Change doesn't come through hatred though. Real change comes through loving compassion, regardless of how difficult that is to find. I leave you with the link to this story, which is more profound given the events of today: http://www.huffingtonpost.com/entry/black-man-daryl-davis-befriends-kkk-documentary-accidental-courtesy_us_585c250de4b0de3a08f495fc.

Tuesday, July 18, 2017

Ghost Story - Grandma's Visit

This last ghost story I have I may need to wait on publishing. Again, I feel like I've written about this one before, but I'm not quite sure where it is. I'm pretty sure I wrote about it the day or so after it occurred, so that version would be much more accurate than this. Though, I also have to think to myself, is it a real ghost story if it doesn't evolve in some way with the teller?

I wasn't very close with any of my grandparents growing up. I'm a little envious of those people I know who were, especially now that all my grandparents are gone. I didn't even particularly like my maternal grandmother. She was very religious, and it came off a little phony, especially when I was older. I mean, I knew her heart was in the right place, but I could only put up with her in small doses. Not like my Papa, her husband. He was a Pooh bear looking man, roly-poly with a big belly and charismatic with an easy laugh. He was religious too, but from him, well it didn't sound "preachy". My grandmother was "preachy".

Grandma Pieschke died just about a year after Papa. Before she did though, I had the opportunity to have this amazing morning with her. I guess it was the weekend of Papa's memorial service. Grandma wanted to go to church, and everyone was occupied with all the arrangements being made. She couldn't drive herself and to that point I had had no point in any arrangements. Feeling both like I wanted to help out and like I wanted a little time to be with my grandmother, I offered to take her.

Like I said, it was an amazing experience. I got to see both how much my grandmother meant to the people in her church, but also what grace that woman had. That's the best word for it, grace. She accepted everyone's wishes, introduced me around, and exuded this strength that was incredible. It was incredible because I knew how much she was hurting, even right underneath that tough exterior. It was also incredible because she was such a tiny, old woman and these other people were gaining strength from her. I was gaining strength from her.

Anyway, about a year and a half after Grandma passed I had this dream about her. As I wrote this post I came up with where I had initially wrote about it, about the dream, so I will post it here without any sort of enhancement. I have to say, though, that what I didn't mention at the time I wrote this was how real the dream was. This was one of those dreams that afterwards I had to ask myself whether it was real or not. Of course it wasn't. To this day, though, it feels as if the day in the dream were every bit as real as Grandma hanging on my arm as we left her church that morning.'

I will always have this feeling that she stepped over from death to remind me of what was really important. You really have to understand, though, how unusual the dream was... I don't think I can convey it. If it had been about my paternal grandmother it would have been something, because we were closer. Frankly, I liked her more. There's just no reason that my maternal grandmother would show up in a dream this way to me.

-- I had a dream last night that I spent the morning with my Grandma Pieschke, and then we went to lunch. Later in the day I went to the bank near our house and was surprised to find my grandmother working there. I talked to the other workers there, and they all said what a joy it was to work with her. Before I left the bank I remembered it was Grandma's birthday, but I stopped. She couldn't be here for me to wish her Happy Birthday because she had died last year.

Well, it must have been about quitting time because then Grandma and I were walking home together. I told here that I meant to tell her Happy Birthday, but I couldn't because, and here I paused and best I could said, "Because you're dead."

"I know," she answered.

"So I am just imagining this then?" She didn't answer that, just kept walking. "But what about the other tellers? I was talking to them about you, and they were talking about your baking. We were eating your peanut brittle." Still nothing. "Was I just imagining them or their reactions to me?"

"Does it really matter?" she finally said. "We got to spend the day together and have a marvelous lunch."

Ghost Story - The Books

I had to look back to see if I've blogged this before. I don't think I have. If I have, I guess it will be interesting to see how this version compares to how I remembered it before. This is a real ghost story, though. Real in the sense that it's true, at least it is true as I remember it. There is no fabrication here, but the story is only as factual as I can remember. And since I'm the one telling it, and there is really no way to check the facts of the story at this point, it is as true a story as it can possibly be. Just like any story is, really, ghost story or not.

So after my first divorce, I was still living in my house in Westminster, CO. I don't know if living there is really right. It was more like I was just occupying the house at 8882 Lowell Way while I was getting drunk and playing video games between going to work and going to the bar. I didn't have cable. Couldn't afford it. Well, I couldn't afford it and afford to go to the bar and get drunk, so I gave up cable. This conveniently also gave me a reason to go to the bar, to catch sports events on their t.v. Like I said I also played a lot of video games, XBox to be more explicit. I also watched a lot of movies from Netflix.

My drink of choice at the bar was Bud draft. My drink at home was bourbon, Jim Beam if I could afford it and Early Times if I couldn't. So there were a number of mornings that I would wake up in the morning on my living room floor and be in the 7th inning of a 3 game series in Major League Baseball and not remember how the first two games went or be at the home screen of a dvd movie that I had started and passed out halfway through.

In my living room was a little bookshelf, sort of near where I sat and played games. The amusing thing to me now is that little bookshelf was like a fold-up $15 thing that may have come from IKEA but on it were all my "nicest" hardcover books, some very old Dickens, some first editions from authors like Nabakov and Chuck Palahniuk. So, being as I wasn't exactly in my best mental state, I barely took notice when the books on its shelves would end up "put back wrong". If you have books, I mean, if you really "have books" that you love, then you know what I mean about being put back wrong. Why are these ones in a series out of order? Or why is this Dickens down here with Leon Uris? That sort of thing. But I began to notice. Then they were back upside down or backwards. Regardless of how drunk I was, why was I putting books back backwards? Plus I began to not drink as much, trying to pull myself up by bootstraps and actually making it upstairs to my bed at night.

There was a weird thing about this house. It was new-ish. It had been built only a couple years before Jessica and I bought it, but had actually never been lived in. It was one of the first built in our neighborhood immediately after the model home that the backyard backed up to. On eof those cookie-cutter KB homes that is a great starter home, but you begin to notice that the doorways aren't quite plumb after you live in it a while. That wasn't the weird thing though. That's pretty much normal now. The weird thing is that I felt this old woman there, like a ghost. I never saw her; I felt her. But also sometimes those things happened like the stereo or t.v. volume turning up on their own, lights that flickered, things that had some rational explanation, but just the feeling that they were caused by some old woman seeking attention.

The weirdest thing was this clock I had out the back door. It was something I had picked up for free or cheap, maybe I had brought it home from Sharper Image where I was working. It was this outdoor clock with a thermometer and some pictures of different birds on it. It was always an hour off. At first I thought it was just slow or that I had forgotten to reset it after daylight savings or something. But no matter what I reset it to or when, I don't remember it ever being something different than an hour slow of the real time. I swore the old lady was resetting it.

So one night, I was there playing video games and suddenly very annoyed by some books that were out of place, several of them upside down on the shelf. I sat and reordered the books, making sure they were all in some rational order and right-side up. I had never made a case study of the outdoor bird clock but I set about doing so with the bookcase that night. I had a couple drinks but still remember going up to bed, eager to come down and see what happened to the books the next day.

When I did come downstairs the next morning and looked - Every other book was upside down. They weren't in some different order nor put back with spines in. Simply every other book on the shelves was now upside down. Even now I have to laugh at how clever it was - It didn't just take off all the books into a pile. It didn't just move a few books and put a couple back upside down as if to keep me guessing. That old woman said to me, "Oh, you want to know if I'm real or not? How's this?" and left behind a sign that was completely unmistakable.

An Invitation to a Run

I just finished Haruki Murakami's book, What I Talk About When I Talk About Running. (It is a little strange to me that the first book I would get by him would be his memoirs on running, but that's what was available and how my thoughts have gone lately.) I was surprised at how much Murakami actually runs, or how much he ran ten years ago when he wrote the book. I expected something by an author who regularly ran around 3 miles a day, occasionally ran a 10k, and once did a marathon. No. Murakami has been running long distances regularly for as long as anyone I've heard of, probably around forty years now. At least at the time he wrote the book or journal entries the book was based on, Murakami was doing forty or fifty miles per week and had done a marathon close to every year for 25 straight years. Nor is he slow, not someone who plods through a marathon in over six hours. He was regularly running marathons in the 3:30 - 3:45 range, and didn't run over four hours until the time he was writing the book, well into his fifties.

Anyway, even though Murakami wrote about how he likes running for how it affords him time alone, I had this urge to write him and say that if he were ever in Denver that I'd love to run with him. (He does mention running in Boulder in the book.) Even to me, this seems like a very strange invitation to extend. I too really like my time alone when running. It's one of the things that makes it an attractive pursuit for me. I don't need to talk to anyone. However, I also like feeling a part of a group, even though I am not so open. I'm always invigorated by entering a race and being around a lot of other runners, even though I say maybe three words to any one person and definitely don't hang around post-race to socialize. It's still nice being around a lot of other people who can empathize, or is it commiserate, with what brought me there to that start line. Anyway, I feel like Mr. Murakami would understand my invitation, and may even take me up on it.

Not that I wouldn't have tons to talk about with the author. I would have tons to talk just about running or how he got started writing or just about him running a bar or Japan compared to the U.S. A million things. But I think that's why a run would be so good. I wouldn't be obligated to say much at all, and he wouldn't feel obligated to answer me. We are just running, after all, not doing an interview. Of there were conversation at all, it would come up naturally. There would necessarily be an economy to the conversation: we would only have so much distance and so much breath to spare. Frivolous conversation just would not do.

That's maybe why I've had the thought several times lately that I would love to just invite some people on a run if they were closer. If there were any conversation, it could be limited to as little or as much as any of us felt to offer. Pressure is transferred away from the conversation to the act of running. Getting through the run is the primary focus; the conversation is secondary. At least it can seem that way.

I think this is why guys like to do business over a game of golf or over a couple beers. If the stated mission is to play a game of golf, then at some point the 18th green is reached, the game is over, and the day is a success whether any business was actually accomplished. If we go out for a couple beers and not a word is said between us, well we can still hang out the Mission Accomplished banner.

I like the idea of a run though. There's a little more purpose there. I am pretty bad at small talk, mostly because I abhor it. It really isn't the other way around. I'm bad at small talk because it just grates on my soul, and not the other way around. With drinking there isn't that forced economy. If there is some more serious words to be said, we aren't limited by time. Just the opposite: The longer we sit and the more beers we drink, the easier it will get to have some serious conversation. Not with a run. There is a set distance, so if we're three miles into a five mile run, you better spill if there is something to spill.

Yeah, I like the idea of a run.

Monday, July 17, 2017

A Ghost Story

I only did a short run last night. The day had been hot, and I had already run almost every day this week. Also, I was on call for work. Technically I'm not supposed to be more than 15 minutes from being able to get online in response to some technical issue with Nordstrom's credit card application system. Normally, this isn't a big deal. In the absence of some new software being pushed out, we don't get many issues, and the ones that do occur are usually resolved quickly by rebooting a server. However, we are in the midst of our biggest days of the year in terms of credit applications, as these are the days leading up to our yearly "Anniversary Sale", and we had already had issues over the past couple days because of the significant increase in traffic. So a short run made sense all around.

It was twilight when I started my audio book going in my headphones, What I Talk About When I Talk About Running by Murakami, stepped off the porch and started the timer on my phone. To be very technical about it, it was more like civil twilight when I went out. The sun had gone down below the mountains way off to the west, and even then would probably be below the horizon had the mountains not been there. There was no sun, but still some residual light and the air was still pretty warm. I went a mile and then a little more before turning around at the park by the local elementary school. This stretched out my short run a bit beyond the two miles I had done recently. I was running in my Vibram Five Finger shoes, minimal "barefoot" shoes. You can't just suddenly do long distances in them - your calves will be screaming the next day. You need to gradually build up the distance in them. I have only recently really started rebuilding the foundation of my running as a whole lately.

Just after the voice in my headphones told me I had gone a mile and a half I swore I heard a dog. I'm always a little wary about dogs when running in our neighborhood. People work out in their garages, even at night, and for some reason their dog will just sit and watch when a stranger comes running by in the dark. I've had to deal with dogs coming out and aggressively defending their territory on runs. It's never been a problem for me, though. I just stop and wheel around on them and shout, "Go home!" Every dog I've dealt with like this has been incredibly surprised. Every dog but one, a cute, skinny pit bull pup that just wanted to run along with me. Your results wheeling around on aggressive dogs may vary, but it works for me. 

Anyway, dogs aren't unusual, but I must have just been hearing things because there was no dog there. Dogs that aren't there aren't unusual for me either. It sounds weird, but on a number of times I've felt that I was being followed by a dog, just somewhere behind me. Just an eerie feeling. One time I had the feeling though, and there was a coyote loping along with me, maybe 30 yards off into the undeveloped field. No dogs and no coyotes were with me tonight, not even the eerie feeling I was being followed, just the thought I heard something, a thought that came and left.

Like I said, the air was still warm when I left. It was now "nautical" or maybe even "astronomical" twilight when I turned the corner back onto our street. Nightfall. Still enough light to see the bats circling above feasting on mosquitoes, but you could also see the first stars, Venus anyway. It was still a warm night but upon stopping I realized I was drenched in sweat, the night air feeling good on my back and forehead but still warm enough that I didn't have a chill.

I gave myself a few moments to sit on our porch swing and cool off. Then I went into the house, poured myself a glass of ice water, and took another few minutes to let myself cool off before heading to the shower.

As I stepped out of the shower I heard a drawer open in the kitchen, or shut I guess, because I only heard the sound once. No one was home though, were they? I listened closely now and heard a light switch click off and someone walk, I presumed, from the kitchen to the family room. Just as the footsteps stopped, our dog Bear launched a series of barks. Actually, it sounded like they walked the other way, from the family room to the kitchen. That didn't jibe though with the sequence of the light switch and then the walking.There is a regular light switch in the kitchen, but in the family room is a lamp with a switch on the neck as well as a dimmer switch on the wall for the overhead light. Neither sounds like what I distinctly heard as a light switch being flipped. I must have just heard the footsteps wrong.  Jen must have come home early while I was in the shower, had made herself something to eat and had now settled into the couch.  I waited for the television to come on, but it didn't. She's sitting on the couch with her nose in her iPad checking Facebook until I come out. I was going to go to bed, but maybe she'll convince me to stay up and watch the Game of Thrones season premiere. 

I almost called out "Hi!" but just figured I'd walk out and say, "I'm glad you are home." And then when she said, "You are?", I'd say, "Yeah because it would have been very strange if I heard someone walking around and came out of the bathroom and it wasn't you."

I toweled off pretty well, slid on the athletic shorts I've been using to sleep in and walked out of the bathroom. The lights in the house were still off. Jen usually turns on a bunch of lights when she gets home. I had heard her flip the kitchen light back off, so maybe she's happy just to sit in the almost dark. There was no glow from an iPad when I poked my head around the corner to look in the family room. I was a bit perplexed as I walked to the front room to check out the front window for her car in the driveway. Wasn't there. Had she come in and left again, maybe to run to the store? Maybe she was getting popcorn for the GoT premiere. No, I would have heard the door for sure.

At this point, I have to admit I half-hoped she was playing some relatively elaborate prank on me and was going to jump out of a dark corner to scare me. I played back the last few minutes in my mind. I had heard the drawer. Our drawers are old. There is this distinct sound they make. Even if I had misheard that, I had definitely stopped to listen and heard the light switch and the footsteps. I had heard those right? Maybe it was the dog? No, I had heard the light switch, and then the clearly human footsteps, because it was only after those that I heard the dog bark and then clearly a different sound of the dog pattering across the floor.

I texted her, just in case there was some small chance this was still some ruse. "Remind me to tell you about my ghost story," I texted. "Oooh yes! Can't wait!" Jen responded. She was still at work. She wouldn't be home for several hours yet. 

Saturday, July 15, 2017

Waiting for Born to Pull Weeds to be published

I'm almost finished with Born to Run (the book by Christopher McDougall about ultrarunning, not the Springsteen biography). It's a bit premature to say that it is life-changing. It definitely changed my week, though. I will just sidestep the controversy about whether runners should just ditch the running shoes. From personal experience, however, I do side with the idea that less shoe is better and that the shoe companies have worked to destroy what millions of years of evolution have practically perfected. (Full disclosure: I haven't tossed my New Balance 860's, but I have changed [long before reading the book] to a forefoot gait and alternate with shorter runs in Vibrams, and all the physical issues I had before with running have disappeared.) The main thing I took away from the book, however, wasn't about footwear or diet or gait. It was the simple idea that to be a better runner, one just simply needs to enjoy running.


I also just recently finished reading Mark Manson's book The Subtle Art of Not Giving a Fuck, and one of many quotes I took from that was, "Action isn't just the result of motivation; it's also the cause of it." It's what we've long referred to as "the tail wagging the dog". Manson talks about the cycle of inspiration-motivation-action. Usually we wait for some sort of inspiration to strike us before we get motivated to go and do something. Once we end up acting on that inspiration we are often struck with more inspiring thoughts, more motivation, and urged to more action. His point is that instead of waiting for some inspiration, we should just start off by doing something, anything, and letting the inspiration and motivation come to us as a result. It doesn't even matter if the action is completely wrong thing, just so long as you get started; you'll get back on the right track in short order. For writers this might mean getting down "200 crappy words" in Manson's example. Runners often say that the first step is the most difficult step of a run.

I've known this idea, of course, long before I read either Manson or McDougall. I knew if I could just start working out or just start a run I would feel better once started, even though I felt awful about actually getting started. With that attitude, though, I was really struggling to run on a consistent basis. When I was honest with myself, I was really struggling to follow through on anything with a consistent basis. Something else McDougall says in his book though, also really resonated with me. We westerners, well maybe he said Americans specifically, are always looking to get something, to gain something from our actions. We run to lose weight or be healthy or even to qualify for the Boston Marathon or simply lower our time. Everything I was doing, not just running, was to gain something.

I honestly can't think of something apart from binge-watching "The Wire" that I have done recently simply for the fun of doing it [Well, and skiing... I definitely just ski because it makes me happy -- though two or three times in a winter isn't going to cut it]. I've either felt obligated to do something - going to work, weeding the yard, even taking a week off of work for vacation - or was looking to gain something - stopping drinking, going for a run, taking online programming courses. Not that doing all those things wasn't for good reasons, and not that I didn't enjoy my vacation or the runs or not putting up with the empty calories and lost memories due to drinking. My approach, however, my motivation was misplaced. If the motivation is because we feel obligated by some outside pressure, what happens when that pressure eases off? What happens when our own selfishness outweighs that outside factor. That sort of motivation just isn't as effective as motivation that come from within. Worse, if we are motivated by seeking some gains, there are two possible outcomes: we make those gains, get what we are seeking, or we don't. If we don't, we get frustrated. If we do make the gains, we are only led to want more. Get a promotion or raise and we want another. Lose five pounds and then we want to lose ten. Run a marathon in 3 hours 45 minutes and we try and get that time under 3 and a half hours. Win six Tour de Frances and we will do whatever it takes to win the seventh.

Do something because it makes you happy, though, and all the rest of the motivation works itself out. The narrator in one of my favorite movies says, "Fight Club became the reason to cut your hair short or trim your nails." I've already experienced the feeling this week. After my first couple of runs this week, runs that have been better than any I've had recently, I began thinking, I need to eat right so I can get back out there and run. I know it seems like I'm just trading one end for another, but the motivation is different. If you eat right because you really enjoy feeling healthy, good for you. I was trying to eat better because I felt like I was supposed to. That motivation came from without. Now I'm trying to do it as a means to an end that makes me happy.

After the revelation that happier runners are better runners that came from Born to Run, my next runs, like I said, were so much better than the other runs I've done recently. First, I shrugged away the idea that I was running to get a better time or lose weight. I mean, I'm still hoping for those things, but either decided or simply realized that those weren't the reasons I was running. Again I either decided or realized that I was running because I like to run. Suddenly I didn't care about time or distance. I didn't care how my legs felt, didn't even really notice. Admittedly there was still some tail wagging the dog going on. I forced myself to smile when my thoughts turned to getting tired. That action at least reminded me that I could simply slow down - no one cared what kind of time I turned in for a late Wednesday night run. Yesterday I even walked a bit, and the only times I've ever walked before was because I was "defeated", those times when the heat or wind or overambition forced me to stop running. I always felt awful for walking. Yesterday, I simply realized that running almost every day this week had sapped some strength in my legs. Twenty or thirty seconds walking would give my legs and mind a bit of a break in order to finish out the run strong, and I did.

Finally, even as I wrote this blog entry I began to think about those other things that really do make me happy -- writing, riding my bike, playing basketball -- that I haven't been doing because I've felt otherwise obligated by things that don't make me happy. Then I've thought about those things that I already do where the motivation has been skewed or misplaced somehow. As an eight year-old kid I used to sit in my room with a Timex-Sinclair 1000 computer hooked to a little black-and-white television, for hours inputting BASIC commands to get a line to march around the screen. I really do enjoy programming, but it became a chore. It became a means to not only put food on the table but also pay doctor and vet bills and put new cars in the driveway and buy bigger and better computers. I really do like yard work, particularly gardening and mowing the lawn. I've become frustrated though with the weeds and dry weather and chickens that eat all my tomatoes. Am I doing these things because I like to, because I need to, or maybe because they are a means to something else that I like?

Anyway, right now it's about 85 degrees, and I want to get a long run in. I have a feeling there may be some walking thrown in there, maybe even a good deal of walking. At least it will take my mind off of all the damn weeds though!

Friday, July 14, 2017

Introducing Mountebank!

I want to preface this next post with a bit of a disclaimer: The technical posts I primarily make tend to come from the point of view of someone with two thumbs (this guy) who is exploring some piece of technology new to him. I do it primarily for my own benefit. Having to create a blog post forces me to approach the subject in an organized manner rather than just going off and willy-nilly experimenting to no purpose. Secondly, I can document my own process as much for me to go back and diagnose issues I run into (see my last post) as it is to pass along that documentation to others I am working with. Finally, usually whenever I Google some troublesome issue no matter hwo obscure I think it might be, there are a couple developers out there that have run into the same or similar issue, and blog posts of others working through those issues have saved me a lot of time, if not my hairline. I feel like, no matter how small, maybe if I share, some other developer might find some little nugget that will help them get through some similar issue.

So if you're already an expert with mountebank and are looking for some new insight, you aren't going to find it here. Instead, I really hope you read through this series of posts and add your own insights or corrections, for there are sure to be some.

With that let me introduce (*some old-timey fanfare plays on a nickelodeon*) mountebank! Mountebank is an old-timey word for imposter or charlatan, a snake-oil salesman. In this context mountebank (I use MB for short here) is an open-source tool for impersonating related services in software testing. Automated testing of downstream service calls can, frankly, be a bitch. Yes, you can work out some mock, but service calls are way more unpredictable than a simple mock. What if the service or port is unavailable? What is the service returns some garbage response? How about creating integration tests dependent on some vendor service that you don't have a test environment for? These are the sort of things that mountebank can help solve.

MB runs on node.js, so it's simplest to intall it using with node package manager, though there is a separate install. I won't rehash the installation and first steps outlined in "Getting Started" of the MB documentation. To summarize it though, once you get it installed with npm, you can start it with the command 'mb' from the command line and see it working by putting "http://localhost:2525" into a browser. by default the api runs on port 2525. What the browser shows is the same documentation as is at the mountebank site.


Mountebank uses "imposters" to listen on a given port and react to requests with programmed responses. I say "programmed responses" as opposed to canned responses because, as we will see, there is a good deal of lattitude in supplying a response to any given request. 

Each imposter can have one to many stubs. A stub is a mapping of a request to a set of responses. A stub uses predicates to match against the incoming request. The predicate defines a set of information and if the incoming request matches the incoming request, then the next response in the set of responses defined for the stub is returned back to the caller. The set of responses is circular: MB takes the next response in line, returns it, and then puts that response to the back of the line. In this way you can impersonate a service that returns different responses for the same request.

To summarize the basic workings of using mountebank when testing, in your test setup (or test fixture) you start the MB API, then add an imposter and stub, make a request to the imposter service and then evaluate the response it returns.

In our projects we are generally handling applications for credit cards. One of our downstream services is a vendor who makes the decision on whether an application qualifies for a card, what sort of card, and how big of a credit line. We use MB to "fill-in" for the outside vendor service. We can use predicates to match on the (fake) social security number on an application, or the user's income, for example, and return any of a number of responses based on what our vendor would actually send.

In my next post, I'll actually demonstrate a service under test along with the related setup for some MB imposters.

There is a .Net library for utilizing the MB API out there called MbDotNet. I tried it out, but off the bat saw that it wasn't going to be adequate for the testing I wanted to do. You may have more luck. It's definitely a project I would be interested in contributing to, because I'm a true believer in using MB, and would love to make it easier for .Net devs.

What is Yacht Rock? Not very smooth of you to ask, my man.

Taking a break from my other blog post to put down a few words about Yacht Rock. If you don't know, each summer SiriusXM dedicates a channel to the smooth listening favorites of the late '70s and early '80s. Think Christopher Cross and Michael McDonald. This is my jam, especially as background when working from home on a hot July day.

Of course there are just so many incredible easy-listening hits that one decade can produce. Also, just as there is only so much Eazy-Cheese that a person can injest in one sitting, there is only so much easy-listening that even I can take. Shortly after I told Alexa to play Yacht Rock this morning, "Escape (The Pina Colada Song)" came on, which is pretty much the anthem of Yacht Rock. I told myself, "Okay, once 'Escape' comes back on, that will be enough Yacht Rock for the day." Well, early afternoon here and it just came back on, so we'll have to switch and maybe have the Tour de France play in the background. It IS Bastille Day, and I'm about 4 or 5 stages behind at this point. Okay, maybe we'll just have to wait until this sweet Al Jareau jam is over.

(Edit: Guns N' Roses Radio is playing over on channel 41. Now playing: "Rocket Queen")

Mountebank Config File Issue and a Lesson At My Expense

tl;dr: Back up your stuff, and you have to create mountebank config files in something other than VisualStudio.

Okay, the first lesson to dole out for the day is to back up your blog entry drafts as you write them. I am currently going back through some projects we have been working on cleaning up and reworking tests to get better coverage (and finding some issues along the way, which has made this a very worthwhile excercise). In trying to get some tests working locally, I discovered they rely on mountebank, an incredibly handy code package that acts as a test double for downstream services. Tests were failing because I hadn't reinstalled mountebank locally since I had a crash about six weeks ago. 

So, I got mountebank re-installed. Some of the tests needed to be re-worked so. In doing so I ran into an extremely frustrating issue where MB just won't accept a configuration file. I was working from home, so my wife was suddenly an audience for the flood of expletives I can unleash at times while doing this job. After her admonishment and composing myself I realized I had run into this exact smae issue before. More on this later. I remembered I had even written down the exact nature of the issue before. I set about tryiing to find just exactly what had happened to what I wrote.

I remember thinking that it would make for a good blog post. Looking at my published blog posts, however, turned up nothing. Had I just saved it locally and then never published it? The crash I mentioned before was actually an issue with our corporate encryption software. Basically every file that I had created locally had been encrypted by the software, which then suddenly stopped recognizing that I was who I said I was and wouldn't decrypt anything. This included config files for software I used every day, which all then stopped working. Anyway, long story short, I lost basically everything I had written and only saved locally.

At one point I had sent out some notes to my fellow teammates on using mountebank. Maybe I had included my write-up for them. One sent me back that email, which included a couple links on getting started with MB, along with a note saying "I was looking forward to reading your blog post on it."  Argh!

So here I am re-creating that post along with the lesson for all to save those blog posts as drafts online, or somewhere where they will eventually be lost to corporate encryption perdition.

I'm going to make this a series of posts, building incrementally, since there is a lot of depth to mountebank that can be explored. With that in mind, I want to wrap this initial post up with a rundown of the problem I ran into once again yesterday,

You can begin running the mountbank API simply with the command 'mb' on the command line and then making a series of posts to it to set up the services you intend to impersonate. I've found for automated testing purposes it is simpler to pass a configuration file as an .ejs file. 

mb --configfile "C:/path/to/my/config.ejs"

The .ejs extension allows you to use javaScript and javaScript variables directly in the file, something to explore later. The issue is when you create this .ejb file in VisualStudio, VS does something to add additional info to the file which causes MB to choke on the file. MB will throw an error that the JSON in the file is incorrect. You will then spend the next half hour looking for stray brackets or misplaced commas and then copying in the content of previously-created files that work just fine and pulling out your hair.

Then you will try opening the file in a text editor like Notepad++ and re-copying the contents in, to discover that doesn't work either. Then you'll check to confirm that the .ejs file is being copied to the correct location upon build. You have to delete the file and re-create it in something other than VS. Notepad++ works just fine. I'm not sure if VS Code works. I've discovered now that this is an issue with both VS 2015 and VS 2017 (since my rebuild of the computer now has the latest VS).

Hope this helps out some of you to save both time and hair. My next post will hopefully get one at least started using mountebank for testing purposes.

Wednesday, June 14, 2017

The other day a friend passed away... err, well it was an acquaintance. No, Mike was a friend. I'm going to stick with that. I knew him because he came into Yesterday's while I was bartending. I guess it was a long battle with cancer and fuck cancer by the way. I hadn't thought of him for a while. Sometimes I see people out flying an UltraLight and I remember that Mike was the first person I knew who did that.

I haven't seen him in almost twenty years, so I can't exactly say I'll miss him. But I have to say... and this is my reason for writing this post... Mike was one of the most genuine people I've ever met, and I would be lucky if my boys treated people the same way Mike did. I liked Mike, probably loved him, but probably the highest compliment I could give to him is that if my boys treated people the same way Mike did, I'd be blessed.

Monday, February 13, 2017

Some thoughts before I go mad or burst into little toads...

This is going to sound like the ravings of a mad man. The book I just read, Carlo Rovelli's Seven Brief Lessons on Physics, would kind of predict that though, right? Einstein must have sounded like a lunatic when he suggested that time runs differently for different people depending on their context. 

As the saying goes, Time is what keeps everything from happening at once. The thing is, everything does happen all at once. It's only our observations that link these tings together. I will suggest, and I'm sure that it has already been suggested, is what differentiates the past from the future is that in the future we can predict with greater probability what will happen in the next future instant.

I once had the thought that if we could effectively fly all over the universe and make observations at the speed of light, time would essentially be meaningless. We could observe the the position, speed, and vector of every molecule, every atom, every subatomic particle, and from there extrapolate where they would be in the next instance and the next after that. We could build out a model of where every little molecule would be in the very next moment and what effect that would have on all the molecules around it at any given instance. Once we built out that model we could move back and forth through it, back and forth through time, over and over wherever we wanted to be at whatever moment. Then Mr. Heisenberg came into the mix.

Heisenberg, besides producing the finest meth that New Mexico has to offer, said that we couldn't predict with certainty the position and momentum of physical particles. Throw Mr. Schrödinger's cat into the mix and what it comes down to is that we can only say where those particles are or are going with some level of probability. So our reality is really only a hazy cloud of electrons and photons and quarks that we accept as solid because subsequent observations lead us to some probability that you and I exist and this keyboard I'm typing with is a solid structure of plastic molecules.

I learned today that probability is the reason that heat moves from warmer things to cooler things rather than vice-versa. It took me a moment to understand what Rovelli was talking about, but imagine this: you have a 20-degree rock and surround it with an equal mass of 80-degree water. (In a closed system, so disregard heat loss to the air, etc.) Within a given amount of time we would expect the rock to heat to 50 degrees and the water to cool to that temperature. Why doesn't the water heat to 100 degrees and the rock cool to 0 degrees? It has to do with probability. It IS possible for the second effect to occur, just really, really, REALLY unlikely. It is far more likely that the excited molecules of water will have their energy dissipate to the atoms of the cool rock rather than the rock's atom's transferring additional momentum to the water's. And that dissipation of heat and energy is how we see the flow of time. Probability leads us along a certain path rather than back.

Another thought occurs to me that because we are actually conscious of how time flows, we can change the universe, change the probability of the next moment just with a thought. Or maybe I can't. Maybe there is no multiverse, just this single universe and no matter what happens, I am fated to think and act a certain way no matter what. I hate the thought of that. In the larger scheme of things, I suppose that doesn't really matter.

Rovelli's book, along with Hawking's assertion that information isn't actually destroyed by a black hole counteracts the meaninglessness I felt after reading The Road. Surely you are thinking that I am truly straddling the border of real lunacy now. I can't explain it any more now than I could explain the utter void I felt after reading The Road. I know that none of this means anything. Me writing this only means as much weight as I personally give to it. In the larger scheme of things these words are utterly meaningless. In the utter scheme of things, however, finding a cure for cancer is only slightly more meaningful. We'll need a new way of thinking, of thinking about ourselves and our places in the surrounding universe, else we all will truly go mad.

There are approximately 100 billion stars in our galaxy and approximately 100 billion galaxies in the known universe. That means there are literally at least 10 billion-trillion stars that we know about. we are tiny specks of dust within tiny specks of dust. But maybe we can change the universe with a thought?

Update: They did this cool little succinct website in conjunction with Rovelli's book: http://www.sevenbrieflessons.com/.

Friday, January 20, 2017

The Jen!

Every year on this date I take a minute to do something that I should do much more often, contemplate how fortunate I am to have met and married my best friend. On this day of this year in particular I feel remarkably proud of Jennifer. I know how hard she has worked to be where she is. I could not do what she does - the long hours, late nights and early mornings, and still putting on a smile to deal with difficult people. Every year, every month, every day with her is a true blessing for me. So once again today I am privileged to celebrate her. She's my favorite thing to celebrate!