You might be aware if you have been following my posts on note taking software that I have been searching for the ideal (ideal for me) solution for capturing and developing ideas and organising notes.
During this time I have spent a lot of time using various programs and a lot of money on acquiring the programs I thought were satisfactory.
Now I have decided to standardise on just one program. ConnectedText.
I have now been using ConnectedText on and off since 2012. I have been using it more extensively since the advent of version 6 which introduced some significant improvements. During this time I have looked at many alternative note taking programs, the best of which were MyInfo and Ultra Recall.
My overall impression is much more favourable than in my previous review, now that I have been using it for a while and have learned to live with it’s little quirks it has grown on me. Of course I recognised the enormous power when I first used ConnectedText but it seemed difficult to use and I wondered whether it was worth the effort. It took me a while to ‘get it’ but now I see that it was well worth the effort.
ConnectedText is different from almost all the other note taking programs which I tried out. It is a wiki and essentially what you are doing is building a website, except it’s not on the Web it’s in your computer.
This is not a novel approach, the World Wide Web itself, if you ignore the advertising, can be seen as a rich and imperfect set of notes belonging to everyone and to both a greater and a lesser extent Wikipedia is the same.
With the World Wide Web there is nobody in overall control, this means that the great majority of the data contained therein is irrelevant and of the stuff that is relevant some of it is wrong. Wikipedia is more useful because of the efforts of a great many volunteers who try to ensure that articles posted are of interest to others and are accurate.
With ConnectedText you have your own intranet, where you can store notes. This is very useful, the markup language allows a great deal of flexibility in the way notes are classified and linked together. If you want a taste of the language then download the Welcome Project from the ConnectedText website.
The program is not perfect by any means. But many of the limitations of the program are understandable for a program of this type. If there was a WYSIWYG editor it would be overburdened with toolbars full of buttons and numerous menus, it would be even worse than Microsoft word. There is a program called Info Qube which has gone down this route and the user interface is hideously complex.
It is a simpler approach to have the functionality of the pages defined in a markup language but this does have consequences for the editor.
When I write I don’t like things disrupting the flow, the markup language does disrupt the flow but not as much as one might expect. The ‘edit mode’ of ConnectedText is just like a plain text editor with only a few distractions. Pressing F11 expands the text editor pane to fill the entire window, this is close to a distraction free environment. So I just write and don’t think about the markup until later.
For more complex pages which are not just plain text I still find it irksome that to edit a page you have to enter a different mode, where you write the ‘source code’ for your page. You will not see the results until the page is rendered i.e. you go back to viewing mode. This decreases the interactivity of the program.
But there is a way to ameliorate this, somewhat. Starting with version 6 you can open a floating window containing a read only copy of a page. You can have as many of these floating windows open as you can fit on your screen. This is so that you could refer to one page whilst reading or editing another. But the page in the floating window can be the one that you are editing, so you can see the ‘source code’ and the results at the same time in different windows. The floating window is not updated automatically but you can update it manually to see what effect your edits have had. This makes things easier for editing and is not as awkward as constantly switching between modes but it is still somewhat cumbersome to save the page you are editing and then have to use the mouse to right click in the floating window and tell it to update itself. I wish that there were a way to automate this so that it could be just one keypress.
I still think edit mode is ugly but it doesn’t seem as ugly as when I first started using ConnectedText, but I have changed many of the settings from their defaults, I found an excellent article on setting up ConnectedText here.
The export facilities of ConnectedText are excellent but the import leaves a lot to be desired. If you take the simple approach and just cut and paste into ConnectedText then the results are often not what you would expect, any formatting is either lost or messed up and tables don’t come through very well.
Import of text files is possible and works well with plain text.
It is also possible to import .RTF files although it often gets the formatting wrong and does tend to mess up tables.
The most compatible import format in my experience is HTML, this format tends to get the formatting right and to get the tables correct. This is unsurprising since HTML is also a markup language. The best way I have found of importing a Microsoft Word document into ConnectedText is to save the document in the ‘filtered HTML’ format from Word then import it.
ConnectedText needs better import facilities.
Table are usually not very pretty in ConnectedText. It is possible to get them to look good with time and effort but a standard table is ugly. Once you have produced a table you cannot just drag the borders of the cells around like you can in a good WYSIWYG editor, tables have to be planned in advance or they look cramped with only just enough room allocated to the contents of each cell.
When creating a table in ConnectedText you don’t get any impression about how it is going to look until it is actually rendered.
In my opinion this is one of the worst features in ConnectedText.
P.S. Added 12th March 2015
I have learned a lot more about CSS files in the last three weeks and have found that it is possible to get the default formatting of ConnectedText tables to be a lot better than the formatting which you get with any of the CSS files supplied with ConnectedText. In fact the rendering of the entire wiki can be improver beyond recognition with a good CSS file.
Memory Usage for large databases
Whilst reviewing each of the note taking programs I did a stress test which consisted of loading more and more documents into them until they failed. I have a collection of approximately 20,000 texts downloaded from the Project Guttenberg website. These range in size from a few kilobytes to three megabytes but the average is about 60 kilobytes.
Most programs failed with the full set of documents. Two which did not fail were Ultra Recall and MyInfo, for these programs searches remained lightning fast and navigation did not slow down. I expect that these programs maintain an index of words contained it each document (called a Trie).
ConnectedText did slow down quite considerably with 20,000 documents and sometimes crashed because it ran out of memory, particularly with indexing and searching. Search and Replace operations were particularly hard hit and slowed to a crawl but also the memory usage went up dramatically during these operations.
With ConnectedText open on one monitor and the Windows Task Manager open on the other I sat and watched the memory usage slowly climb towards two gigabytes, it never reached that far, it would run out of memory when it got close. My laptop has four gigabytes installed but ConnectedText is probably a 32 bit program and so can only address two gigabytes.
However this is an extreme test. I expect that if the average size of document was a lot less then the performance would have been a lot better, even with the large documents of the stress test ConnectedText performed well with two thousand documents except for the searches and search & replace operations which did show significant slowing.
For databases of less than two thousand long documents or a lot more than two thousand smaller documents you should experience no problems. Few people have the need for more than this.
P.S. Added 22nd February 2015.
The Latest update to ConnectedText (220.127.116.11) addresses these issues. The bug which caused the consumption of memory during a Global Search and Replace has been found and eliminated, also the memory usage for 64 bit computers has been raised to 4 Gb. This eliminates most of the complaints raised in this section.
Advantages of ConnectedText
ConnectedText is very powerful. Most of the power of ConnectedText comes from its markup language. But it is also very flexible in the ways you can structure your Wiki and in the ways you can link things together.
Some types of data have a very clear and obvious structure to them, others do not. If you are merely wanting to record details of some data which you already know the structure of then it is perfectly reasonable to define the structure in advance.
An example would be contact details. You already know about names and addresses so you can plan a structure to your data which is most convenient to you.
But there are other problems for which the structure of the data is not known and for these problems it would be a mistake to define a structure for the data in advance. Defining the structure of the data too early might impose an inappropriate structure which might limit the ways in which you think about the data.
Such a problem might be writing up some research or the writing of a thesis which by its nature it is an exploration of new ideas and new research. Most discoveries are not made whilst performing the experiments, they are made during the organising and writing up of the notes, this is where ideas come together in ways which produce flashes of insight which were not apparent from the raw data. Imposing a structure too early might mean that you miss something significant later.
In my opinion this is where ConnectedText is at its best. You can just dump all the raw data in there and classify it organise it and re-organise it, because you can have the same data represented in many different ways simultaneously and just switch between the different views.
Connected Text has very powerful facilities for classifying things. Pages can have category, attribute and property commands embedded in the markup language. A page which contains a category command assigns the page to that particular category. Properties and attributes are similar to each other and both assign a value to a variable which is associated with that page. The only difference is that attributes are displayed as part of the page whilst properties are invisible in the text in viewing mode.
Assigning categories, properties and attributes is only half the story. Once you have a set of pages classified like this you can write queries to select the pages you want to see. Each category has an automatically generated virtual page which contains links to all the pages in that category. The categories are hierarchical so a category can be a subcategory of another category.
A page can contain a query which selects pages with certain categories properties or attributes, when this query is run it will generate a list of links to pages which fulfil the selection criteria. If selecting on a property or attribute any page which assigns anything to that property or attribute is considered to ‘have’ that property or attribute. However queries can also select pages which have a property or attribute equal to (or less than, greater than or not equal to) a specific value. Also the result can be sorted according to the values in a property or attribute.
For instance you might have a set of pages with the category ‘Task’ with an attribute ‘Priority’ and a date associated with each page. You could then have a page containing a query to display tasks which would display a list of all pages in the category ‘Task’, this list could be sorted by priority or by date. The page would be automatically updated each time the page is rendered.
Pages can include other pages (either the whole page or just a part of the page) so a page can be a patchwork of parts of other pages, if any of the source pages change then any pages which include that page also change. When used with ‘named blocks’ using a query to select which blocks are included in the page has made ConnectedText very useful for CAQDAS.
Basically you can connect anything to anything else. All the links are embedded in the text of a page so you don’t connect a note as an entity, you embed a link in the text of the page. The link can be to another note in the wiki or to a note in another wiki or to an external file or to a URL on the internet. The fact that the links are embedded in the text makes them both visible and editable, nothing is hidden. In view mode if you click a link to a file then the program will run that file just the same as if you had double clicked on it in file manager.
Creating a link to a page in the same wiki is easy, you just put the name of the target page within square braces like [[Target Page]] , if the target page exists it is linked to, if it does not then the link appears in red when you go back to viewing mode. But if it does not exist then when you click on that link a new empty page with that name is created and opened in edit mode for you to start writing. This method of creating links on the fly does not interrupt the process of writing when you want to refer to a page which does not yet exist.
The program has a menu item entitled ‘Copy as link’ which copies a universal link onto the clipboard which can be pasted into another Connected Text wiki or into any other program which supports universal links. When activated this link will open Connected Text if it is not already running and direct it to open the page which is the target of the link. So you can link to specific pages within other Connected Text wikis.
Connected text also supports universal links to and from other programs, so I can link to a specific E-mail or contact in my E-mail program from within Connected Text.
There is also a set of ‘Bookmarks’ just like a web browser, you can bookmark favourite pages within your wiki and jump to them.
I was once told on the ConnectedText forum that there is no ‘incorrect’ way of using ConnectedText. Whatever way works for you is correct. Indeed this program is very versatile.
I found an implementation of much of the functionality of ‘Lotus Agenda‘ (an organiser which I once used back in the days of DOS) written in the ‘ConnectedText’ markup language on the Taking Note blog. I am now using this to implement Dave Allen’s GTD method of organising tasks.
The Hierarchical tree is a classic model for the organisation of data. There are many note taking programs which base their whole organisation model on hierarchical trees. The big mistake most note taking programs make is to only allow a page to appear at one location in the tree, but sometimes it might be appropriate for a page to appear in multiple locations. For instance if you have a research project which needs equipment to be bought, does the record of these purchases go under the project or under finances? The answer should be both but often a program will force you to choose which is the most appropriate location. As the tree expands this problem gets worse.
The programs Ultra Recall and MyInfo allow this type of cloning of pages.
ConnectedText also has trees in the form of outlines. Dragging a page to an outline inserts the title of that page and a link to the page into the outline. There are two types of outline available in ConnectedText, there is one generic outline which is saved with the project automatically and another which you explicitly create (but you can only have one of these open at once). The outline allows the same page entry to appear in multiple locations.
You can have as many outlines as you want and each one can give you a unique view of your data. So ConnectedText can function as a classic two pane note taking program based on a hierarchical tree.
Hierarchical trees are very useful but they are not the whole story.
Some note taking programs rely on Tagging (sometimes called Keywords or Categories), Personal Knowbase is an example of this type of program. This is also a good approach to searching for the data you wish to find if the search and filtering is well implemented. Most of the programs I have reviewed (including Personal Knowbase) use a flat model for the categories, it is more useful to have the tags in a hierarchical tree as implemented in the program MyBase, so that a category can have subcategories. This is the approach taken by ConnectedText.
Some note taking programs allow the association of arbitrary metadata with a page, this is useful for searching and filtering of pages, generating sorted lists of pages which meet arbitrary criteria or seeing information about pages.
Ultra Recall allows you to define different arbitrary metadata for each individual page within the database. Scrivener and MyInfo allow arbitrary metadata to be defined but it is common to the whole database. For ConnectedText the metadata is defined within the markup for that page and so it can be unique.
So ConnectedText has implemented all of the most useful aspects of information organisation from other note taking programs, but they are more useful when used together. There are other aspects to the program like being able to generate directed acyclic graphs on a page as well as normal graphs, being able to embed Python scripts within a page and have it execute each time the page is rendered, you can even put musical staves along with their notes on a page although this is one facility I have never used.
ConnectedText is not as pretty as some of the note taking programs I have reviewed but if you are happy with the aesthetics of the program then I know of no other program which can match its power and flexibility.