Thursday, October 22, 2009

SharePoint 2009 Conference - Session highlights from Rafael

Rafael is at yet another SharePoint conference without me (again!). One of these days I'll make time to go to more of these (which means > 0 times). He's posted so many session highlights that I decided to link to his October archive page on his blog.

Wednesday, August 27, 2008

Using SharePoint for Extranets

Using SharePoint for Extranets in Windows IT Pro magazine My article, Using SharePoint for Extranets, was just published in the September issue of Windows IT Pro magazine. In my post about importing files into SharePoint, I hinted that I had replaced a custom extranet with a WSS 3.0 extranet. This article is a brief summary of what I learned about configuring SharePoint as an extranet platform during that project.

Only after this experience did I decide that something needed to be written about this subject. Specifically, I spend quite a bit of time advocating zone address consisentcy (having 2 or more authentication zones use the same site address). I was a bit disappointed that SharePoint ignored IIS's IP address binding feature, which makes collaboration much easier when multiple zones are used, or when SSL is needed (especially for extranets).

It's brief because it had to be. As you would be able to tell by reading some of my posts, I lean towards using more words than less to get my points across. When I first submitted the article to them, it was over 4000 words. I had to delete 1500 words to fulfill the article submission requirements. Of course this almost required a complete rewrite, and it's most likely the reason that the online edition of the article contains an extra sidebar and 2 graphics that wouldn't fit in the printed edition.

The gracious editorial staff (thanks Gayle!) over at Windows IT Pro agreed to allow the public access to the online edition of the article for about 2 weeks so I can share it with you.

Technorati Tags: ,

Sunday, August 24, 2008

Integrating LexisNexis InterAction with Portals

Printer and reader-friendly version
Slide deck

This white paper discusses how to integrate the LexisNexis InterAction CRM into a Web-based portal alongside data from other systems. The reason for this paper’s existence is my presentation at the 2008 International Legal Technology Association (ILTA) conference. I was one of 3 panelists for the session titled “InterAction - A Different Perspective Using Your Firm’s Portal”.

This paper and my presentation answers the How question, assuming that you already know about the What (InterAction) and the Why (the value gained by contextualizing business entity information in a portal). In order to best answer the How question, I’ve broken down the process into 3 steps: prepare, design and build. Specifically, I’m referring to preparing the integration, designing the presentation and building the solution.

Prepare the Integration

Before we can discuss how to integrate InterAction into a portal, we need to know some background information. First, we need to know what portals are and what integration is.

Portals

Originally, portals were simply entryways, such as doors or gates. Recently, information technologists have used the word to indicate a digital entry point for multiple information sources. Portals exist on a variety of platforms, but the ones most popular today are web sites. The popularity of portals has exploded recently because of their ability to present data from diverse sources in a unified, yet customized, way. Instead of requiring the user to access each data source individually, a portal can surface all of them on a single page, allowing a dashboard-type overview. Portals are typically centered on a topic or entity of importance. For example, portals can currently be located that bring together information related to news, sports and fitness. For public portals such as Yahoo or iGoogle, the entity is you.

As an example, imagine an enterprise portal site within your organization that, instead of displaying information customized to a user, displays information about one of your clients. A client’s documents from your document management system might be displayed alongside their contacts from your contact relationship manager (CRM) and revenue information from your billing system. In order to present a page with all of this information, a portal needs to be intelligent enough to inquire about this client from each system one at time. This information is then gathered and displayed on the screen in its assigned locations. The portal is able to do this only because it knows how to ask each system for the right data. And the reason it knows how to ask is because these systems are related to each other, or integrated in some way.

Integration

Systems integration could be explained as relationships between systems. Systems can integrate with one another only after they share something in common. This common information is usually in the form of entities, such as people, companies or projects. For example, a billing system contains the client name and its billing contact information. The CRM also contains this information about the client. In order to make these systems talk, a translation needs to be created in order to map one entity to another. This mapping information is usually stored in one of the systems, but it’s possible to also store it externally in an independent system.

Unique Identifiers

Within each system, data structures are usually in place to easily manage entity data. For example, in a billing system’s database, instead of copying a client’s name into every corner of the system related to a client, a unique identification (ID) number is created for the client and referenced. The use of an ID allows updated information to be shown across the entire system whenever a change is made to an entity’s data.

Using a unique ID is not merely for convenience or to save disk space, however. Use my name, for example: Tim Jones. My name is very common. Therefore, the chances of finding another person with the name Tim Jones are higher than normal. If a portal were to ask the billing system, “Show me all the invoices for Tim Jones”, it might reply with “Which Tim Jones? I have 3 clients with that name.” In this case, it’s very important that the portal knows which Tim Jones it needs. It not only needs to know my name, but it most likely needs to ask for my information by my ID. Since the portal needs to get the ID from somewhere first, we need to decide where to store the IDs and their corresponding entity mappings.

Integrating with InterAction

InterAction has been designed with systems integration in mind. Besides single and multi-value user-defined fields (InterAction refers to them as Additional Fields), InterAction includes an EAI (Enterprise Application Integration) component called Application Collaboration (AC). AC abstracts InterAction’s data model to make it easy to load data from other systems. AC can import new information and keep existing entity relationship data clean and current, making it the obvious alternative to manual data entry.

Given its focus on integration, InterAction makes a compelling case for the storage of entity relationship data for other systems. In addition, InterAction offers several options for portal integration. Sometimes the amount of entity data needed from a specific system is very minimal, in which case it may be ideal to import this information entirely into InterAction. This would simplify the portal by reducing the number of systems that need to be queried and also increase performance of page loading.

InterAction is the system most likely to be maintained by a team of stewards within a firm. There will be times when integration data issues arise, requiring human intervention. If you’ve chosen to use InterAction for integration, you would already have resources available to keep the integration running smoothly.

Design the Presentation

To design the presentation of InterAction data in your portal, you’ll first need to choose a data retrieval option. After the data retrieval option is chosen, you’ll need to choose a presentation method.

Choose a Retrieval Option

InterAction offers an above average amount of options for retrieving data, but since we’re dealing with portals, we’re only interested in those options that are Web-based (server side), or at least Web-friendly. To best design the presentation of InterAction data, we’ll need to know what these options are, then determine which combination of them will best accomplish our needs. InterAction includes 4 different server-side options for data retrieval. They are presented here in chronological order.

Database Query

The first and oldest retrieval option is to write a query directly against the InterAction database. This option has been available for the life of the product. Developers familiar with SQL will have no problems writing reports and reverse engineering InterAction’s data model. However, the database model is very complicated and might change after an upgrade, breaking existing queries. If you choose this option, also be aware that you are bypassing InterAction's security model. Because of these reasons and the obvious risk of messing something up, InterAction does not recommend it. As of 5.5, InterAction only supports the Microsoft SQL Server database management system.

InterAction Web Client

The InterAction web client has been available since version 4.x. Significant enhancements were made in version 5.0, including custom search forms. Displaying data directly from the web client should be considered an option since it’s already a server side solution. If the standard views in the web client do not show the needed information, minor customizations can be made. However, InterAction doesn’t recommend this since customizations are typically lost during an upgrade. Customization involves manipulating objects called nuggets, and requires knowledge of HTML and XML.

InterAction XML Methods

The recommended server-side data retrieval method is to use XML methods hosted on the InterAction application server. XML methods have been available since InterAction 4.x, and function like an Application Programming Interface (API). XML methods not only retrieve data, but also have the capability of updating it as well. XML methods are called by requesting a URL with the method name and its required parameters. The output of the method is XML text. The InterAction web client contains a list of available methods and documentation.

Extensible Markup Language, or XML, is data that describes itself. Unlike HTML, the markup language used for web sites, XML is not restricted to a predefined set of elements. It was designed to be a universal data format that all systems could understand. Even though XML has been around for 10 years, blogs and other news outlets syndicating information using XML in recent years have caused its popularity to increase rapidly. Even Microsoft has decided to change the Office suite’s native file formats to XML instead of the previous binary formats as of Office 2007. Later on in Appendix A, you can see an example of XML in use by InterAction.

SQL Server Reporting Services

As of version 5.5, SQL Server Reporting Services (SSRS) is integrated into InterAction’s reporting module. Since SSRS is web-based, this becomes another option to consider. This is by far the most user-friendly server-side method of extracting data from InterAction, and also extremely versatile. SSRS introduces several useful features such as aggregates, grouping, caching and charting. Furthermore, SSRS also supports 3rd party controls to extend functionality, such as more advanced contextual charting. Even though SSRS contains “SQL” in its name, this option only requires knowledge of basic report writing.

Summary

Remember, your needs may require you to use a combination of these options. If the data you need from InterAction is not accessible from an XML method or SQL report, you may be forced to write a database query.

To make it easier to remember the retrieval options, Figure 1 summarizes them by plotting the implementation difficulty against InterAction's recommendations.

InterAction data retrieval methods graph

Figure 1 InterAction Data Retrieval options by recommendation and difficulty

Choose a Presentation Method

When choosing to display external data from a system into a web page, you usually have a couple options.

Custom Programming

Since portals are web sites, we need to take the output of a database query or a system’s API and convert it to HTML somehow. Web application frameworks such as ASP.NET exist to make this easier. However, even with the help of ASP.NET, XML is challenging to work with. Because of this, XSLT was created to transform XML into other forms, such as HTML. However, even if you use XSLT it still requires the services of a Web developer familiar with XML and HTML.

Screen Scraping

If the external data being integrated is already contained on a web site, you can use a method called screen scraping to embed that information into a portal. This method is sometimes used out of necessity, if the system being scraped doesn’t have an easy alternative method of exposing its data. For example, Google’s product search feature scrapes vendor web sites to determine pricing. It does this since a common API doesn’t exist (and most likely won’t exist anytime soon) between them.

Microsoft SharePoint

Microsoft SharePoint is a popular portal platform in use today by enterprises. If your firm plans on using SharePoint, you can take advantage of its built-in tools. A variety of ways exist within the SharePoint development ecosystem to implement custom programming on web pages. One of the popular choices is to use a component called a Web Part. Multiple Web Parts can be arranged on a single page to create any desired layout. The following list of SharePoint Web Parts could be used for integration purposes.

Page Viewer Web Part

The Page Viewer Web Part is used for simple screen scraping. Behind the scenes, it simply renders an iframe HTML element. This could be used to show portions of a custom web site, the InterAction Web Client or a SQL report.

To best display SQL reports, you will want to hide the header and toolbars. In order to do this, you need to access the report from the reportserver path instead of the default reports path that shows the SQL Report Manager web site. The parameters you would use need to be hidden and the values passed in the address of the report. Finally, to hide the toolbar, add "&rc:toolbar=false" to the address of the report as well. The following is an example call to a parameterized SQL report that displays without any headers or toolbars. In this example, MatterNumber and MonthsHistory are hidden parameters.

http://webserver/ReportServer?/Portal/MatterSummary&rs:Command=Render&rc:toolbar=False&MatterNumber=999999.999999&MonthsHistory=2

Content Editor Web Part

The Content Editor Web Part can also be used for screen scraping. It allows adding custom HTML fragments onto the page. If you need more control over the presentation of your iframe, you'd probably use this instead of a Page Viewer.

SQL Report Viewer Web Part

If you use SQL Reporting Services in SharePoint integrated mode and you've installed the Reporting Services Add-in for SharePoint Technologies, you can use the Report Viewer Web Part to display SQL reports. SharePoint integrated mode is only available for SQL Server 2005 SP2 and either Windows SharePoint Services (WSS) 3.0 or Microsoft Office SharePoint Server (MOSS) 2007. In an integration scenario, you're most likely going to need to pass parameters to the report. However, this Web Part will not allow you to pass parameters to the report and hide the toolbar at the same time. Because of this, you'll most likely be sticking to screen scraping with a Page Viewer.

XML Web Part

The XML Web Part transforms XML using XSLT. Its data source can be XML entered directly, or hardcoded, into the configuration, or a link to a Web page or file that returns XML. Likewise, the XSLT can also be hardcoded or linked. If you link to an external source for your XML or XSLT, make sure it is available to SharePoint’s application pool identity or by anonymous access. If you've configured SharePoint for Kerberos authentication, make sure the user has access to the path.

Data View Web Part

The Data View Web Part is only available through FrontPage 2003 (for WSS 2.0) or SharePoint Designer 2007 (for WSS 3.0). Data View supports a variety of data sources, such as database queries, XML, web services and SharePoint lists.

Business Data Catalog Web Parts

If you use MOSS 2007 Enterprise edition, you can use the Business Data Catalog (BDC) Web Parts to pull information from web services or databases. This would simply be an alternative to the Data View Web Part.

Custom Web Part

If you are not satisfied with the Web Parts shipped with SharePoint, you can either purchase one from a 3rd party Web Part vendor or create your own. To create your own Web Part, you'll need a programmer familiar with .NET. Alternatively, if you already have Visual Studio you can create a user control using a visual designer. User controls cannot be used in SharePoint out of the box, so you'll need to download and install a free Web Part called SmartPart.

Other Custom Solutions

Since SharePoint is simply an ASP.NET application, it can accept other custom .NET controls besides Web Parts. It’s much easier to write a custom .NET control than a custom reusable Web Part. SharePoint also contains a capability called Application pages that allows custom server-side .NET coding and higher performance.

Build the Solution

This section outlines the steps necessary to present the output of an InterAction XML method within a Microsoft SharePoint portal. The data will be displayed by transforming XML into HTML using the XML Web Part.

Calling the XML Method

There are several ways to use InterAction XML methods depending on your environment and requirements. The following explanation describes one technique of calling XML methods from another web application. In this case, SharePoint is that web application.

Bypass default authentication

By default, XML web methods authenticate the caller using the same authentication (IIS authentication) as the web client. Unless you are using Kerberos delegation, SharePoint will be calling the XML method on the user's behalf. This breaks the normal single sign-on authentication used by InterAction. One alternative to this configuration is to give SharePoint's service account access to InterAction.

In order to make XML methods easier to execute in these scenarios, InterAction has created an alternative authentication mechanism on a custom port, port 8100. Accessing an XML method over port 8100 instead of the default port 80 bypasses the default authentication.

For example, instead of using http://webserver/interaction, you would use http://webserver:8100/interaction

URL authentication

If you choose to use port 8100 for your Web Parts, you will need to use parameters to authenticate. The two parameters needed are accountName and userPassword. InterAction will execute the XML method based on the privileges and security context associated with the user account supplied in the accountName parameter.

If you would like to avoid hardcoding the password into the URL, you can also establish a trust relationship between InterAction and the portal server. To do this, add the SharePoint server's IP address to the trustedAddresses entry in InterAction.cfg and then restart InterAction services. In this configuration, you only need to provide the accountName parameter to tell InterAction which user context to execute under.

Note: Trusting SharePoint might give too much power to users with designer privileges. Before trusting SharePoint, consider who has access to Web Parts that could exploit this trust.

Example XML Method Call

An example call the findContacts XML method is displayed below. This example retrieves the first (using maxResultCount) contact that bob has access to with last name Jones. Since the URL is missing the userPassword parameter, results will only be returned if the IP address making the request is trusted by InterAction.

http://webserver:8100/interaction/findcontacts?accountname=bob&lastname=jones&maxresultcount=1

Creating the Web Part

To insert an XML Web Part, put any SharePoint page in Edit mode then add it from the list of available Web Parts. Insert the path to the InterAction XML method and add the parameters. Then, insert the XSLT into the Web Part. If you need to share this Web Part to multiple pages, you should consider placing the XSLT in a file and linking to it instead of embedding it. After clicking OK, the XSLT will be applied against the XML and the HTML output will be displayed on the screen.

Appendix A contains an example XML output from the findcontacts method, XSLT to transform it into HTML, and the resulting HTML and screenshot of the output.

Conclusion

As of 2008, systems integration is still not an easy task. This paper intends to cover just enough material to grasp the majority of the issues involved with integrating InterAction into a portal. If you would prefer to hear this information presented, ILTA will be making an audio recording of my presentation available for download.

Appendix A

This section contains examples of XML and XSLT for InterAction XML Methods.

Sample XML

Request URL for the findContacts method

http://webserver:8100/interaction/findcontacts?useraccount=bob&userpassword=123&contactid=1231231234&includeadditionalfields=2/1231;2/1232;2/1233

XML results
<?xml version="1.0" standalone="yes" ?>
<methodResponse>
  <methodname>findcontacts</methodname>
  <requestId>73203</requestId>
  <errorCode>0</errorCode>
  <errorText />
  <processingTime>00:00:03.234</processingTime>
  <results>
    <resultCode>0</resultCode>
    <resultText />
    <resultCount>1</resultCount>
    <totalResultCount>1</totalResultCount>
    <result>
      <contactClass>IAL</contactClass>
      <contactId>1231231234</contactId>
      <IAContactId>1231231234</IAContactId>
      <contactState>4</contactState>
      <contactStateSortOrder>3</contactStateSortOrder>
      <contactStateToolTip>My Contact and Firm Contact</contactStateToolTip>
      <contactType>person</contactType>
      <displayName>Jones, Tim</displayName>
      <department>Information Technology</department>
      <office>Houston</office>
      <changeDate>2007-05-02 09:37:49.547</changeDate>
      <inMyFolder>true</inMyFolder>
      <isPrivate>false</isPrivate>
      <sourceFolderId>12884901886</sourceFolderId>
      <salutation>Mr.</salutation>
      <firstName>Tim</firstName>
      <lastName>Jones</lastName>
      <commonName>Tim</commonName>
      <fullName>Tim Jones</fullName>
      <jobTitle>Web Developer</jobTitle>
      <ape>
        <electronicAddress type="E-mail" typeId="1" relationship="Business" relationshipId="1">
          <electronicAddressId>1231231234</electronicAddressId>
          <description>Office</description>
          <formattedElectronicAddress>tim.jones@company.com</formattedElectronicAddress>
          <isGlobal>true</isGlobal>
          <owningContactId>1231231234</owningContactId>
        </electronicAddress>
      </ape>
      <additionalFields>
        <additionalField>
          <definitionId>1231231231</definitionId>
          <name>Building Floor</name>
          <value>23</value>
        </additionalField>
        <additionalField>
          <definitionId>1231231233</definitionId>
          <name>Map URL</name>
          <value>http://officemaps/HOU23.aspx?Mylbl=lbl23123</value>
        </additionalField>        
        <additionalField>
          <definitionId>1231231232</definitionId>
          <name>EmpPicture</name>
          <value>http://portal/photos/timjones.jpg</value>
        </additionalField>
      </additionalFields>
    </result>
  </results>
  <resultBytes>3657</resultBytes>
</methodResponse>

Sample XSLT for the findContacts method

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
 
  <xsl:template match="/">
    <xsl:choose>
      <xsl:when test="/methodResponse/results/resultCount != '1'">
        <br/><strong>Couldn't find this contact ID in InterAction</strong><br/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:apply-templates select="/methodResponse/results/result"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
  <xsl:template match="/methodResponse/results/result">
    <table border="0" cellpadding="4" cellspacing="4"
           style="border: 1px solid gray; background-color:#EEEEEE">
      <tr>
        <td valign="top" rowspan="2">
          <img style="border:1px solid gray;">
            <xsl:attribute name="src">
              <xsl:value-of select="additionalFields/additionalField[3]/value" />
            </xsl:attribute>
          </img>
        </td>
        <td valign="top">
          <div style="font-size:2.0em;"><xsl:value-of select="fullName" /></div>
          <div style="font-size:1.2em;">
            <xsl:value-of select="jobTitle" /><br />
            <xsl:value-of select="department" /><br />
            <xsl:value-of select="office" /> Office<br />
            Floor:
            <a target="_blank" style="text-decoration:underline">
              <xsl:attribute name="href">
                <xsl:value-of select="additionalFields/additionalField[2]/value" />
              </xsl:attribute>
              <xsl:value-of select="additionalFields/additionalField[1]/value" />
            </a>
          </div>
          <xsl:if test="string-length(assistantName) &gt; 0">
            <div style="font-size:1.2em;">
              <br />Assistant <xsl:value-of select="assistantName" /></div>
          </xsl:if>
        </td>
      </tr>
      <tr style="vertical-align:bottom;text-align:right;font-size:1em;">
        <td>
          <a style="text-decoration:none">
            <xsl:attribute name="href">
              mailto:<xsl:value-of
        select="ape/electronicAddress[@type='E-mail' and @relationship='Business']/formattedElectronicAddress" />
            </xsl:attribute>
            <img align="absmiddle" border="0" src="/_layouts/images/EML16.gif" /> Send email
          </a>
        </td>
      </tr>
    </table>
  </xsl:template>
 
</xsl:stylesheet>

Output

Screenshot

Output Screenshot

HTML
<table border="0" cellpadding="4" cellspacing="4" 
    style="border: 1px solid gray;background-color: #EEEEEE">
    <tr>
        <td valign="top" rowspan="2">
            <img style="border: 1px solid gray;" 
                src="http://portal/photos/timjones.jpg" />
        </td>
        <td valign="top">
            <div style="font-size: 2.0em;">
                Tim Jones
            </div>
            <div style="font-size: 1.2em;">
                Web Developer<br />
                Information Technology<br />
                Houston Office<br />
                Floor: 
                <a target="_blank" style="text-decoration: underline" 
                href="http://officemaps/HOU23.aspx?Mylbl=lbl23123">23</a>
            </div>
        </td>
    </tr>
    <tr style="vertical-align: bottom; text-align: right; font-size: 1em;">
        <td>
            <a style="text-decoration: none" href="mailto:tim.jones@company.com">
                <img align="absmiddle" border="0" src="/_layouts/images/EML16.gif" />
                Send email </a>
        </td>
    </tr>
</table>

Slide Deck

Below are the slides from my presentation. As soon as the audio mp3 is made available I'll upgrade this to a slidecast.

Tuesday, August 12, 2008

The presentation of technical content

My right brain is sore, but I'm told that means it's working.

If you are called upon to present technical content, and aren't sure of the best way to go about doing it, this lengthy blog post will hopefully save you hours of research and inspiration-searching. If you'd prefer to skip all the background information, feel free to jump to the top 3 things I learned.

My history with technical presentations

I've sat through many software development-related presentations over the years, and have even given a handful to small audiences. However, I've never given a presentation at anything like a conference before. That's about to change in a couple weeks however, when I'll be speaking about portals, systems integration and web development at the 2008 ILTA conference. In preparation, I decided to throw out what little knowledge I had about how to create a good presentation and started researching the topic.

I was at the 2005 Microsoft Patterns and Practices Summit and saw Harry Pierson's architecture presentation. His presentation seemed a lot simpler than all the others since it lacked a page full of bullet points. During the presentation he mentioned that he was trying out a new presentation approach he had recently read about in Cliff Atkinson's book Beyond Bullet Points (BBP). I didn't run out and buy the book back then, but I did get an idea about the concept from the free material available through Cliff's Webcasts and sample chapters.

Researching for the presentation

Collecting information

I started my research for presentations by looking up BBP to see what Cliff's been up to the last couple years. Since he recently published an updated edition of BBP for PowerPoint 2007, I decided it was a good time to buy. I created a new web feed folder for presentations in Snarfer and added his blog.

Next, I let Google guide me to the most popular presentation blogs, which immediately lead me to Garr Reynolds's blog Presentation Zen. I discovered that Garr recently wrote a book about presentations, also titled Presentation Zen (PZ), so I added it to the cart. If you'd like a quick overview of his points, watch the video of the metapresentation he made to Google employees. His post on technical presentations was very relevant to my needs, as well as a link he provided to an awesome booklet (partially funded by our federal tax dollars) on the subject by the Oceanography Society.

From these first two sources, I found references to Nancy Duarte's presentation work and her blog. Her team was the one that helped out Al Gore with An Inconvenient Truth. Nancy did a webinar on how to create powerful presentations for VizThink, a new visual thinking community that love thinking visually and creating mind maps. Nancy also recently finished working on her book, slide:ology, but it wasn't published until this month, so I couldn't get it in time.

The Back of the Napkin: Solving Problems and Selling Ideas with PicturesAround the time I was doing my primary research in July, Dan Roam's book, The Back of the Napkin (BOTN), was still fresh off of the press. It created quite a buzz in the presentation circles, so I thought it was worth looking into. Almost everyone has something good to say about it, and the cover just looks cool. It wasn't a book on presentations specifically, but it was right up my alley in terms of relevance. Considering my topics, so I was intrigued about the possibility of being able to communicate my topics using simple pictures.

Garr's book begins with a presentation-style forward (a one-page series of slides) by Guy Kawasaki. Guy is a former Apple fellow and considered to have this whole speaking-presenting thing down by his peers. Guy's Alltop.com site was featured in his blog (of course you'd expect some self-promotion) as a service that makes it easy to find top blogs or sites on a subject. Browsing Alltop lead me to their speaking aggregate page, speaking.alltop.com. This has Nancy's, Garr's and Cliff's blog all on the page, which is a good sign so far. In addition to these, it has a bunch of others as well, which should point you to just about any other niche related to presenting/speaking that you'd need.

Processing information

Instead of providing yet another detailed book review, I'll just provide a simple chronology with oversimplified summaries. Overall, I don't regret purchasing any of these books. This may or may not have something to do with me being a book junkie. I would actually like to buy an additional 3 already. However, I think you'll agree with me on these.

The Back of the Napkin

I started by reading BOTN, which seemed to be more approachable because of the front cover, and also more of a prerequisite to books specifically about presentations. The main idea of BOTN is that pictures are the best for communicating and therefore the best for solving problems. Dan's argument is that everyone is still just as creative as they were during childhood and can still draw whether or not they admit to it. One of the coolest things I took away from this book was how the Visual Thinking Codex on page 141 brought it all together, and how you can "tune" your images based on your audience. BOTN inspired me to create a graph with a custom coordinate system to summarize a topic. This diagram made its way into my presentation which I'll be posting here in a couple weeks when the conference starts.

Presentation Zen

I read PZ next. The main idea of PZ is that slides should be as simple as possible and include stunning visuals. In agreement with the sources I'd read previously, Garr urges you to plan presentations away from the computer "in analog". Garr uses the term slideument to mock presentations that are also intended to present the amount of information in a document. He encourages us to create handouts or documents to free our presentations of unnecessary details (advice that I followed for the conference). PZ is full of examples of slides that promote simplicity and clarity over noise and information overload, which makes it the best resource for slide layouts and design ideas.

Beyond Bullet Points

I had read a couple of sample chapters of BBP before I received all my books, so I saved this book for last. Cliff makes a fantastic case for abandoning the way that PowerPoint and other slideware encourages you to use templates and bullet points to present information. He spends a good amount of time discussing the scientific research on how the brain receives, processes and stores information in the context of multimedia presentations. Specifically, the brain prefers images over text, and reading while listening is more challenging than most of the alternatives. Including the section on research was great, as it makes the issue at hand more objective than just some experts' opinions (However, I have yet to find anyone who holds a counter position). Cliff also advises to plan in analog away from the computer, and even goes further by providing template worksheets to fill out for help designing the flow of the presentation.

Book reading summary

Every resource I've come across stresses simplicity in terms of slide design. However, Cliff's approach is by far the most rigid I've seen. His advice, based on his research of course, is to never stray away from the same layout on a slide, to always use the same font and size in the same place, to always use complete sentences in active voice, and more of these types of recommendations. I loved BBP because it finally helped me pull the entire structure of my presentation together. It is very good at forcing you to whittle down your message to the core. However, one I arrived at my core, I sided with recommendations from others regarding slide design (such as PZ's recommendation of asymmetry). However, I did implement some of Cliff's suggestions, such as the first 5 slides overview and using motif (I chose a pyramid) for main topic slides. Overall, BBP is the best resource for the PDLC (presentation development life cycle).

Searching for inspiration
Looking for metaphors

You would think that everything I've mentioned so far would inspire me with more than enough ideas, but since this was my first attempt at using visuals to present information, I struggled with finding just that right picture to show. What image best describes portals or systems integration? Even though I settled on some images, I still have no idea. For me this was the most difficult thing about the entire process (remember my complaint about my right brain being sore?). I was prepared to pay for stock photos, but I still had a hard time finding ones I liked. Most likely the problem was me, not the stock photo sites (such as iStockPhoto). I actually ended up finding quite a bit of free photos from Stock.XCHNG, but not without a considerable time investment. You can waste hours looking for photos, which is why it's so important that you plan your slides and pick your image ideas before you start browsing photos (I didn't quite do it right, so consider yourself warned).

Watching presentations

A common recommendation I read was to watch videos of great presentations for examples. Garr's blog and book recommended watching presentations from the TED conference, which were awesome. I was also referred to Steve Jobs's keynotes as well. This really helps by providing examples of delivery and how to engage the audience. Also, for additional inspiration for slide design and entire presentations, check out the most popular presentations posted to SlideShare. However, keep in mind that SlideShare presentations tend to be designed to provide information without a speaker, so they're more story-like and usually include more words.

 

Top 3 things I learned about presentations

Presentations are a specific type of communication medium

Presentations are intended to be presented, not printed or read. Presentations should not be able to communicate independently from the presenter explaining and elaborating the contents of the slides. If the target medium is something that needs to be read, a document, not a presentation, is the most appropriate delivery medium. Creating a presentation is a lot more like storyboarding a movie script than it is like writing a document. Avoid the slideument!

Presentations are old, but slideware is new

Presentations have been made for years before PowerPoint came along. Have you ever stopped and considered how you might present without presentation software? Stay away from PowerPoint as long as you can. Do all of your storyboarding on paper, post-its or white boards. It takes far too long to sketch ideas within PowerPoint unless you have a Tablet PC and insist on using a computer.

Bullet points are bad

Have you ever questioned if bullet points displayed on a screen are the best way of transferring knowledge to the audience? If top educational researchers and experts such as Dr. Richard Meyer, John Sweller, the father of the cognitive load theory, and Edward Tufte all advise against this approach would you be willing to hear their arguments? Our brains cannot digest and retain the amount of information on a slide with bullet points. They prefer pictures over text, actually.