A Moment in History for Structured Programming
As we race forward in technology, clamoring to be the first person to discover the next big innovation with all the chaos and enthusiasm of the great land rush of the American West, it is good to occasionally take a break from the race and check our bearings by looking back at our past.
Today is a very special day in the history of computer science. Not for the birthdays we are celebrating today (Happy Birthday Ed!) but for the memorial of one who passed away on this day in 2002. Today I write in honor of the Dutch computer scientist Edsger W. Dijkstra and his influence on this field of science.
Edsger Wybe Dijkstra (May 11, 1930 – August 6, 2002) made numerous important contributions to computer science. You can get a good feel for his impact in the Wikipedia article about him. As you read, search through the bibliography and you can find details of his original works that apply to software development even today. Even Google probably would not exist without Dijkstra’s insights. There is one topic that had a particularly profound impact on me. It all revolves around the Goto statement.
In 1968 this article by Dijkstra was published in the Communications of the ACM (Association for Computing Machinery).
In his letter, Dijkstra calls for the abolishment of the Goto statement from high level programming languages because it promotes bad programming practices that make for unmanageable code. The debate went on for awhile before subsiding. But then in 1987 a new article was published in the Communications of the ACM titled “Goto considered harmful, considered harmful”. This article debated the merits of the original article of 1968. That stirred the debate once again and over the next few months letters to the editor dominated the magazine. Then after several months of debate, there was one letter to the editor that was particularly detailed and scientific which poked holes in the arguments of both sides of the debate, first pointing out the incorrect syntax used in the arguments, like the use of upper case vs. lower case variables, then it ripped apart the content of the arguments. In the end, the author stated his disappointment that after 20 years, we had made no real progress on this position. The letter was signed by Dijkstra himself.
I find it fascinating to have been actively involved in that debate with the computer science legend himself in those days. Since that time, the topic has occasionally surfaced again in one form or another, though never with the energy and passion of the programmers and computer scientists (called developers now) in those first two waves of debate. And yet, even today, 44 years later, we still see the results of programmers who continue to fail to heed the real message Dijkstra was sending: the concept of structured programming. Corrupted data, security vulnerabilities, software crashes and incompatibilities are the result. While object-oriented languages make it easier to follow structured programming, they do not guarantee it. Learning to write a program (now we call them “apps”) is easy. There is an endless supply of self-taught developers. The challenge is getting the world to use the best practice concepts that Dijkstra was championing.
It might seem like 44 years is a surprisingly long time for such bad practices to persist. But, depending on what you consider the starting point, computer science is only about 60 to 80 years old. If you compare Computer Science to Medical Science, we are at the medical science equivalent of using leeches and witch doctors. With the explosion of information, it is no longer likely that any one person will accomplish the brilliant feats like DaVinci, Edison, or Einstein did, but hopefully our collective intelligence will make it possible to accelerate the maturing process of computer science that we can quickly realize the goals of Edsger Dijkstra in his pursuit of better software. So what do you think? Should the Goto statement be considered harmful?
Of Dogs and Whitewater Rafting
Recently I have noticed people bringing their dogs with them on the river when they go whitewater rafting. As a dog lover and a whitewater boater, I want to stir a discussion on the merits and risks of taking dogs whitewater rafting. I once had a great river dog that made many trips with me to the river. Jenny was a black lab who LOVED the water. We did many flat water trips where she would swim beside me for awhile and then climb onto the back of my kayak or sit in my lap and ride for awhile before jumping back in to swim some more.
But as a kayaker, there was no way of taking her down a whitewater river. For rafters, this is at least physically possible. I think most would agree that flat water is quite safe and class 5 whitewater is definitely out. The question then becomes: When does the risk outweigh the reward? Before you answer that, let me start by describing an event I experienced this weekend. I may have some details a bit off, but it’s close enough.
I was kayaking with a group from the WRRR club on the Sauk River.
The Sauk gauge reading was about 12,000 cubic feet per second (cfs) which I think equates to about 5000 cfs on that section. The Sauk is class 3-4 at that water level with plenty of rather large keeper holes (hydraulics).
The group consisted of 2 solo oar rafts, 2 rafts with several people, 4 solo catarafts, one inflatable kayak and one kayak (me). One of the solo rafters had his dog in the raft with him. Well, I guess technically that means he isn’t solo.
At one point the group was a bit spread out. The solo rafter with the dog dropped into a powerful hydraulic. Then one of his oarlocks broke. His dog got bounced out of the raft while the raft and oarsman stayed in the hole. The dog had on a life jacket and was swimming down stream. The current here was smooth and swift as it drained into the next rapid. The dog was about 20′ from the bank and there was little chance that the dog could reach shore before being washed into the next rapid which was a class 3 rapid several hundred yards long. Even if the dog could reach shore, it would have been hard to climb out of the river because the water level was high, the bank was steep and covered in overgrowth, and there was no slack water or eddy near shore. All of the other rafts were already running the next rapid and were out of sight or rescue range.
The raft finally washed out of the hole and was about 50′ upstream of the dog. At this point the oarsman moved the oar into the triangular support for the oarlock to give him some ability to use that oar. He had very little control of his boat as he continued to wash on down the river and into the next rapid.
Fortunately, the IK was close enough to help the dog. I saw it happen, but was too far away to help rescue the dog. The paddler in the IK was able to get to the dog and pull it from the 49 degree water and into his lap before washing on down into the rapid.
We were extremely lucky that it turned out so well. As it was, only 4 of the boats in the group would have even been able to rescue the dog and still control their boat in the next rapid. One of those just happened to be close enough to help. The water temperature was cold enough that such a long swim through the next rapid would have been life threatening by the temperature alone (Keep in mind this chart is based on an adult human. Heat loss is faster for a 40 Lb dog though fur helps.) Also, the rapid downstream was long with several large hydraulics that could have drown the dog, even with a life jacket on. At best, it would have been battered and bruised.
Dogs do not have any understanding of the dangers of whitewater, so owners should not think that the dog knows what to do if it finds itself swimming a rapid. Thinking “Oh, he’ll just swim to shore.” is a dangerous assumption. Even if the dog does swim to shore, is it going to the right one? Often, the closest shore is not the safest place to go. Once on shore, what will the dog do? In this case, there would have been no way to get back up to the dog. That side of the river was blocked by a rock wall along side the rapid. Hiking back upstream would have to be on the opposite side of the river which, as you can see from the video below, is over 100′ wide. Dogs do not understand the risks of a foot entrapment from standing up in swift water. Dogs cannot grab a rope and be pulled to shore. All rescue attempts are hands-on and require a person being put into the same risk as the dog.
So not only does having a dog on the river pose a risk to the dog, it introduces an inherent risk to the entire group. In this example, the person paddling the IK took a risk by rescuing the dog and running a rapid with it sitting in his lap. I took a risk by trying to get to the scene to offer help. The dog owner took greater risks trying rescue the dog while dealing with a broken oarlock. This time it turned out well, but there are plenty of other places or circumstances on this river where things could have been much worse. What if the oarsman had also been thrown from the raft? We would have given all our attention to him, not the dog. This swim happened in class 3 water. What if it happened in a class 4 rapid? What if it happened just upstream from a strainer log? What if it happened in the hydraulic upstream where one of our rafts got caught in a keeper hydraulic for 45 minutes? Yes, 45 minutes! Here is a brief video of that event.
We did not take any big risks to try to free this raft from the hydraulic. But what if the dog were in that raft? I assure you, the group would have taken much greater risks.
I have had my share of whitewater and flat water rescues. One of the things I was taught as a professional lifeguard was to always be asking “what if…?” and “what’s the worst thing that could happen?” then plan for it. Inevitably, you probably didn’t think of the worst thing that could happen, but it would at least help you prepare for what actually does happen so you don’t end up on the six o’clock news.
So I ask you: Do dogs belong on whitewater?
Lotus Notes Quick Tip: Hold the Ctrl key while opening a different view to jump to the same document in that view
Mat Newman’s tip about a clever use of categories reminds me of another useful but little-known feature. First, put the focus on a document in a view (click once on it.) Now hold down the control key and click on another view or folder where that document also exists. The view will be opened with the focus on that same document rather than where it was the last time the view was opened. One example of how this is useful is if you want to see other documents that are related and appear near the document in the other view. For example, in your mail file, find a document in the All Documents view. Now hold down the control key and click on the folder where it is filed. Another valuable effect is that if the document doesn’t exist in the second view, the view will be opened in the same place it was when last opened, so you can tell that the document doesn’t exist in the view.
Another place that this used to be helpful was in the help files. If you found a topic in a search, you could switch to the Table of Contents view and it would jump to that same document so you could read all the related documents in the chapter. Unfortunately, that broke with the new navigation format of Help.
Geoffrey Castle: Proof the Violin is not Just for Orchestra Music
The Notes Guy in Seattle isn’t just about software. There are some musical roots to the name too. I would like to tell you about my friend and the inspiration that got me to pick up the violin as an adult. He plays this crazy 6 string electric violin. Yes Six strings. As if a violin isn’t challenging enough. He is an amazing musician and has a great stage presence. One of those musicians that sounds great on the radio as well as on the stage. Rock, Celtic, Blues, Country, it doesn’t matter, he plays it. The only thing I haven’t heard him play is rap…yet. He even has a Christmas CD with his own original music. Then there is the musical ambassador work he does with schools. I think this speaks well to his character.
Geoffrey recently posted a great video of his story that I think you’ll enjoy. Check it out:
I have seen my share of big musicians in small venues before they were big names: Jewel at a free concert on Clearwater Beach FL; KT Tunstall in a bookstore here in the U district; Tom Petty at Dubbs in Gainesville, FL; The Church and R.E.M. at The Moon in Tallahassee, FL. I am confident that one day in the future you will recognize Geoffrey Castle’s name the same way. Here are a videos of three distinctly different pieces from his performances. Listen in and tell me what you think. Check out his website too. http://www.geoffreycastle.com
Eric Robert and Dan Connolly, I don’t mean to sell you short. Post videos of your stories so I can link to them too.
5 Reasons why it’s a GOOD THING when your cloud service goes down.
In light of the recent outage for AWS, people are questioning the reliability of cloud services. The more appropriate question should be “is it better or worse than on-premise services?” Here are some perspectives to consider:
1. CFO’s perspective: Not My Money.
SLA’s are backed by monetary compensation. If you were smart, you put it into the contract that if you are down, they pay you for the lost revenue. You can’t get that kind of insurance for self-hosted services. The latest events are proof that no one is immune to an outage. It’s all about what happens when there is one.
2. CEO’s perspective: Not My Problem.
Their outage is not a fault of your leadership. When there is an outage for an on-premise service, customers have only you to blame.
3. Head of Marketing: Thanks for the Free Press!
If you’re a big customer of that cloud service, the press mentions your company in the news. And you aren’t the bad guy, you’re the victim, so it isn’t bad press for you.
4. CTO’s perspective: Not My People.
While the CTO might take some heat, it is much less than if it were his own people on the line.
5. I.T. administrator’s perspective: Not ME!
OK, you may already not have a job thanks to your services moving to the cloud. But if you still do, now it isn’t you having to work on this problem at 1:00 AM on a Saturday night.
Keep in mind, with a storm that has this broad of an impact, Amazon is not the only one experiencing an outage. If your company has its datacenter in the same region, you have the same risk and unless you’ve done a better job at a business continuity and disaster recovery (BCDR) plan, you’re probably going to have an outage too.
The thing about a BCDR plan is that it must be periodically tested and lessons are learned from every test. Shame on Amazon Web Services for not doing a better job of testing, but even Amazon can find a good side to this event: Now they know where the changes need to be made to improve service.
Microsoft Office annual certification test competition draws 300,000 students?
Impressive marketing: Not only can Microsoft get 750 million people around the world to pay for Microsoft Office, but they can get 300,000 students to proudly compete to show off their word processing skills at a worldwide certification test competition.
Meanwhile, it’s considered a big deal that 1 million people have downloaded Symphony, a free alternative. That is only 0.1% of the Windows PC market (I can’t speak for the other operating systems). P.T. Barnum clearly underestimated the birth rate of suckers. (or whoever said it)
If you are a Lotus professional, you could do a better job advising your management of their options. Save your company a few hundred thousand dollars and you’ll be a hero. Some companies have a cost reduction incentive program where you can get 10% of the first year’s savings. Unless you work at Microsoft, that’s a big chunk of change to leave on the table.
Some news is worth revisiting…
Microsoft Office Alternatives: Productivity Software Showdown
I am very curious to know how many of you have tried Symphony or Apache Open Office? If your company uses MS Office, do you know how much your company is spending on it? Have you presented the alternatives to your management? What was their response?
Apple Dominates In Seattle With 81% Mobile Market Share
I have been extremely busy lately, spending much of my time working on preparing for the Project Management Professional (PMP) certification exam (which I passed on Friday!), taking a class on entrepreneurship and small business management, and working on applying this knowledge in a practical way, at the sacrifice of my blog and sleep. But I thought I would take a quick break from my break to drop a few links for my MacFriends and to illustrate just how much this region is just like everywhere else when it comes to computer preferences.
Apple iOS Dominates Even In Seattle With 81% Market Share For Mobile Web Browsing
If you recall back in November 2010, I posted this article on the grand opening of Microsoft’s store here in town. Well Apple responded by moving their store to a much larger space and in a dominating position upstairs from the Microsoft store. The first picture in my article is actually taken from what is now the view from the front of the Apple store looking down on the Microsoft store. Check out these articles. I will get some photos posted sometime when I find time.
Apple Digs at Microsoft With Bellevue Store Relocation
Now back to my studies.
Cheers,
-David, PMP
Microsoft hires Lotus Professionals for Cloud Computing at Office 365
That’s right. You read the headline correctly. I’m not the only Lotus professional working on the Office 365 project. My friend, a fellow Lotus professional just joined the team. Surprisingly, I didn’t know anything about it until a week before he started. Now you might be asking yourself: “What would Microsoft need Lotus professionals for?” No, it has nothing to do with things like mail migrations. It’s all about BlackBerry Enterprise Servers and messaging. I think this illustrates more than ever that if you have universal skills, like understanding the concepts of messaging or troubleshooting, you are highly marketable, regardless of the details of what product those skills are used on. It’s not about being a professional of a particular brand. It’s about being an expert of a process. Conceptual understanding transcends the syntactic details. Demonstrate that and you will display higher value (DHV).
Now for some quotes you might hear among us Lotus experts at the Microsoft:
“What do you mean, I can’t paste a screen shot in a Lync IM chat?”
“Where is the ‘Send and File’ feature?”
“You mean if I want to file a message into multiple folders, I have to make copies of it?”
“Why does everybody CC everyone on the team for every email? Don’t they have discussion Dbs for that?”
“What do you mean, we don’t have a knowledge base? How do we collaborate? Oh, CC everybody.”
“I’ll just Google that, uh, I mean Bing it.”
“I could do this so easy in a Notes app!”
“How do I create a reminder on my calendar?”
“Notepad++ ? Don’t let anyone see you using that.”
“Where is the workflow in this app?”
Yes, my friend, welcome to the team.
Viruses Happen
The good news: I still have never had a computer get infected with an email virus while using Lotus Notes. That 18-year run is still going.
The bad news: My laptop got a virus through a random act of browsing. It happened thanks to a touch pad strategically located between the palms of the hands where it can occasionally cause the mouse to move or misread a mouse click. It has happened many times in the past. I’m typing away when suddenly the cursor jumps to somewhere else on the screen and my typing starts appearing in the wrong place. This time it went to the browser window and who knows what input it took before I stopped typing. It’s the first time being a fast typist was a liability for me. I just know that suddenly I started getting a chain of popups.
I closed everything and it didn’t look like anything evil happened, but since then my computer started crashing randomly and would never come out of hibernation properly. A full virus scan revealed a problem, but it needed the help of a Norton Anti-virus bootable CD. OK, I created the bootable CD from another computer and ran the repair tool. After that the PC quit booting altogether. This was a case where the cure was worse than the illness. No, it won’t even restore to a previous recovery point. Sure, I could resort to a system image recovery that I made some time ago, but there are no guarantees of recovery at that point. Who knows what devilry is at work with the Norton tool and virus.
I put in a call to Norton support and pretty quickly the guy at the other end decided to escalate this one to the next level. They actually scheduled a time the support guy would call back. This is going to be a true test of Norton’s support service. I’ll keep you posted. Meanwhile, the blog will continue to be quiet thanks to this new time-sucking event.



