Thursday, April 30, 2009

Twitter Learning

Saw a tweet this morning from @willrich45 (Will Richardson):
Reading: "Why Most Twitter Users Give Up" Interesting how edTwitterers use it for learning, unlike most, it seems.
This is a big meme right now based on a Nielsen study that resulted in the blog post: Twitter Quitters Post Roadblock to Long-Term Growth.

I'm not surprised to see that there are lots of people who sign up and then leave. Contrary to what Will implies in his tweet, I'm not sure that among edTwitterers there's really that much of a difference in the effect for people who use it as a learning tool.

I enrolled about a year ago (Twitter Status) and I've personally struggled a bit with the purpose, value, etc. If you look across a broader set of eLearning bloggers discussing twitter you likely will find similar challenges. A big part of this directly relates to my recent post Learning Goals -
Twitter is more for flow learning than directed learning.

The bigger challenge and my claim in Twitter as Personal Learning and Work Tool:

Twitter is Not for People New to Social Learning

Considering what I saw when I looked at following Twitter Learning Professionals - quickly I decided Twitter Mass Follow - Never Mind. My concern about twitter is that it will be too random for most people, especially those who have not established any relationships / understanding of the people they are following. Thus, my opinion is: Twitter is not a tool for people who are new to social media and the use of social media for personal learning and work.

There is one exception to this. If you are going to a conference or evening event where attendees will be using Twitter in a group fashion, then that's likely a good opportunity to try out the tool.
I would guess that among edTwitterers, you likely will also get high drop out rates. Maybe it's less than other audiences - but I'm not so sure.

Thoughts?

Wednesday, April 29, 2009

Reflections on the Webinar

It was really exciting to be able to offer a free webinar on the American Recovery & Reinvestment Act of 2009. I decided about three weeks ago with all of the clamor of this stimulus package to share my ideas on how school districts can begin to dialog on how best to plan for purchases and professional development. First off I would like to thank Glance for providing me with use of their incredibly easy to use screensharing and teleconferencing service. It went off almost without a hitch- slight error on my part of giving my participants my old Glance address. Once I rectified that, we were on our way to having a smooth and successful webinar.

The stimulus package is an ideal was to really build and shore up your school's assistive technology program. While there is a lot to think about, the stimulus dollars will only be here for a two year period of time. One of the top priorities is for schools to purchase state of the art assistive technologies along with intensive professional development for regular and special education teachers. While there will be challenge- never has there been such a great opportunity for those of us in the field of assistive technology to demonstrate just how important these tools can be for the students to reach their goals. For those of you who were not able to make the webinar here is a copy of my presentation.

Learning Goals

In talking with Jay Cross about the recent Learn Trends session and through experience in the #lrnchat, I've come to realize that there are easier personal disconnects for me with informal, social learning experiences and my personal learning goals.

Let me provide some context …

I'm an Infovore (sometimes called an Information Addict). As such, I have to be careful about not oversubscribing or falling prey to the myth of keeping up. I have various techniques that I use as part of my Information Radar where I specifically control the flow and try to improve filtering.

I've worked a bit with Stedman Graham and a phrase he uses really sticks with me:

We all have 24 hours in a day. What makes us different is how we choose to spend it.

When you combine these two thoughts, I am conscious about making smart use of my time (my learning time). I try to make sure that the time I spend is directed towards my personal learning goals. This aligns with the concept of having a To Learn List.

So, going back to the discussion that Jay and I were having around Learn Trends - we seem to have a difference in base philosophy about Learning Goals.

Are we directed in our specific learning goals – I want to learn more about X that will help me solve Y?

Or are we open to learning about just about anything within the overall topic?

I'm sure there's language about this kind of difference in learning styles (?) somewhere. But just so I can refer to it in this post, let's call these:

  • Directed Learning Goals – specific focus
  • Flow Learning Goals – nonspecific, exploratory

Each has it's place an purpose. There's not a right or wrong here. But I believe that it's important to be aware of this from both a learning design, learning style and learning comfort standpoint.

Learning Goals, Expectation and Comfort

Okay, so let me be candid. I generally seek out almost exclusively directed learning goal opportunities. In fact, take a look at my Top Down Strategy. It's a road map for turning almost everything into a directed learning goal. Do you actually have directed learning goals when you are reading the Sunday paper or visiting a museum? For me, it's okay if I don't, but I somewhat am aware of that. Yes, I know that's probably not the healthiest, but I still do read the Sunday paper and I recently spent a lot of time in DC at the wonderful museums.

Now, when you take someone like me who's fairly far on the directed learning goal side of things and you put me into a learning event where it's primarily dialog and aimed at people who have more of a flow learning goal slant, I start to feel uncomfortable.

I find myself trying to translate from the flow learning experience into a directed learning experience. I'm trying to figure out how it relates to my directed learning goals. I become frustrated if I can't connect it back to some of my directed learning goals. The bottom line is somewhat …

That's great, but how am I going to use this?

As long as someone is clear at the start of a learning experience that they plan to let things flow, then I guess I don't have much of a complaint. But …

I will wonder if it was a good use of time, even though I probably will have learned a lot.

Informal Learning and Directed Learning Goals

I believe that this same issue plays out more broadly for learning organizations around informal learning.

In Social Learning Measurement, I discuss various ways we can go about measuring the outcomes from social learning. My general suggestion was that we should be measuring the outcomes (business impacts or intermediate impacts). I generally moved away from talking about measuring specific learning outcomes. And it's going to be hard to deal with things like Online CEU Credits where those are based on time equivalents.

Unlike formal learning, informal learning is generally not going to ensure that specific knowledge will be transferred. Instead, people will learn what they need in order to accomplish the ultimate objectives. We aren't sure what they will learn.

You would think that someone like me, with a strong directed learning goals slant, would be uncomfortable with social learning solutions. Well it really depends.

I rather like it when we can create systems that focus on the real business outcomes (see Data Driven) and allow the mechanisms to be figured out within it. Social learning (informal learning) within the context of directed learning goals feels very comfortable to me.

I think there's something very important here to help make informal learning comfortable to people like me. You are still defining a purpose or direction for the learning. We may not agree on how we will get there or the specific topics or even the form. But we define what we believe we will be able to accomplish as an outcome.

As a specific example, one of the sessions at the Learn Trends April Session, was - "Making informal learning concrete". Jay got me to be a time cop – i.e., keep the conversation moving. I learned something out of the experience. Jay and I should have established what the goals were for the session. I was thinking of concrete as a sidewalk. Jay was thinking of it inside a big truck, still wet and getting continually mixed. I have no idea what people in the session expected – and Jay and I didn't do much to set expectations. We could have likely made the session more comfortable for people with my slant by doing a better job setting a bit of context.

I am very curious to hear thoughts around this. I hope you will comment.

Tuesday, April 28, 2009

Twitter VLE Conversation - Best of eLearning Last Week

In case you missed any of these great posts last week - here's a recap of what the top stuff was from eLearning Learning.

Top Posts

The following are the top posts from featured sources based on social signals.

  1. Twitter Cheat Sheet version 1.1 is up- Adventures in Corporate Education, April 18, 2009
  2. European training survey shows HR and training holding back change- Clive on Learning, April 22, 2009
  3. Social Learning Designer- eLearning Technology, April 22, 2009
  4. Overcoming Top 10 Objections to Social Learning- Social Enterprise Blog, April 24, 2009
  5. Love The Conversation- Blogger in Middle-earth, April 17, 2009
  6. Learning With A Webcam- Blogger in Middle-earth, April 22, 2009
  7. Who Needs to Be on Your 3D Development Team?- Kapp Notes, April 20, 2009
  8. Fantastic File Converter- eLearning Acupuncture, April 24, 2009
  9. Throw away your powerponits, simply use Prezi- Ignatia Webs, April 21, 2009
  10. Learning Tools: for the Educator/Teacher- Don't Waste Your Time, April 20, 2009

Top Other Items

The following are the top other items based on social signals.

  1. Enterprise: List of 40 Social Media Staff Guidelines, April 23, 2009
  2. Twitter As a Learning Tool. Really. - 2009 - ASTD, April 21, 2009
  3. The Web: Design for Active Learning, April 17, 2009
  4. Do Learning Styles exist? - Home, April 22, 2009
  5. How to make e-learning work!, April 23, 2009
  6. The (changed) information cycle, April 17, 2009
  7. The Semantic Web and E-learning, April 18, 2009
  8. Weblogg-ed " New Reading, New Writing, April 23, 2009
  9. Leveraging the human network, April 17, 2009
  10. cathellis13: Ten Commandments of eLearning, April 21, 2009

Top Keywords

New Free Online Learn Trend Events

Over on Learn Trends, we've posted the days/times for the next two online sessions.

May Learn Trends
  • May 21 - 9AM - Noon US Pacific Time
  • I'll be organizing this one and the specific topic and speakers will be getting announced in about a week. It should be good.
June Learn Trends - Networked and Social Learning
  • June 18 & 19 - Times TBD
  • George Siemens will be organizing a two day session on Networked and Social Learning. For example, I will be doing a session on Social Learning Measurement and ROI.
If you are interested in these, please click the links above to go to the Learn Trends site and sign up.

Monday, April 27, 2009

Online CEU Credits

It's very common for organizations to require completion of some number of hours of learning as part of a certification, continuing education or compliance.  There are many, many examples out there. 

The International Association for Continuing Education and Training defines CEUs purely in terms of "contact hours"

Continuing Education Units

One Continuing Education Unit (CEU) is defined as ten contact hours of participation in an organized continuing education experience under responsible sponsorship, capable direction, and qualified instruction.

The recent California AB 1825 requires two hours of "effective interactive training" on sexual harassment for all supervisors.  They include the following definition (which is at least a bit better than most CEU definitions):

“Effective interactive training” includes any of the following:

(A) “Classroom” training is in-person, trainer-instruction, whose content is created by a trainer and provided to a supervisor by a trainer, in a setting removed from the supervisor’s daily duties.

(B) “E-learning” training is individualized, interactive, computer-based training created by a trainer and an instructional designer. An e-learning training shall provide a link or directions on how to contact a trainer who shall be available to answer questions and to provide guidance and assistance about the training within a reasonable period of time after the supervisor asks the question, but no more than two business days after the question is asked.

(C) “Webinar” training is an internet-based seminar whose content is created and taught by a trainer and transmitted over the internet or intranet in real time. An employer utilizing a webinar for its supervisors must document and demonstrate that each supervisor who was not physically present in the same room as the trainer nonetheless attended the entire training and actively participated with the training’s interactive content, discussion questions, hypothetical scenarios, quizzes or tests, and activities. The webinar must provide the supervisors an opportunity to ask questions, to have them answered and otherwise to seek guidance and assistance.

(D) Other “effective interactive training” and education includes the use of audio, video or computer technology in conjunction with classroom, webinar and/or e-learning training.

(E) For any of the above training methods, the instruction shall include questions that assess learning, skill-building activities that assess the supervisor’s application and understanding of content learned, and numerous hypothetical scenarios about harassment, each with one or more discussion questions so that supervisors remain engaged in the training.

They also include:

“Two hours” of training is two hours of classroom training or two hours of webinar training or, in the case of an e-learning training, a program that takes the supervisor no less than two hours to complete.

When it comes to online learning / eLearning, commonly this requirement for some number of hours translates to some amount of time spent in the online course. 

Someone just asked me questions about this and it's a problem that I've faced many times myself.  I'm hoping that you will chime in with your thoughts.  And I think we would all love to see pointers to influential resources that we could use in the future to help argue our case.

Problem 1 – Measure time equivalence?

I'm sure you've been through the design discussion where you figure out how you will show that people spent at least ten hours in the online course so they get their online CEU credits.  You've probably also sat through discussions about what to do if someone manages to finish in less than ten hours.  And you may have experienced this effect when you went through online traffic school.  Many of them force you to be online for some amount of time.

Most often the simple answer is to make sure that you have enough audio or video to ensure seat time is met.  Oh, and you disable the next button.  In other words, you ensure that the design of online learning enforces CEU credits based on seat time.  But what if you don't want to do that?  What if you have something that is text-based?  Or exploratory?

Are there common measures for time equivalence not based on time online or seat time?

Problem 2 – Reduced Time for Online?

I know that many of you reading this want to jump to the part where we convince the organization that they are wrong to base their standards on number of hours.  However, most of us are well aware that in most cases it will not be possible to get a large complex organization to change it's standards, so we have to work within the standards. 

At the same time, we know that:

  • We can do things like speeding up the audio without loss of comprehension.
  • Variability of learner pace means that many learners can learn the same amount in less time.
  • We can often teach the same concepts faster in online Learning / eLearning.

So …

How can we convince the organization that our variable length eLearning is worth X CEU Credits even when seat time may not come out to the set amount of time?

Problem 3 – Collaborative, Informal, Social Learning?

Now the hard part.  We know that forcing someone through 10 hours of courseware is probably not the best idea, especially if we want them to learn a lot and have a good experience.  We can certainly bring in a social element through a webinar (and these have the nice property that there are time lengths).  But what about using other kinds of social learning.

Can we effectively measure the time equivalence of collaborative, informal, social learning?

How can we convince an organization that participation in collaborative, informal, social learning experiences equates to some amount of time equivalence?

Problem 4 – Influencing the Organization?

Again, in most cases, we won't be able to actually change how the organization measures these things.  And when you look at from their perspective, they don't want to write up the specific content that must be covered, because it's too broad and will change.  Thus, they are really just saying – you need to go through X amount of learning.

Are there other good ways to define X amount of learning?

What have you seen that are good ways to handle online CEU credits?

What influential examples exist that might help us influence the organization?

Sunday, April 26, 2009

Informix community news

International Informix User Group is hosting the annual Informix User Conference. It's taking place in Kansas City, not far from the Lenexa development labs where most of the IDS development is done.
This allows the conference participants to meet with some of the more influential people in Informix development. Most of the product architects will be at the conference.

It should be starting, and it will end on Wednesday. You can check the schedule on the IIUG site.
The conference is packaged with a lot of interesting sessions, workshops and you can even take the exams for IDS v11 certification. If you're not going to the conference you can also take a free online test just to get some feedback on your knowledge level. The exams are available on the Prometric website and you can get a promotional code which makes the test exam free (usually it costs $10). Please check http://www.ibm.com/software/data/education/cert-assessment.html?ca=09iiugoffer
and go to the Prometric Website. Use the promotional code IIUG2009.

Taking advantage of being at the conference, Cathy Elliot, Informix Software Marketing Manager, has just created a new blob, called Informix Voices ( https://www.ibm.com/developerworks/mydeveloperworks/blogs/InformixVoices/ ) where she intends to post some interviews with relevant people from the Informix community. Should be worth to keep an eye on it.

Finally, we are all waiting for IDS 11.50.xC4 which we know by now that will bring table compression to the Informix world. I will post about it when the version is available. Meanwhile if you're going to the IIUG conference, enjoy it. If not, keep an eye on the Informix blogs for updates.

Saturday, April 25, 2009

Returning to null...

In a recent article I talked about the way to return a NULL from a query. That remembered me how "picky" Informix is with NULL. Did this sound like me saying Informix does something wrong?! That would be strange in an Informix dedicated blog...
Well... I said "picky" because that's the feeling I get from people who face the way Informix deals with NULL. Usually those persons have a background in other RDBMS which may times behave differently. Let me show some situations common in Informix:

  1. The query below returns NULL. Most of the times people expect it to return "SomeString"
    SELECT
    "SomeString"||NULL
    FROM
    systables
    WHERE
    tabid = 1;

  2. The query below return no rows. People would expect it to return some rows
    SELECT
    "SomeString"
    FROM
    systables
    WHERE
    "A" != NULL::CHAR

  3. The query below also returns NULL. People usually expect it to return 10
    SELECT
    10 + NULL::INTEGER
    FROM
    systables
    WHERE
    tabid = 1

Query 1) and 3) are similar. Above I wrote that Informix is "picky". I could say it in another way: Informix is very strict on the way it treats NULL. By definition (SQL standards), NULL is the absence of value. That means that you can't do nothing with it... Any operation (concatenation in query 1 and addition in query 3 for example) will return NULL. Any comparison with NULL returns FALSE. In order to understand it we must avoid looking at the question with a practical approach and instead use a formal, conceptual approach. In other words, it would be intuitive that if we concatenate a string with "nothing" we would still get the string. But on the other hand, conceptually, we cannot concatenate a string with the absence of string... And we cannot compare anything with NULL, because it does not exist. So, by definition any such comparison should return FALSE. "A" is not equal to something that does not exists, but conceptually you can't compare these two operands, so the comparison fails (FALSE).

Also note that in Informix NULL cannot be represented by "" for example. "" is an empty string. But at least it has a defined value. NULL hasn't.

Many developers argue that the way Informix deals with NULL does not make sense and causes incoveniences. I argue that this makes a lot of sense (mathematically) and I concede that it can be inconvenient sometimes from a practical perspective. But in reality, what those developers or I think is pretty irrelevant. What is relevant is that it's the way the SQL standard defines NULL and Informix follows it.

In order to overcome the inconveniences we can use the NVL() function.

Using the Vernier GPS Sensor with the LabQuest

I first want to thank Vernier Software & Technology for sending me their latest GPS Sensor to review that can be used with LoggerPro 3.7 and the LabQuest. I have always had a keen interest in both science and technology and would have loved to have access to a LabQuest in my science classes when I was in school. In this day in age of technology, the LabQuest foots the bill for an easy to use handheld data collection tool. The LabQuest continues to grow as an educational tool as more and more sensors get added to the product line. I was very glad to hear that Vernier was going to release a GPS Sensor this spring that could be used with the LabQuest and when it arrived at my doors steps, I couldn't wait to give it a try. Vernier shipped me the GPS Sensor along with LoggerPro 3.7 software which incorprates some new features that can take advantage of the GPS sensor. My first reaction was "wow," when I first saw the GPS Sensor, no bigger than a USB thumbdrive that I carry with me. My first order of business was to update the system software on my LabQuest which went off without a hitch. Once the LabQuest was updated, I plugged in the GPS Sensor and watched as my LabQuest honed in on the satellities. Within seconds my LabQuest was displaying a readout of the latitude and longitude.

I decided to give the GPS Sensor a try and walked around the periphery of my home located in the Northwest part of New Jersey. I plugged the GPS Sensor into the LabQuest and pressed the Start collection button. As I walked around the property line, I watched as the LabQuest updated my position on the screen. After walking around the property line, I came back into my office and launched LoggerPro 3.7 and plugged the LabQuest into my computer. Within seconds, LoggerPro 3.7 prompted me to download the data that I had just collected. You will find LoggerPro and LabQuest easy to use and the helpful prompts will ensure that you are able to offload your data correctly to your computer. Once the data had been downloaded to LoggerPro you can take a look at your Speed, Altitude, Time and Latitude (Direction) from within the software.

One of the really exciting features of bringing your GPS data into LoggerPro 3.7 is the ability to map it. Right now there a two options for mapping your data: exporting the data in a GIS format or exporting it to Google Maps. In my instance, since I was connected to the web, I decided to export the data directly to Google Maps which was really exciting. Within seconds my route around the periphery of my home was plotted within Google Maps, which you can see in the screenshot.



The GPS Sesnor from Vernier worked really well and should give you some reason to think how you can integrate this location based technology in your science and math programs. It should be noted that you can connect other sensors to your LabQuest while the GPS Sensor is connected which makes this an ideal tool for doing field work where there is a need to have your position automatically recorded. Think about the type of environmental projects that would benefit from using the LabQuest and the GPS Sensor in the field. Certainly water quality studies are a prime candidate for using this type of technology. If you can think of some other ideas please leave a comment. The GPS Sensor is an excellent addition to the full line of Vernier sensors that can be used with the LabQuest and begs teachers to think about innovative ways to use location based data collection tools in their classrooms'.

Thursday, April 23, 2009

Compress and free....

Guy Bowerman post's about two new Informix white papers. One of them talks about the new compression feature of IDS 11.50.xC4. Be sure to check it, if you feel your data is growing beyond acceptable limits.
The other paper gives an extensive and detailed overview of managing IDS on Windows platform.

Here's the article: http://www.ibm.com/developerworks/blogs/page/gbowerman?entry=new_informix_white_papers

Online Conference Formats

We've just seen an interesting experience with Jay Cross having pulled together a 24 hour, worldwide discussion on the future of learning at Learn Trends. You can find some of the recordings here.

There's a discussion thread with feedback, and you can read some of Jay's thoughts on doing this. It had very good attendance and the quality of people was very high.

We encouraged people to drop by whenever they were free. They could join in for half an hour, then bail out. Participants did not need to register to attend.

This revolving door of attendance makes measurement tough, but I’ll guess that 250-300 people were involved at least part of the time. On Tuesday morning, we had 125 listening in. On Wednesday morning, we had 50-60. In between, some sessions had 30-40 people, others dwindled to one.


We are deciding what we will do going forward. We plan to hold sessions in May and June. Topics are TBD. And likely the topic will partly decide what format we use.

But I very much would like your help in brainstorming what else we might consider doing with the format?

Please help with ideas or pointers to examples.

Also, if you are interested in future conferences, please go sign up on the Learn Trends Ning Group. We will make sure we notify you of dates and topics.

Wednesday, April 22, 2009

Project Planning in MindView 3

In a previous post, I had asked my readers to share their thoughts and ideas about project planning and management and mind mapping software. I had created a short 10 question poll about the issues and features that you are looking for in your mind mapping software and just how important and integral is project management to the tool. Not surprising a large percentage of the respondents felt that using mind mapping software for project planning was a very important reason for using the tool.

Earlier this week I posted a review of MindView 3 from Matchware, Inc. which focused on the mind mapping environment and thought that you would be interested in some of the unique project management features that are built into MindView 3 BE. With this in mind, I had a chance to take a look at MindView 3 Business Edition (BE) to see how it handles project planning. MindView 3 BE has project planning tools integrated into the mind mapping application and it is easy to go from mind mapping to the Gantt View with a single click. Once you are in the Gantt View you have a full range of tools at your disposal which you would come to expect from a project planning application. Once you go from the mind mapping view to the Gantt View MindView 3 now will treat your Main Topics as Summary Tasks and all your subtopics as your working tasks. In the Gantt View it is easy to set the Start Dates and the Duration for the task and watch the End Date automatically recalculate. MindView 3 BE lets you select the dates from the standard calendar picker which makes it easy to enter the data. You can link your Tasks as well as your Summary Tasks with the Linking tool that is provided in the Toolbar and watch as your Gantt chart is recalculated when changes are made. MindView 3 BE supports a number of common dependencies such as Start to Start, Start to Finish, Finish to Start, and Finish to Finish. To make changes to the type of dependency, simply double click on the link between the tasks and select the dependency type from the drop down menu. Entering task completion is easily accomplished by placing your cursor in the task bar and dragging the completion bar to the right. You could just as easily extend how long a task will take by clicking on the outer edge of the task and dragging to the right. MindView 3 is very responsive and changes are automatically updated. MindView 3 has several overall styles that you can apply to your Gantt chart as well as allowing you to fully customize individual tasks with your own color schemes if you so desire.

Setting up your resources for the project can be accomplished in several different ways. For small projects it is easy to just type in the name of your resource. For larger projects you can import your resources from you Address Book or from your Active Directory. There is also the option of importing your Resources from OpenMind, MindView, Microsoft Project and from MindManager. Once you have entered your Resources into your project you can allocate the Resource by selecting the resource from the Assign Resources dialog box. I would have liked to been able to select the Resource right within Resource area without the need to bring up another dialog box to do so.

Setting up the Project Calendar for the Project is quick and intuitive and allows you to define the standard work day as well as set days off for the project. Setting up non-default days was accomplished very quickly. It is important to understand the each Project Calendar is set up for each project that you are working on. It is not possible for MindView 3 to be able to share Resources among multiple projects you are tracking and so Resource leveling is not an option in this application. To view the Critical Path you simply click on the Critical Path button which is prominently located on the toolbar.

Setting up project costs within MindView 3 BE is accomplished by using the Calculation Panel. As you see in this Gantt Chart, I have set up three different branch values for each task; Labor Costs, Materials, and Total Costs. Once these values have been set up I can then click on any task and enter a dollar value. Using the formula tools within MindView 3 BE, I can also sum up the Total Costs which are based on adding the values of Labor Costs and Materials for each task. Creating the formula to do this was straight forward and intuitive. MindView 3 BE has a very powerful SUM tool that can be utilized to roll up all of the values in your project and provide you with and overall cost for your project. To get a sense of the power of the Calculations-simply use the Export to Excel Advanced feature to generate a fully formatted project cost analysis spreadsheet with all of the data in one place. You can also use the Project Reports tool that is found within the Gantt View to give you a number of key reports that you can generate on the fly. The Project Reports generates html files and opens your reports within the browser. You will find the reporting to be be very quick and easy to use.

When it comes time for sharing your Gantt chart you can easily print it out using the various formatting features found in MindView 3 BE or export your project to Microsoft Project if you like. You can easily export your Gantt view to a Picture file in a number of formats. I would have liked to see the ability to export to PDF within MindView 3 BE,, which is I believe the standard for file exchange.

For those situations when a Timeline will do to communicate the project, MindView 3 BE provides you with an alternative to the Gantt Chart. The Timeline environment is just a click away and is packed with features to help communicate your project tasks and goals. There are several ways to format your Timeline within MindView 3 to take advantage of both timelines and Gantt charts. This is a really handy tool to have access and gives you multiple ways to represent your project tasks. You will notice in the screenshot that you can also show the costs associated with each task.

Summary
MindView 3 BE gives you some easy yet powerful tools which lets you go from mind mapping to project planning with the click of the mouse. MindView 3 BE provides an intuitive and easy to use interface within the Gantt View to get your project planning done and on time. While the calculation feature provides some powerful reporting features it doesn't go far enough to help link the duration of the task with costs. I would have liked to been able to have my costs for the project keyed into the duration of the task and the cost as related to the resource being accessed so that MindView 3 could automatically calculate the current cost for the project. I believe that this is an area for improvement but it does not mar the effectiveness of the tool or the ability to work with calculations and the Excel Export to generate your project costing reports. All told, MindView 3 is a formidable mind mapping tool with strong timeline and project planning features.

Social Learning Designer

Out of the conversation in Learn Trends around making informal learning concrete, Cammy Bean asked:
Cammy Bean: So is there a market for Social Media Instructional Designing Consultants?
Jane Hart suggested that we use the term Social Learning Designer to describe the role. But what was fantastic is how well this crystallized the central question in my mind. Be it as an individual or as a function in an organization, we need to define what the whole business of social learning or informal learning is all about.

Using a common marketing template, I thought it would be a great exercise to have people define our:
  • Buyers
  • Benefits
  • Services
  • Differentiation
Here's the template ...

For _________ (buyers) we help in their desire to __________ (benefits)
by ________ (services) unlike others we _____________ (differentiation).

How do we fill this in for a social learning designer or a social learning organization?

I would very much like to hear your answers.

Here are a couple of examples from the chat to maybe help you get started:

Jane Hart: i work with learning depts to help them create more participatory, collaborative approaches to learning - rather than just shoving content at people

Colleen Carmean: for learning orgs, we help in their desire to increase knowledge within the org by shaping systems that make info needed availalble to anyone at anytime. Unlike others, we do this by creating distributed spaces, places and tools for sharing, finding and creating knowledge.

Blog Post Updates - Effective Pattern?

As part of the Tools Set 2009 series, my first post was Browser Keyboard Shortcut Basics. I was a little surprised that this didn't come up as one of the more popular items recently when I did my Top 20 Posts for Q1 2009.

Now I've got a couple of additional things to add to this information, and it raises a question that I often face:

What do you do when you have an update to a prior post?

I feel like each of my options have drawbacks:

1. Update the original post and create a new post with a link back

Originally, I was going to do this. Just go back and update the original post with the additional information and create a post to say to go look at that for the information.

The advantage of this is that the original post becomes an increasingly rich source of content on the topic. If you want information on that there's only one place to go.

The disadvantage is that people who subscribe to my blog will not see the information in their RSS feed or in the daily email. They have to click. And my belief is that they will not click unless the information is really valuable. Thus, it somewhat gets lost.

The other disadvantage that is completely self-serving is that each post I create has a chance to serve as bait for organic search traffic in the future. I'm pretty sure, but not 100% sure, that long term traffic would be higher by having two posts with different titles than a single post with more links to it – but it only has one title. There are a lot of variables, but since the title and URL are so important for Long Tail Search Engine Optimization, I think having more titles is generally better.

2. Update the original post and create a new post with the additional content and a link back

This is a variation of the above. I would do the same thing, but would also include the new information in the new post as well as in the original post.

The advantage of this approach is that subscribers will get the new content in their feed or email.

The disadvantage is that if I later need to update the topic, then I probably should update both posts – the original and the update post. Otherwise, update posts will be wrong.

Likely, the update post will not be as good for SEO since links will probably go back to the original. However, this is probably in the middle.

3. Put the new information in the update post and add a link to the original post

In this case, I only put the new information in the update post and I edit the original post with a link to the new post.

The advantages here are that subscribers get the new content in their feed or email and that I only have one copy of the new information running around.

The disadvantage is that content on a topic will be scattered around on my blog. If you want to find browser keyboard tricks, you likely will have to visit several posts. My gut tells me that this is not nearly as satisfying for search visitors. It also means that there's additional work to keep track of all the different posts on a topic.

What do you think? Is there another Effective Pattern? Which option would you say is best for me (not too much work) and my subscribers and my search visitors?

Tuesday, April 21, 2009

Good Posts from Last Week

While there is a little bit of controversy about posting these lists, I'm continuing to use the capability of using social signals to make sure I'm finding good stuff. So here's what came up via eLearning Learning from last week. But I'm keeping it to a bare minimum. And I must say that these are pretty good - it would be a shame if you missed them.

Top Posts

The following are the top posts from featured sources based on social signals.

  1. Twitter Job Aid - work in progress- Adventures in Corporate Education, April 12, 2009
  2. Reduce Searching Start Talking- eLearning Technology, April 14, 2009
  3. Solve problems with screencasting- eLearning Acupuncture, April 14, 2009
  4. Augmented Reality in Learning- Upside Learning Blog, April 15, 2009

Top Other Items

The following are the top other items based on social signals.

  1. Determining the ROI of Enterprise 2.0 | Enterprise Web 2.0 | ZDNet.com, April 15, 2009
  2. The Web: Design for Active Learning, April 17, 2009
  3. The (changed) information cycle, April 17, 2009
  4. 3 Things to Consider When Building Your E-Learning Courses, April 14, 2009
  5. Effective knowledge sharing, April 15, 2009
  6. conversation matters: What Do We Get From Conversation That We Can't Get Any Other Way?, April 14, 2009

Top Keywords

Conversation on Conversations

Through blog comments and blog posts, an interesting conversation is emerging around – Conversations as Part of Concept Work.   It somewhat started with my post Reduce Searching Start Talking where I suggest that there are points in our concept work where we need to be ready to move from search to conversation.  In the comments there …

Maria H tells us - I think there is time and purpose for all types of information transfer (for lack of a better phrase) and helping people learn when to use the right one is our challenge.

Ken Allan really somewhat crystallizes it as a question of "Knowing WHEN to switch?"  Or more broadly, when is each kind of method appropriate given a specific concept work need.

In Conversation Questions, I pushed this a bit further based on Nancy Dixon - What Do We Get From Conversation That We Can't Get Any Other Way? – looking at the areas of value, but also left it with the challenging question of not only knowing when to switch, but also knowing who to ask and how to ask the right questions.

In Love the Conversation – Ken Allan discusses the complexity of helping concept workers with the skills around this:

The question here is where to start. It is likely too complex for a practical guiding taxonomy to be drawn up and be of any use. Drafting a program to teach adults to use the right means of knowledge transfer is probably at least as difficult as teaching children to be discerning about information accessible on the Internet. There are no hard and fast rules for this. Yet there is no doubt that discernment forms a large part of selecting efficient and effective means for knowledge transfer.

While this is complex, it's very important.  There are very specific limits to using codified knowledge and that Conversation Learning is essential.  Unfortunately, I'm not sure that we really are doing much to address this important Knowledge Worker Skill Gap

What's nice is that Ken has helped me to get to these core questions:

  • When
  • Who
  • How

Part of the Who and How question, we've discussed before in the Big Question – Network Feedback – where we discussed different places to reach out for help from your networks.  There was certainly no clear answer and some suggestion that we should be aggressive about reaching out to many of your networks.  I've also discussed it in I've talked about it in Leveraging Networks Skill and Networks and Communities.

Codified Conversations

Separately, Harold Jarche provided some interesting thoughts around issues of codified knowledge, individuals and conversations.  He reminded me of Dave Pollard experience with knowledge management (and it's a conversation I've had directly with Dave):

So my conclusion this time around was that the centralized stuff we spent so much time and money maintaining was simply not very useful to most practitioners. The practitioners I talked to about PPI [Personal Productivity Improvement] said they would love to participate in PPI coaching, provided it was focused on the content on their own desktops and hard drives, and not the stuff in the central repositories.

Dave basically went through a transition from looking at KM as big central codified knowledge bases to going out to individuals and work teams in the organization to figure out how they could be helped on a tactical level. 

Dave provides a very interesting picture of information flows in 2025.

PollardOrgInfoFlows2

While his focus still seems to be more on codified knowledge, look at what his first item is: conversations.  There is, of course, a really interesting question of how that conversation is captured.  Dave certainly looks at that in his post – the scattered electronic conversation that occurs today.

Monday, April 20, 2009

Proloquo2Go Webinar

With the marvels of the Internet I was able to connect with David Neimeijer, from Assistiveware via Skype and began chatting with him about the impending release of Proloquo2Go. Proloquo2Go is a portable augmentative communication device that runs on Apple's iPhone and iPod Touch. Proloquo2Go is a very innovative, programmable and cost effective device that can be used with students to give them a "voice". As we were chatting, I asked David if he would mind giving my Assistive Technology Class and introduction to Proloquo2Go-but considering the time difference he thought that his partner Samuel Senott might be available to do it. Within minutes David, Samuel, and I were talking over Skype and setting up the impromptu webinar.

Using Skype, Samuel came into the classroom and introduced himself before we went into a GotoMeeting session. My students appreciated the chance to see Samuel and get a feel for the device before we went into our webinar session. Once in the webinar Samuel was able to show us the iPhone emulator and demonstrate to us first hand how Proloquo2Go will work. My students were really excited to see Proloquo2Go in action and could not believe just how easy it was to use and the quality of the speech. Some of my students were glad to find out the cost and really thought that the size and weight of the device were two very important features. Everyone really enjoyed just how flexible a tool Proloquo2Go is and are looking forward to its imment release on the Apple Store. I personally want to thank Samuel and David for making this happen and wish them the best on their new product launch.

Social Experience

Interesting image from post by Dave White – Eventedness that relates to our social experience with different tools.

eventednessonitsownnewsmall

It looks at how each technology relates to feeling of being present with others and whether that presence is felt beyond a specific limit of an event.

Co-presence comes from being embodied as avatars this definition includes what is experienced when an individual is certain that their contribution (usually in text form) will be read and responded to by others. For example it is possible to get a strong sense of the presence of others when microblogging because the exchanges are often frequent, they often reference each other and the response time can be a matter of seconds. Messages are linked to the particular point in time and their value erodes over time. There is a relationship between the speed in which the value of nodes of communication erode within a technology and the potential for Co-presence. In addition the individuals’ level of trust that their contribution will be understood and responded to within a particular technology has a large bearing on both Co-presence and Eventedness. It is of note that there is very little latent social presence in MUVEs. When you log-off your presence all but evaporates leaving almost no trace of your identity or that fact that you were in the MUVE.

He also points out something quite interesting that I had not really considered the same way is that part of the value of social networking sites and microblogging is that you feel connected to the person even though they are not real-time online at that point. In other words, the social experience extends beyond the specific event.

I'm not 100% sure I fully grasp the implications and meanings of the terms he uses and their importance to the social experience. But, I think the part that really is interesting here is better captured in his post - That Was an Interesting Experience -

“Teaching and learning in virtual worlds is an experience.”

Taking part of a teaching session in a Multiuser Virtual Environment (MUVE) is more than simply using a tool or achieving a task, it feels like an event, a particular moment in time when you have the chance to interact with others at a level of intensity which is rarely felt in other online spaces.

There is definitely something different about "getting together" with other people and the social experience using these different tools. How much you feel connected to them varies greatly.

Pictures and Connection

I need to do a full post on this, but I receive quite a few LinkedIn Connection requests - My LinkedIn Open Connection Approach – and it's surprising how often I will get them from people who briefly met me somewhere and they don't have a picture on their profile. That's really a bad move from a social experience standpoint:

  • I have trouble associating names with faces and you are making it really hard to remember you.
  • It says - "I'm not serious" – and makes it less likely that I will connect with you.
  • Most importantly, it hurts the effect that Dave White is describing – the connection. Without that picture I simply won't feel as connected to you.

But it's also surprising to me that we don't use pictures elsewhere. Way back in Ten Predictions for eLearning 2008, I predicted

Virtual Classroom Tools - Meeting Tool + Second Life Lite

A medium size Virtual Classroom / Meeting Tool will announce features in 2008 that are not 3D immersive, but that are more like Mii characters in a 2.5D world. This will allow more natural kinds of interactions in classroom settings, especially for things like breakout activities.

I got this horribly wrong in that it hasn't happened, but I still think that this will happen. As I look at Dave White's posts, I believe this is an important fundamental part of the social experience that should be happening.

When I watch how my kids play with games, if there's an avatar tool, they often fail to ever play the game because they run out of time having spent so much time creating a good avatar. Yesterday, I was at a bowling alley / arcade and several of the games at an arcade had customizing my ride kids of features. Why? Because it makes us feel more connected to the experience? It goes from a game to a social experience.

Why the heck doesn't each tool – WebEx, Adobe Connect, Elluminate, etc. ask for a bit more profile information in order to try to make it have a better social experience? A picture and a link to their LinkedIn profile (or other profile page)? Sure the pictures would be hard to fit in the tiny space, but I guarantee you would feel more connected. Heck – on most blogs that show who are recent visitors, they don't show a list of text names. They show a list of pictures.

These tools also should have a view that gives you a 2.5D representation of what's going on. They should allow a natural placement breakout into rooms.

These tools should hire some Mac designers to create something that's not 3D, but that gives a greater feeling of presence.

In the meantime, I think it's likely up to us to define how we can use the existing capabilities in ways that make it a better social experience. I cannot claim to be good at this myself, but I want to thank Dave for reminding me of the importance of social experience.

I'd very much welcome thoughts on this.

Sunday, April 19, 2009

24 Hour Conversation on Learning in Organizations - Free

I'm not quite sure what Jay was thinking when he decided to do this, but I'm curious to see what happens.  He's pulled together a 24 Hour Continuous Learning Event:

Conversations about Learning in Organizations

He's got folks from around the world who are going to help participate over the course of 24 hours.  Here's the FAQ.

He's pulled in quite a few people who's names you will know:

  • Marcia Conner
  • Connie Green
  • Stuart Henshall
  • Michelle Lentz
  • Christopher Peri
  • Harold Jarche
  • Clark Quinn
  • Nancy White
  • Rob Paterson
  • Mark Sylvester
  • Ellen Wagner
  • Curt Bonk
  • Charles Jennings
  • Jon Husband
  • Dave Wilkins
  • Brent Schlenker
  • Barry Shields
  • George Siemens
  • Luis Suarez

and many more. 

They will be discussing topics that include:

  • Learning in an era of networked intelligence
  • Show me the money: examples of the payback of social/networked learning
  • New roles for learning professionals
  • Changing corporate culture to accommodate the new learning
  • Making informal learning concrete
  • Twitter and the march toward real-time learning
  • How can we get learners to take responsibility for their own learning?
  • CGI: Bringing the internet inside for informal learning & transformation
  • Case examples of informal learning in corporations.
  • Measuring the results of informal learning
  • Personal learning environments: you show me yours, I'll show you mine

and more.

Saturday, April 18, 2009

Informix authentication and connections

The idea for this post comes from a recent discussion on c.d.i and also from checking the URL referrers that bring people here.
Most of this blog visits comes from Google or other search engines. And apparently there are a lot of questions about how Informix authenticates and establishes user connections.

I will try go give a generic overview on these subjects. I'll point out a few less known aspects of Informix authentication.
This article in no way tries to substitute the official documentation, but I hope this can be used as a concentrated information resource about the subject.


Authentication versus privileges

First, we have to create a distinction between two steps involved in a connection establishment.
As we all know, IDS and other databases have several privileges required for doing any action in the database.
At the first level we have Database level privileges. These are CONNECT, RESOURCE and DBA. Then we have object level privileges. For tables we have INSERT, DELETE, ALTER, REFERENCE and for column level we have SELECT and UPDATE
The list above is not exhaustive. The privileges relevant for this article are the database level ones. In particular the CONNECT privilege. Without it we will not be able to connect.
Privileges can be given using the SQL stament GRANT and removed with the REVOKE. Object level privileges can be GRANT'ed to individual users or to ROLEs. You can imagine ROLEs as groups and you can GRANT a role to individual users.

But let's get back on track. The purpose here is not to explain the privilege infra-structure, but to explain how do we connect to the database. I just explained the privileges because we need to go through two steps for establishing a connection:
  1. First Informix has to make sure we are who we pretend to be. This is called the authentication phase
  2. Second, Informix will check if the user we are defining in the connection has the required privileges to establish the connection.
    It cannot do the second step without first completing the authentication.
    To be able to connect we need at least CONNECT privilege on the database level. This privilege can be granted specifically to the user or to the special role PUBLIC which means "anyone"

User repositories

One very important aspect of Informix is that it doesn't use the concept of database only users. Any user in an Informix database must be recognized by the underlying OS (up to the current version at the time of writing which is IDS 11.50.xC3).
It's essential to know this in order to understand how it works. For example, if you want to create a user for Informix Dynamic Server usage, you have to create it in the OS or other repository, but you must make the OS aware of that user. And for users created in the OS, if you need to change their password you must do it using the OS tools.

Some people may consider this a big limitation, but the subject is a bit more complex than what it may look at first.
There are reasons for this requirement:
  • In an Informix stored procedure, you can call an OS command or script. This is done using the SYSTEM() SPL statement. This command will be run with the user identity that was used to establish the database connection.
    Other databases execute these commands as a specifically configured user or as the user running the database software. The way Informix works can give you a lot of flexibility, but the price for that is the need to have the user recognized at the OS level
  • When we ask the database server to print out the explain of a query using the SET EXPLAIN SQL instruction, Informix will create a file on the database server. The information is written by the database instance processes, so it has to be written on the server running the database.
    This files are written with the user ID used for the connection. The file is written on the current client directory for connections local to the database server and on the users $HOME for remote connections. Again, this requires a user created in the OS
  • The SET DEBUG FILE/TRACE ON SPL instructions have the same behavior and requirements

The above doesn't necessarily means we need to have the users in /etc/passwd (Unix/Linux). It means that getpwnam() must be able to retrieve the user info. This will happen transparently if you configure your system to use LDAP or NIS authentication.
So you can have a central user management infra-structure like LDAP, MS Active Directory or NIS. Informix also doesn't require the user to be able to establish a session (ssh or telnet for example) on the database server at the OS level. You can for example set the users Shell to /bin/false or use other means to prevent the users to connect to the OS.
To complicate things a little bit more, we should not confuse the need to have the user id recognized in the OS with the authentication mechanism. Since 9.40 Informix can use PAM for authentication. This gives you complete freedom to implement complex and sophisticated authentication methods. You can use whatever PAM modules you desire to implement the authentication, which means your Informix authentication doesn't have to be the same as your OS authentication.
But the user has to be known by the OS due to the reasons presented before. As a quick example, you can create your users with random passwords in the OS (not known to anyone) and configure IDS to authenticate your users based on files, or any remote process using PAM.

The fact that the user has to be known in the OS is generally accepted as an inconvenience, and as such I believe it's safe to assume that in a future version Informix will relax these requirements. It could probably accept connections from users not recognized by the OS (either authenticated internally or with PAM or both) and have some parameter to define a default user for the situations where it needs a user id.


Types of connections

Informix implements the following types of connections:
  • Trusted connections
    These connections are based on trusted relations between hosts. Basically the database server host is configured to trust the user if he connects from a specific host or list of hosts.
    As such, this connections can be established without providing a password or any other authentication mechanism. The way it works is exactly the same as the "r" services (rshell, rcmd, rlogin).
    The configuration is done using the network connectivity files, /etc/hosts.equiv and ~/.rhosts

  • Non trusted connections
    These connections are the standard type of connections. Typically we provide a user and a password that is used to check the identity. The password is checked against the user's stored password


  • Challenge/response based authentication using PAM modules
    Connections made to PAM configured ports (DBSERVERALIAS). PAM stands for Plugin Authentication Modules and can be used in any Unix/Linux system (AIX, HP-UX, Linux and Solaris)

  • Distributed query connections
    These connections can be considered trusted connections. But they're established implicitly when a client connected to instance "A" sends a query referencing instance "B".
    In these situation the IDS server "A" will make an implicit connection on behalf of the user, to IDS server "B". The connection authentication will follow the rules for implicit connections, or will use a different authentication mechanism if server "B" is setup with PAM authentication (more on this later)

Non trusted connections

We use non-trusted connections when we give a user id and a token (typically a password) that guarantees our identity (only the user should know it's personal authentication secret or password) . Meaning we have not only the user id, but also it's secret key.
These connections are used mostly in applications that use JDBC, ODBC, .NET, PHP (PDO), Perl (DBI) etc. These APIs require a connection string or URL, or use specific API connection functions. So we define the password in the string, or we provide is as an argument for the API connection function.
Here's an example of a JDBC URL to connect to an Informix instance:

jdbc:informix-sqli://ids_server_machine:9088/my_database;user=username;password=secret

In ESQL/C (embedded SQL/C - which is basically C language with SQL commands) or Informix 4GL we can use the CONNECT instruction:

CONNECT TO database@ids_instance USER <"username"|variable_user> USING <variable_password>


One important note, that allows me to show the two steps in a connection establishment: authentication and database open:
Typically in 4GL we use a "database test_auth" instruction. This, by default, makes the two steps by trying to make a trusted connection using the owner of the process.
But let's create a simple 4GL program to show the difference between authentication and the database opening phase. Here's the code (don't worry if you don't know 4GL, because these lines are self explanatory):

DEFINE username,password char(20)
DEFINE c CHAR

MAIN
PROMPT "Insert your username: " FOR username
PROMPT "Insert your password: " FOR password ATTRIBUTE ( INVISIBLE )
CONNECT TO "@cheetah2" USER username USING password
PROMPT "We are authenticated, but not yet connected to a database..." FOR CHAR c
DATABASE test_auth

PROMPT "Now we have an opened database!" FOR CHAR c
END MAIN


So, we're asking the user's name and password. Than we're CONNECTing to the server. Note that I didn't use a database name. This is a supported syntax, although not very frequently used.
After the connect, we then issue the usual "DATABASE" instruction. Let's see what happens when we run the program above. First the status of the IDS instance showing the existing sessions:

cheetah2@PacMan.onlinedomus.net:informix-> onstat -u

IBM Informix Dynamic Server Version 11.50.UC2 -- On-Line -- Up 09:52:57 -- 88064 Kbytes

Userthreads
address flags sessid user tty wait tout locks nreads nwrites
4780c018 ---P--D 1 informix - 0 0 0 69 559
4780c5f0 ---P--F 0 informix - 0 0 0 0 1032
4780cbc8 ---P--F 0 informix - 0 0 0 0 596
4780d1a0 ---P--- 5 informix - 0 0 0 0 0
4780d778 ---P--B 6 informix - 0 0 0 48 0
4780e328 ---P--- 17 informix - 0 0 1 315 224
4780e900 ---P--D 9 informix - 0 0 0 3 0
4780eed8 ---P--- 16 informix - 0 0 1 1286 1093
4780f4b0 ---P--- 15 informix - 0 0 1 189 3
47810060 Y--P--D 21 informix - 440cfe28 0 0 0 0
10 active, 128 total, 18 maximum concurrent


So... Only informix user system sessions. Now let's run the program (I'll do it as root):

cheetah2@pacman.onlinedomus.net:root-> ./test.4ge
Insert your username: fnunes

Insert your password: [......][ENTER]

We are authenticated, but not yet connected to a database...


The program is now holding at the first "PROMPT" instruction after the connect. Let's see the list of sessions:

cheetah2@PacMan.onlinedomus.net:informix-> onstat -u

IBM Informix Dynamic Server Version 11.50.UC2 -- On-Line -- Up 09:57:30 -- 88064 Kbytes

Userthreads
address flags sessid user tty wait tout locks nreads nwrites
4780c018 ---P--D 1 informix - 0 0 0 69 559
4780c5f0 ---P--F 0 informix - 0 0 0 0 1032
4780cbc8 ---P--F 0 informix - 0 0 0 0 596
4780d1a0 ---P--- 5 informix - 0 0 0 0 0
4780d778 ---P--B 6 informix - 0 0 0 48 0
4780e328 ---P--- 17 informix - 0 0 1 315 224
4780e900 ---P--D 9 informix - 0 0 0 3 0
4780eed8 ---P--- 16 informix - 0 0 1 1286 1093
4780f4b0 ---P--- 15 informix - 0 0 1 189 3
4780fa88 Y--P--- 61 fnunes 4 485bff38 0 0 0 0
47810060 Y--P--D 21 informix - 440cfe28 0 0 0 0
11 active, 128 total, 18 maximum concurrent

cheetah2@PacMan.onlinedomus.net:informix-> onstat -g ses 61

IBM Informix Dynamic Server Version 11.50.UC2 -- On-Line -- Up 09:57:39 -- 88064 Kbytes

session effective #RSAM total used dynamic
id user user tty pid hostname threads memory memory explain
61 fnunes - 4 15267 pacman.o 1 40960 37280 off

tid name rstcb flags curstk status
85 sqlexec 4780fa88 Y--P--- 5728 cond wait netnorm -

Memory pools count 1
name class addr totalsize freesize #allocfrag #freefrag
61 V 483c3028 40960 3680 68 7

name free used name free used
overhead 0 1672 scb 0 96
opentable 0 784 filetable 0 192
misc 0 64 log 0 16512
temprec 0 1608 gentcb 0 1232
ostcb 0 2632 sqscb 0 8192
sql 0 40 hashfiletab 0 280
osenv 0 1720 sqtcb 0 2208
fragman 0 48

sqscb info
scb sqscb optofc pdqpriority sqlstats optcompind directives
488a18a0 48558018 0 0 0 2 1

Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
61 - - - Not Wait 0 0 9.29 Off


So what do we see? We have a session, on behalf of user "fnunes" but the "Current Database" is not defined. So we've just gone through the authentication process with success.
Now, if I press ENTER on the program I'll force the program to execute the DATABASE statement and wait on the second PROMPT:

cheetah2@pacman.onlinedomus.net:root-> ./test.4ge
Insert your username: fnunes

Insert your password: [...] [ENTER]

We are authenticated, but not yet connected to a database... [ENTER]
Now we have an opened database!

ok... now let's look at the database session again:

IBM Informix Dynamic Server Version 11.50.UC2     -- On-Line -- Up 10:09:32 -- 88064 Kbytes

session effective #RSAM total used dynamic
id user user tty pid hostname threads memory memory explain
61 fnunes - 4 15267 pacman.o 1 49152 45544 off

tid name rstcb flags curstk status
85 sqlexec 4780fa88 Y--P--- 5728 cond wait netnorm -

Memory pools count 1
name class addr totalsize freesize #allocfrag #freefrag
61 V 483c3028 49152 3608 83 6

name free used name free used
overhead 0 1672 scb 0 96
opentable 0 1792 filetable 0 352
misc 0 64 log 0 16512
temprec 0 1608 gentcb 0 1232
ostcb 0 2632 sqscb 0 13712
sql 0 40 rdahead 0 832
hashfiletab 0 280 osenv 0 1720
sqtcb 0 2792 fragman 0 208

sqscb info
scb sqscb optofc pdqpriority sqlstats optcompind directives
488a18a0 48558018 0 0 0 2 1

Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
61 - test_auth CR Not Wait 0 0 9.29 Off


So, now we have a current database, in the same session.
This ends the description of non trusted connections using username and passwords. Pretty simple, just like in any other database server.


Challenge/response connections using PAM

Another kind of non trusted connections are connections established through PAM configured DBSERVERALIAS (specific ports where the instance will listen for connections).
I will not go into details about this, because I already wrote an article about it. In http://vietnamtech.blogspot.com/2007/11/informix-user-authentication-pam-for.html I explain how to setup and give examples of challenge/response scenarios.

In summary, a non-trusted connection in Informix is similar to connections in other RDBMS. You supply a username and a token that certifies you're entitled to connect as that user.
Typically this token is a password. But with PAM this can be a much more complex item.
In IDS 11.50 we can also use single sign on with kerberos. Due to the complexity of this scenario I've left it out in this article.
Non trusted connections are used mostly in more recent applications, like Web based applications, Windows client applications, or script languages (PHP, Perl, Ruby etc.) languages.

Trusted connections

These connections are made without any token to confirm the user identity. It's assumed that the user is already identified on the client system and we configure the database server to trust that identification. Trusted connections are mostly used in applications created using Informix 4GL and Informix ESQL/C.
The definition of the trusts are done by configuration of the so called network security files. These files are /etc/hosts.equiv and the ~/.rhosts (.rhosts created in each users's home dir).
Before we dig into these files content, and what it means I have to make a parenthesis to deal with something I'd almost call a myth surrounding Informix trusted connections. If you look around on the Internet you'll easy find a lot of information about how insecure is to use these files. In particular, you may found explicit instructions to not use the ~/.rhosts file.
The main reasons for these are two facts:
  1. These files are not specific for Informix, and in fact they were created to configure a group of services, sometimes called the "r" services. These services are rexec (allows remote execution of a command) on TCP port 512, rlogin (allows remote login) on TCP port 513 and rcmd (all remote shell execution) on TCP port 514.
  2. Many of these services are considered insecure and have a long history of security flaws. The most famous worm also took advantage of some of these security flaws, and also from very relaxed security setup on many of the networks connected to the Internet at the time.

Why did I referrer before the "myth"? Well, many customers have the idea that since IDS uses the same files for trusted connections authentication that you need to be running the above services for it to work. This is completely false. I cannot stress this enough. Even in the official documentation, the administrator guide, is written:

To determine whether a client is trusted, execute the following statement on the client computer: rlogin hostname If you log in successfully without receiving a password prompt, the client is a trusted computer.


Although this is not wrong, it misses the point, and gives the idea that the rlogin service should be running. The above sentence, saying that if rlogin works the user is trusted, is true. But you can create a trust for an Informix connection without having the service(s) running. In this case you'll get a "can't connect error" instead of the password prompt when you run rlogin. And it doesn't mean it won't work with Informix.
I strongly believe Informix should not use these same files for defining it's trust relationships. But the concern that this usage raises is not really an issue. If you're concerned about security, you probably will not use the "r" services. Most of the sites which take security seriously have replaced them with ssh or something similar. So the truth is that these files should be useless in a modern system. And in this scenario, the fact that they're used by Informix should not be considered too critical, since nothing else should depend on them.


I hope this contributes to the disappearance of the "myth". Now let's see how we have to change the network security files in order to create the trusts.
The contents of the files should be similar to how you would configure "r" services trusts. Let's see the two files, because there some slight but very important differences.
  • /etc/hosts.equiv
    Each line in this file defines a trust relation. You can specify a host only, or a host and a user. This file is a system file. No user other than system administrator should have permission to change it.
    If you specify only the host name, you're saying that any user from the remote host is trusted to connect as the same user in the local host. If you specify a "+" (plus sign) this means "any host" and you should never do that...
    There is a significant difference between how Informix and "r" services interpret the file if you specify a hostname followed by a user name. For "r" services, this means that you trust the remote user on the remote system to connect as ANY user in the local system (except root). This is obviously a very serious issue... And by the way, "+ +" means any user from anywhere can login locally as any user! (don't try this even at home :) )
    Informix on the other hand interprets this as a way to specify user by user and not all the users. The remote user cannot connect as another local user without providing a username and password.
  • ~/.rhosts
    This file also includes a trust relation in each non comment line. This file, being in the user home directory, means that you allow the user on the local host to define who he trusts. Many systems verify that the file has no write permissions to the "world". In this case it ignores the settings.
    A line with a host and a username means that the specified username on the specified remote host can connect as the local user owning the .rhosts file. So, for "r" services, if you specify a host and user in /etc/hosts.equiv it means that user can connect as any local user. If you do the same in ~/.rhosts you're reducing the scope of local users that the remote user can authenticate as, to only the file owner
    For Informix, the interpretation is the same: The remote user can authenticate on the local machine, but without changing it's identity. It means that for example, if the local user is luser and it's ~/.rhosts contains "remotehost ruser", then this entry is useless because Informix doesn't have a way to specify the identity change in a connection attempt.

Some additional notes on these files:
  • You can specify negative entries. For example you could use the following in /etc/hosts.equiv:

    pacman -informix
    pacman

    This would allow all users from host "pacman" to connect except informix
  • An entry with a host name means "trust all users except root". A trust relation for root user has to be defined in it's .rhosts file.
  • The order of the entries is relevant. If we exchange the order of the entries in the example above, even informix will be allowed to connect. That's because a positive entry will be found first


Let's see some examples. I have two hosts (pacman and ids1150srvr). I'm running IDS on the ids1150srvr host. If I want to allow the user informix to connect to this instance from the pacman host I can do it in the following ways (these file entries are on the ids1150srvr host):

  • /etc/hosts.equiv:

    pacman
    pacman informix

    The first entry allows all users (except root) to connect from pacman. The second will allow only informix. But be aware that if you're running "r" services you're saying that informix on pacman can connect as any user (again, except root) on ids1150srvr.

  • ~informix/.rhosts

    pacman

Distributed query connections

We've seen a client/server trusted connection. But we have another situation where we must establish trusts between systems. That's the case when you need to join data from two Informix instances. The SQL syntax to do this will look like this:

SELECT
local_table.column, remote_table.column
FROM
table1 local_table, remote_database@remote_ids_instance:table2 remote_table
WHERE
local_table.join_column = remote_table.join_column;

Assuming we are connected to a "local_ids_instance" on ServerA, and that "remote_ids_instance" is running on ServerB, this query will establish a connection on "remote_ids_instance" from the "local_ids_instance". Informix will establish this connection on behalf of our user on "local_ids_instance". As such, our user must be trusted on ServerB when connecting from ServerA. Note that the trust is not done between our client and the ServerB. It's between ServerA and ServerB. If the "remote_ids_instance" is accessed through a normal Informix port, the authentication mechanism used is the same as for trusted connections.

The situation will be different if the "remote_ids_instance" port is configured with PAM. In this situation the trust configuration is done entirely through SQL instructions. IDS versions that support PAM also have a new system database. It's called sysuser. In it we have a table called sysauth with the following schema:


{ TABLE "informix".sysauth row size = 322 number of columns = 4 index size = 295 }
create table "informix".sysauth
(
username char(32) not null ,
groupname char(32),
servers varchar(128) not null ,
hosts varchar(128) not null ,
check (groupname IS NULL )
);
revoke all on "informix".sysauth from "public" as "informix";


create unique index "informix".sysauth_idx on "informix".sysauth (username,servers,hosts) using btree ;



This table is used to define trusts for distributed queries when the destination Informix instance is configured for PAM authentication.
We must specify the username, the hostname and the IDS server from where the connection is made. Note that this not only avoids the usage of the network security files but also provides more control. With the network security files we cannot specify the Informix instance originating the connection.

So, picking up the query above, and assuming the username is "fnunes" we would need the following configuration on ServerB for it to work:
  • Using /etc/hosts.equiv one of the following lines:

    ServerA
    # this would create a trust for all users from ServerA
    ServerA fnunes
    # This would restrict the trust in Informix for user fnunes.
    # But for "r" services it would allow fnunes to login as any user except root on ServerB

  • Using ~fnunes/.rhosts
    ServerA

  • Using the sysuser:sysauth table (if the port was configured for PAM):
    INSERT INTO sysauth ( username, groupname, servers, hosts) VALUES ('fnunes', NULL, 'local_ids_instance', 'ServerA');
Additional notes about sysauth:
  • Although the field names "servers" and "hosts" suggest you could use a list of servers or hosts the documentation says we should create one entry per user/server/host
  • The field "groupname" is not used currently as expected from the check constraint




Additional notes

There are a few less none configuration details about connections in Informix. Let's check them.
  • There are some options that we can specify in the sqlhosts file that control the way IDS deals with trusted connection attempts (for the specific ALIAS of the sqlhosts line).The options I'm referring to are "s=X". "s" stands for security on the server side. The following values are supported:
    • s=0
      Disables both hosts.equiv and rhosts lookup from the database server side (only incoming connections with passwords are accepted).
    • s=1
      Enables only the hosts.equiv lookup from the database server side.
    • s=2
      Enables only the rhosts lookup from the database server side.
    • s=3
      Enables both hosts.equiv and rhosts lookup on the database server side (default setting for the database server side).
    • s = 6
      Marks the port/ALIAS as a replication only (HDR or ER) port
      If you use the option s=6 on sqlhosts options field, than you can create a file called hosts.equiv in $INFORMIXDIR/etc, owned by informix:informix and only modifiable by user informix. This makes the informix user independent of the system administrator for configuring the trusts, and additionally doesn't interfere with "r" services if they're in use
  • There is another security option that defines if the client uses or not the .netrc file. I haven't yet mentioned the .netrc file... You can use this file so specify a user and password, per host that you want to connect. If you setup the file and try to make a trusted connection you'll instead make a non-trusted connection. An example of this file content would be:

    ids1150srvr login fnunes password mysecret

    This would connect you as user "fnunes" using password "mysecret" if you attempt to make a trusted connection to an Informix instance running on host "ids1150srvr". You can have several lines, one for each host you connect to.
    There are obvious security issues derived from having a password in a file...
    The option that specifies if the client libraries will look and use this file is the "r=X" settings on the sqlhosts options (client side):
    • r=0 it ignores the .netrc file
    • r=1 it looks at the .netrc file when a client program tries to make a connection without using username and password

Windows specific information

In MS Windows, the network security files are used in a similar way, but they're in different locations. /etc/hosts.equiv becomes %SYSTEMROOT%\system32\drivers\etc\hosts.equiv.
The .rhosts and .netrc should exist in the users HOME

Common error messages

The following is not an exhaustive list of connection errors, but a small list of the more common ones with a very brief comment. For more information about each one consult the documentation or use "finderr errorcode":
  • -908 Attempt to connect to database server (servername) failed.
    Usually means some problem on the TCP level. Either your server is not running or you have your client SQLHOSTS points to the wrong server or port
  • -930 Cannot connect to database server servername.
    Typically the client cannot obtain the server IP address. Check your DNS configuration.
  • -951 Incorrect password or user user@host is not known on the database
    You can get this error on the server side (online.log) and on the client side.
    On the server side it means the user does not exist.
    On the client side you'll see these error in three situations.. The same error is sent to the client side on different situations in case someone is trying to guess a user or password. The database system administrator can see the real problem. The situations where the error is sent to the client are:
    • The user does not exists on the database server
    • The user's password cannot be validated, although the user exists
    • The user exists, but you're trying to make a trusted connection and the trust is not setup correctly
  • -952 User ()'s password is not correct for the database server.
    This is the error given on the server side when the user password did not validate successfully
  • -956 Client client-name or user is not trusted by the database server.
    Server side error when a trusted connection fails because it's not properly setup
  • -1809 Server rejected the connection.
    This is the only error you'll see when a connection to a PAM configured server happens. In order to understand what went wrong you have to check the PAM stack modules messages
  • -25596 The INFORMIXSERVER value is not listed in the sqlhosts file or the Reg
    The INFORMIXSERVER you're trying to connect is not properly defined in you configured SQLHOSTS
Summary

I really hope this article covers most practical aspects of connection establishment in Informix. There are several aspects I left out for simplicity. These include:

  • Single sign-on (introduced in IDS 11.50)
  • Password encryption
  • SSL connections
These topics may be covered in future articles. You can find more information about Informix connection setup in the Administrator Guide and the Security Guide.