Archive for Uncategorized

Announcing Support for RTL in the HtmlConverter.cs Module

Hi all,

Today I am announcing support for RTL languages in the HtmlConverter module that is part of PowerTools for Open XML.


Please give it a try and let me know how it goes…

Cheers, Eric


Comments (4)

PowerTools for Open XML Road Map, April 2014

I recently completed a new version of ListItemRetriever.cs – which is a super important module in PowerTools for Open XML, although it operates mostly behind the scenes.  This module is responsible for translating the various pieces of markup for numbered and bulleted lists into the actual text that HtmlConverter.cs will place in the generated HTML.  It was a test of my patience – I first patched the old version, then I re-wrote it, and then I threw it all out and re-wrote it again.  I am finally happy with it.

Now that this module is completed, it is time to jump back into some serious coding for the high-fidelity HtmlConverter.cs module.  My next goal is to complete Right-To-Left languages, and East Asian languages.

I always try to do the hard stuff first, and because of my unfamiliarity with the Open XML markup that I need to parse, this is somewhat hard.  Also, because I don’t read any RTL or East Asian languages, I have to do this by pattern matching.  Sure would be easier if I could read them…  :-)

I don’t have a good idea of how long it will take.

Some time ago I wrote a crude program that uses search engines to find Open XML documents on the web and download them.  I have a pretty large collection of them – in general, my work will be to run HtmlConverter.cs on these documents and manually compare the docs in Word with the converted HTML in a browser.  Fun.

But where I’m going – I want to have this high-fidelity conversion from DOCX to HTML in really good shape in the next 2-3 months.

Following that, I want to re-write the portions of PowerTools that we use from PowerShell.  I want to re-write all of the cmdlets using the PowerShell language, not using C#.  After re-writing the cmdlets, I believe that the process to install and use the cmdlets will be a matter of dropping some files in a specific place.  It also will make it much easier for users of PowerTools to build new cmdlets, and to modify the existing cmdlets.

This is my vision for PowerTools for Open XML 3.0.

Cheers, Eric

Comments (4)

New Focus for this Blog

This blog will have a new focus.  Up til now, the blog has been pretty much only on Open XML.  However, now I am going to go much wider afield.  Over the years I’ve gained some experience and insight into certain aspects of being a developer, and I’m going to start blogging about them – things like:

  • How I use PowerShell as a developer
  • My own approach to coverage testing, and why it is different and better
  • My approach to learning new programming languages quickly
  • Using screen-casts for intra-team communication – and how to create screen-casts super quickly
  • How I currently use the cloud as a development tool

I’m also going to discuss some of the more philosophical aspects of being a developer – I’ll even discuss what I did before I worked at Microsoft, and how and why I ended up doing what I’m doing.

And I’m certain I’ll discuss things that I haven’t contemplated yet.

This is going to be fun.

Comments (2)

Whew! Comments are working again on this blog!

First of all, I apologize for neglecting this blog for so long.  I’ve been super busy doing stuff at, and after interacting there, haven’t had energy for blogging here.  But I’m turning over a new leaf – have some great non-Open-XML content to post here (as well as some Open XML content).

Also, as many of you have noticed, comments have not been working on this blog.  After learning far more than I wanted to about PHP and MySQL, I finally determined that I had a corrupted comments table in MySQL – I installed phpMyAdmin, and then was able to repair the table, and presto, comments started working again!

I will be working on responding to comments (even old ones) here over the next while.  If you leave new comments, I’ll respond to those first, of course!

Comments (4)

Screen-cast series on writing Recursive Pure Functional Transformations

On, I am publishing a screen-cast series on writing recursive pure functional transforms, which is a powerful programming technique for transforming document-centric XML (such as Open XML WordprocessingML, XHTML, or ODT) into other forms of XML. I have posted four screen-casts in this series. I anticipate that there will be about 20 screen-casts before all is said and done. You can find the complete list here.

Comments (8)

LINQ to XML for JavaScript

I’ve been hard at work in my spare time for months now developing a small JavaScript library that enables you to write code in the style of LINQ to XML. I developed this because I needed to implement some interesting functionality in JavaScript, and I already basically had the code written in C#, so writing this library enabled me to translate that C# code to JavaScript with a minimum of fuss and trouble. ltxml.js – LINQ to XML for JavaScript


Sorting Text in Visual Studio

Sometimes you need to sort some lines of code in Visual Studio – for instance, if you have a long list of Open XML content types, Open XML relationship types, or elements names, you may want that list to be sorted. Here is a little VB snippet (from stackoverflow) that sorts text.

Sub SortLines()
    Dim Selection As TextSelection = DTE.ActiveDocument.Selection
    Dim Lines() As String = Selection.Text.Replace(Environment.NewLine, Chr(13)).Split(Chr(13))
    DTE.UndoContext.Open("Sort Lines")
    ' Edit - see comments
    ' Selection.Text = String.Join(Environment.NewLine, Lines)
    Selection.Insert(String.Join(Environment.NewLine, Lines))
End Sub

Posting this here so I can find it again easily.


Updated Table-of-Content for everything that I’ve written or recorded

Over the last few years, I’ve written a fair number of blog posts, MSDN articles, blog posts, and blog posts on my blog at In addition, I’ve recorded over 60 screen-casts. I’ve assembled links to all of the content from all of the web sites, and aggregated them in the Blog TOC on this blog. I’ve done my best to make it navigable, including the ability to collapse the long descriptions, so that you can more easly view just the blog post or video titles. I’ve categorized it by important keywords, so that a developer working with Word Automation Services or with PowerTools for Open XML can find all relevant content. You can get to this table-of-content by clicking the Blog Table of Contents link in the blue bar under the header.

I am just about to embark on some interesting writing and screen-casting projects, so wanted to get this blog TOC under control before I started.

Comments (3)

Staying Current with Microsoft Developer Technologies

One of my goals when coming to Microsoft was to get, as much as possible, a high-level view of all Microsoft developer technologies that are interesting to me.  My interests are wide – of course, everything Office/SharePoint, but also I am also interested in every data access technology, Silverlight, Windows Phone, Web technologies, graphics design, and on and on.

The other day, a friend of mine at Microsoft asked me what I do to get a broad overview of Microsoft developer technologies, and here is what I told him:

“I listen to every single developer presentation from TechEd, PDC, and MIX.”

Of course, I listen to a number of overview and IT Pro sessions also.  I also make sure I listen to the keynotes – they are interesting not because of technology, but because they give clues into what Microsoft senior management is promoting these days.  Every presentation is available online for download.  This is an incredibly valuable resource.

Note that I said ‘listen’, not watch.  I download the sessions, put them on my Zune, and then start working my way through them.  If I’m doing the dishes, or in my car, or wherever I have dead time, I put on the headphones and continue where I left off.  I listen in the sauna – I can’t believe my old 30GB Zune still works after a hundred trips into the sauna.  Good hardware.  I’ve been doing this for a couple of years, and have listened to many hundreds of sessions.

I don’t necessarily need to examine every line of code in the presentation – I am more interested in listening ‘over the top’ and understanding capabilities, strengths, weaknesses, and overall architecture.  Of course, there are some sessions that are so important that I go back to my PC and watch in high resolution so I can read the code on the screen or see the demos.  And there are others, where the technology is less interesting to me, or the technical content isn’t there, where I quit watching early and move on to the next video.

Which brings me to the point of this post: I’ll be tweeting good sessions as I come across them, with a few words about why I liked them.  Granted, tweeting about sessions presented six months ago is not news, however, twitter is the best forum for these.  They don’t warrant a blog post sometimes, particularly a post that is so very far off topic to what I blog about (Open XML / Office / SharePoint / Functional Programming), but sometimes the information is just too cool to not share.  I’m just letting you know what I found interesting, and why.

Also, I have started a Good Microsoft Conference Sessions page where I’ll list the sessions after I watch them, along with my bit of commentary.  I am also going to add a number from past conferences as time permits.



I am an independant software developer / writer.  I am particularly pasionate about Open XML, SharePoint development, and Office development.  I am a fan of functional programming, and think that using functional programming to transform documents can change the way we think about Open XML documents.

Comments (3)