Author Archive
SGMLReader Joins DReAM on GitHub
A few short weeks after the migration of DReAM, we’ve now also migrated SGMLReader to GitHub. This will make it easier to accept contributions and coordinate development around this crucial .Net library.
As part of the move, we’ve done some cleaning up. First, extraneous solution and project files have been removed so there’s no confusion about which ones to use. Second, and more importantly, the old homebrew test suite has been converted into clean, standard NUnit tests. Finally, we’ve made sure the whole project compiles, runs, and also tests on MonoDevelop [1].
Running SGMLReader natively in MonoDevelop has been an eye-opening experience. Hats off to the Mono & MonoDevelop teams. They have done an amazing job building a feature rich, complete, and polished product. I’m now using it regularly when I hack on my couch while getting my weekly fix of TV shows. It’s not yet my primary IDE, but it’s pretty close.
Unfortunately, it has also been eye-opening about some glaring discrepancies between Mono and .Net. There are definitively problems with the Mono implementations of XmlTextWriter and XmlDocument that cause SGMLReader to fail on some tests. The good news is that Mono is on GitHub too and they have instructions for how to build it on OSX, meaning,we can set up a development environment and track down the discrepancies that cause the SGMLReader tests to fail and contribute those changes back.
Despite these failing tests SGMLReader has proven to be quite reliable on Mono — we’ve been using it on Mono for years — and it’s solid on .NET. The latest signed binaries are available from the SGMLReader Github page via the download button.
If you want to help us improve SGMLReader, or tackle one of the outstanding issues, get started by forking our repo and clone the bits into your local dev environment. Using your preferred IDE, help us address the remaining issues and submit your fixes or new unit tests. SGMLReader has grown into one of the most important .Net libraries and I’m excited contributing to it has just become a whole lot easier!
[1] Using MonoDevelop 2.4.2 with Mono 2.8.2 on OSX 10.6.6
DekiScript Page Profiler

One of the exciting new features in the next major release (code-named Pipestone), is the DekiScript Page Profiler. I’m confident this new feature will delight many DekiScript developers.
In the past, it has been a hassle to figure what part of a complicated, dynamically rendered page requires the most attention. Often, the only method was to comment out sections one by one to determine the offending line or page inclusion. This is now a thing of the past. The page profiler provides a detailed view of every single DekiScript function called and every page included. It’s your backstage pass to see exactly what’s going on!
The profiler output is split into 4 summaries:
- Rendered Content lists all the pages that were rendered and what functions were invoked on each page. Function invocations are grouped together by location to show what each line is doing. Additionally, each function includes an invocation count and total elapsed time.
- Function Summary lists all functions invoked across all pages with their total elapsed time, total invocation count, average time, and max time.
- Page Summary lists all pages with their total rendering time, inclusion count, average time, and max time.
- Data Access Summary lists how many database queries were issued and the performance of the optional cache.
Obtaining the page profiler report requires directly accessing the API, a task that shouldn’t be a hurdleto DekiScript developers.
Here is how you get your page profiler XML document:
- Identify the page ID of the page you want to profile. The easiest is to look at the page source and look for the line that says:
Deki.PageId = 123; - The page meta-data for any page can be accessed by its ID:
http://mysite/@api/deki/pages/123 - Now append
/contents/explainand you’ll get the page profiler report:
http://mysite/@api/deki/pages/123/contents/explain
Depending on how many operations your page performs, the returned XML can become fairly large, but that’s because it contains lots of details. I would recommend looking at the function and page summaries first to get a sense for the potential culprits and use that information to track down the actual call that is causing the slowdown.
Finally, if your site your users report from sporadic slowdowns that you can’t reproduce, you can add this configuration key to have the profiler log its output when a page takes more than 3 seconds to render:
stats/slow-page-render-alert = 3.0
This will make it easier to capture those elusive moments where for some reason a page takes unusually long to render.
And remember when optimizing your pages: the fastest code is the one that never needs to run!
Critical Update: MindTouch 10.0.3a
MindTouch version 10.0.3a is the latest stabilization release for the Olympic family of products (MindTouch 2010, MindTouch Platform v10, MindTouch Core v10). This is an update to MindTouch 10.0.3, which shipped a couple of weeks ago. The fix for the MindTouch.Deki.Reload issue introduced major regressions (see here and here), which have now been addressed.
MindTouch 10.0.3a is MUST install for all 10.0.3 deployments and highly recommended for anyone else.
The 10.0.3a release is available via updateWiki.sh (for VM users) and a source tarball. RPM, DEB, and MSI packages will follow shortly.
New Bug Tracker
Over the past week, BrianH has been busy with migrating the issues, bugs, and tasks from our existing Mantis bug tracker to the new YouTrack installation. All of the open tickets have been migrated and even their issue numbers have remained the same. In short, the migration was a success and BrianH will follow-up with a technical post on how he did it.
If you ever filed a bug or commented on one, you should have an account already created for you. However, you will need to reset your password. Just head over to the YouTrack login page and request the reset email.
Most of you suspect you’ve never heard of YouTrack and may wonder why we decided to switch to it. When I looked at all available options—and I looked at a lot of options—I realized what we needed the most was a tool that would make it super easy to cut through the data. YouTrack’s query language is amazingly powerful and is consistently available for searching, reporting, and creating release notes. It’s simply well thought out.
Aside from the query language, YouTrack has a convenient keyboard-friendly design that enables power users to navigate through search results quickly and update, annotate, tag, and comment all at the same time with minimal keystrokes. In short, it’s really efficient to work with.
Next, YouTrack also provides a voting feature. Yes, I said voting. Finally, you can participate in prioritizing what issues need the most urgent fixing. Please take advantage of this as it really helps us figuring out what you think is in need of immediate attention. To vote, you’ll just need to create an account. That’s it.
As with Mantis, YouTrack also has commenting and watching issues, but it works better by sending immediate emails when status changes happen or new comments are added. A big plus when we need to get more information and there is no other means to communicate with the reporter of the issue. In Mantis, we had to close quite a few bugs, because those who reported them never checked back in to read our questions. That was unfortunate.
Lastly, YouTrack has a very handy issue reporting bookmarklet (accessible from the issue submission form). You can drag it into your browser bar. When you need to file an issue for your installation or on developer.mindtouch.com, you click it and it immediately opens an overlay window, which allows you to file the issue without losing context. Both the bookmarklet and issue submission form also make it easy to attach a screenshot thanks to a bundled java applet.
My hope is that YouTrack will enable much better communication and management of submitted issues. We’ll be porting our Mantis DekiScript Templates next week, which should be the last piece in the migration.
Hope you enjoy our new bug tracker and keep filing away!
MindTouch 10.0.2 Pre-Release Update
PeteE just updated the MindTouch Community Portal with the pre-release bits of MindTouch v10.0.2. This update includes fixes for 36 issues.
This is an incremental stabilization release for the Olympic family of products (MindTouch 2010, MindTouch Platform v10, MindTouch Core v10). Please be particularly alert to any changes in behavior and if you see something that not right, please take the time to file a bug. Assuming no surprises, we’re aiming to release this update by Friday.