I’m often asked by customers and prospective buyers of MindTouch how they can show or hide help and product documentation based on the user that views an article without having to create multiple versions of the documentation. Good news! This is easy with MindTouch.

There are a variety of user stories for this kind of functionality. In short, it’s either user/group/role based permissioning or URL based variations on content. In some scenarios it requires creating a master documentation, or base docs, that all other derivative docs inherit.  Here are a couple that come up pretty often. These are the most common user stories we hear and address (in no particular order):

Read more…

Tux, the Linux penguin

Running MindTouch on a Linux OS?  Looking to monitor memory usage over time?  While not affiliated with MindTouch in any way, we recommend installing SAR.

SAR is a subset of the SYSSTAT suite, and will allow you to review a memory report based on 10-minute intervals (while capturing 1, 5, & 10 minute averages).  Additionally, it will provide similar reporting on CPU loads, Disk I/O, and network connectivity.

This can be a highly valuable tool for administrators of MindTouch to both ensure appropriate memory usage, and investigate possible issues.  More detailed information about this tool can be found at the link below:

Linux – Resource_Monitoring_Tool

MindTouch & Memory

A 1GB DDR RAM memory (400MHz PC3200 brand, Inf...
Image via Wikipedia

Ever wondered what’s under the hood of your MindTouch instance?  This is the first in a short series on Memory.

Optimal performance of MindTouch is based on several factors including server hardware and configuration.  One of the key variables for MindTouch is memory (RAM).

MindTouch uses its source files as the framework, though drives its content from a MySQL database.  Meanwhile, MySQL relies heavily on memory for its basic functionality.  We require a minimum of 512 MB (though recommend 1 GB) of memory for our software, though depending on the amount of activity and/or DekiScripting more memory may be required.  Additionally, DekiScripting will make calls to the API which will then reach out to MySQL; depending upon the nature of the script more memory may be needed by the system.

Read more…

Introduction

I want to take a moment to introduce myself.  My name is Mike Diliberto, and I am the voice of MindTouch.  For the past

few months, I’ve been busy  creating videos, webinars, and training sessions all about the MindTouch platform.

With a lot of the basics covered, I have turned my attention to creating more in-depth training and webinar sessions, and It would be great to have your feedback to help make these videos and lessons more pertinent to how you are using MindTouch.

I would love to hear from all of you via email (miked (at) mindtouch.com), phone or twitter (@mikediliberto)

Free Training

I’ve recently started to host free introductory MindTouch training sessions.  These classes are free to attend, whether or not you are a current MindTouch customer.  Classes are one hour in length, from 10AM to 11AM Pacific Time, every other Tuesday.

Read more…

MindTouch excels at desktop integration, but few realize the full capabilities of the MindTouch Desktop Productivity Suite. In an effort to build better awareness Jessica recently created the following demo video of the desktop tools. Even if you are already a MindTouch Desktop Suite user watch this video. I promise you will learn something new about this powerful suite of tools.

 

Seriously, if you have read this far and you still have not yet watched the above video let me remind you: watch the video. You will be amazed with the capabilities of the desktop suite featured therein. As was mentioned in the video, the MindTouch Desktop Productivity Suite is included FREE with MindTouch 2009. Download this tool set today and benefit immediately from increased speed and agility in how you capture, collaborate and share at work.

gov20camp1This past Friday, I had the opportunity to participate in the Government 2.0 conference together with our CEO, Aaron Fulkerson.   This was the second government related unconference that I have participated in, and believe me when I tell you, these are exciting times;  over 500 people from both government and the private sector came together to discuss transparency.  The mandates for transparency passed down from the executive branch are opening up access to an amazing amount of data, and users are quickly accessing and building upon this massive amount of data.

One of the most amazing realizations that we had at the conference was how many of the attendees are already MindTouch customers, and on top of that, how many more are using the open source core of MindTouch to build upon for their own applications.

Last month, I hosted a session at Transperancy Camp to demonstrate how users can utilize MindTouch to query this data and mash it up together to create new intelligence and visualize the results.  At the time, I demonstrated some very simple API interaction and how a person could easily query data into our environment, and once there, analyze that data in powerful ways.   Two things became apparent during that first session; first, there is a huge demand for a unified platform upon which to analyze this data and second, MindTouch is uniquely positioned to allow users to rapidly develop applications that utilize this data.

Following my return from Transparency Camp, and with the Government 2.0 conference only 3 weeks away, we set about creating “extensions” to some of the more popular APIs, including the Sunlight Labs API and the Capital Words API.  Over the course of just a few days, one of our engineers, Robert Mason, built these APIs into full MindTouch extensions.  Now users can query this data with just a few clicks from within the page editor.  Robert has also written tutorials on both the use and the creation of these extensions.

At the Government 2.0 conference, Aaron presented a several use cases for these new extensions, including a template that calls several of these extensions and displays the results using Google charts.

For those of you that have never attended an “unconference”, they are based on the premise that no one is a spectator; rather, everyone is a participant.  Anyone is free to host a session, and many of these sessions tend to be very interactive and engaging; Aaron’s demonstration of these extensions spurned some fantastic interaction from the audience, including discussions with government officials regarding the best ways to package this data for release.

In the past, users were expected to digest data like this from within agency websites, through forms for queries and tables or text files for results, but now, with the rise of external data access methods, this data can become much more powerful.  True intelligence comes not from looking at a single data set, but rather pulling data from many sources.

Here at MindTouch we believe that free knowledge is the cornerstone of a free society, and we’re excited to be a part of this data revolution.  In this same spirit, all of these tools are built on the MindTouch Open Source core, and are released to the public free of charge, so visit our community, download MindTouch and start a Revolution!

Reblog this post [with Zemanta]

I had a conversation today with one of our new employees about the power of the Lucene search engine in MindTouch Deki, and I thought I would share some of the high points here.

Like many of the features of MindTouch Deki, the power of the search engine is only revealed once you start digging deeper into the functionality.  On it’s face, our search engine is like many others, with the most common interface being a plain text box on each of the Deki pages. The real power of the search is revealed in the complex expressions that can be interpreted by the search engine. For those of you that have used university library search engines like ABI/Inform or Lexis-Nexus, some of this will be familiar.

First, it is important to note that our search engine indexes not just pages, but also within many common file types, like Word Documents, PDFs, and many other file types. So, a simple search for hello world will return pages that contain the terms hello or world (or both), along with files having the words hello or world in the filename, and even documents that contain the words hello or world in the text of the document.  This search probably returned a lot of results;  suppose you are only looking for results that have both terms in the title?

Read more…

Erm… sorry for the false alarm.. Misposted on the main blog instead of the dev blog. If still interested, the post has been moved here

I’ve been working with a great deal of DekiScript recently and I haven’t really had much time to “show off” any of my developments. Well, just this week I completed a new DekiScript dropdown menu and it’s quite nice so I figured I’d share.

The dropdown menu was developed using a combination of DekiScript and JQuery. It is very easy to implement and doesn’t require using any extensions. Simply just create a new template and paste in the provided code. The template then can by included on desired pages to provide an additional layer of navigation to your community.

The menu that is generated from the template displays two tiers of navigation and originates from the Deki root by default. Alternatively you can specify a path either statically or dynamically using DekiScript to identify where the navigation should originate from.

The code can be cleanly separated into two portions, DekiScript which handles the markup and Jquery which takes care of the CSS. Lets first take a look at the DekiScript as a whole and then I’ll step through individual portions of the DekiScript code.

{{
var langpath ="/";
if ($path) {
let langpath=$path;
}
var langdir = wiki.getpage(langpath);

var topnav = langdir.subpages;
var subnav;
var navhtml;
var tophtml;
var subhtml;
var dropicon;
var topselect;

foreach(var top in topnav) {
  let subhtml='';
  let subnav = top.subpages;
  let dropicon='';
  let topselect='';

  foreach(var sub in subnav) {
     let subhtml..=('<li class="'..sub.name..'">'..web.link(sub.uri,sub.title)..'</li>')
  }
  if (#subnav > 0) {
     let dropicon='<span class="dropicon">v</span>';
  }
  if (string.contains(page.uri,top.uri)) {
     let topselect=' selected ';
  }

let navhtml..=('<li class="'..top.name..topselect..'"><span>'..web.link(top.uri,top.title)
..dropicon..'</span><ul>'..subhtml..'</ul></li>');
}

web.html('<ul id="DWdynnav">'..navhtml..'</ul>');
}}

Now lets break it down into smaller DekiScript chunks to take a look at what each piece is doing. The first part of the DekiScript is responsible for defining the path that the navigation should originate from. I used var langpath ="/"; to set the path default to your wiki homepage. $path is a template variable and is optional. If you are going to provide a path (discussed at the bottom of this blog post) you will do so when you call the template from the page that will display the menu. Lastly I need to work with the page object so I can access the properties and subpages to map out my menu. This is done by using var langdir = wiki.getpage(langpath);. Wiki.getpage returns a page object so if I later needed to I can access properties of the navigations origin page using something such as langdir.title or langdir.author.

var langpath ="/";
if ($path) {
let langpath=$path;
}
var langdir = wiki.getpage(langpath);

The next section is fairly simple. First I am finding out what pages are going to make up my top nav or the 1st tier of the dropdown menu. This is done by accessing the properties of langdir as mentioned in the previous section. You can see that I use var topnav = langdir.subpages; which will set topnav to a map of page objects which I will loop through soon to build my structure. After that I have to define a series of variables that are used to generate the navigations, HTML, CSS and the dropdown icon.

var topnav = langdir.subpages;
var subnav;
var navhtml;
var tophtml;
var subhtml;
var dropicon;
var topselect;

So here’s where it gets a little trickier. To start off I need to loop through each item from the topnav so I setup my foreach loop using foreach(var top in topnav). As I start looping there are some variables that need to be set, they may have different outputs based on the dropdown content.

The first and most important variable I have to set is the dropdown pages. I do this by using let subnav = top.subpages; which will again return a map of page objects which I can later loop through to output the subpages. The other variable are just being reset.

Now that I know the dropdown pages (subnav) I can begin to generate the HTML that will be used to construct the navigation. As I loop through the subnav pages using foreach(var sub in subnav) I am appending new HTML to the subhtml variable which looks like this let subhtml..=('<li class="'..sub.name..'">'..web.link(sub.uri,sub.title)..'</li>')

After I have generated my subnav I need to differentiate my topnav menu items with a subnav from the topnav menu items with no subnav. Basically, if a topnav menu item does have subpage I want to display a little down arrow to let users know. This is done by using if (#subnav > 0). The # will return a count of the objects in the subnav variable, if any. If the topnav does have a submenu I add in a down arrow using let dropicon='<span class="dropicon">v</span>';.

The next part is not really necessary but I added it in regardless. Using if (string.contains(page.uri,top.uri)) I am comparing the topnav page URI’s to the location of the page the the user is on. If their is a match I output let topselect=' selected '; which is later used in the topnav class. This allows users to know where they are relative to all of the pages in the dropdown menu.

The last part simply pulls all of the previous pieces together to construct the final HTML that will be used for the menu. You can see that I am using some DekiScript page properties such as top.name and top.title and I’m also using some DekiScript functions such as web.link. Lastly I’m placing my variables as need throughout the HTML: topselect, dropicon, subhtml.
let navhtml..=('<li class="'..top.name..topselect..'"><span>'..web.link(top.uri,top.title)
..dropicon..'</span><ul>'..subhtml..'</ul></li>');

foreach(var top in topnav) {
  let subnav = top.subpages;
  let subhtml='';
  let dropicon='';
  let topselect='';

  foreach(var sub in subnav) {
     let subhtml..=('<li class="'..sub.name..'">'..web.link(sub.uri,sub.title)..'</li>')
  }
  if (#subnav > 0) {
     let dropicon='<span class="dropicon">v</span>';
  }
  if (string.contains(page.uri,top.uri)) {
     let topselect=' selected ';
  }

let navhtml..=('<li class="'..top.name..topselect..'"><span>'..web.link(top.uri,top.title)
..dropicon..'</span><ul>'..subhtml..'</ul></li>');
}

If you were to leave this output without the additional Jquery code you would have a bulleted list of a page and it’s subpages. Now for the sanity of the readers I’m not going to step through Jquery. All you should know is that it is completely customizable and I created color and style variables at the top to easily modify the look and feel of the menu. You can view a full output of the DekiScript SOURCE with the Jquery at http://wiki.developer.mindtouch.com/User:Howleyda/DekiScript_dropdown_menu/Source. To utilize this code simply copy and page the content into a new template on your Deki.

The very last part which is most important is including the template in a wiki page.

If you want to show the root menu use {{template.DropDown()}}

If you want to specify a path use something like {{template.DropDown{path:page.path} }} or {{template.DropDown{path:"/DekiScript"} }}

Thanks for reading,

Damien Howley
@DamienH

Today we launched a new Documentation space at http://www.mindtouch.com/Documentation. This Documentation space is the official Documentation for MindTouch Deki. Included in the new documentation space are the following sections:

  • Installation – Installation guides for MindTouch Deki for supported Operating Systems
  • User Manual – User Manual for MindTouch Deki
  • Server Management – Includes tutorials for configuring MindTouch Deki’s server environment for Linux and Windows
  • Tips and Tricks – Tips and Tricks for MindTouch Deki configuration and use
  • FAQs – Frequently asked questions for deployment, configuration, and activation
  • Video Library – Videos of MindTouch Deki in action including tutorials of functionality

If you have any questions about our documentation please contact us.