Wednesday, 15 October 2014

adobe Captivate - a new trainer tool

To Adobe - Good on yer
The de facto tool of choice for trainers is PowerPoint. While I was exploring new ways to present my training, I discovered Adobe has a product for trainers. The product was formerly a flagship product from Macromedia, the creator of the ubiquitous web designing tools; Flash and Dreamweaver. After Adobe acquired Macromedia in 2005, Adobe has continued to improve Captivate to make the tool even more friendly and added more features for trainers to prepare their materials. I was glad that history did not repeat itself that products after being taken over often died a slow death when the new owner did not know what to do with the product. I wondered how many remembered when IBM took over the then de facto word processor; WordPerfect. Similarly when UnderWare sold one of the most popular programmer's text editors "Brief" to Borland, Brief died a similar death. It therefore gave me a tickle of happiness that a product (in this case Captivate) can continue to grow and live its purpose. For that, "good on yer, Adobe", for doing a wonderful job to continue to grow and add useful features to Captivate.

Multiscreen
One of Captivate's features that attracted my attention is her ability to create multiscreen training materials in a WYSIWYG way without any coding. In this modern era, where users are no longer restricted to sitting behind the desk and using their PCs, users are demanding to have access to contents from their smartphones, from their tablets and of course from their laptops; access to the same content anywhere and anytime. Multiscreen enabled the content author (e.g. trainer) to create a single content and present the same content to users via their devices of choices (laptops, smartphones, tablets and in other cases, TVs). Captivate provides a very simple way to create multi-screen contents. Markers on the captivate editor (also known as breakpoints) set the 3 standard views; each view serves the layout for the dimensions for the targeted device
  1. Primary view for laptops (1024 x 627)
  2. Tablet view for tablets (768 x 627)
  3. Mobile view for smartphones (360 x 415)


Adobe believes that these 3 standard layouts are sufficient to get target most of your audience out there. You can change these layout sizes (heights or width) but you are restricted in the total layouts available to you; you cannot add more breakpoints. 
Adobe coined the term "responsive" design to describe how Captivate allows content authors to design a single training content that will be rendered correctly to their users. My way of interpreting this jargon is that contents will be auto responsive to the devices the users used to view the contents; i.e the contents will be rendered correctly on the appropriate device. Adobe further makes it easier for the authors to pretest how their content will look on laptops, tablets and smartphones via the multi-device preview feature. You can also use the free Adobe Edge app to preview your content on a physical mobile device. Responsive design is only available in Captivate version 8. 

Parent-Child-Grandchild inheritance
The Adobe engineers adopted an inheritance design pattern to make the content author easy to create content for 3 different views. The design pattern adopts a parent-child-grandchild concept. The primary view is the parent. Whenever you change the objects in the primary view, the content in the child view and grandchild view will be automatically modified. Similarly whenever you change the objects in the tablet view (the child), the grandchild view will be automatically modified. However, when you do this operation on the child, the parent-child relationship will be broken; i.e. the objects in the parent view will not be changed. The ability to break the parent-child-grandchild relationship is a very useful feature to authors.
There is another technique to have a different look and feel between the views. You can either use the "Exclude from Other views" or you can pull the object to the outside the viewpoint from any view. Internally, using the first option will pull the object to the outside the viewpoint from the other views. There is however, a subtle difference in the output. To have an object in a specific view (either in the Parent, the Child or the Grandchild), use the first option on the specific view (see purple rectangle below). To have an object in both the Parent, Child view, use the second option on the Grandchild view (see white rectangle below). To have an object in the Child and Grandchild view (see green rectangle), it is a two step process. First, you must Exclude the object from other views on the Parent view followed by pulling the object back from the outside in the Child view. 

Blue rectangle is rendered in all views
Purple rectangle is shown only in the Parent view.
White rectangle is rendered in both Parent and Child views
Note: the Green rectangle is outside the viewpoint of the Parent view
Blue rectangle is rendered in all views
White rectangle is rendered in both Parent and Child views
Green rectangle is rendered in Child and Grandchild views

Smart positioning - How smart can you be?
One of the features that Captivate provides to authors to design your object layouts is smart positioning. Smart positioning allows you to anchor your object relative to the slide boundary. This feature reminds me of a similar functionality by Microsoft XAML editor in Microsoft C#. Compared to Microsoft C# editor, Captivate provides more options to position your objects. 
By default, any object created is anchored to the top and left boundary of your slide. Positioning is made even easier by visually dragging the smart-positioning anchor to the other boundary. Please note that the a position marker can only be re-positioned in the same direction. The top boundary marker can only be re-positioned vertically to the bottom while the right boundary marker can only be re-positioned horizontally to the left boundary marker. 
Bug Alert: There is a bug in v8.0.0.145 when you duplicate your object. The "Object Size" may be different in your grandchild view or the text changed in your primary view is not changed in your grandchild view.
For positioning, I recommend you to set your position value using the % instead of using the pixel. The layout renders correctly in the different views when you select to use the % unit. If you opt for the latter option (pixel), you must set the positions separately in all the views. Besides the % and px, you can also use the "% Relative" if you have the need to position an object relative to another object. 
Last but not least, you have at your disposal, the min-max feature of Captivate. This allows to fix your object size so that the auto-scaling feature will not distort the shape of your objects. This is illustrated by the diagram below. The objects (white rectangle and the adobe logo) on the bottom is fixed to a minimum size while the top objects (purple rectangle and the adobe logo) scaled accordingly when they are rendered on the grandchild view.


"Layout of multiple objects" made easy
Modifying the layout of multiple objects is made very simple with Captivate. Once you have selected two or more objects, you can
  • align your selected objects to the top, left, bottom or right,
  • size them equally
  • space them horizontally or vertically
The first selected object is used as the reference for your modification. Example, if you align two or more objects to the left by selecting object_1, object_2 and object_3, all the objects will be aligned left to your first selected object (object_1).

What's Next
As my main aim is to create assessment questions during my training session, I would discuss my exploration on the Quiz capability of Captivate. This feature in combination of the navigation capability of the slides will be explored in my next segment.

Tuesday, 14 October 2014

Diameter - just when you thought you were working with a standard

Just when you thought you were working with a standard
When I was working with a large swap out charging system recently, we have to integrate to an existing 3rd party vendor's (Nokia Siemens Network) product. The protocol used by the 3rd party is diameter (RFC 6733). "That would be easy peasy piece of job" as some would think that since we were swapping out the existing 3rd party product, all that is required is to change existing clients to point to the replaced Ericsson charging nodes since both products (the Ericsson's product and 3PP product) publish to the same protocol standard. The myth is crashed because although like all standards, there are also slight variations to the standard as each vendor designed their interface differently to take advantage of their system features. 
Recognizing the differences between the two standards is one of my key task as I have to educate our partner vendor to perform the necessary mapping transformation from NSN's protocol to Ericsson's protocol (SCAPv2). NSN uses Service-Information (AVP code 873) to package her user-defined charging information while Ericsson achieves the same through the Service-Parameter-Info (AVP code 607). Internet provides my initial source of information but I have to resort on cramming on the two products documentation to come out with the right mapping. 
Seagull - an essential SI tool
The other challenge that the team faced is how to perform functional tests on the NSN diameter protocol. Although there is an Ericsson simulation tool, I was getting no joy from internal Ericsson's experts who have advised me that the effort required to get the tool up and running may be significant. The initial path adopted by the team is to capture the protocol on several use cases and played back the captured protocol to simulate the use cases.I soon realized the short falls of this technique as it was a slow discovery process to uncover new bugs. The game is on to look for a new functional testing tool. After the evaluations of several candidates, I settled on using an open source multi-protocol traffic generator, Seagull. 



There are no internal experts to consult and the brief Seagull documentation details is of not much help neither. I have to resort to reverse engineer the protocol from other sources. I used another open-source tool; this time wireshark (formerly known as ethereal). Creating the NSN diameter dictionary file was the first step. 


The next stage would be to design the scenario files. A scenario file describes the messages that were exchanged during traffic. In Seagull, you create one scenario file per use case. The scenario file contains two key sections; the <init> section and the <traffic> section. In the <init> section, you specify the CER command sent and the expected command received (normally CEA) during the initialization stage. In the <traffic> section, you specify your CCR command that you would be sending and the expected CCA command to receive. The actual CCR and CCA differs in each use case and the protocol is specific to how the backend charging system supports the charging function.
Creating a generic tool makes the learning more effective. The tool that I have developed is a testing suite to test the functions of the business requirements of the actual project. To make the tool flexible to test all possible test factors (e.g. the user phone number, the product id, the plan code, the amount to be charged, the session id), I extended Seagull by creating parameterized variables to replace the parameters during run time.
ECUR and IEC
The testing suite supports both types of charging :-
  • ECUR  (Session based charging)
  • IEC (Event based charging)
It allows testing engineers to perform the following functional tests

ECUR Functional Tests
  • Reserve payment
  • Commit (after a reserved is made)
  • Cancel of a reservation
  • Get transaction status
IEC Functional Tests
  • Direct debit
  • Get subscriber’s wallet details
  • Activate a subscriber via MMS

Questions for assessment purpose


Building this testing suite allowed me to gain in-depth knowledge of Seagull to create an effective training session to Ericsson's testing team. Designing the materials there after becomes an easy task. The final stage of designing the training session is to create questions for assessment purpose. To make the learning more valuable to the engineers, I have further customized some of the questions specifically for the client environment. Relating the questions to the client environment thus become a "relatable experience" to the students and make the learning more effective. Here is a sample of the questions that I have designed for this training:-
  1. Which protocol does SEAGULL use to test the IL charging gateway?
  2. Which one of the following is not a valid DIAMETER message?
  3. Which tool do you use to perform your snoop?
  4. What does CCN use to decide on a unique peer?
  5. Which DIAMETER message is missing in your snoop if you do not see any deduction?
  6. What is a session based charging?
  7. What is a default timeout for a session based charging?
  8. In which state of the subscriber can you perform a deduction?
  9. If the subscriber is in a PRE-ACTIVE state, which type of DIAMETER operation will be successful?
  10. What is EPOCH?
  11. Which field associates a “Reserved Payment” operation and a “Get Transaction status” operation?
  12. What is the easiest way to verify if a payment has been reserved?
  13. Which of the following is a ECUR operation?
  14. If you perform a deduction using plan code BD5, how much will be deducted from the AIR TIME balance?
  15. What is the Result-Code when you try to perform a “Direct Debit” on a PRE-ACTIVE subscriber?
  16. What is the Result-Code when you try to perform a “Direct Debit” on subscriber who has insufficient balance?
  17. What is the Result-Code when you try to perform a “Commit Payment” if you have not performed a reserved payment?
  18. What is the Result-Code when you perform a “Get Balance” query on a subscriber with insufficient balance?
  19. Which of the following is an IEC operation?

Saturday, 11 October 2014

The Art of Training

The Art of Training
Some of the tools I often used to communicate my lessons are
  • PowerPoint slides - lecturing
  • Whiteboard - reinforcing the ideas / concepts
  • Group Exercises - social learning
  • Demonstrations - visual learning
  • Summary - recap on the topics
  • Pre and Post Tests - feedback to the students
  • Reverse shadow - enforce the student's understanding of its topic
Why would I need to use more than one tool to delivery my training? The short answer is that together the tools will help to build up the knowledge of the students on the selected topic(s) more effectively. For the long answer, please continue on (reading) ... 
Since my University days, I learned that attending a lecture is often not sufficient to fully learn a subject. Attending lectures is a rather passive form of learning. A lecture is good only as a factual type of learning a topic.   
To supplement the learning process, I often employed other techniques such as performing a demonstration to the students. Through the demonstration, the students may be able to relate the information personally. It also helps to raise the student interest and reinforce his memory retention. Learning through demonstration thus become a form of "connected learning". 
Other techniques that I have adopted to train students more effectively is through group exercises. Group exercises help some learners (e.g. social learners) to grasp a topic more easily. As students are actively engaged in pursuing the exercise, learning becomes more fun and effective. It also eliminates the "personal failure" fear factor as the participating student is no longer an individual under the lime light. In addition, it encourages the students to think less bias on the topic. 
To make learning a more "relatable experience", I often designed my materials based on a common theme. I chose the theme that most of my students can relate to personally. It could be a theme that everyone has a common interest in (e.g. Soccer or problems that they faced each day). By having a common interest, learning becomes more relatable.  
Finally, no training will go well without having an assessment test to the students. Doing an assessment gives to the students (the necessary feedback of how well the students have understood the subject and to myself, how effective I have designed and communicated my training materials. I used a very simple approach: a pretest before the training to gauge the students' pre-knowledge on the topic and a post-test to measure the students' gained in knowledge. 
A side note: have you ever wondered among yourselves about two trainers presenting the same factual content and you noted that one trainer was more effective in his training than the other? There could be many factors that lead to the different outcome, but some of the reasons could be due to
  • the trainer's soft-skills
  • the delivery of the trainer's content
  • the way the trainer engages the audience.
  • the trainer's subject matter expertise on the topic.
No textbook can teach you all of these and I am in the same boat. However, I believe that through practice, experience and dedication, I am getting there (at least from the favorable feedback from my students).  
Be prepared
I often write on the whiteboard (using "whiteboard markers") to emphasize important concepts and ideas. The last point of using whiteboard markers is a pun because I have seen so many presenters defaced the whiteboard by using permanent ink markers. That really gets my goolies as I expect that testing the marker would be the first step of any presenter before he writes on the whiteboard. The other goolies that gets me is that the previous presenter often left behind empty or near empty whiteboard markers that are unusable. Having been caught by these scenarios numerous of times, I now bring along my own whiteboard markers to any training session. 
The rest of my checklists before a training session are 
  • Loan a working projector for your PowerPoint presentation from the administrator / facility
  • Connectivity to internet or intranet 
  • The required software or web application link for your students
  • The names of your students
  • The local contact person who organizes your room and lunch/drinks/tea breaks for your students
  • Possible questions and problem scenarios that your students may ask
  • Your technical SME 



Friday, 10 October 2014

Becoming a trainer

My Ambition
When I was in my primary school, I was asked what would I be when I grow up? My first choice was to be a teacher since I idolized my teachers. As I progressed from primary to secondary to high school, my choices changed when I was exposed to other subject matters. "Input, I need input". I sounded like Number 5 in "Short Circuit".  I was more interested in foreign languages, chemistry, computer science, electronics, politics, etc. The former passion has led me to attend Thai, German while I was in University, Japanese while i was working in Fujitsu and finally Tagalog when I was based in Philippines. The only regret I have was that I did not put enough time to pick up Swedish when I was based in Sweden. Chemistry was my best subject and became my first cross road to decide on my academic choice. I decided to pursue a combined degree of  Electrical Engineering and Computer Science due to peer influence (one of my senior showed case his winning papers from MIT). The chosen degree suited me as the degree will allow me to pursue two of my interests (computer science and electronics).

What You didn't learn in University
I never for once would dream that I will move into training although I have always have the passion to learn new technologies. It started when I first entered the work force. I was working for Telstra Australia and I was given a project on RS232 and UART programming. Picking up new knowledge areas became a common necessity as I climbed up my rank and moved around the industry domains. I found that I have the knack of picking up new technologies and knowledge very quickly. Some of the technologies and skills that I have become an expert in are listed below :-
  • The Japanese workflow library LSVLIB and Unix to Windows NT porting expert while I was in Fujitsu, 
  • RPC, DCOM, MFC, SQL and globalization resident expert while I was in Siemens,
  • I started to share my design pattern pattern knowledge to my Australian and USA peers ,
  • I pioneered in using Struts, JSTL, MVC and Spring3 in my web based projects,
  • I became the Thunderhead resident expert in IBM e-document technologies while working in a large e-document Insurance project,
  • I have added SOAPUI, DIAMETER, JMeter, Seagull to my knowledge base arsenal as I moved to telecommunication projects.
  • I became the SME for a large swap out project in Philippines where I picked up Fuse ESB technologies and mapping of the NSN (Nokia Siemens Network) charging system interfaces to Ericsson's charging system nodes (AIR, SDP, CCN).
  • I picked up the new multi-screen OTT/IPTV technologies when I was sent to work in a large Singapore OTT project as the Solutions Architect. My knowledge was further honed when I was sent to Sweden to join the elite PDU team in Sweden.

Working with something new that I didn't learn from my university course materials became a norm and necessity as I picked up new challenges. I also learned that while passion and dedication are the basic ingredients to learning new technologies, the art of learning can only become successful if one is creative in applying the right technologies to a solution problem. I remembered one of my Siemens' software development manager complimented my skills and that he was amazed at my ability in applying the Microsoft technologies to come out with innovative solutions to design brand new products to the high-end Siemens access control system. 

Becoming a trainer
I first realized that I have the potential to become a good trainer when I was able to articulate my new found knowledge to my peers and juniors. My first dabble as a trainer started when I have to the opportunity to present in-house training sessions to share my knowledge. My recent engagements have included training as part of my role. One of the attribute to become a great trainer is that one must be the expert in the chosen subject matter. I matched this criteria with great flair as I have always been a great learner of new technologies. TAL became my first official external role as a trainer, What differentiated me from other trainers is that I have adapted my training materials to be part of an exercise towards building a functional project; an in-house betting website for the 2010 FIFA World Cup. Learning thus became an easier exercise for my students. Unlike standard companies training courses, I have learned that customization the content towards something the students have in common helped my students to pick up the knowledge. When I was presenting to the Vodafone-Hutchison technical architecture team, the brand new HTML5 technologies, I specifically chose the company's brands to be part of my presentation. Working in Philippines consolidated my role as a trainer where I have the opportunity to prepare several training sessions and customized training materials (Operation Guide, Training Objectives, Evaluation Questions, Training exercises, Power point presentations) when the standard Ericsson product training materials were not available. The Philippines experience was also a good baptism of fire as I survived the "cultural shock" element when I presented my training sessions to other cultures and nationalities. 

Do you have what it takes
I can't predict the future but I am giving this a go as my next progression from my  accomplished technology career. This is my first step. Besides the need to build up my new network, I will have a lot to learn especially on the business side. Starting this technical training / learning shop is a new frontier for me. I certainly hope I have what it takes to take me there.