-
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.
-
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?
-
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...
-
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?
-
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:
- Update to the final Silverlight.js
- Change the javascript from Sys.Silverlight.createObjectEx() to Silverlight.createObjectEx()
- Removed the BLOCKED SCRIPT from the event handler names
Here are the updated applications:
-
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.

-
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:
- Is the HTML in OneNote 2007's CDATA sections well-formed XML?
- Does anyone have any cool tricks to convert non-well-formed HTML to well-formed XHTML?
-
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 BIG! That 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).
-
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!
-
Last week I went to Scoble's Geek/Blogger Dinner in San Francisco and I realized that I was in the minority because I didn't use Twitter yet. For the uninitiated, Twitter let's you answers the simple question "what are you doing now?" I didn't understand the relevance for me because I didn't think anyone cared what I was doing at any particular moment. But I decided to try it, mainly because of peer pressure and the fact that people that I respect are using it: http://twitter.com/synergist. This is a perfect example of a viral technology. As an experiment in social media, I want to map out its viral nature visually...
-
I have just setup a Groove Workspace for the Silverlight Map demo that I have been working on. If you want to participate and help grow the demo, please send me a message and I'll invite you to the space.
-
Ian Blackburn posted a great MindManager Map on his blog of Silverlight Resource. I wanted to see if my MindManager to Silverlight converter could handle it and with some small modifications, it can! I uploaded it to my Silverlight Streaming Service so you could all see it:
function CreateIansSilverlight(){Sys.Silverlight.createHostedObjectEx({source: "streaming:/216/IansMap",parentElement: IansMapWrapper});}
var IansMapWrapper = document.getElementById("IansMapWrapper");
CreateIansSilverlight();
-
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.