"The more senses you involve, the more you retain in memory what you learned and maximize your capacity of learning them. Read, listen, watch, WRITE, and execute your lessons."
- Professor Dorado
This blog is for the writing part in learning the different aspects about my IT Professional world.
Sunday, October 25, 2015
Must Haves for A Good Presentation
Being able to communicate a valuable subject matter to an audience and cast the vision for maximizing the impact of your presentation is an invaluable skill. Others think that people are speakers just because they were endowed with the personality or talent to be a public speaker. But, NO, you definitely have to practice that and learn the right techniques.
Master your content. Practice presenting in front of the mirror, in front of your friends or try taking a video of yourself. See your bad mannerisms and try to remove them. Ask feedback and receive the feedback with humility and objectivity. Practice, revise, practice, revise and practice practice practice until you drop! Practice breeds confidence.
There are many who speaks in public but are lost on organizing their thoughts to communicate their topic. Others were too timid in their childhood but were put in a situation to speak and were able to grow their skill and become really effective.
Public speaking is also a carefully grown craft. Below are some of the must haves that I have put together in my miss and hit experiences in public speaking. I also got some points from those who did effective TEDx and inspirational talks.
THE PRESENTATION CONTENT
Remember that you are doing the talk to affect and drive your audience to a specific action. So, be very clear with yourself on the purpose of your presentation. State your purpose like a central theme. Be concise. Brevity is your friend. How short? Try to think the length of a single twitter post. State your central theme in 140 characters. It should be engaging or challenging. You are going to repeat this throughout your presentation. Repetition is key to retention. Example, from Steve Jobs: MacBook Air - The Thinnest Notebook in the World. One of my own: Don't be fooled, retool!
Next, is the rest of your content. Please observe on giving 3 to 7 parts, power points or major ideas in the whole presentation. They say that people only retain so much information in one seating. There are studies that 7 is the maximum that they can retain in one instance. I even recommend to keep it inside 3 to 5. 7 is a hard limit.
Appeal to the emotion. Thought statistics and numbers are important, but they are boring. Your content should follow a story like narrative. After your intro, develop the part when you meet the mind boggling problem. And then create a series of ideas that crescendo to the solution to the problem like a eureka moment (which should be the climax) and tell them how the solution changes your life (and their lives). And then with this new found realization, how do you see the world now after 5 years or somewhere far off more into the future. And always leave with a positive note or a good challenge.
Appeal to the emotion. Thought statistics and numbers are important, but they are boring. Your content should follow a story like narrative. After your intro, develop the part when you meet the mind boggling problem. And then create a series of ideas that crescendo to the solution to the problem like a eureka moment (which should be the climax) and tell them how the solution changes your life (and their lives). And then with this new found realization, how do you see the world now after 5 years or somewhere far off more into the future. And always leave with a positive note or a good challenge.
The content should be free of jargons, deep terms or too technical terms. When you have to explain a highly technical concept for your audience, try to use illustrations. For example, I explained one time about a website, cookie header and session id by comparing them to a building (this is the website), temporary id issued by the building (this is the session id) and the wallet where you keep your temporary id (the cookie header).
Make sure that you focus on your topic. All efforts and content must relate to it.
Make sure that you focus on your topic. All efforts and content must relate to it.
Saturate the resources in the internet about your subject matter. Most likely, someone will ask you on alternatives, why the approach isn't like this or that, why wasn't it combined to something else, questions that you can probably answer in advance if you saturate resources over the internet.
Present your content to someone you think is knowledgeable with your subject matter. Their input should be invaluable. Do this early so that mistakes on your content can be corrected early.
Present your content to someone you think is knowledgeable with your subject matter. Their input should be invaluable. Do this early so that mistakes on your content can be corrected early.
THE PRESENTOR
Master your content. Practice presenting in front of the mirror, in front of your friends or try taking a video of yourself. See your bad mannerisms and try to remove them. Ask feedback and receive the feedback with humility and objectivity. Practice, revise, practice, revise and practice practice practice until you drop! Practice breeds confidence.
As the presentor, you should look credible. You should wear the proper attire. If it is a professional talk, a top with a collar is still the minimum appropriate wear. In general, you should dress in a way that the audience will identify and respect you. Looking clean is always a requirement. If you are in an outreach, dress down to jeans and tshirt with plain design so that the audience can identify with you.
THE PRESENTATION
You already have great content and you mastered your content and you know you are credible. Next you should master engaging your audience during the presentation. Engaging means, your audience are involved, interested, have a clear grasp of your topic and able to leave your talk with changed perspectives. Below are I think the ingredients and techniques to engage your audience in your presentation.
Nail the first minutes. In the first two minutes of your presentation, the audience must understand why they are listening to you and your subject matter. This can be in a form of a challenge question, a touching story or eye opening statistics or a combination of any of those. You should be able to tell them as well why you are a credible speaker for the topic. Tell them a summary of the whole presentation in 3 parts.
Have clarity. Do not clatter any singular slide with information. Remember, most of the time, your audience will either listen or read your slide, but not both. Each slide should contain one and only one idea. And together they should flow like a story. The slides are not a script, they should not be read. Slides only enhance and help the info you are saying. Emphasize main points with big singular pictures. I recommend google slide templates to give you an idea on how this should be done. Here is the link: http://www.slidescarnival.com/
It's all about your audience. Know your audience. Some are visual learners, auditory learners, and some are experiential learners. Have a mix in your presentation that caters to all these types of learners. Your slides are visual. Your appropriate use of tone (Don't be monotone, be natural) and use of sounds, music perhaps are auditory. When you let them interact, something like, "Tell your seatmates..." is experiential.
Use the art of pause. There are ideas that need time to sink in. (pause) Use the art of pause.
Use humor. We all have different styles of giving sense of humor. So use your own. No need to try hard. Humor enhances the audience and presentor relationship. You gain a little trust when the audience know that you can make them laugh. You can use humor to break the ice of the most serious parts of the talk. Humor can also fill in lull moments or awkward moments like when your clicker suddenly is not working or there were other technical issues in the presentation day.
(To be continued...)
You already have great content and you mastered your content and you know you are credible. Next you should master engaging your audience during the presentation. Engaging means, your audience are involved, interested, have a clear grasp of your topic and able to leave your talk with changed perspectives. Below are I think the ingredients and techniques to engage your audience in your presentation.
Nail the first minutes. In the first two minutes of your presentation, the audience must understand why they are listening to you and your subject matter. This can be in a form of a challenge question, a touching story or eye opening statistics or a combination of any of those. You should be able to tell them as well why you are a credible speaker for the topic. Tell them a summary of the whole presentation in 3 parts.
Have clarity. Do not clatter any singular slide with information. Remember, most of the time, your audience will either listen or read your slide, but not both. Each slide should contain one and only one idea. And together they should flow like a story. The slides are not a script, they should not be read. Slides only enhance and help the info you are saying. Emphasize main points with big singular pictures. I recommend google slide templates to give you an idea on how this should be done. Here is the link: http://www.slidescarnival.com/
It's all about your audience. Know your audience. Some are visual learners, auditory learners, and some are experiential learners. Have a mix in your presentation that caters to all these types of learners. Your slides are visual. Your appropriate use of tone (Don't be monotone, be natural) and use of sounds, music perhaps are auditory. When you let them interact, something like, "Tell your seatmates..." is experiential.
Use the art of pause. There are ideas that need time to sink in. (pause) Use the art of pause.
Use humor. We all have different styles of giving sense of humor. So use your own. No need to try hard. Humor enhances the audience and presentor relationship. You gain a little trust when the audience know that you can make them laugh. You can use humor to break the ice of the most serious parts of the talk. Humor can also fill in lull moments or awkward moments like when your clicker suddenly is not working or there were other technical issues in the presentation day.
(To be continued...)
Saturday, October 3, 2015
How Useful is the Java Network Launch Protocol (JNLP)
Sometimes, you download an application and you expect it to run after easy installation (double click?). But then you found out that there are dependencies that you have to download as well and setup. This happens all the time and it's time consuming. It needs a little bit more of will power to get yourself together and see the end of the installation. Right?
Java Network Launch Protocol (JNLP) is the designed way by Sun Microsystems to make it easy for any user to launch java applications without having to think much about dependencies and how to setup the java application. In just one click of a browser link, the java installed by your browser reads what you call a jnlp config file that contains the link to the app artifact, its dependencies, and the app sets up and launches itself. It's really a bright idea solution.
What are the amazing uses of this?
You can now call java applications and launch them from the browser. That's the original idea. JNLP was created to adopt to web technologies. But, you can actually use JNLP from anywhere that you have an installed java and where you can make an http request; for example, on your command line. Java Web Start (JavaWS) library run JNLP.
Other benefits of using JNLP is that out of the box, it can manage the update process of your application. It also manage your taskbar icon launcher.
So now you say, "Wow, letting my friend know about my java app is as easy as sending them a link!" Well, that might be true, but NOT for a lot of scenarios.
When you execute your application through JNLP, your application will be put in a sandboxed state. That means javaws will put your application in an isolated environment and you only have limited control over it. You can only play by the tools in the sandbox state javaws gives you. Your application files are cached. Your application launcher behavior is at the mercy of javaws. Limitations and bugs inherent to the sandboxed state will affect your app and the experience of your users.
Why do they have to put your app in a sandboxed state?
Well, they have to. Remember that your link that launches the app can be opened to any operating system (OS). And different OSes have different ways of administering the folder tree, it's access rights and permission to the file systems which java have no control of. JavaWS has to put your app in an environment that it can control.
Inherent to that sandboxed state are limitations and bugs that until now, weren't resolved by the Sun Microsystems:
1) Your app won't be able to update the Java Runtime Environment (JRE).
That is an obvious consequence. Java in a particular version manages your application. It cannot upgrade itself (cyclic dependency), shutdown and use the new JRE by itself. It needs another "worker" to do that switching.
2) It is not compatible with the Content Delivery Network (CDN) system.
JNLP can update your app when you specify on your jnlp that your app changed version. The update will then reinstall, remove the cached state and re-caches your updated application. But javaws also checks for the location of your resources over the internet. When any of those change, it updates your application.
The problem now is when you have resources put in CDN. CDN loves to randomly give you server locations in a specific geographical area near you. So your resources will have varying ip addresses when requested through javaws and this will trigger its update mechanism EVERY TIME. Every time you open the app, you will always have an overhead of downloading the whole app. It will really be annoying especially if downloading takes 30 seconds! Very unproductive.
3) Your icon launcher will have limited functionality.
The icon launcher is within JavaWS control. So whatever functionality JavaWS hands you over, you have no choice over it.
Sometimes, you want to put right click functionality to your icon. Put tooltip messages. None of those are offered by JavaWS.
4) The sandboxed state is buggy.
JavaWS gives you a control panel or what they call cache viewer to manually remove/restart the caching of your application. There were a lot of times that we removed the application already from the panel but the application seems to be running elsewhere. We cannot start a new state for the app because we have to find the process id and shut down the "lost state" of the app. In short, the caching mechanism cannot be trusted.
The javaws icon launcher as well is buggy. We tested our app in different OS; mac, linux and windows. To all of those, the icon launcher sometimes don't get the app icon we specified in jnlp. Also, the behavior of your icon on the taskbar is unpredictable.
5) Stale caches and other issues.
Just refer to this article and this forum post.
Now, going back to the thesis title of this article, how useful is the java network launch protocol. How useful? It's only for Proof of Concept type of projects; you want to show in a one time fashion that your application works. If you use JNLP beyond that, it's very possible that your user will bump into any one of these issues.
For production releases, or for scalability and long term engagement with your users, NEVER use jnlp or javaws.
In my observation as well, these problems are not being resolved actively by oracle.
Java Network Launch Protocol (JNLP) is the designed way by Sun Microsystems to make it easy for any user to launch java applications without having to think much about dependencies and how to setup the java application. In just one click of a browser link, the java installed by your browser reads what you call a jnlp config file that contains the link to the app artifact, its dependencies, and the app sets up and launches itself. It's really a bright idea solution.
<a href="/path_to_the_jnlp_file/somefile.jnlp">Launch Application</a>
What are the amazing uses of this?
You can now call java applications and launch them from the browser. That's the original idea. JNLP was created to adopt to web technologies. But, you can actually use JNLP from anywhere that you have an installed java and where you can make an http request; for example, on your command line. Java Web Start (JavaWS) library run JNLP.
$ javaws http://www.somesite.com/somefile.jnlp
Other benefits of using JNLP is that out of the box, it can manage the update process of your application. It also manage your taskbar icon launcher.
So now you say, "Wow, letting my friend know about my java app is as easy as sending them a link!" Well, that might be true, but NOT for a lot of scenarios.
When you execute your application through JNLP, your application will be put in a sandboxed state. That means javaws will put your application in an isolated environment and you only have limited control over it. You can only play by the tools in the sandbox state javaws gives you. Your application files are cached. Your application launcher behavior is at the mercy of javaws. Limitations and bugs inherent to the sandboxed state will affect your app and the experience of your users.
Why do they have to put your app in a sandboxed state?
Well, they have to. Remember that your link that launches the app can be opened to any operating system (OS). And different OSes have different ways of administering the folder tree, it's access rights and permission to the file systems which java have no control of. JavaWS has to put your app in an environment that it can control.
Inherent to that sandboxed state are limitations and bugs that until now, weren't resolved by the Sun Microsystems:
1) Your app won't be able to update the Java Runtime Environment (JRE).
That is an obvious consequence. Java in a particular version manages your application. It cannot upgrade itself (cyclic dependency), shutdown and use the new JRE by itself. It needs another "worker" to do that switching.
2) It is not compatible with the Content Delivery Network (CDN) system.
JNLP can update your app when you specify on your jnlp that your app changed version. The update will then reinstall, remove the cached state and re-caches your updated application. But javaws also checks for the location of your resources over the internet. When any of those change, it updates your application.
The problem now is when you have resources put in CDN. CDN loves to randomly give you server locations in a specific geographical area near you. So your resources will have varying ip addresses when requested through javaws and this will trigger its update mechanism EVERY TIME. Every time you open the app, you will always have an overhead of downloading the whole app. It will really be annoying especially if downloading takes 30 seconds! Very unproductive.
3) Your icon launcher will have limited functionality.
The icon launcher is within JavaWS control. So whatever functionality JavaWS hands you over, you have no choice over it.
Sometimes, you want to put right click functionality to your icon. Put tooltip messages. None of those are offered by JavaWS.
4) The sandboxed state is buggy.
JavaWS gives you a control panel or what they call cache viewer to manually remove/restart the caching of your application. There were a lot of times that we removed the application already from the panel but the application seems to be running elsewhere. We cannot start a new state for the app because we have to find the process id and shut down the "lost state" of the app. In short, the caching mechanism cannot be trusted.
The javaws icon launcher as well is buggy. We tested our app in different OS; mac, linux and windows. To all of those, the icon launcher sometimes don't get the app icon we specified in jnlp. Also, the behavior of your icon on the taskbar is unpredictable.
5) Stale caches and other issues.
Just refer to this article and this forum post.
Now, going back to the thesis title of this article, how useful is the java network launch protocol. How useful? It's only for Proof of Concept type of projects; you want to show in a one time fashion that your application works. If you use JNLP beyond that, it's very possible that your user will bump into any one of these issues.
For production releases, or for scalability and long term engagement with your users, NEVER use jnlp or javaws.
In my observation as well, these problems are not being resolved actively by oracle.
Subscribe to:
Posts (Atom)