On Being a Disciple of Christ

I am reading Paul's words to the Corinthians in his second epistle to them and was impressed by these two verses this morning. As we take upon ourselves the name of Christ and keep his commandments and always remember him, making him the center of our lives, I believe these words from Paul take on greater meaning.

2 Corinthians 5:17
Therefore if any man be in Christ, he is a new creature: old things are passed away; behold, all things are become new.

2 Corinthians 6:16
And what agreement hath the temple of God with idols? for ye are the temple of the living God; as God hath said, I will dwell in them, and walk in them; and I will be their God, and they shall be my people.

A testimony of Christ can lead us to follow him, to become more like him, to become new in him. As we do so he may dwell in us, walk in us. He will be our God and we will be his people. What a glorious promise indeed.

First Snow of the Season

The first snow of the season lays its quiet blanket of white upon all we can see, making all things new and pure, just as the Savior Jesus Christ does when we turn our hearts and minds to him, repenting and taking upon ourselves his name, keeping his commandments and always remembering him.

Feel out of place at church sometimes?

We all feel like a left shoe or a third wheel sometimes.

But consider Paul's words in I Corinthians 12 (from NRSV though I usually read KJV). We are all an important part of the church, and if we're missing on Sunday or other days when the body of Christ gathers, the whole feels it. You are needed. You are wanted.

Here's how Paul puts it:

12 For just as the body is one and has many members, and all the members of the body, though many, are one body, so it is with Christ.
13 For in the one Spirit we were all baptized into one body — Jews or Greeks, slaves or free — and we were all made to drink of one Spirit.
14 Indeed, the body does not consist of one member but of many.
15 If the foot would say, "Because I am not a hand, I do not belong to the body," that would not make it any less a part of the body.
16 And if the ear would say, "Because I am not an eye, I do not belong to the body," that would not make it any less a part of the body.
17 If the whole body were an eye, where would the hearing be? If the whole body were hearing, where would the sense of smell be?
18 But as it is, God arranged the members in the body, each one of them, as he chose.
19 If all were a single member, where would the body be?
20 As it is, there are many members, yet one body.
21 The eye cannot say to the hand, "I have no need of you," nor again the head to the feet, "I have no need of you."
22 On the contrary, the members of the body that seem to be weaker are indispensable,
23 and those members of the body that we think less honorable we clothe with greater honor, and our less respectable members are treated with greater respect; 24 whereas our more respectable members do not need this. But God has so arranged the body, giving the greater honor to the inferior member,
25 that there may be no dissension within the body, but the members may have the same care for one another.
26 If one member suffers, all suffer together with it; if one member is honored, all rejoice together with it.
27 Now you are the body of Christ and individually members of it.

Family - What is it good for?

1. Clearing the sidewalks on a snowy day.
2. Picnics in the mountains in the summer.
3. Opening presents in jammies on Christmas.
4. Borrowing tools and clothes without asking.
5. Hot cocoa and warm blankets on a cold winter night.
6. Cleaning the basement just before company comes.
7. Hugs and encouragement when hard things happen.
8. Patience and forgiveness when none can be found.
9. Safety net against the darkness of despair.
10. Incubator of exalted and eternal beings.

Meekness - Defining Attribute of Christ

"Take my yoke upon you, and learn of me; for I am meek and lowly in heart: and ye shall find rest unto your souls." ~Matthew 11:29

"Learn of me, and listen to my words; walk in the meekness of my Spirit, and you shall have peace in me." ~D&C 19:23

"Meekness is a defining attribute of the Redeemer and is distinguished by righteous responsiveness, willing submissiveness, and strong self-restraint...

"The Christlike quality of meekness often is misunderstood in our contemporary world. Meekness is strong, not weak; active, not passive; courageous, not timid; restrained, not excessive; modest, not self-aggrandizing; and gracious, not brash. A meek person is not easily provoked, pretentious, or overbearing and readily acknowledges the accomplishments of others." ~Elder David A Bednar, Quorum of the Twelve Apostles, Church of Jesus Christ of Latter-day Saints.

Learning to be meek is a worthy daily endeavor

How Photography Helps Me Be a Better Software Architect


arizonahighways

I want to share with you how my efforts to perfect my semi-commercial hobby of photography help me be a better software architect.

My first camera was a Kodak Pony 135. I had no idea what I was doing, but I learned a lot by experimenting with that camera. My first computer was a Commodore 64. I was only slightly more informed about computing, having learned BASIC on a Commodore PET over two years prior. Again through experimentation and reading every Creative Computing magazine that I could get my hands on, I learned much more about computing and programming.

So now you know that I've been doing photography and computing for longer than many of my colleagues in this business have been alive. Let's see if my insights are of any use to you.

Patterns in Composition

In photography one must always be aware of the composition of the shot. How do the elements of the shot work together to draw the eye to the subject, to the story you want to tell? Learning the rule of thirds can be quite useful in understanding that, as in photography, so too in software we must look for patterns of composition to focus the user experience on the desired outcome. These patterns are often not visible to the untrained eye, just as in photography our audience may not really know why they like the photo, but they do. Software users will know they love or hate the software, but only you will know they love it because you composed it using patterns that make the magic happen.

Following a Process

We rarely get something right the very first time we try it. We're more likely to get something right when we follow a process that has led to success in the past. In photography I have learned that I must follow a process of preparation, analysis, exploration, decision taking and execution. A well thought out process in software development is equally crucial to success.

Breaking the Rules Sometimes

Once you know the rules of your process and craft, you can begin to take some risks in breaking the rules to achieve a desired effect. Only after understanding the rule of thirds in photography and knowing how and why this rule will help you compose your shot in a way that will present your subject well can you begin to experiment with breaking that rule to tell a slightly different story. The same is true in software architecture. Knowing how the rules of SOLID and design patterns will help you achieve the best outcome is crucial. Only then can you begin to experiment with small deviations to the rules to find new an innovative ways to achieve your goals.

Knowing Your Subject

In photography one must know something about the subject of the photograph. The more you know about the subject, whether this is a person, a landscape, a flower or a bug, the better you will understand how to draw out the character of your subject in your photograph. Being a software architect means knowing your subject, your users, stakeholders, the data and systems and the processes needed to make things work. The more you know about that, the better your architecture and design will be and the happier your customer will be.

Best Tools Don't Always Make the Best Work

Some photographers believe they must have the best, most expensive equipment to achieve the greatest possible result. This just is not true. I once shot with a full frame camera and now shoot with a Micro Four Thirds. Some day I'll move to medium format for other reasons, so don't discount having great tools, but don't assume that without the best you cannot produce great work. The same is true in software. We do not always need the best IDE or the most powerful laptop or the biggest amount of RAM to achieve the best result. Indeed if one focuses only on the tools, one might overlook the fact that one's work is to produce something great with the tools you have. Focus on the finished product and whine less about the tools you have been given.

Always Something Beyond Your Control

In photography you cannot control the weather or an unruly portrait subject. You cannot decide when your SD card will fail. You cannot guarantee that every shot will be perfect. There are always elements of the work that are out of your control. To succeed one must embrace the unknown and unexpected. In software architecture this is also true. There are many aspects of a project which you will have the ability to control. Time and business demands are not among them. Resource availability or team skills are not always within your control. You must learn to embrace the things that are not under your control and work as well as you're able to achieve your goals in spite of these.

Try Again Tomorrow

When I'm shooting landscapes, I often think that I've nailed it only to learn in post processing my RAW images that I failed to capture what it was I thought that I had seen when I was in the moment. These failures fall to the digital cutting room floor and push me to go back out and try again. There is a reason we have iterative processes in software development. We don't always get it right. We must continue to hone our craft and work and rework until we do get it right. Even then there is always more we can do. Sometimes the most important aspect of courage is simply to say to oneself, "I'll try again tomorrow." (Taken from a favorite saying borrowed from a friend of mine who passed away recently.)

People and Love Are The Most Important Ingredients

In photography and software architecture and development, I have learned that the most important aspect and ingredient to success is people. The people we work with will come from many different backgrounds. They will have different needs and desires. We must learn to love them and work with them. Only when we do this can we achieve our greatest success because our success depends on their success. When you love the people with whom you work, you will want to see them succeed. You will be kind but honest. You will be patient but urge them to do their best work. You will put their needs ahead of your own. Miraculously you will produce your very best work and so will they.

How System.Net.Http 4.3.0 Ruined Everyone's Day

I have not updated the MessageWire library for about a year now. But it still works just fine. Mostly. New Year's resolution #1: Update MessageWire.

trustme

Dependency Hell

I'm cleverly using MessageWire to create a customized shared session service for a hybrid set of web applications that include old ASP.NET Web Forms running in .NET Framework 4.6.1 and newer, upcoming, web sites built on ASP.NET Core 2.0. So first it had to work with the older Web Forms site. And it did work. Very well. I'll share some of that fun code on another day in another post.

What did not go well is that my Web Forms site using a library that uses HttpClient in System.Net.Http to call an internal web service suddenly failed.

Here's the HTTP request before pulling MessageWire into the project.

POST http://localhost:53739/api/ProfileDetail HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
Host: localhost:53739
Content-Length: 592

{"Id": "…removed actual data…"}

And here's the same request after pulling MessageWire into the project with no other code changes.

POST http://localhost:53739/api/ProfileDetail HTTP/1.1
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Accept: application/json
Accept-Encoding: gzip, deflate
Host: localhost:53739
 
250
{"Id": "…removed actual data…"}
0

See the problem? Yikes, my web service was unable to deserialize the second request created with HttpClient v4.3.0, so of course, that led to a huge failure.

Everyone's Worst Nightmare

What's worst about this is that I did not know about this side effect and this code made it into production causing a nightmare during a critical moment of the day and the month. Of course we rolled it back to stop the bleeding, but damage was done and folks were not happy with me in the least. It took me the rest of the day to find the symptoms of the cause which precipitated the failure.

The fact that it took me so long felt like another failure. Even with the final discovery that the HTTP request was borked, I was clueless as to its exact cause. I even engaged several team members to pour through my code to find the problem with the code I had committed. They could not find it.

So today, with less pressure on, I began methodically thinking of it and tracing back the code that generates the HTTP request. Ultimately it came down to HttpClient in System.Net.Http. This led me to discover that pulling in MessageWire into my ASP.NET Web Forms application on .NET Framework 4.6.1 also pulled in the flawed System.Net.Http version 4.3.0 package.

Light bulb moment! Check for updates. Sure enough, there was a System.Net.Http 4.3.3 available. And boom goes the dynamite! The request was back to looking normal and working just fine with the service being called.

MS OSS Buyer Beware!

When you pull in any new NuGet package which brings with it some dependencies, be sure you check out any updates to those dependencies. Shocking as it may seem, even Microsoft's packages can contain nasty little bugs. And test your assumptions.

The Kids Make Our Christmas the Best

This Christmas has been a particularly joyful one. Despite one late evening lapse of patience, I can truly say this has been one of the most memorable celebrations of Christ's birth in my entire life. We were so pleased to have all of our children and two of our very good friends from India with us. Because of work schedules and other plans, we arranged to be visited by Santa Claus on the 24th and so today has become a quiet and peaceful reflective time. Of all the wonderful gifts I received this year, I want to share with you the one that touched me and my wife beyond any other.

Our children spent a day together on a recent weekend which they called "Sibling Day." It was not the first time this has happened. We are blessed with children who love each other and enjoy one another's company even now as adults. So Lorri and I suspected nothing. As we opened presents, going around taking turns as is our tradition, our children insisted that Lorri open one particular present last. I prevailed in having her open my gift last, but it paled in comparison to this one. It was a book and I've gathered their permission to share it here. I hope you'll indulge me then as I share with you a rather "social media" style personal post.

Tyler and Lorri

We have been married for thirty years. In that time we've seen a few ups and downs. I'm so grateful to have such a good wife by my side. She has been the anchor in my life against the tides and currents of changing and challenging times.

20171225_114631

This photo of Lorri and me was taken a few years ago by my sister Rebecca. She's a natural shutter bug.

20171225_114552

This one is the title page and was taken very recently. Both of us have lost a few pounds since the cover photo was taken. Lorri still looks younger and better than me. I'm the luckiest man alive.

The Kids Together

Jaelise, Johanna, John and Josh are four great kids. These re-enactment photos make us smile from ear to ear.

20171225_114522

20171225_114444

20171225_114410

20171225_114346

Josh

Our youngest and still living at home, Josh rarely had to be told to go to bed. Whenever he was upset with us, he would cover his head with a blanket or something and say, "You don't see me."

20171225_114309

20171225_114241

John

Our children were always fond of running around with no clothes. John was no exception. At four he learned to ride a bike and defied the rule of wearing a helmet, so he occasionally wore some road rash and once crashed hard enough to cause a severe concussion which had us in the ER for a while. Thankfully his skull was sufficiently strong and the damage was temporary. We think. (Just kidding, John.)

20171225_114210

20171225_114136

Johanna

The cutest messy eater in our house, Johanna was always perplexed when Lorri knew she had been sneaking some treat or another because the evidence was always on her face.

20171225_114000

20171225_113923

Jaelise

A ham for the camera then and now, Jaelise always loved to dress up and her bunny was a favorite. Her kayak has taken its place and goes nearly everywhere with her now.

20171225_113845

20171225_113758

Jenessa

Reading the book and laughing at each page, when Lorri came to this page that laughter turned to tears for both of us as we remembered our oldest and most perfect child. Jenessa lived just nine days and as we remembered the birth of Christ, these pages reminded us poignantly of our first child's birth. The elephant named Ernie was a small stuffed rainbow colored elephant who was buried with Jenessa in 1988. While we miss her so much, she is and always will be a very important part of our family.

20171225_113648

20171225_113619

My Kids Are The Best

When they say, "It's the thought that counts," I believe it. My children are thoughtful, loving and kind. I love them so very much. They have made this Christmas one of the very best of my life!

20171225_113546

Special thanks goes to Johanna who made all this happen. What an amazing gift!