-
As many of you may know I am a visual person - I have kept journals ever since starting my architecture education. My journals are a mix of drawing, sketching, collage, watercoloring, visual mapping, and photography. I have started to post...( Read More...
-
Four guys out of Bulgaria just built this .Net application for mind mapping. It looks really cool with a very fresh look! It was built with WPF and all our latest technology like Silverlight. I can't wait to try it out when it goes beta on November 1st. What amazing things could happen if Mindjet would hire these guys? What if another company were to hire them?
-
As most of you may know by now, earlier this year I left Mindjet to join Microsoft. Mindjet is a Microsoft Gold Certified partner who makes the mind mapping software MindManager. Since I have been at Microsoft, I've been "drinking from the fire hose" and learning about many cool technologies; my challenge is to explain their relevance to my customers.
LINQ (Language Integrated Query) is a new feature in C# 3.0 and integrated into Visual Studio 2008, which will be released in February 2008. It allows for a very concise natural-language querying of data sets that is integrated with the Visual Studio 2008 Intellisense.
Throughout the time that I was at Mindjet, we had requests for how the topics in Mindjet MindManager maps could be used as data sources for other applications. I started the Mindjet Labs to show people how to do this. Since the MindManager Map is stored as XML data inside the .mmap file (a zip archive), it is fairly easy to get at the data. This is very similar to the rationale behind the Office Open XML File Formats that are in Office 2007. The hard part comes in understanding the XML (it's a bit verbose). After four years of working with it, when I see the MindManager XML I can visualize the map, similar to how Mouse in the film The Matrix could see the lady in the red dress through falling characters on a screen. Because the XSD schemas for each MindManager map are stored in the zip archive as well as the content, you have an exact description of the MindManager XML format within each .mmap file. Using these schemas and the XSD.exe tool that comes with the .Net SDK, you can create C# or VB.Net classes that can be used to deserialize the MindManager XML using XMLSerializer in the .Net Framework.
XmlSerializer serializer = new XmlSerializer(typeof(Mindjet.MindManager.Map));
Mindjet.MindManager.Map map = serializer.Deserialize(zipStream) as Map;
Once I deserialize the Map, to make that Map work with LINQ, I need to get a collection of Topics in the map as an enumerable object: IEnumerable<Topic>. I put the deserializing and code to return the collection of Topics into .Net assembly so anyone can use it; source code and binary are attached to this post.
The Query
In a MindManager Map, you can assign task priorities top any topic (the colored circles) and that information is stored in the XML data for each topic:
A sample query on this data might be to report how many of each priority topic is in the map. In the simple map above, there are 3 priority1, 1 priority 2, and 3 priority 3 topics. Using LINQ you would query the map like this:
class LINQtoMindManager
{
public void QueryDemo()
{
MindManagerMap map = new MindManagerMap("test.mmap");
var query = from topic in map.AllTopics
where topic.Task != null && topic.Task.TaskPrioritySpecified
group topic by topic.Task.TaskPriority into g
select new { Priority = g.Key, Count = g.Count()};
foreach (var result in query)
{
Console.WriteLine(result.Priority + ": " + result.Count);
}
}
}
That will then write the following results for the map pictured above:
urnmindjetPrio1: 3
urnmindjetPrio2: 1
urnmindjetPrio3: 3
What makes it easy is that LINQ can iterate or query over any collection that supports IEnumerable<> or IQueryable<>. Feel free to download the source code for this MindManager Library and use it in your project!
-
As many of you might know, before I joined Microsoft this past Spring, I worked for Mindjet as an technical evangelist (one of my many titles) where I demonstrated the power of the MindManager Solution Platform through the Mindjet Labs. One of the coolest demonstrations that I built (with the help of Vivek Vishist, a star solutions engineer) was an integration with Microsoft Office Word 2007. This took advantage of Word 2007's Open XML file format and ribbon user interface to demonstrate a high-fidelity round-trip business scenario that wasn't possible with previous versions of Word. I have talked about it many times, both when I was at Mindjet and now that I'm at Microsoft. I think it's a great demo and really shows the power of MindManager and Word 2007 working together; I love showing it off!
The latest time where I presented the solution was at an Open XML workshop that was hosted by Mindjet in San Francisco. Microsoft got a full camera crew there to film the workshop and I was able to talk about it at length (about 13 minutes). It might be a bit hard to follow - I jump around way too much - but take a look tell me what you think.
Links:
-
A few months ago, I create a Microsoft Office Groove 2007 to share the source code for my SilverlightMap project: code to transform a Mindjet MindManager Map into a Silverlight Streaming Application hosted on silverlight.live.com. For those of you who don't know Groove is Microsoft's Peer-to-Peer workspace solution. I find it very useful for putting together ad-hoc workgroups or working with my distributed team, since I am in the field (work at home and travel).
Last month, Hugh Pyle, posted Silverlight in Groove about how to put the Silverlight control inside of a Groove Form. It was obvious to me what I needed to try next: put the Silverlight Map control in a Silverlight form to share maps via a Groove Workspace. Following Hugh's guidelines, I was able to get a Silverlight control in a Groove form. It was clear to me that I could modify the uploader that I built to use a Groove Web Services to insert the Map's XAML into a Groove record. What wasn't clear was where I would put the images, video, and audio that were part of the MindManager Map so that they would be visible in the Silverlight Map and part of the Groove Space. If anyone has suggestions, I would love to hear them. If you want an invite to the Groove Workspace for the SilverlightMap project, please send me a message.

-
In an interesting twist on a blogroll, Gaelen at Mindjet posted a map of MindManager Bloggers on the Mindjet Blog. This works because Mindjet has built a passionate following of individuals who cannot do without their flagship software, MindManager. It's great that Mindjet recognizes these assets in the field and enables them as evangelists for the software. Here's my Silverlight version of the map (click on full screen in the upper right to enlarge):
var blogsWrapper = null;
function CreateBlogsSilverlight(){
Sys.Silverlight.createHostedObjectEx({source: "streaming:/216/blogs",parentElement: blogsWrapper});
}
blogsWrapper = document.getElementById("blogsWrapper");
CreateBlogsSilverlight();
-
Just when you get really good at a tool, you find something better. This happened to me when I moved from C++ to C# for desktop application development. I see it happening again with Expression Blend which you can use to design windows user interfaces and Silverlight applications.
Here is simple application that I built recently to create Silverlight streaming applications and upload them to http://silverlight.live.com. I built it using C# and Windows Forms on Visual Studio 2005. This week I am learning about .Net 3.0 which includes WPF.

The application that Microsoft delivered for designing WPF applications is called Expression Blend and it is aimed at User Interaction Designers like Lars Jensen and Gerelee Goltsev at Mindjet (You'll see their talent when MindManager 7 comes out at the end of the Month with the Office 2007 Fluent Ribbon UI). Typically user interaction designers use tools like Photoshop to communicate design intent to software developers. They typically don't use the Form designer in Visual Studio. I have used Microsoft Visio in the past to design interfaces and that worked well for me. The problem is that there tends to be a disconnect between the tools used to design the UI and the tools used to implement the UI. The workflow is not fluid because the design surface that the user interaction designer works on is not the same design surface that the developer uses to builds the software. The creators of Expression Blend at Microsoft knew that and created it to address the design/build workflow that is common in software development.
As an exercise in learning WPF and Expressions, I reimplemented the user interface in Expressions:
I experimented with using a gradient background. This was done entirely in Expressions Blend. I know when we did visual effects in MindManager like gradient backgrounds, it was done in C++ code and not in the design tools, where it should be done. Now If I want to make any changes to the user interface, I don't have to touch the C++ or C# code at all. Designing and making changes to the UI of an application just got much easier!
-
As I mentioned in an earlier post, I have been playing around with Silverlight and trying to see how it could work with Mindjet MindManager maps. Because both MindManager and Silverlight are based in XML, it is fairly straightforward to transform the MindManager XML to Silverlight XML (called XAML) using XSLT. Since then, I have been working on adding some additional functionality to my XSLT transform to add images, zooming, panning, and video playback...
-
It seems that Microsoft's Sliverlight (formerly WPF/e) is the topic of the day. Since I first learned about WPF/e last year, I started thinking of ways in which Mindjet MindManager could work with it. I started playing around with it and the most exciting feature of it was that it was all based in XML. That means that I could use my existing software tools like Visual Studio and my favorite languages, XSLT and C#, to transform MindManager's XML to Silverlight's XAML. To get my mind around the feature set of Silverlight, I built a simple website (it isn't live yet) that lets you upload and view Mindjet MindManager maps on Internet Explorer, FireFox and Mac Safari. Watch the video that I produced in TechSmith's Camtasia Studio.
It's just rough so far with simple expanding and collapsing of topics, but as time permits, I will work on developing its feature set.
-
Throughout my career, I have developed a specialty for combining technologies in interesting ways and for the past year, I have been calling this role a Synergist. Until recently I was doing this to evangelize the solution platform for Mindjet MindManager, through the Mindjet Labs. On the Mindjet Labs, I maintained the Synergist blog and now I am continuing that thread here at Microsoft.
I am now a Developer Evangelist at Microsoft for the Communications Sector of North America, based in the San Francisco Bay Area. In this role, I will be trying to build excitement and communities for software developers in the communications sector which includes media and entertainment, telecommuncations, and web hosting companies. In my new role, I need to understand the challenges that software developers in this sector are facing.
To build on the technology combinations that I promoted at the Mindjet Labs, I have started thinking of how MindManager could be combined with technologies like WPF/e and Windows Live to create some amazing synergies?
- Are you a MindManager user in the Communications Sector?
- If so, what are the challenges that you are facing?
- What would be a cool synergy or mashup that could help solve that challenge?
-
I am a MindManager fanatic. I will always be one because I love the product and how it has transformed the way that I think and work. Over the past four years at Mindjet, I have had a few roles, but my favorite one has been the one of technical evangelist Read More...
-
When I was in architecture school, a professor told us that great designers steal ideas, they don't borrow them. When you steal something, you take it and make it yours , but when you borrow it, the idea remains theirs. Mindjet Labs 2005-2006 Our Read More...
-
If you want to see my desperate need of a haircut, take a look at an interview that I did with Laura on Microsoft's On10.net . Read More...