iKnow: A Personal Knowledge Processor

Gary Dunn

January 16, 2004

Introduction

iKnow is a personal knowledge processor, a tool for bringing order to collections of information and for revealing relationships between pieces of information. It is designed to help you know what you know, and to see deeper into what you have.

In the association between knowledge management and information technology, the focus has always been on information sharing. Typically the sharing of information occurs at a web site, and it has become fashionable for this type of web site to be called a portal. iKnow is to knowledge management portals what a diary is to a newspaper. iKnow is a personal tool; it harkens back to the original allure of the personal computer. iKnow comes to you empty, you fill it with whatever you want, and all of your data stays on your local hard drive.

In most case, the data you collect will come from outside sources, such as mail messages and web sites, books, magazines, and newspapers, lectures, speeches, press releases, sales and promotional literature, material safety data sheets; there really is no end to the possibilities. But in some cases, much or all of it will come from you; notes for a paper or a book, for example.

Essentially, iKnow is a text editor wrapped in a collection of organizational and navigational tools. Together, they make a collection of information worth more than the sum of its parts. The value-added bonus comes from the insights you contribute, the organization you impose, and the associations you define.

The Text Editor

Screen Shot: Main Window

The centerpiece of iKnow is a text editor. To call it a word processor would be unfair, because iKnow makes no attempt to format text for printing. However, iKnow's text editor does offer text formatting through functional styles inspired by the original HTML: Heading 1-5, Emphasized, Foreign, Fixed, Fixed Reduced, URL, and the default style, Body. Images in GIF, JPEG, and PNG formats can be inserted at any point in the text. (Images are covered in more detail below.)

The URL text style has a special meaning. Double-clicking on text formatted as URL will invoke your web browser and pass the text as a URL to open. For this to work you must enter the path to your browser in the Preferences dialog box.

Because iKnow builds collections of information, and some information is "better" than others, each item of information includes a weighting factor. The weight can be set to an integer value between one and five. You are free to use this scale in whatever way you wish; the intent is to have it represent relevancy. The weight property really comes into play when searching by keywords.

Each piece, or item, of information is identified with an index, which is analogous to the subject line of a mail message, a news story headline, a book title, or the label on a file folder. All of the data belonging to an item is saved in a single file on disk, and the process is automatic -- iKnow has no save command.

There is no structure to how information is entered. Specifically, iKnow is not a database; there are no predefined data fields to contend with, and no schema to design. Each item is a free-form combination of text and graphics, identified by an index and, if you like, ranked with a weighting factor.

The Category Tree

Items, identified by their indexes, are grouped by category. Categories are organized in the familiar hierarchical inverted tree format used by libraries and computer file systems; a fancy name for these kinds of things is taxonomy. You create whatever hierarchy (taxonomy) works best for you, or follow one established for the field related to your collection.

Each category can contain categories and items, just like the folders on your computer. iKnow displays these in two lists, side-by-side, in the upper half of the main window. Categories on the left, indexes on the right. The contents of the selected index are displayed in the lower half of the window.

To help you keep tract of where you are, the sequence of categories that defines your position, starting from the top and going down through the branches of your hierarchical tree to the current category, is displayed in a long text field above the category and index list boxes. This text box can be used for navigation. For example, to jump directly to the top of the tree, click on the left-most category, which is always called TOP.

Similarly, indexes can be rather long, too long to fit in the index listbox. Therefor, the current index is also displayed in a long text field, this time below the twin list boxes. This text box is also used to edit the selected index; you must press Enter after editing this line for the change to be applied.

There are a variety of navigation methods available. Naturally, clicking on a category in the list box makes that the current category. There are buttons for retracing your steps and for moving to the parent category one step at a time, and ways to jump directly to recently visited categories and across previously established links. Clicking on a category in the current category field, above the category and index list boxes, jumps to that category. You may also use the Go menu to jump back to a previously visited category. In all cases, the selected category becomes the current category, and the twin list boxes are filled with its child categories and indexes.

Right clicking on an entry in the category listbox opens a pop-up menu with the commands Cut, Paste, Rename, and Delete. You use Cut and Paste to move a category. All categories and items contained in that category, and all their children, will move with it. Note that the cut is not applied until the paste is performed, to prevent potentially large amounts of information from being lost. For the same reason, the Delete command only works on empty categories.

Keyword Threads

As useful as it is to organize information into a hierarchy of categories, specific pieces of information -- news stories, press releases, lecture notes, whatever -- typically are multi-dimensional; they have meaning in more than one way. As thoughtful as you have been in laying out your categories, some items will seem to belong in more than one place.

iKnow accommodates this situation by allowing you to create threads that cut across the primary organization imposed by your category tree. Threads are created by assigning keywords to items.

The keywords assigned to the current item are displayed in a listbox in the lower right corner of the main window. Clicking anywhere in this list will open the keyword manager dialog box.

Screen Shot: Keyword Manager

The keyword manager displays the keywords you have assigned for the entire collection and the current item. There you can add new words, assign a previously entered word to the current item, and modify or delete words. Keywords are not restricted to single words; "hot dog" (without the quotes) can be a keyword, and much more meaningful than the individual words.

To add a new keyword to the collection, and the current item, enter the keyword in the text box and click on the Add button. To add a keyword already in the collection (the list on the left) to the current item, click the right-pointing button between the two list boxes. To update a keyword, select it in the current item list (the one on the right), make the changes in the text box, and click on the Update button. Updates are global. To change a keyword only in the current collection is to add a new keyword and delete the old. Deleting the last reference to a keyword deletes it from the collection.

Relying on keywords that you assign, rather than indexing and searching the full text of every item, eliminates the guesswork in choosing what to search for, and reduces the number of false positives. Full text searches are good when you are unfamiliar with the subject matter, or when you have little control over where it is located -- the World Wide Web, for example.

Screen Shot: Keyword Search

To select items by keywords, drop down the Edit menu and choose Find. This will open the Keyword Search dialog box. The keywords assigned to the collection are listed on the left. Use the left- and right-pointing buttons to create the list to search for on the right. Logically, the chosen keywords will be OR'ed together; the more keywords you select, the greater the number of hits is likely to be. Slide the scales to select the range of weightings to include.

Clicking on the Search button will position you on the first matching item, newest first. To move to the next matching item, click on Edit/Find Again. If Find Again is gray, there are no more matching items.

iKnow was designed to be used by you to gather information over time. Thoughtful assignment of keywords when new items are entered will pay off handsomely in the future, when you browse through a collection and discover relationships you did not realize existed.

Links

The keyword threads that evolve over time may turn up interesting relationships, but what about the times when you already know what you know and want to preserve a specific association? Suppose one day your methodical application of keywords has paid off, and you notice an especially significant association between items. How can you save it?

iKnow provides this capability through links. A link connects two items. Think of a link as a notation scribbled in the margin of a book, "See also chapter 8."

The links assigned to the current item are displayed in a listbox in the lower left corner of the main window. Each entry consists of two parts, the name of the collection where the item is located, and the item's index. Clicking on a link will take you there.

Links are added to an item using a pair of small buttons labeled with a "§" (ANSI section symbol, char 167 -- chosen because it looks cool.) Clicking on the button just below the right end of the long index field marks the current item as a target. Clicking on the button to the left of the "Links" listbox adds the link to the current item. To place a link to item B in item A, make item B the current item, click the upper right link button, then navigate to item A and click the lower left button. To remove a link, right-click on it and select "Delete" from the pop-up menu.

Because the clipboard is involved with the linking process, you must be careful not to use the clipboard between the marking and adding steps. When a link is on the clipboard, the clipboard status indicator at the upper right corner displays an "L."

Multiple Collections

As useful as iKnow is in managing a collection of information, its real power is unleashed when collections are used in pairs. The key to success in using multiple collections is the fact that links can traverse collections. Each collection has its own category tree and its own set of keywords, so each collection retains its own identity, but links define points where collections intersect.

Several features simplify using multiple collections. In the Open dialog box, open collections are not listed, eliminating the possibility of opening the same collection twice. The File menu contains a Close command and an Exit command; Close acts only on the window from where it is selected, while Exit closes all Collections. iKnow terminates when the last collection is closed. When a collection is closed a final check is done to ensure that all pending changes are saved -- again, there is no Save command.

To open a second collection, select File / New Browser, and from the window that opens, select File / Open.

An effective way to use a pair of collections is to use one for things that you have control over, and another for things you don't but may have an impact on you. If you are a student, use one collection to store references to books, articles, lecture notes, and information about financial aid, and another to plan what courses to take, and thoughts about research and papers. If you are a coach, use one to store information such as the rules of the game, league guidance, notes from clinics, and tips garnered from books, magazines, and web sites. Use another for team rosters, practice schedules, goals, game assessments and player statistics. The idea is to have one collection for activities that you are responsible for, and another for information that may impact your success in those activities.

Images

Images can be inserted into the text of an item. The way this is done is crude in that the image is treated as a character in the current line of text. This means that text cannot flow around an image as it can with the HTML IMG tag. Often, the best strategy is to place an image on a line by itself.

The method used is similar to HTML in that the image data is not embedded in the text file. A tag is placed in the text, which points to a file. iKnow supports three types of files: GIF, JPEG and PNG.

All image files used in a collection are stored in the collection's folder. When you insert an image, a file open dialog opens on the collection folder. This is to make it easy to re-use images. If you select an image from a different folder, it will be copied to the collection folder. You do not need to keep the original. When an image is deleted from an item, or an item containing an image is deleted, the image file is not deleted.

Due to limitations with the underlying software, images do not always scroll smoothly. Either the top edge or the bottom edge of an image wants to be displayed. Due to the limited height of the text editor window, the midsection of large images will not be visible. To fit inside the text editor window, an image should be less than 530 pixels wide and less than 180 pixels high. iKnow deals with this limitation by using ImageMagick to display images in a separate window, and with a clever bit of trickery.

Screen Shot: Viewing Image with ImageMagick

To view an image in the image viewer, right click on the image in the text window. You can navigate around the collection and open as many images as you want, subject to limitations on memory and screen clutter.

If Allow Image Editing in the Preferences dialog box is checked, clicking on the image in the ImageMagick viewer will display a large menu of commands. If this preference is unchecked, a more limited menu of non-destructive commands will be displayed. Editing commands include cropping, resizing, flipping and rotating, changing color balance, and many wild effects. To avoid accidentally changing an image, only enable image editing when you need it.

When you right-click on an image in the text editor window, iKnow checks to see if the image is a thumbnail. If it is, and iKnow can find a file in the collection folder that conforms to the required naming convention, it will open the substitute. This allows you to insert small thumbnail images in the text window that open into much larger images in the ImageMagick viewer.

The naming convention works like this. Suppose you have a large image file named maui.jpg. If you create a smaller file named maui.thm.jpg, and insert that file into the text window, right-clicking on it will open maui.jpg. This works for GIF, JPEG and PNG files, although the full-size file and the thumbnail must be of the same type -- maui.thm.gif will not open maui.jpg.

If you create the thumbnail beforehand, say using The Gimp (http://www.gimp.org/), you can do this: import the full-size file, delete it from the text window, then import the thumbnail.

With a little practice you can learn to create thumbnails directly from ImageMagick. Try this:

  • Import the original image.
  • Ensure image editing is enabled in Preferences.
  • Right-click on the image so it opens in ImageMagick.
  • Click the image in the new window to display ImageMagick's menu.
  • Use a combination of View / Half Size and Transform / Crop to come up with a representation the size you want.
  • Use File / Save and edit the file name to make it a thumbnail -- maui.jpg becomes maui.thm.jpg.
  • Close ImageMagick.
  • Delete the original image from the text window and insert the thumbnail.

It is often preferable to resize an image by half, as in between sizes are more likely to generate artifacts. If you want to use other ratios, use Edit / Resize and enter a percentage, like 33% or 75%. Be sure to include the percent sign.

Preferences

The Preferences dialog box includes five settings:

  • Display Warnings
  • Allow Image Editing
  • Default Weight
  • Window Color
  • Path to Browser

Display Warnings determines whether or not you will be warned when something is about to happen that could cause a loss of data. For example, if you select an index and select Edit / Delete, you will be asked to confirm that you want to delete this item. These warnings are good for beginners, and can be disabled when you are more familiar with the program.

Allow Image Editing is discussed in the section on Images. When unchecked, ImageMagick will display images without making changes.

Default Weight determines the weighting factor assigned to new items.

Window Color allows you to chose a color scheme. It would be nice if color schemes could be assigned to each collection, but the effect is global. The color chosen is used to create a range of shades suitable for rendering the window elements.

Path to Browser specifies the command to invoke when you double-click on a URL. Examples: /usr/bin/galeon, /usr/X11R6/bin/epiphany. Use the which command to determine the path; for example: which galeon. For this to work the text of the URL must be valid and formatted in the URL style.

System Requirements and Installation

System Requirements

iKnow is written entirely in tcl/tk, with additional support for graphics supplied by ImageMagick. Although tcl/tk can be used to create cross-platform applications, at this time iKnow is only known to run under FreeBSD and Mandrake Linux; it should run on any popular Linux distribution. iKnow uses a GUI, so X must be up and running.

tcl/tk is included on many distributions, and more likely than not is already installed on your system. iKnow requires tcl/tk version 8.4 or newer. If it is not installed, check your distribution source. For FreeBSD, tcl and tk are not in the same place in the ports collection; tcl is in /usr/ports/lang while tk is in /usr/ports/x11-toolkits. For more information about tcl/tk, visit http://www.tcl.tk/

iKnow requires two of the command-line programs that are components of ImageMagick. The programs used are display and convert. This is a very popular package and may already be installed on your system. For FreeBSD it is available from the ports collection under /usr/ports/graphics. For more information about ImageMagick, visit http://www.imagemagick.org/

Downloading

iKnow is a package released as a component of the Open Slate project, which is hosted on SourceForge at

http://sourceforge.net/projects/openslate/

To download the latest version, point a web browser at the above URL and scroll down to the "Latest File Releases" section.

Installing

Currently the installation process is manual, but it is very simple. You will need root access to complete these steps.

1. Ensure that you have tcl/tk and ImageMagick installed on your system. For tcl/tk, enter the command "wish" or "wish8.4". For ImageMagick, try "display -? | more".

2. From a shell command line, execute "which wish" to determine the path to the wish interpreter. You may need to include the version number, like "which wish8.4". Make a note of the result. On my Mandrake Linux system the output is /usr/local/bin/wish8.4

3. Determine where you want to put the main program and its supporting files. I recommend that the main program go in /usr/local/bin, and everything else go in /usr/local/lib/iknow04. Ensure that the directories you create have permissions set to 755.

4. In the directory that you downloaded to, unpack the gzipped tarball with the command "tar xzf iknow04.tar.gz"

This will create a directory named iknow04, which will contain the following files:

	COPYING
	INSTALLATION.txt
	INTRODUCTION.pdf
	INTRODUCTION.txt
	about.gif
	iknow04.tcl
	iknow.xpm
	items.tcl
	keyword.tcl
	links.tcl
	menuposts.tcl
	nodes.tcl
	pkgIndex.tcl
	windows.tcl

5. Edit iknow04.tcl and change two things, the path to wish determined in step 2, and the path to the support files. The path to wish must be the first line in the file. The other configurable line is located a bit further down, and looks like this:

# set path to iknow pkg files
set iknowLib /usr/local/lib/iknow04

Change /usr/local/lib/iknow04 to what you decided in step 3, then save and exit.

6. Move iknow04.tcl to the location decided on in step 3 (/usr/local/bin) and set its permissions to 755.

7. Move the rest of the files to the support directory (/usr/local/lib/iknow04) and set their permissions to 644.

8. Depending on your shell, you may need to do a rehash, or logoff and back on, so that your shell "sees" the new program.

9. From a command line, enter "iknow04.tcl" and the main window should open.

10. If you use a windowing environment like Gnome you will want to add iKnow to a menu. An icon file (iknow.xpm) is included in the support files.

iKnow will create some files on its own. This is where it stores its data. First it will create a directory called .iknow in your home directory, and in there a file named collections, which contains information about the collections you create. Each collection you create is placed in its own directory under .iknow. The entire process is automatic.

I hope you find this program useful. If you use it, drop me a line.

Mahalo,

Gary Dunn
Open Slate Project
http://openslate.sourceforge.net/
mailto:knowtree@aloha.com