Author Archives: Brian Fenn

Home / Articles posted by Brian Fenn

In Requirements and Life, a Picture is Worth a Thousand Words

Words can often be one of the least efficient methods of communication. Indeed, language is typically not the most effective tool when we use it to gain agreement on design elements and systems design approach. One of the reasons we employ an agile development methodology is to allow our customers the benefit of actually seeing and touching portions of their solution — an experience that helps them refine or agree on a system design without parsing every word in a sentence and making sure everyone agrees on a definition. Over the past few years we have had success in extending this visual approach to the starting point of agile development – requirements definition – by using UML (Unified Modeling Language) diagrams.
read more…

Reconsider the Present to Improve the Future

Remember the old saying, “the definition of insanity is doing the same thing over and over but expecting different results?” Well, a special version of insane must apply to modernization activities. I was recently reminded of this as we embarked on a SharePoint upgrade project. As I worked through some of the migration planning for the new site (we were also migrating from a 3rd party hosted solution to Microsoft 365), I created a number of mappings to move the old site content to the new, maintaining the hierarchy, custom content types and metadata choices that we had defined initially and refined with our first upgrade. As I neared completion, a colleague suggested looking at what was new in 2013. Yes, I thought to myself, that’s a good idea. Maybe I’ll do that once I get through all of this migration stuff to see what we might want to add on.
read more…

Raspberry Pi – Not just Darren Aronofsky’s foray into children’s film anymore

Debian, Raspian, Wheezey, Jessie. No, it’s not the cast of a Snow White reboot. These are all new terms I am learning about in my latest time suck: the Raspberry Pi, the perfect automation engineer’s toy.
 
Focusing on unrelated hobbies can help me take a mental break from work, so I can return with a fresh perspective. These interests can stimulate creative thinking (see this article). And here is where the Pi fits in (I also love to bake, but more on that in a later post). Want to create a media server, personal cloud backup system (with redundancy), digital video recorder, dedicated streaming box, retro gaming console, SMART home automation controller, super-local meteorological station or any of a thousand other possibilities? Then the Raspberry Pi is for you. It allows for a great blend of open source programming combined with a large number of integration options via Bluetooth and wired or wireless Ethernet, allowing you to interact with technology you may already own. If you’ve gotten into 3D printing, pairing that with a Raspberry Pi to create a custom housing / physical aspect to whatever you’re creating gives you the power to craft almost anything you can dream up.
 
The Raspberry Pi is a credit-card sized, single board computer created by the Raspberry Pi Foundation to serve its goal of promoting basic computer science in schools. The most recent model, the Raspberry Pi 3, was released in February 2016. The 3 features a quad-core 1.2 GHz processor, 1 GB RAM and on-board Bluetooth, ethernet (wired and wireless) and four USB 2 ports. Internal storage is provided by a microSD card (not included but easily obtained). The computer itself (not including the case, which I recommend, power supply, and microSD card) costs around $35. Yup, $35. A much more scaled back model, the Model Zero, is priced at $5. All of the Linux-based software is free and fairly easy to download and support. In my experience with the different free apps and modules available, basically nothing works ‘out of the box,’ which is actually some of the fun. Figuring out why I can’t access my Samba share (Raspian sprite for auto-mounting a USB drive wasn’t allowing for easily setting the mount-point or user/group ownership that I setup with my Samba usergroup so I had to utilize a more static method by editing fstab because I’m still a noob) or why my streams won’t play (failed to change the split of CPU vs GPU memory. Noob!) just allows me to better understand how this device and subsequent software actually work.
 
My mother always talks about how she only saw the back of my dad’s head for about nine months when I was very little while he built a Commodore 64 from scratch. He then taught himself how to program using it and even wrote some simple educational games for me. That computer ended up playing a large role in my life as well; I can remember learning how to load, run and manipulate files and programs when I was five years old (not such a big deal in today’s day and age with computers being ubiquitous and intuitive GUIs helping to drive user interface). That played a large role in shaping my interest in computers and my ability to learn how they operate. The Raspberry Pi is a very nice evolutionary parallel to that old Commodore 64, with endless functional and software development possibilities replacing the intensive physical build that was the ‘old’ technological hurdle. I absolutely see this as a fantastic way to get my daughter interested in computers and to provide her with an extraordinary tool to develop a personal connection to programming.
 
So next time, don’t gasp when you hear me yelling “chown” from down the hall. It’s not as dirty as it sounds. Ubuntu! (Isn’t that how Doc Rivers got the Celtics to win that championship? He must have already had his fill of Pi!)

Whatsamatta U: 8 Components of Successful Training Courses

I’ve recently been refreshing some internal training content for our Avanceon University and I wanted to share some items that we have found to be key in developing adult learning courses, whether the intended audience is our own staff or our customers. These eight design points help organize an effective training course and provide a framework for how to train and evaluate individuals.
 
1. Overall Training Objective – What is the training’s singular purpose? As an example, let’s talk about an overall training objective of providing controls engineers with basic System Platform troubleshooting tools.
 
2. Target Audience – Who is the training targeting? What is their background and experience level? For our example, this might be engineers who have not yet or just recently started with Wonderware.
 
3. Pre-requisites – What would attendees need to already know before attending this training? In my case, I would have wanted them to go through the prior training class, which is an Introduction into System Platform class.
 
4. Training Elements – What are the individual skills, tasks or activities that you want participants to learn? Make sure you break down the items as discretely as you can so that you have a more comprehensive offering and evaluation. There may be just a few or there may be a whole bunch. For this training example, I have a number of training elements. For the following questions, we can focus on the element of utilizing Object Viewer for detailed script execution information.
 
5. Objective Statements – Turn each training element into an objective statement. Objective statements are structured as follows: People (A), given (B), will do (C) to a level of (D) proficiency. For our example here, we might say Junior Wonderware Engineer, given an issue with a script, will utilize Object Viewer to ascertain the execution details of the script including, but not limited to, number of times executed, last date/time executed, average execution elapsed time, last execution elapsed time, number of times executed in error and did the last execution result in an error.
 
6. Resources – What item(s) does the attendee need in order to learn and demonstrate a given training element? These are typically things that need to be prepared in advance and given to the attendee during the training of that element. For my example training element, I would need a galaxy setup running a script that had a known error that I could point the engineer to troubleshoot.
 
7. Performance Indicators – How will you evaluate the attendee and know that they have mastered this specific element to the given proficiency? This might be demonstration, a written test or some other method. You should have an answer key, rubric or other scoring method to determine success on a given element. Here I would maybe create an answer key that would have what was wrong with the existing script and at least one acceptable correction to fix the issue.
 
8. References – What information needs to be provided for the attendee to accomplish a given element? This is especially important if you are creating self-paced training, but also if additional references might be helpful in developing a further understanding of an element beyond what is discussed by the instructor. For this example I might refer to specific sections in a training manual, user’s manual and/or deployment guide pertaining specifically to how to call up Object Viewer and what properties exist for scripts.
 
Have you found these to be important factors? What have you found is key to your training? Drop us a note and let us know. And don’t forget to tune in next time for another exciting adventure entitled either “Ar-‘Test’-ed Development” or “Classes with Curly”.