Monday, January 31, 2011

PaperShow for Teachers is a Big Hit at MacWorld 2011

I'm back from spending a couple days in San Francisco at MacWorld 2011. MacWorld 2011 was very well attended and it was great having the opportunity to speak to so many educators at the Canson Booth, as we demoed PaperShow for Teachers. It was very energizing to watch so many people get really get excited about the product and the solution that we were offering. Many teachers liked the fact that they could walk around with the notebook and were not chained to the front of the classroom. We had other educators who really liked the idea that it could be used to annotate Keynote or PowerPoint presentations. Others were excited that they could use PaperShow for Teachers when they are doing webinars and online learning.

While I was MacWorld 2011 Conference I was interviewed by Mike Schramm from the The Unofficial Apple Weblog which was streamed via UStream. I had a chance to demo PaperShow for Teachers and share with the audience a thing are two about the program. You can watch the interview below.

Tuesday, January 25, 2011

Informix making the world smarter...

This article is written only in English
Este artigo apenas está disponível em Inglês

Although I'm preparing some technical articles I'm happy to make a break to echo some good news...

Informix is helping an IBM Partner, Centric Solutions, in making the world smarter. Bank of China is using it for a SWIFT application, that also helps to save trees.

These are my words, but I think everyone agrees it must be robust, fast and trustworthy... and Informix is a perfect match for that!

Read all about it here:

http://www.prnewswire.com/news-releases/bank-of-china-in-the-uk-works-with-ibm-to-become-a-smarter-greener-bank-114573679.html

Monday, January 24, 2011

Learning Content Management Systems (LCMS) for Managing Course Assets

I received an inquiry from a reader at a large company that is continuously working on large projects with lots of course content running around.   They have Articulate courses, classroom courses, SharePoint sites, etc.  They have an LMS but not an LCMS.  And they currently manage all of this using what I’ve seen at a lot of companies: network drives, naming conventions, some SharePoint.  Of course, it’s still a bit of a mess.  Sound familiar?

A long time ago, the goal of an LCMS was to help to manage all of these kinds of assets.  Along the way, a lot of the LCMS products on the market have become more about a kind of authoring approached with content stored in a database that is transformed into courseware.  This is valuable for large scale authoring and translation of content. 

They also handle asset management, but I really have not been seeing the kind of large scale adoption of LCMS products for that purpose.

Here are some specifics of what this reader is going for:

  • We need to figure out a way to get information from other departments to make sure we have the most current information available.
  • We need to set up a process to determine all courses the information will impact.
  • We need to make the changes. 
  • Save the previous version in the archives for discovery requests.
  • Save the current version for future updates.

These are classic requirements for learning content management.  But I’m not sure they line up with what most LCMS packages provide – unless you decide that you will use it as a super-authoring tool.

In Digital Asset Management – LCMS, ECM and SharePoint, I talk to how ECM (Enterprise Content Management) solutions might be a better fit for parts of this.  But I’ve seen organizations cobble together solutions using SharePoint more than I’ve seen LCMS solutions.

This seems to be backed up by The LCMS at a Crossroads:

Our research has shown that content management needs vary widely from company to company, and some organizations are well served by some combination of social and collaboration platforms, portals, and the lightweight content management functionalities now common to rapid development tools. In fact, because content management is now so ubiquitous in almost all social networking systems (including Microsoft SharePoint), many companies are finding ways to leverage these tools to help aid content development.

In LCMS – Not Just a Technology: It’s a Strategy, Bryan Chapman really nails a key issue going into all of this discussion: you need to think about your overall strategy and then make sure your systems support that strategy.  Some key elements in the learning technology strategy that Bryan talks to some of the bigger pictures questions that organizations need to think through.  This is exactly what I discuss in eLearning Strategy.  Without an eLearning Strategy defined and the specific objectives defined, then you can’t possibly figure out the right systems.

  • What are you trying to achieve here?  Is it lower-cost development?  Easier translation?  Faster time-to-market of learning?  Greater re-use?
  • What’s the ROI for spending time doing this?

This is what Dawn Poulos talks about in How NOT to adopt an LCMS

Okay, this is probably too much motherhood and apple-pie.  Yes, you need to figure out the larger strategy, value proposition, what you are really trying to achieve, etc.  Let’s assume you’ve done that.  You still do get back to the core questions:

Are people using an LCMS to manage content assets and workflow across the enterprise?  Or are they really using SharePoint or other ECM products for that?  And LCMS products are more a different kind of authoring tool?

Curious to get reactions to this.  What are you seeing out there?  Any advice for this person?

Sunday, January 23, 2011

Xpaper to the Rescue



In the last week, I have several different opportunities to use Xpaper which really helped me out in a pinch. In the first instance, I was completing a credit check application to a computer distributor so that I could resell Okidata printers as part of digital pen and paper solution. The company dutifully sent me a link to their Credit Application which I completed online. When the form was completed, I was able to save it as a PDF- now my challenge was that the Credit Application had to be signed by me in several places. With Xpaper that was an easy task! I simply printed the Credit Application Form using the Xpaper driver to my OkiData printer and signed the Credit Application Form with my Logitech Digital pen. When I docked my pen I had a crystal clear PDF with my signature ready to email back to the computer company. Using the built-in workflow my signed PDF was automatically uploaded and stored to GoggleDocs. How is that for automation? There are a host of different work-flow routing (SharePoint) and connectors (ftp, email) that make storing your documents easy to accomplish. All of this took seconds to accomplish with Xpaper. Back in the day I would have had to scan the entire document and it would have never looked as good as the output from Xpaper. Find out how your business or company can use Xpaper to automate your paper work flow and make the paper work for you! To arrange a free demo click here to register and I will be in touch with you.

Saturday, January 22, 2011

The "PaperShow Guy" is Off to MacWorld 2011

Yes- some folks have affectionately coined me the "PaperShow Guy" and I will be in all my glory next week when I arrive in San Francisco for MacWorld 2011. If you get to MacWorld 2011 Conference please stop by the Canson Booth 1001 and say hello and try out PaperShow for Teachers. PaperShow for Teachers won Best of Show at MacWorld 2010, and we are excited to show you the latest developments with the product which educators are really excited about. So stop by Booth 1001 and say hello and try out PaperShow for Teachers. PaperShow for Teachers has a rich set of features that your students will find very engaging. We will be offering special MacWorld 2011 pricing for PaperShow for Teachers as well was for PaperShow Enterprise Edition - so come over and take advantage of the special promotions. Hope to see you there!

Printing To the iPad with the HP 6500A

One of the really nice features of iOS 4.2 is the ability to print from the iPad to certain select printers. At this time there are several HP printers that support wireless printing using Apple's AirPrint technology. I had the opportunity today to set up the HP 6500A printer which supports the AirPrint capabilities for one of my clients who needs this capability at school, so that she can print out the written work she does in Pages from her iPad. HP provides very clear directions on how to set up the printer and configuring the wireless component was very easy and straightforward using the built-in touch screen. However, when I attempted to print from my iPad, for some reason it did not see the printer and I received feedback on my iPad that "No printers were found." I scratched my head and tried reconfiguring the wireless connection when I realized that there was a Menu item called Web services. When I selected this feature the HP 6500A asked me if  I wanted to check for updates and I pressed "Yes."  Once the printer had downloaded the updates I was now able to see the printer from within Pages and I was off and running. So if you get stuck remember to check for Updates on your HP Printer.

Thursday, January 13, 2011

Adobe Delivers Technical Communication Suite 3

Streamlined, Simplified Workflows Powered by New Versions of FrameMaker and RoboHelp



SAN JOSE, Calif. — Jan. 11, 2011 — Adobe Systems Incorporated (Nasdaq:ADBE) today announced Technical Communication Suite 3, the latest version of its complete single-source authoring and multi-device publishing toolkit for the creation and publication of rich, standards-compliant technical information and training material. The new improved version of Adobe’s industry-leading suite enables technical writers, help authors and instructional designers to efficiently author, enrich, manage, and seamlessly publish content to multiple channels and devices. Adobe also introduced new versions of the suite’s core products: Adobe FrameMaker® 10, a powerful template-based authoring and publishing solution for technical content; and Adobe RoboHelp® 9, an HTML and XML help, policy and knowledgebase authoring and publishing solution. Adobe Photoshop® CS5, Adobe Captivate® 5 and Adobe Acrobat® X Pro round out the suite, integrating powerful image editing, eLearning and demo creation, and dynamic PDF functionalities. “Today’s technical communication end user – from an average consumer to a design engineer – expects content experiences that are clear, concise and more engaging,” said Naresh Gupta, senior vice president, Print and Publishing at Adobe. “Technical Communication Suite 3 customers can meet this demand by creating documentation that is increasingly interactive, rich and socially enabled – all with one set of tools, within one user interface.”
New Features
Technical Communication Suite 3
• Enhanced single-sourcing: Import FrameMaker content into RoboHelp with support for FrameMaker books. Directly link DITA (Darwin Information Typing Architecture) maps, automatically convert table and list styles, and publish multiple RoboHelp outputs from within the native authoring environment.
• Dynamic “single-click” publishing: Create standards-compliant XML and DITA (1.2) content and output to multiple formats, including print, PDF, Adobe AIR™, WebHelp, EPUB, XML and HTML, and deliver it to a wide range of mobile devices, such as eReaders, smartphones and tablets. Lend your content to search engine optimization, via enhanced metadata tagging of published content.
• Expanded multimedia capabilities: Take advantage of more than 45 video and audio formats and engage audiences by adding 3D models, training demos and simulations.
FrameMaker 10
• Standards support: Take advantage of significantly enhanced XML/DITA authoring capabilities of FrameMaker 10, which is an early adopter of industry standards including DITA 1.2.
• Usability enhancements: Work more efficiently with standards-compliant, prebuilt tools and templates designed for easier authoring. Use utilities like Auto Spell Check, Highlight Support, scrolling for lengthy dialogue, and enhanced Find and Replace to get the job done faster.
• Content Management System (CMS) connectors: Integrate seamlessly with leading content management systems, including Documentum and MS SharePoint. While competitors often sell these connectors for thousands of dollars, they will be included in FrameMaker 10 at no additional cost. Single-source, review, manage and automatically publish content faster and smarter – all within your favorite technical authoring tool.

Adobe Announces Technical Communication Suite 3

RoboHelp 9
• More personalized, optimized end-user experiences:
o Enable users to filter help systems based on their role, department, geography, products, operating system, or any other parameter, ensuring the most relevant information is instantly available.
o Enrich the quality of documentation by allowing users to add comments, rate helpfulness or generate relevant content independently.
o Create rich, interactive materials by adding access to external Web content including Google search, blogs,
wikis and forums.
• Efficient Workflows: Collaborate with authors, subject matter experts and readers using advanced PDF shared reviews, live linking of shared resources, moderation-enabled workflows through Adobe AIR Help, topic-rating and other multiauthor environment capabilities.

Adobe FrameMaker Server 10 and Adobe RoboHelp Server 9, the server versions of the core FrameMaker and RoboHelp products, are two separate releases that complement the new suite and help streamline enterprise workflows.

Pricing and Availability
Technical Communication Suite 3, FrameMaker 10 and RoboHelp 9 are immediately available in English, French, German and
Japanese versions through Adobe Authorized Resellers and the Adobe Store. Estimated street price for Technical Communication
Suite 3 is US$1899 (upgrades from US$699). FrameMaker 10 and RoboHelp 9 are also available as standalone products.
Estimated street price for FrameMaker 10 and RoboHelp 9 is US$999 each (upgrades from US$399). For details on FrameMaker
Server 10 and RoboHelp Server 9 pricing visit http://www.adobe.com/products/framemakerserver.html and
http://www.adobe.com/products/robohelpserver.html
About Adobe Systems Incorporated
Adobe is changing the world through digital experiences. For more information, visit www.adobe.com.
###
© 2010 Adobe Systems Incorporated. All rights reserved. Adobe, the Adobe logo, are either registered
trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. All other trademarks are the property of their respective owners.

Tuesday, January 11, 2011

Examples of eLearning–Ten Great Resources

I was just asked for some examples of eLearning.  I had collected up eLearning Examples a couple years ago, but thought it was worth going back to look for more.  The following are some very good lists of widely varying examples of eLearning.

  1. Elearning samples
  2. eLearning Examples
  3. Examples of E-Learning
  4. Where are Examples of eLearning? Lots Right Here!
  5. Two examples of elearning
  6. Elearning example: Branching scenario
  7. eLearning Examples
  8. 100+ Free Websites to Find out About Anything & Everything
  9. 100+ places to learn a language online
  10. 100+ free sites for learning about business

The last three provide a glimpse into the great variation that exists to learn and get help on particular topics.  While a lot of people think of eLearning as being a course, notice how few of the resources in those last three are actual online courses.  Instead, most examples of eLearning actually fall outside of that realm.

Monday, January 10, 2011

Olympic Limited Releases OPTi-Docs for MindManager

As a long time MindManger User it is really exciting to see how 3rd party companies can expand the functionality of the program with add-ins. I have come to know Nigel Goult from Olympic Limited and over the years he and his company have developed some very innovative and unique add-ins for MindManager. I had a chance to catch up with Nigel last week and he shared with me some of his new development work that he just completed on Opti-Docs for MindManger.

Brian: Tell us about your company Olympic Limited?
Nigel: Olympic is a supplier of information management tools and a developer of value added solutions/content. We primarily focus on MindManager add-in development but are steadily working our way towards platform independent solutions and have just recently completed our first solution for PRINCE2 project management, OPTi-P2 for Windows. Our knowledge of MindManager spans almost ten years across three companies and we have been involved in add-in development since MindManager X5.

Brian; Tell us about Olympic  and the range of your products?
Nigel: One of our recent goals was to start to create a brand for Olympic and that has now become what we call our "OPTi-Range" of solutions. Currently the range includes:
•    OPTi-P2 for MindManager, a PRINCE2 Project Management Solution
•    OPTi-Q for MindManager, a Quality Management System based on ISO9000
•    OPTi-Suite for MindManager, a utility add-in that extends MindManager
•    OPTi-P2 for Windows, a platform independent PRINCE2 solution for Windows
•    OPTi-Docs for MindManager, our latest MindManager add-in to manage documents linked to MindManager maps.
All of our products are developed with simplicity in mind. We believe that day to day activities such as project management, document management etc do not have to be complex and often simple solutions provide the best results. That is always the key objective whenever we look at producing a solution for any given task.
 Brian: Please share with us how Opti-DOCS came about?
Nigel: OPTi-Docs came about through several discussions I had with a long time colleague who is also a Mindjet MindManager Value Added partner like Olympic. During several conversations the fact that one of the first things that new users of MindManager tend to do is attach documents or files of some type into their maps became very apparent. This quite common task/use had always been obvious to me but I had never looked beyond the basics of the process and suddenly it struck me that currently there is no real way to easily control documents of this nature unless you are using something like Sharepoint etc. We did some thinking about what basic qualities an add-in would require and after a few brainstorms OPTi-Docs was born.
Brian: What are the Key Features?
We decided that the add-in would require several key features to really deliver benefit and as a minimum decided that a simple check-in/check-out mechanism was definitely required as well as an easily accessible top level overview of document changes so users could quickly see what changes had taken place for each document.
The add-in creates a new MindManager Task Pane that displays the details of documents on selected topics and this makes it easy for users to see the current status of the selected document and its history etc.
Auto-revision was also key to the add-in as was the ability to easily  include past document revisions in the map for other users who perhaps did not have OPTi-Docs installed. Above all the add-in had to be simple. We wanted it to be very much a background process that simply just worked for the users and we think that the release offers a truly easy to use system that delivers a good level of control for locally linked MindManager documents.

Brian: Talk about the Value proposition
Nigel: MindManager is a great tool for organizing documents but when you want to apply controls it is cumbersome to have to open a linked document and then save it with a new name and then have to re-link to the new file. This takes time and most people tend to just edit the document and then overwrite the original meaning they lose document history and the ability to audit changes through iterative documents. Using OPTi-Docs automates this process and provides a simple document control system with a minimum of user interaction.
OPTi-Docs can also be used with almost ANY file type so it is not just "documents" that can be controlled but any file that is going through an iterative change process. Image files, audio files, zip archives, even software applications and installers can all be controlled with OPTi-Docs.

Brian: How do you envision that users of MindManager would use Opti-DOCS?
Nigel: The possible user base for OPTi-Docs is very large. It can be used by anyone who links files to their MindManager maps but some very specific examples of user types are:
•    Project Managers
•    Quality Practitioners
•    Solicitors
•    Lawyers
•    Librarians
•    Software Developers
•    Graphic Artists
•    CAD Librarians
•    Human Resource Managers
•    Technical Authors
The list could go on...and on.
We developed the add-in to be compatible with MindManager versions 6, 7, 8 and 9 so users of earlier versions can also take advantage of the benefits that OPTi-Docs can offer.

Brian: What are some of the unique features of OPTi-Docs?
Nigel: OPTi-Docs does not have what I would call "unique" features. Check-in/Check-out routines and auto version increments etc are not unique, however, we are not aware of another solution that specifically aids MindManager users with this task except of course for the much larger Sharepoint type scenario's.

Brian:What do you see as the benefits of users using Opti-DOCs?
Nigel: Users benefit by gaining a level of control of documents in their maps. As mentioned earlier, the add-in's simplicity and background automation help users achieve control with very little effort or involvement except where necessary. Quick visibility of document status and change history also helps users understand their documents progress and helps users identify the current status/stage a document is at in its lifecycle.

Brian: What are your customers saying?
Nigel:
OPTi-Docs has been very well received by our customers and has proved to be the second most popular add-in we offer. It has also aided users of of our other add-ins/solutions such as OPTi-P2 and OPT-Q, both solutions that have documentation attached to their main dashboards, by bringing document control to those solutions. In fact OPTi-Docs is now provided FREE to purchasers of OPTi-P2 and OPTi-Q to help users of those solutions get maximum value and benefit from them.

Brian: Are there plans for future developments for Opti-DOCS?
Nigel: OPTi-Docs is very much a product in what we call "fluid development" which means it is being improved as and when we come up with ideas or are presented with feedback from customers.
We are already working on several new features to be included in an update which will be available in Q1 of 2011. These will include roll back of revisions, an additional method of accessing document details and some maintenance options to help users manage the files that the add-in creates.


Brian: Nigel thanks so much spending the time talking about OPTi-Docs. and thank you and your company Olympic Limited for providing me with 3 licenses as part of an OPTI-Docs give away.  In order to be in the running for the free licenses I will need you to Tweet this statement. Read about how you can use OPTi-DOCS for MindManager to streamline your document management for the New Year!- http://bit.ly/hjUIAF

Saturday, January 8, 2011

Stored procedure PDQ / PDQ dos procedimentos

This article is written in English and Portuguese
Este artigo está escrito em Inglês e Português

English version:

A few years ago I needed to check if I had some stored procedures created with PDQ. Maybe some readers don't know, but if you have SET PDQPRIORITY n in your session before creating a procedure it will run with that PDQ. And that can cause abnormal resource consumption. In most cases you'll want your procedures created without PDQ.
The PDQ associated with a procedure will also change if you run UPDATE STATISTICS FOR PROCEDURE [...], in a session with PDQ active. This is also a frequent issue when people forgot to turn it off or when the statistics are gathered for tables (where PDQ can be helpful) and procedures on the same command or script.

So, how to check the PDQ of your procedures? The catalog tables don't provide this information, so at the time I asked for help internally within IBM. Cosmo, from UK came to my rescue with a strange query that I used successfully a couple of times. The query checks the first 3 characters of the column "data" from sysprocplan where planid = -2.... Don't ask... supposedly this is an encode of the PDQ value.
Recently I had another situation on a customer, where we suspected they had their procedures with PDQ. We were expecting to see the value of 80 (which we caught in some sessions) but all we saw was NULL. Once again I asked Cosmo for help, and during our conversations we noticed that we only had run the query on little endian platforms (Linux on Intel and Tru64). So, Cosmo sent me a script that created 100 procedures with different PDQ levels and then returns the encoded values. It was no surprise that the values were different. Following Cosmo's suggestion I joined both set of values into a big CASE statement that you can check at the end of this article.

The query has a few important points:
  1. I used data[1,3] in the CASE statement. We could use data::CHAR(3), but with that it would not run on version 7. It's not supported anymore, but there are still people using it, so I decided to use a syntax that's compatible with those old versions.
  2. If I remember correctly Cosmo's first query was really a function that received the procedure name. I'm including that as another option in the end of the article. In that version the query raises and error if it enters the ELSE condition of the CASE statement. In the version I was using at the later customer, the case returned NULL and that fulled me... In this new version it will raise an error since it means there is something wrong with the query.
    For the non-procedural version, I did a small and dirty trick: If it enters the ELSE condition it will try to return a value divided by zero. This will cause an error.
    Note that this conditions can't happen because the PDQ must be a value between 0 and 100. So if in the future the encoding changes the query will start raising errors, and this should alert the user...
  3. The encoded values for PDQ 1 to 100 are distinct in the two types of platforms. The encoded value for 0 however is equal. That's why we have two WHEN conditions for each value between 1 and 100 and just one for 0.

Versão Portuguesa:

Há alguns anos atrás precisei de verificar se tinha criado algum procedimento com PDQ. Talvez alguns leitores não saibam, mas se tivermos executado SET PDQPRIORITY n na sessão antes de criar um procedimento, este irá ser executado com esse valor de PDQ. E isso pode causar um consumo anormal de recursos. Na maioria das situações não queremos ter procedimentos criados com PDQ.
O PDQ associado a um procedimento também muda se corrermos um UPDATE STATISTICS FOR PROCEDURE [...], numa sessão com PDQ activo. Isto é um problema habitual quando nos esquecemos de desligar o PDQ, ou quando as estatísticas são criadas para tabelas (processo onde o PDQ é benéfico) e procedimentos no mesmo comando ou script.

Como podemos verificar o PDQ dos procedimentos? As tabelas do catálogo não disponibilizam esta informação, por isso na altura pedi ajuda internamente na IBM. O Cosmo, de UK, auxiliou-me com o envio de uma query um pouco estranha que usei algumas vezes com sucesso. A query verifica os três primeiros caracteres de uma coluna "data" da tabela sysprocplan, onde "planid = -2"... Não pergunte... É suposto isto ser o valor de PDQ codificado de alguma forma.
Recentemente tive outra situação num cliente onde suspeitávamos que tinham os procedimentos com PDQ. Esperávamos ver o valor 80 (que tinhamos visto activo em algumas sessões), mas tudo o que a query nos dava era NULL. Note-se que se tivesse olhado bem para a query deveria ter percebido que o NULL implicava um erro. Mas como estávamos à espera de ver um valor (80) cometi um "erro de simpatia". Recorri novamente ao Cosmo para ajuda. E durante as nossas trocas de impressões notámos que só tinhamos corrido a query em plataforms que usam little endian (Linux em Intel e Tru64). Assim o Cosmo enviou-me um script que cria 100 procedimentos com diferentes valores de PDQ e que retorna os respectivos valores codificados. Não foi surpresa ver valores diferentes. Seguindo uma sugestão do Cosmo, juntei ambos os conjuntos de valores numa instrução CASE que pode ser consultada no final deste artigo.

A query tem alguns pontos importantes:
  1. Utilizei data[1,3] na instrução CASE. Podíamos utilizar data::CHAR(3), mas com isso a query não correria na versão 7. Esta versão já está sem suporte, mas ainda é usada, por isso preferi uma sintaxe compatível com versões mais antigas
  2. Se bem me recordo a primeira query que o Cosmo me enviou, era na realidade uma função que recebia o nome do procedimento que queríamos verificar. Esta forma está também incluída no final do artigo. Nesta forma o código causa um erro caso entre na condição ELSE do CASE. Na versão que estava a usar neste último cliente, o CASE retornava NULL e isso enganou-me... Nesta versão actualizada e corrigida, irá gerar um erro, dado que isso implica que algo não está correcto na query. Não versão não procedimental incluí um pequeno truque: Se entrar no ELSE do CASE vai tentar retornar um valor a dividir por zero. Isto irá causar um erro.
    Note-se que esta condição não pode acontecer pois o PDQ será sempre um valor entre 0 e 100. Se no futuro os valores codificados forem alterados a query deverá começar a dar erro, e isso deverá alertar o utilizador...
  3. Os valores codificados de PDQ de 1 a 100 são distintos nos dois tipos de plataforma (little endian e big endian). No entanto o valor codificado para 0 é igual. É por isso que temos duas condições WHEN para cada valor entre 1 e 100 e só um para o valor 0.

Non-procedural query:
Query não procedimental:


SELECT
f.procname,
CASE data[1,3]
WHEN "AAA" THEN 0
WHEN "AQA" THEN 1
WHEN "AAE" THEN 1
WHEN "AgA" THEN 2
WHEN "AAI" THEN 2
WHEN "AwA" THEN 3
WHEN "AAM" THEN 3
WHEN "BAA" THEN 4
WHEN "AAQ" THEN 4
WHEN "BQA" THEN 5
WHEN "AAU" THEN 5
WHEN "BgA" THEN 6
WHEN "AAY" THEN 6
WHEN "BwA" THEN 7
WHEN "AAc" THEN 7
WHEN "CAA" THEN 8
WHEN "AAg" THEN 8
WHEN "CQA" THEN 9
WHEN "AAk" THEN 9
WHEN "CgA" THEN 10
WHEN "AAo" THEN 10
WHEN "CwA" THEN 11
WHEN "AAs" THEN 11
WHEN "DAA" THEN 12
WHEN "AAw" THEN 12
WHEN "DQA" THEN 13
WHEN "AA0" THEN 13
WHEN "DgA" THEN 14
WHEN "AA4" THEN 14
WHEN "DwA" THEN 15
WHEN "AA8" THEN 15
WHEN "EAA" THEN 16
WHEN "ABA" THEN 16
WHEN "EQA" THEN 17
WHEN "ABE" THEN 17
WHEN "EgA" THEN 18
WHEN "ABI" THEN 18
WHEN "EwA" THEN 19
WHEN "ABM" THEN 19
WHEN "FAA" THEN 20
WHEN "ABQ" THEN 20
WHEN "FQA" THEN 21
WHEN "ABU" THEN 21
WHEN "FgA" THEN 22
WHEN "ABY" THEN 22
WHEN "FwA" THEN 23
WHEN "ABc" THEN 23
WHEN "GAA" THEN 24
WHEN "ABg" THEN 24
WHEN "GQA" THEN 25
WHEN "ABk" THEN 25
WHEN "GgA" THEN 26
WHEN "ABo" THEN 26
WHEN "GwA" THEN 27
WHEN "ABs" THEN 27
WHEN "HAA" THEN 28
WHEN "ABw" THEN 28
WHEN "HQA" THEN 29
WHEN "AB0" THEN 29
WHEN "HgA" THEN 30
WHEN "AB4" THEN 30
WHEN "HwA" THEN 31
WHEN "AB8" THEN 31
WHEN "IAA" THEN 32
WHEN "ACA" THEN 32
WHEN "IQA" THEN 33
WHEN "ACE" THEN 33
WHEN "IgA" THEN 34
WHEN "ACI" THEN 34
WHEN "IwA" THEN 35
WHEN "ACM" THEN 35
WHEN "JAA" THEN 36
WHEN "ACQ" THEN 36
WHEN "JQA" THEN 37
WHEN "ACU" THEN 37
WHEN "JgA" THEN 38
WHEN "ACY" THEN 38
WHEN "JwA" THEN 39
WHEN "ACc" THEN 39
WHEN "KAA" THEN 40
WHEN "ACg" THEN 40
WHEN "KQA" THEN 41
WHEN "ACk" THEN 41
WHEN "KgA" THEN 42
WHEN "ACo" THEN 42
WHEN "KwA" THEN 43
WHEN "ACs" THEN 43
WHEN "LAA" THEN 44
WHEN "ACw" THEN 44
WHEN "LQA" THEN 45
WHEN "AC0" THEN 45
WHEN "LgA" THEN 46
WHEN "AC4" THEN 46
WHEN "LwA" THEN 47
WHEN "AC8" THEN 47
WHEN "MAA" THEN 48
WHEN "ADA" THEN 48
WHEN "MQA" THEN 49
WHEN "ADE" THEN 49
WHEN "MgA" THEN 50
WHEN "ADI" THEN 50
WHEN "MwA" THEN 51
WHEN "ADM" THEN 51
WHEN "NAA" THEN 52
WHEN "ADQ" THEN 52
WHEN "NQA" THEN 53
WHEN "ADU" THEN 53
WHEN "NgA" THEN 54
WHEN "ADY" THEN 54
WHEN "NwA" THEN 55
WHEN "ADc" THEN 55
WHEN "OAA" THEN 56
WHEN "ADg" THEN 56
WHEN "OQA" THEN 57
WHEN "ADk" THEN 57
WHEN "OgA" THEN 58
WHEN "ADo" THEN 58
WHEN "OwA" THEN 59
WHEN "ADs" THEN 59
WHEN "PAA" THEN 60
WHEN "ADw" THEN 60
WHEN "PQA" THEN 61
WHEN "AD0" THEN 61
WHEN "PgA" THEN 62
WHEN "AD4" THEN 62
WHEN "PwA" THEN 63
WHEN "AD8" THEN 63
WHEN "QAA" THEN 64
WHEN "AEA" THEN 64
WHEN "QQA" THEN 65
WHEN "AEE" THEN 65
WHEN "QgA" THEN 66
WHEN "AEI" THEN 66
WHEN "QwA" THEN 67
WHEN "AEM" THEN 67
WHEN "RAA" THEN 68
WHEN "AEQ" THEN 68
WHEN "RQA" THEN 69
WHEN "AEU" THEN 69
WHEN "RgA" THEN 70
WHEN "AEY" THEN 70
WHEN "RwA" THEN 71
WHEN "AEc" THEN 71
WHEN "SAA" THEN 72
WHEN "AEg" THEN 72
WHEN "SQA" THEN 73
WHEN "AEk" THEN 73
WHEN "SgA" THEN 74
WHEN "AEo" THEN 74
WHEN "SwA" THEN 75
WHEN "AEs" THEN 75
WHEN "TAA" THEN 76
WHEN "AEw" THEN 76
WHEN "TQA" THEN 77
WHEN "AE0" THEN 77
WHEN "TgA" THEN 78
WHEN "AE4" THEN 78
WHEN "TwA" THEN 79
WHEN "AE8" THEN 79
WHEN "UAA" THEN 80
WHEN "AFA" THEN 80
WHEN "UQA" THEN 81
WHEN "AFE" THEN 81
WHEN "UgA" THEN 82
WHEN "AFI" THEN 82
WHEN "UwA" THEN 83
WHEN "AFM" THEN 83
WHEN "VAA" THEN 84
WHEN "AFQ" THEN 84
WHEN "VQA" THEN 85
WHEN "AFU" THEN 85
WHEN "VgA" THEN 86
WHEN "AFY" THEN 86
WHEN "VwA" THEN 87
WHEN "AFc" THEN 87
WHEN "WAA" THEN 88
WHEN "AFg" THEN 88
WHEN "WQA" THEN 89
WHEN "AFk" THEN 89
WHEN "WgA" THEN 90
WHEN "AFo" THEN 90
WHEN "WwA" THEN 91
WHEN "AFs" THEN 91
WHEN "XAA" THEN 92
WHEN "AFw" THEN 92
WHEN "XQA" THEN 93
WHEN "AF0" THEN 93
WHEN "XgA" THEN 94
WHEN "AF4" THEN 94
WHEN "XwA" THEN 95
WHEN "AF8" THEN 95
WHEN "YAA" THEN 96
WHEN "AGA" THEN 96
WHEN "YQA" THEN 97
WHEN "AGE" THEN 97
WHEN "YgA" THEN 98
WHEN "AGI" THEN 98
WHEN "YwA" THEN 99
WHEN "AGM" THEN 99
WHEN "ZAA" THEN 100
WHEN "AGQ" THEN 100
ELSE
TRUNC(p.rowid / 0)
END pdq_value
FROM
sysprocplan p, sysprocedures f
WHERE
p.planid = -2 AND
f.procid = p.procid
ORDER BY 2 DESC


Procedural version:
Versão procedimental:


CREATE FUNCTION get_proc_pdq_value(v_proc_name VARCHAR(128))
RETURNING SMALLINT;

DEFINE v_ret_pdq_value SMALLINT;


SELECT
f.procname,
CASE data[1,3]
WHEN "AAA" THEN 0
WHEN "AQA" THEN 1
WHEN "AAE" THEN 1
WHEN "AgA" THEN 2
WHEN "AAI" THEN 2
WHEN "AwA" THEN 3
WHEN "AAM" THEN 3
WHEN "BAA" THEN 4
WHEN "AAQ" THEN 4
WHEN "BQA" THEN 5
WHEN "AAU" THEN 5
WHEN "BgA" THEN 6
WHEN "AAY" THEN 6
WHEN "BwA" THEN 7
WHEN "AAc" THEN 7
WHEN "CAA" THEN 8
WHEN "AAg" THEN 8
WHEN "CQA" THEN 9
WHEN "AAk" THEN 9
WHEN "CgA" THEN 10
WHEN "AAo" THEN 10
WHEN "CwA" THEN 11
WHEN "AAs" THEN 11
WHEN "DAA" THEN 12
WHEN "AAw" THEN 12
WHEN "DQA" THEN 13
WHEN "AA0" THEN 13
WHEN "DgA" THEN 14
WHEN "AA4" THEN 14
WHEN "DwA" THEN 15
WHEN "AA8" THEN 15
WHEN "EAA" THEN 16
WHEN "ABA" THEN 16
WHEN "EQA" THEN 17
WHEN "ABE" THEN 17
WHEN "EgA" THEN 18
WHEN "ABI" THEN 18
WHEN "EwA" THEN 19
WHEN "ABM" THEN 19
WHEN "FAA" THEN 20
WHEN "ABQ" THEN 20
WHEN "FQA" THEN 21
WHEN "ABU" THEN 21
WHEN "FgA" THEN 22
WHEN "ABY" THEN 22
WHEN "FwA" THEN 23
WHEN "ABc" THEN 23
WHEN "GAA" THEN 24
WHEN "ABg" THEN 24
WHEN "GQA" THEN 25
WHEN "ABk" THEN 25
WHEN "GgA" THEN 26
WHEN "ABo" THEN 26
WHEN "GwA" THEN 27
WHEN "ABs" THEN 27
WHEN "HAA" THEN 28
WHEN "ABw" THEN 28
WHEN "HQA" THEN 29
WHEN "AB0" THEN 29
WHEN "HgA" THEN 30
WHEN "AB4" THEN 30
WHEN "HwA" THEN 31
WHEN "AB8" THEN 31
WHEN "IAA" THEN 32
WHEN "ACA" THEN 32
WHEN "IQA" THEN 33
WHEN "ACE" THEN 33
WHEN "IgA" THEN 34
WHEN "ACI" THEN 34
WHEN "IwA" THEN 35
WHEN "ACM" THEN 35
WHEN "JAA" THEN 36
WHEN "ACQ" THEN 36
WHEN "JQA" THEN 37
WHEN "ACU" THEN 37
WHEN "JgA" THEN 38
WHEN "ACY" THEN 38
WHEN "JwA" THEN 39
WHEN "ACc" THEN 39
WHEN "KAA" THEN 40
WHEN "ACg" THEN 40
WHEN "KQA" THEN 41
WHEN "ACk" THEN 41
WHEN "KgA" THEN 42
WHEN "ACo" THEN 42
WHEN "KwA" THEN 43
WHEN "ACs" THEN 43
WHEN "LAA" THEN 44
WHEN "ACw" THEN 44
WHEN "LQA" THEN 45
WHEN "AC0" THEN 45
WHEN "LgA" THEN 46
WHEN "AC4" THEN 46
WHEN "LwA" THEN 47
WHEN "AC8" THEN 47
WHEN "MAA" THEN 48
WHEN "ADA" THEN 48
WHEN "MQA" THEN 49
WHEN "ADE" THEN 49
WHEN "MgA" THEN 50
WHEN "ADI" THEN 50
WHEN "MwA" THEN 51
WHEN "ADM" THEN 51
WHEN "NAA" THEN 52
WHEN "ADQ" THEN 52
WHEN "NQA" THEN 53
WHEN "ADU" THEN 53
WHEN "NgA" THEN 54
WHEN "ADY" THEN 54
WHEN "NwA" THEN 55
WHEN "ADc" THEN 55
WHEN "OAA" THEN 56
WHEN "ADg" THEN 56
WHEN "OQA" THEN 57
WHEN "ADk" THEN 57
WHEN "OgA" THEN 58
WHEN "ADo" THEN 58
WHEN "OwA" THEN 59
WHEN "ADs" THEN 59
WHEN "PAA" THEN 60
WHEN "ADw" THEN 60
WHEN "PQA" THEN 61
WHEN "AD0" THEN 61
WHEN "PgA" THEN 62
WHEN "AD4" THEN 62
WHEN "PwA" THEN 63
WHEN "AD8" THEN 63
WHEN "QAA" THEN 64
WHEN "AEA" THEN 64
WHEN "QQA" THEN 65
WHEN "AEE" THEN 65
WHEN "QgA" THEN 66
WHEN "AEI" THEN 66
WHEN "QwA" THEN 67
WHEN "AEM" THEN 67
WHEN "RAA" THEN 68
WHEN "AEQ" THEN 68
WHEN "RQA" THEN 69
WHEN "AEU" THEN 69
WHEN "RgA" THEN 70
WHEN "AEY" THEN 70
WHEN "RwA" THEN 71
WHEN "AEc" THEN 71
WHEN "SAA" THEN 72
WHEN "AEg" THEN 72
WHEN "SQA" THEN 73
WHEN "AEk" THEN 73
WHEN "SgA" THEN 74
WHEN "AEo" THEN 74
WHEN "SwA" THEN 75
WHEN "AEs" THEN 75
WHEN "TAA" THEN 76
WHEN "AEw" THEN 76
WHEN "TQA" THEN 77
WHEN "AE0" THEN 77
WHEN "TgA" THEN 78
WHEN "AE4" THEN 78
WHEN "TwA" THEN 79
WHEN "AE8" THEN 79
WHEN "UAA" THEN 80
WHEN "AFA" THEN 80
WHEN "UQA" THEN 81
WHEN "AFE" THEN 81
WHEN "UgA" THEN 82
WHEN "AFI" THEN 82
WHEN "UwA" THEN 83
WHEN "AFM" THEN 83
WHEN "VAA" THEN 84
WHEN "AFQ" THEN 84
WHEN "VQA" THEN 85
WHEN "AFU" THEN 85
WHEN "VgA" THEN 86
WHEN "AFY" THEN 86
WHEN "VwA" THEN 87
WHEN "AFc" THEN 87
WHEN "WAA" THEN 88
WHEN "AFg" THEN 88
WHEN "WQA" THEN 89
WHEN "AFk" THEN 89
WHEN "WgA" THEN 90
WHEN "AFo" THEN 90
WHEN "WwA" THEN 91
WHEN "AFs" THEN 91
WHEN "XAA" THEN 92
WHEN "AFw" THEN 92
WHEN "XQA" THEN 93
WHEN "AF0" THEN 93
WHEN "XgA" THEN 94
WHEN "AF4" THEN 94
WHEN "XwA" THEN 95
WHEN "AF8" THEN 95
WHEN "YAA" THEN 96
WHEN "AGA" THEN 96
WHEN "YQA" THEN 97
WHEN "AGE" THEN 97
WHEN "YgA" THEN 98
WHEN "AGI" THEN 98
WHEN "YwA" THEN 99
WHEN "AGM" THEN 99
WHEN "ZAA" THEN 100
WHEN "AGQ" THEN 100
ELSE
-1
END pdq_value
INTO
v_ret_pdq_value
FROM
sysprocplan p, sysprocedures f
WHERE
p.planid = -2 AND
f.procid = p.procid AND
f.procname = v_proc_name;

IF v_ret_pdq_value = -1
THEN
RAISE EXCEPTION -746,0,'Could not decode PDQ value. Please check query';
ELSE
RETURN v_ret_pdq_value;
END IF
END FUNCTION;



Updated on Jan 12, 2011: Cosmo noted that the procedure should be declared as a function and asked me to reference him as Cosmo instead of Simon David

Alterado em 12 de Jan de 2011: O Cosmo referiu que o procedimento deveria ser declarado como função e pediu para ser referido como Cosmo em vez de Simon David

Wednesday, January 5, 2011

William Paterson University Accessbility Conference 2011

William Paterson University and Bergen County Special Services School District will be hosting the Accessibility Conference 2011: Reaching & Teaching All Learners Through Technology, which will be held on January 13, 2011 in Wayne , NJ. This looks to be one of the premiere assistive technology conferences to be
View Larger Map
offered this year in New Jersey and I hope you can come out and spend the day with us. Dave Marra, from Apple Computer will be the keynote and share with us all of the excitement Apple has generated with their lineup of exciting products that have touched the lives of students we work with. Throughout the day there will be ongoing presentations and workshops which I'm sure you will find relevant and important in the work that you do.

During the day I will be presenting on Innovative Uses for Digital Pen Technology.  So if you want to learn about the Livescribe Smartpen, or PaperShow for Teachers, or Xpaper then stop on by find out how these innovative solutions can be used in the classroom. Find out how these innovative digital pen and paper solutions can change the way you teach and offer you a range of outstanding benefits.