Subscribe: Signs on the Sand
Added By: Feedage Forager Feedage Grade B rated
Language: English
dynamic  ironruby  java  microsoft  nodes  studio  stylesheet  template  version  visual studio  visual  xml  xsl  xslt 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Signs on the Sand

Signs on the Sand

Oleg Tkachenko's Blog

Last Build Date: Wed, 24 Feb 2010 22:27:10 +0200

Copyright: Oleg Tkachenko

Install Visual Studio 2010 RC and report bugs ASAP – it might be not too late to fix!

Wed, 24 Feb 2010 22:27:10 +0200

(image) Visual Studio 2010 Release Candidate is available for download (all three editions - Pro, Premium and Ultimate) and I ask you to install it, give a try and more importantly - try your real projects on it. Why bother? Because you can help to make it the best Visual Studio version ever. 10 might become new 6, but these small nasty beasties like this one can spoil everything. It is not too late to fix crashes and other severe bugs we might have missed. The bug bar is very high now, but crashes in common scenarios and data loss issues still can be fixed by RTM, we just need to know about them ASAP.

Here are some more download links:

1. Visual Studio 2010 SDK for RC

2. ReSharper 5.0 Beta 2 for VS2010 RC if you into it

3. CodeRush Beta for VS2010 RC if you can't live without it

Again: we desperately need your feedback. File bugs to or just post them here if you feel lazy.


Two PDC 2008 videos particularly worth watching

Wed, 29 Oct 2008 23:10:41 +0200

From dozens of cool PDC 2008 videos there are two I obviously like the most:


"Deep Dive: Dynamic Languages in Microsoft .NET" by Jim Hugunin

The CLR has great support for dynamic languages like IronPython. Learn how the new Dynamic Language Runtime (DLR) adds a shared dynamic type system, a standard hosting model, and support for generating fast dynamic code. Hear how these features enable languages that use the DLR to share code with other dynamic and static languages like Microsoft Visual Basic .NET and C#.


"IronRuby: The Right Language for the Right Job" by John Lam

IronRuby is a new dynamically-typed language for Microsoft .NET that offers more runtime flexibility at the expense of compile-time verification. Find out why this is a good thing in the right situations: static compile-time verification for components that need additional rigor, and dynamic typing for more fluid parts of a program. See how to use dynamic typing to create internal Domain Specific Languages (DSLs) and how to use them for systems that you create.


The Microsoft Dynamic Languages Team Blogroll

Tue, 28 Oct 2008 01:07:45 +0200

This is Microsoft Dynamic Languages Team, responsible for IronPython and IronRuby. Not as big as you might expect for the "most important project at MS today", but 100% blogging! Dynamic languages are the next big thing so believe me you want to keep an eye on these guys. I compiled an OPML file for the team, which you can import into your favorite blog reader to subscribe to the whole team in one shot.

In no particular order:

I still can't believe my name is on the list...


One more IronRuby blogger

Sat, 14 Jun 2008 10:38:44 +0200

Jim Deville of Microsoft IronRuby team has started blogging. If you are interested in IronRuby, definitely subscribe.


"Try IronRuby" updated

Tue, 03 Jun 2008 11:10:23 +0200

I've updated Interactive IronRuby Web Shell aka Try IronRuby to IronRuby r113 engine. This is so manual, I need to implement automatic update.

I also added a bit controversial recording feature. I now record everything users type there for security and research purposes.  Security - because "Try IronRuby" is hosted on a shared ASP.NET hosting and if somebody crashes it I need to know how it was done to prevent it in the future.

Recording results are live and open at

Funny thing - when I started recording I added a disclaimer below the console:

Your Ruby code might be recorded for research purposes. No personal data (such as IP address) is ever collected. View what others typed here.

Immediately a concerned user with name "Life Liberty Property" posted this comment:

While the Try IronRuby piece was cool/fast, the fine print underneath concerns me.

It shows signs that Microsoft doesn't get it, their shills don't get it, M$ and cronies refuse to change, they think they own everything, and they are no more open than before:
"Your Ruby code might be recorded for research purposes"

Do I have to study in detail the MSPL, too, to make sure they don't own everything I write?

Man, my trust surely wasn't earned today.

You mean that somebody is already trying to take code that isn't theirs? Get a life.

What's interesting is that doesn't pull this stunt. Of course, _why doesn't need my code.

I'd better respond.

First - sorry for unclear wording. Microsoft obviously doesn't own your Ruby code and IronRuby obviously doesn't record your Ruby Code.

Here is a revised disclaimer you can see below the console:

Everything you type here might be recorded for open research purposes. No personal data (such as IP address) is ever collected. View what others typed here.

I hope it's clearer.

And second - does pull this stunt too. And _why does need your code too. Because it's fun!


Improving XInclude authoring in Visual Studio

Tue, 03 Jun 2008 09:42:07 +0200

Obviously Microsoft forgot about XInclude when they were shipping Visual Studio, so when you edit your XML and use XInclude you get no intellisense. It's easy to fix though. Just get this XInclude schema (standard XInclude schema improved a bit by Laurens Holst) and drop it into

{Visual Studio install drive}:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas

Now it's better:





"Dynamic Languages Strike Back" talk by Steve Yegge

Sun, 25 May 2008 11:07:48 +0200


Very cool talk by Steve Yegge, available in video or transcribed form. I particularly enjoyed tooling part:

Moving right back along to our simple dynamic languages, the lesson is: it's not actually harder to build these tools [for dynamic languages]. It's different. And nobody's done the work yet, although people are starting to. And actually IntelliJ is a company with this IDEA [IDE], and they... my friends show off the JavaScript tool, you know, and it's like, man! They should do one for Python, and they should do one for every single dynamic language out there, because they kick butt at it. I'm sure they did all this stuff and more than I'm talking about here.

I'd add couple more modern IDE tools supporting dynamic languages: NetBeans (Javascript/Ruby) and Visual Studio 2008(Javascript, IronPython via IronPython Studio). But Steve is completely right - this is just the beginning.


Hacking IronRuby

Mon, 12 May 2008 12:38:25 +0200

IronRuby is coming! Expected to be released this year Microsoft's IronRuby is quite a unique project. Fully open sourced, OSI-approved/GPL-inspired  license, hosted at Rubyforge, accepting external contributions. Yes, Microsoft's IronRuby. Cool.

Anyway, I decided why don't I build IronRuby version of the famous "Try Ruby in your browser" by _why? So anybody with 15 free minutes at hands could play with IronRuby. That sounds like cool way to learn IronRuby internals.

IronRuby includes ir.exe - nice interactive IronRuby shell. Thanks to open sources I managed to hack up simple AJAXish Web version in just one night. ASP.NET 3.5 application hosting IronRuby runtime + simple Web console emulating ir.exe.

It's hosted at, currently at version "0.first.hack". Go play with it, but please don't crash it often. Here is a screenshot for those lazy ones:


Hosting a programming language shell on Web poses additional interesting problems. Ruby is a powerful language and IronRuby additionally provides access to the whole .NET framework. Letting anybody writing and executing any programs on my shared hosting??? Well, I managed to make it running under Minimal Trust level, which means execute permissions only. No file system, no network or Web access, nothing. That should be safe enough, but please don't hack me. Learn IronRuby instead!

Go Try IronRuby in your browser.

Any comments are welcome!


IronXSLT v0.3 released

Sun, 11 May 2008 10:30:24 +0200

(image) Here is a small quick release. IronXSLT v0.3.

New in this version:


Hidden Undocumented Feature of Visual Studio 2008 - Dynamic XSLT Intellisense

Sat, 03 May 2008 08:38:50 +0200

A very little known fact is that Visual Studio 2008 does support real XSLT intellisense - not a static XSLT schema-based one, but real dynamic intellisense enabling autocompletion of template names, modes, parameter/variable names, attribute set names, namespace prefixes etc. For some obscure reason it is off by default and obviously completely undocumented. I'll show you how to turn it on. But before - a little teaser. 1. When you about to call a named template you are presented with a list of all named templates in your stylesheet. My favorite feature. Finally you don't have to remember all your template names: 2. In XSLT template parameters are passed by name, so when you call a template and want to pass parameters you actually have to know exactly what parameter names are. And you better know them for sure, because if you make a mistake you pass a parameter with wrong name you get no error or even warning. XSLT 1.0 specification allows such nonsense.  That's why template parameter name autocompletion is a real time saver: 3.  You can pass parameters when applying templates too. Obviously due to dynamic XSLT processing model it's hard to know in advance which template will be matched at run time, so it's hard to suggest list of parameter names. In this version of XSLT intellisense we get list of all parameters used in all templates, filtered by mode. I believe XML Tools could optimize it a bit by filtering the list when it's clear from the context which template will be matched. Anyway, very useful: 4. Autocompletion of template modes is also extremely useful. Make mistake in mode name and you can spend hours in debugger trying to figure out why your template isn't matched, because again this is not an error or even something wrong according to XSLT spec. That's why this is so cool: 5. Finally a couple of useful namespace prefix autocompletions. exclude-result-prefixes now becomes easier: and (mostly used for generating XSLT using XSLT): 6. If you use elements, you will be happy to see this one:   These are autocompletions I'm currently aware of. There might be more - it's currently completely undocumented and I probably the first one writing about this feature. For example key names are collected too, but I haven't found where they are used. If you happen to discover another XSLT autocompletion, report it in comments section please. And finally how to turn this awesomeness on: Yes, regedit. Create String value called "XsltIntellisense" under "HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\XmlEditor" key. "True"/"False" are valid values. If you are too lazy for editing registry manually, here is XsltIntellisense.reg file you can run (but rename it to .reg before). If you don't want to mess with registry, wait till tomorrow. I'm going to release IronXSLT v0.3, which will turn XSLT intellisense on for you while installing. Enjoy! [...]

Mon, 21 Apr 2008 08:17:34 +0200

No, I don't own it. But with you help together we can win it. domain name received more than one application (one of them was mine) during .asia landrush period and will be auctioned via site soon (most likely in couple weeks). This will be a closed auction - only those who sent application during landrush period will be able to participate.

Now, I don't know how many people wanted this domain and how serious they are about bidding for this name. I was trying to register just for fun and probably will fail on the auction. So if anybody has any ideas about what can become and willing to spend some money on it, drop me a line and we can try to get it together.


Most Popular Words 2008 (Google, Live)

Wed, 16 Apr 2008 21:17:38 +0200

I was doing some Web popularity research and found very cool data set collected by Philipp Lenssen back in 2006 and 2003. This is basically Google page count for 27000 English vocabulary words. I decided to repeat the process on a wider word set via at least two search engines (Google and Live Search). So I combined Philipp's 27000+ vocabulary with Wiktionary (a wiki-based open content dictionary) English index and got quite comprehensive 74000+ vocabulary which reflects contemporary English language usage on the net. And then I collected page count number for each word reported by Google and Live Search. And here are some visualizations. Unfortunately while Swivel can do do great interactive visualizations including clouds, they only support static graph for embedding. So don't hesitate to click on the graphs to see a better visualization (e.g. cloud for 100 top words). Top 30 most popular words by Google, Live (numbers are in billions):     As expected, top is occupied by common English words and common internet related nouns. Top 30 most popular words by Google vs Live:   Top 30 gainers (Google, 2006 to 2008). Good to see x 48 page count gain for "twitter", the rest I cannot explain. Can you? oracular x 163.6 planchette x 153.7 newsy x 93.5 posse x 81.7 nymphet x 75.2 jewelelry x 65.6 twitter x 48.6 paling x 48.2 waylain x 45.2 outmatch x 45.2 outrode x 41.6 pod x 41.0 phizog x 35.6 sinology x 29.9 overdrew x 26.7 multistorey x 26.5 nonstick x 25.6 nun x 25.4 pedicure x 24.8 pillory x 24.8 panty x 24.3 outridden x 24.0 nip x 23.2 naturism x 23.2 organddy x 23.0 piccolo x 22.0 paladin x 21.6 notability x 21.2 breadthways x 20.9 And finally top 10 the longest words along with page count (Google, 2008): tetaumatawhakatangihangakoauaotamateaurehaeaturipukapihimaungahoronukupokaiwhenuaakitanarahu taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu methionylglutaminylarginyltyrosylglutamylserylleucylphenylalanylal...serine llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch taumatawhakatangihangakoauauotamateapokaiwhenuakitanatahu aequeosalinocalcalinosetaceoaluminosocupreovitriolic pneumonoultramicroscopicsilicovolcanoconiosis hepaticocholangiocholecystenterostomies hepaticocholangiocholecystenterostomy hippopotomonstrosesquippedaliophobia Unsurprisingly, the longest  word is still 92 letters long name of a hill in New Zea[...]

Crowdsourcing in action: results

Sun, 30 Mar 2008 23:48:41 +0200

I was writing about a pilot the Library of Congress was doing with Flickr. I measured also number of tags, notes and comments and repeated the process several times during last 2 months. Here are some numeric results:


As expected, while tags, notes and comments still coming, in general the lines are almost flat after 50 days.

Averages: 4.85 unique tags,  0.39 notes, 1.34 comments per photo.

The Library of Congress blog shared some real results:

And because we government-types love to talk about results, there are some tangible outcomes of the Flickr pilot to report: As of this writing, 68 of our bibliographic records have been modified thanks to this project and all of those awesome Flickr members.

Well, that doesn't impress much, but they must be happy as they have posted 50 more photos.


Generating HTML excerpts

Thu, 27 Mar 2008 18:07:09 +0200

Here is another interesting problem: how do you generate HTML excerpts preserving HTML structure and style? Say you have long XHTML text: This is a very long text. In browser it looks like this: This is a very long text. The text is 25 characters long. Now you need to generate a short excerpt - cut it down to 15 characters, while preserving HTML structure and style: This is a very ... So in a browser it would look like This is a very ... I solved it in XSLT 1.0 using ugly (but effifcient) recursive template: ... But I'm not happy with this solution. There must be more elegant way. The problem just smells FXSL. Hopefully Dimitre can show me how FXSL can do it with beauty and style. I also wonder how would you do it with XLinq? [...]

Generating Java using XSLT

Fri, 21 Mar 2008 00:56:05 +0200

We are working on yet another language migration tool and faced once again Java source code generation problem. Unfortunately Java doesn't have anything similar to .NET's CodeDOM, so we had to build own own Java generator. This time our development platform is XSLT 2.0. Yes, we are converting COOL:Gen (obscure 4GL model-based language) to Java using XSLT 2.0. XSLT 2.0 rocks by the way. This is first time I write production code in XSLT 2.0 and this is amazing experience. Suddenly all is so easy, everything is possible, no hassle. Despite poor authoring support (Eclipse XSLT editor sucks, while Visual Studio 2008 with XSLT 2.0 schema is ok, but cannot run Saxon), lack of debugger and Saxon quirks I had a blast practicing XSLT 2.0 for real. At first I started generating Java beans simple way: output mode="text" and producing Java sources as text. Obviously it sucked big way. I spent a week and got it done, but with way too cumbersome and fragile code. Generating code and simultaneously coping with Java syntax and formatting is hard. Additional layer of indirection was needed desperately. One of smart guys I work with came with a simple but brilliant idea. Vladimir took Java 6 ANTLR grammar and converted it to XML Schema. Then he developed a generic serializer (also in XSLT 2.0 of course) that is able to convert XML document confirming to Java XML schema (he called it JXOM -  Java XML Object Model) into nicely formatted and optimized decent Java 6 source code. Then I rebuilt my Java bean generator using JXOM instead in just one day. Building Java as XML is so much easier and cleaner, I believe it's even easier than using System.CodeDom in .NET (obviously CodeDom can do more than just generate C# or VB sources). Anyway, anybody interested in Java generation - check out JXOM. This is really easy way to generate Java 9even Java 6.0) using XSLT. It's freely available and it just works. Here are more links: Java xml object model Xslt for the jxom (Java xml object model) jxom update JXOM is ready to use, but still under active development. Any feedback is highly appreciated at Vladimir and Arthur Nesterovsky blog. [...]

Sergey Dubinets is blogging

Thu, 06 Mar 2008 00:54:14 +0200

Sergey Dubinets, the guy behind Microsoft XSLT engine and tools is blogging. Subscribed. Highly recommended.

More XSLT bloggers from Microsoft:


Obfuscating XSLT

Wed, 20 Feb 2008 18:35:31 +0200

Inspired by, just for fun, really. Can you figure out what this stylesheet outputs (without running it of course)?



By the way, does anybody think XSLT obfuscator is a useful tool?


Microsoft XSLT Profiler

Mon, 11 Feb 2008 01:59:12 +0200

Microsoft XML Tools team has released XSLT profiler addin for Visual Studio 2008. I've heard about this tool and even did a little testing long time ago (apparently it's very hard to release anything in Microsoft). First thing you need to know about Microsoft XSLT profiler - it requires Visual Studio 2008 Team System edition with the Performance Tools feature installed. That actually sounds a bit steep for just XSLT profiler, but it starts to make sense once you realize this tool is just a thin wrapper around the F1 profiler (which only ships with Visual Studio Team System SKU). Once installed, it adds "Profile XSLT" command (visible only in XSLT context, i.e. when active document is XSLT stylesheet) to the XML menu: Before you see profiling results you should recall that XSLT in .NET starting with 2.0 is compiled to MSIL: As you can see, an XSLT stylesheet is being compiled into a class and each template becomes a method with cool special name like . That was smart. And yes, MSIL is completely ok with such kind of method names. Beside template-mehods the generated class contains other auxiliary stuff. So don't be surprised with XSLT profiling results: I'd say there is too much clutter in this form. I'd like to see only XSLT relevant info, but as you can understand now, it's the the results of profiling compiled assembly and XSLT part is here only because smart compilation tricks. Still extremely useful tool. A must for anybody writing XSLT in Visual Studio. Besides Summary View there are: Call Tree View, Modules View, Caller/Callee, Functions, Marks and Processes Views. You can find more info about profiling report details at I'd be happy to see next version. With all clutter removed, more XSLT focused, linked to XSLT source (seems like currently there is no way to get back to template source from report), may be with some smart visualizations (what about coloring XSLT source view to indicate the hot spots?). Oh well, provided it took XML Tools team so long to ship this tool I better try to implement all these ideas myself in Iron XSLT (stay tuned, it's not dead as I'm back). [...]

New XSLT stylesheet template in Visual Studio 2008 (again)

Fri, 08 Feb 2008 00:04:38 +0200

When you create new XSLT stylesheet in Visual Studio via project (Add/New Item) or globally (File/New/File aka Ctrl+N), you start with template content. This template is changing in every new Visual Studio version, probably because every new generation of developers working on XSLT tools in Visual Studio have different vision about what you should start with. Let's see. Visual Studio 2003. Pure simplicity: Visual Studio 2005 has two different templates for new XSLT stylesheet (!). When you create it via project you get the same as above empty stylesheet template. But if you go via Ctrl+N you get this fancy template: Yes, believe it or not, but some Microsoft developers were sure you should start with EXSLT namespace declaration in your stylesheet. The fact is that .NET 2.0 introduced partial native support for EXSLT, but it was never documented. It's still hidden portability gem. Now what you get in Visual Studio 2008: No more EXSLT, back to basics - proprietary nonportable MSXSL namespace by default. This is sad. Beside this weird proprietary comeback it's interesting that this new template contains identity transformation rule. This cumbersome looking is the base of data transformation filtering. It processes every single node in source document recursively and outputs it as is.  By adding more template rules you can override base behavior to add, remove or modify particular nodes. Very powerful technique. This is smart choice for new file template. [...]

Testing XSLT

Mon, 28 Jan 2008 22:18:46 +0200

State of the art of XSLT testing in a simple succinct format by Tony Graham.

Creating a working stylesheet may seem like an end in itself, but once it’s written you may want it to run faster or you may not be sure that the output is correct (And if you are sure, how sure are you?).

Profilers, unit test frameworks, and other tools of conventional programming are similarly available for XSLT but are not widely used. This presentation surveys the available tools for ensuring the quality of your XSLT.