View Michael Scherotter's profile on LinkedIn

Browse by Tags

Meet Me at the Visual Mapping Conference
31 July 08 09:12 AM | Synergist | 0 Comments   
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...
Filed under: ,
MSDN Webcast: Defining and Managing Requirements with Visual Studio and Visual Studio Team System
16 January 08 09:08 PM | Synergist | 1 Comments   
One of the fun things that I got to do when I was at Mindjet was dream up ways to integrate MindManager with other systems. That's why I created the Mindjet Labs . One of the cool integration demonstrations that I built there was one where I linked MindManager...( Read More...
Posted SilverlightMap code to SkyDrive and Popfly
22 October 07 04:47 PM | Synergist | 3 Comments   

I've decided to share the source code for my SilverlightMap project that converts Mindjet MindManager maps to Silverlight application in two venues: Windows Live SkyDrive and Popfly.

Windows Live SkyDrive

Microsoft Popfly

If you want to contribute and participate in the project you can try the new Popfly service.  Download the Popfly Explorer for Visual Studio to open the project in Visual Studio 2005.  Once you have installed the Popfly Explorer in Visual Studio, add the SilverlightMap project to your Popfly explorer. 

Should I put the Silverlight Map code on CodePlex or SkyDrive?
17 October 07 08:26 PM | Synergist | 1 Comments   

One of the first things that I created at Microsoft built on my previous experience at Mindjet, the creators of MindManager, a mind mapping software.  I built a small converter application that transformed a MindManager map into a Silverlight application.  I posted examples of it on my blog as well and I created a Groove Workspace to share the source code. 

Groove is Microsoft's Peer-to-Peer collaboration application.  Since I posted it, some people who haven't used Groove yet and didn't want to try it out asked for the code and I promptly sent it to them.  This isn't something that I would want to commercialize but I wanted to use it as an example of how you could transform the XML from a MindManager map into Silverlight's XAML. 

I chose Groove because it combined the file storage (where the source code was) with threaded discussion forums and Issue Tracking and it was very easy to setup the workspace and invite people to it.  I really wanted to use CodePlex but at the time, I didn't know if this was something that others would want to contribute to.  I was also told that we shouldn't use CodePlex to dump demo code (which this was) but rather to create open source code projects that encourage contribution and teamwork.  To date, 96 people have joined the workspace to download the source code and learn about the demo.  I have had some comments and some issues raised but no one has made any suggestions for changing any of the source code after looking at it.  As an aside, knowing what I know now about what Silverlight 1.1's going to be next year, I think that this would make a much better Silverlight 1.1 application!

So here's the questions:

Should I create a project on CodePlex (only answer yes if you are willing to contribute and/or participate)

- or -

should I post the source code on my Windows Live SkyDrive so anyone can download it?

Filed under: ,
Talking about Transforming MindManager to Silverlight RIA at Tulsa TechFest
14 October 07 10:11 AM | Michael S. Scherotter | 1 Comments   
One of the first demonstrations of Silverlight that I built was a tool that transforms a MindManager Map into a Silverlight Rich Interactive Application for the web. MindManager user David Walker saw this in my blog and we started chatting. I was then Read More...
Filed under: ,
Mindjet Should Hire These Guys!
07 October 07 08:24 PM | Synergist | 0 Comments   

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?  

Using LINQ to Query Data in a Mindjet MindManager Map
28 September 07 09:26 AM | Synergist | 0 Comments   

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:

image

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!

My Open XML Talk at Mindjet
30 August 07 10:45 PM | Synergist | 0 Comments   

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:
Updated Silverlight Applications to Release Candidate
28 July 07 10:45 AM | Synergist | 0 Comments   

For those of you have heard, a Release Candidate for Silverlight 1.0 was released yesterday.  I had written a few applications using the Silverlight 1.0 Beta and 1.1 Alpha.  Because of some breaking changes, I had to update those applications.  The process was fairly painless; here's what I had to do:

  1. Update to the final Silverlight.js
  2. Change the javascript from Sys.Silverlight.createObjectEx() to Silverlight.createObjectEx()
  3. Removed the BLOCKED SCRIPT from the event handler names

Here are the updated applications:

Using Silverlight in a Groove Space
16 July 07 12:08 PM | Synergist | 0 Comments   

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.

OneNote XML uses CDATA for HTML
06 July 07 10:51 AM | Synergist | 2 Comments   

If you look at the XML generated by the OneNote 2007 API, you will notice that the text outline sections are all escaped with CDATA[] elements.  This, in my opinion is bad form.  I am working on transforming the OneNote XML to Silverlight XAML using XSLT and having that portion of the XML escaped makes it more difficult to parse and transform.  My guess is that it's like this because much of the HTML is copied from web browsers and HTML is not always well-formed XML (XHTML is).  Coming from MindManager that always used well-formed XHTML for note in the XML, I would like much more usable XML from OneNote 2007. 

Instead of this:

<one:OE creationTime="2006-01-25T02:41:25.000Z" lastModifiedTime="2006-03-02T22:01:00.000Z" objectID="{B64DE6F4-60DB-0E93-07D6-DBBDCDBF80A3}{77}{B0}" alignment="left">

<one:T>

<![CDATA[In addition to features covered in the <a

href="onenote:Getting%20Started%20with%20OneNote.one">Getting started</a> section, OneNote has additional tools that can help you in several activities. <span

style='font-weight:bold'>Click these links</span> to explore. Use the <span

style='font-weight:bold'>Back arrow button</span> on the toolbar to return to this page:]]>

</one:T>

</one:OE>

Use this:

<one:OE creationTime="2006-01-25T02:41:25.000Z" lastModifiedTime="2006-03-02T22:01:00.000Z" objectID="{B64DE6F4-60DB-0E93-07D6-DBBDCDBF80A3}{77}{B0}" alignment="left">

<one:T>

In addition to features covered in the <a

href="onenote:Getting%20Started%20with%20OneNote.one">Getting started</a> section, OneNote has additional tools that can help you in several activities. <span

style='font-weight:bold'>Click these links</span> to explore. Use the <span

style='font-weight:bold'>Back arrow button</span> on the toolbar to return to this page:

</one:T>

</one:OE>

Here are two questions:

  1. Is the HTML in OneNote 2007's CDATA sections well-formed XML?
  2. Does anyone have any cool tricks to convert non-well-formed HTML to well-formed XHTML?
Updating Mindjet Labs Solutions to MindManager 7
05 June 07 06:25 PM | Michael S. Scherotter | 4 Comments   
Since the lauch of MindManager 7, I've received a number of requests to update the Mindjet Labs solutions that I built to run on MindManager 7. As most of you know, I've moved on from Mindjet, but I'm still an avid MindManager user and advocate. Read More...
Filed under: ,
Why XML in Silverlight is Significant
23 May 07 02:54 PM | Synergist | 0 Comments   

I have been working with XML for most of my career, from developing a CAD application to my roles at Mindjet to my new role at Microsoft talking about Silverlight.  In this career, I have given numerous talks about the relevance of XML and to be susinct, I have it boiled down to this:

XML is about Partnerships

Whether that partnership are one-to-one or one-to-many, in my opinion, XML is the right technology to use when you want systems to interoperate with eachother.  One type of XML is called XSLT, which is a transformational XML language that defines how one XML set of data transforms to another, so given this XML fragment of Mindjet MindManager XML:

<ap:Topic xmlns:ap="...">
<ap:Text PlainText="Silverlight Rules"/>
</ap:Topic>

this XSLT fragment:
<xsl:template match="ap:Topic" xmlns:xslt="..." xmlns:ap="...">
<TextBlock Text="{ap:/Text/@PlainText}" xmlns="..."/>
</xsl:template>

Produces this Silverlight XAML:

<TextBlock Text="Silverlight Rules" xmlns="..."/>

The significance of this is that you can write an XSL transform from almost any XML language to another: THIS IS BIGThat means that if you have content in one XML format, you can transform it to another.  A few years ago, I did a simple demo (that only works on Internet Explorer) on my personal website that used XSLT to make a browser for sketches that I did over the years (click on the about link on top to see how it was done).  When I was at Mindjet, I created numerous demos on the Mindjet Labs that used XML and XSLT to get data into and out of MindManager.  As you can see, I love working with XSLT!

When I first heard about XAML and Silverlight last year, I started getting very excited about the possibilites that it could enable especially with transforming data from MindManager's XML to XAML.  One of the XML languages that I started working with at Mindjet was the RibbonX XML for Office 2007 Ribbon UI for Word 2007.  Before I joined Microsoft, I started thinking about how I could transform RibbonX XML to Silverlight's XML (XAML) to present a website's user interface.  This was a fun exercise for me and I really learned Silverlight's XAML.  What I created from that was http://xmldocs.net.  I am now seeing others that are using Silverlight to render all types of XML data, like XPS files.  This is why I believe that Silverlight's XML data model is significant. Now, the next thing that I want to look at Popfly

Links:

What XML do you want to see in Silverlight?  To get some ideas, look at all of the web services on Programmable Web (most web services are XML-based).

Mindjet Recommends Bloggers
16 May 07 12:33 PM | Synergist | 0 Comments   

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();
Using Expression Blend to Build Windows Applications
10 May 07 04:10 PM | Synergist | 0 Comments   

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!

More Posts Next page »

Search

Go

This Blog

Tags

Archives

Links

Syndication