Friday, June 23, 2006

MoveIt updated again

I have updated MoveIt. This update includes a fix for MoveCodeUp/MoveCodeDown and also includes the previously seperate "Sort References" Refactoring. To download, see
Yup, thats right I finally found some time to fix(I hope) a bug in MoveCodeUp/Down which prevented the xml comments from moving with a method.

Also this version of MoveIt includes the previously seperate "Sort References" refactoring. This is an enhanced version of the previous version of "Sort References". It now allow you to define a series of Namespaces which are not sorted alphabetically but according to the order you define. By default System.* and DevExpress.* namespaces are sorted to the top.

"Sort References" also includes a facillity to optionally include a blank line between groups of similarly named namespaces.
To download, see

Monday, June 12, 2006

CodeRush 2.0

The next versions of CodeRush and Refactor are so amazing they have been assigned version 2.0 status
Thats right the next versions of Coderush and Refactor are just that special that they require promotion from their 1.x status to full on version 2.0. Now this deserves a little explanation. Well as yet, I'm not privy to any classified information and I'm afraid I wouldn't tell you any of it even if I was. Nothing personal it's just that I don't want to be sued :)

However, I can paraphrase and quote some of what I have heard. None of which is secret.

Coderush 2.0 will include a new 'dynamically typed' template engine. This new facility augments the existing template system alowing for dynamically typed templates.

What is a Dynamically Typed Template(DTT)? Well to answer that I really should explain the existing Statically Typed Template(STT)

One example of an STT would be 'mb'. This is a sequence of keys which creates the declaration of a method which returns a boolean when the trigger key (usually the spacebar) is pressed.

Why is this Static Typed? Well it always produces the exact same code and the type involved is always a boolean.

We can make copies of this template which instead create Methods returning strings, shorts or any other types you might have created.

However at 1 template, per type, per purpose we would have to write a lot of templates to cover ourselves.

Coderush verion 1.x ships with over 900 such templates, but as you can imagine several of these are essentially duplicates of each other due to the nessecity of covering serveral types for each purpose.

In Coderush 2.0, DTTs are kinda like mixing STTs and Generics.

So one would create an 'm' template which understood that a second 'chord' would be needed to indicate the type.
This allows us to write 1 template per purpose and drastically reduce the number of templates needed to achieve any given purpose.

so now I can type
mb for methods returning booleans
ms for methods returning Strings
mw for methods returning Widgets

Hang on ... did I get that right?...

Yes I did. you can now teach coderush new types that you like to use frequently and indicate which key or keys you would like to use to represent the type in question.

And as soon as you define the relationship between w and widget, you can use it with any of the existing DTT instead of having to define the relationship for each template.

This seems to blow the door wide open on template creation. It seems that I can create scores of mnemonic expansion possibilities simply by creating a single DTT

This is true. In fact, in the next version, the number templates is said to have shrunk overall by about 100 while the number of shipping mnemonic combinations should be higher by 1.5 orders of magnitude. I say this in this manner so as not to scare people off.

But don't worry, you won't have to memorise all of these. By their very nature most mnemonics produce very similar code to each other with the subtle differences in types making up their differences.

And these differences are almost instinctive to guess anyway so there shouldn't be pages and pages of documentation to pour over.

(The key here is being able to write one template and use it with many types without the author of the template explicitly having to create a copy per type.)

Speaking of which, a new interactive training window will be available in the next version. No details on that just yet but I'm guessing something a little like studio's dynamic help feature only, (as the name implies) more interactive and of course centered on Coderush's templates.

Refactor is also set to have some improvements in the way of new Refactorings. It's now said to ship with more that twice, yes that's 2X, the number of refactorings in ReSharper 2.0.

And more... yes access to all of this wonderful technology is also still wholy available through an open managed api 'DXCore'. Which is still freely available and which I will be jumping headlong into just as soon as I can.

Finally we come to the issue of money. Yup the ugly beast has reared it's head again.

Developer Express has changed the licensing model of CodeRush/Refactor to match the rest of it's products.

In version 2.0 we move to a subscription licencing model.

But don't panic this is not as bad as it first seems. Compared with the feature set of these products, the fees involved are truely neglegible.

So at the time of authoring the original price of $249 for Coderush (which still includes RefactorPro for free) is unaltered as is the RefactorPro price of 99$.

However now this price will only get you 1 year's free upgrades before a maintenence fee is required. This fee is currently set to be $100 for CodeRush and $40 for RefactorPro.

The following has not been layed out in stone and is my interpretation.

1.> The renewal price for Coderush includes the renewal price for RefactorPro which come free with the initial purchase.
2.> If you descide not to renew, you are still entitled to continue using the products that you have bought up to that point.

Item 2 here is great news because it provides incentive for DevExpress to continue to update and improve these products forevermore in order to get you to keep paying.

This is is my opinion the best money you will ever spend as long as you are using the Microsoft line of IDEs.

I cannot express just how flexible this system is.

It is more valuable than any set of components you might use to improve your end user's experience. It further allows your programming team to begin to code almost as fast as they can think.

I cannot sing the praises of the existing system highly enough.

Now that I'm thinking about version 2.0, I'm afraid someone is going to have to throw me a life-jacket because I appear to be drowning in my own drool.

Saturday, June 10, 2006

New feature in MoveIt

Shock News - MoveIt can now move your code around.
MoveIt has a new feature (inspired by Dan Avni) which allows you to Move code around. Specifically the current statement, declaration or method. Simply bind some keys (I personally use Ctrl-PgUp and Ctrl-PgDown) to the MoveCodeUp and MoveCodeDown actions and you should be able to use those keystrokes to move individual statements, declarations or methods up or down one place at a time.

Note that a blocks of code like If's and foreach's count as single statements so they can be moved in their entirity.

Please note that the plugin tries to guess what you want moved not by what is selected but by where your caret is located at the time of activation.

Comments, as always, are welcome.

Download from

Update(13/June/2006):Uploaded new version to correct bug spotted by Karel Kral. Thanks Karel

Friday, June 09, 2006

Baby 'Rose Becker' born at last

It's been a long 9 months and 12 days but baby Rose (Rosie) Becker is with us at last.
Rose (Rosie) Becker arrived at 16:20 on thursday the 8th of June 2006. Official length of labour was 3.5 hours although if you ask Anne she'll say it felt a lot longer :)

Our little Rosie arrived weighing 8 pounds 11 ounces. Just under the weight of her older sister Molly.

There were no complications and the only side effect so far is that Anne's right leg feels very numb. (But don't worry she can move her toes etc.)

Update(10th June 00:31): Anne was feeling much better today and was up and about so no need to worry about her being paralysed or anything.

Sunday, June 04, 2006


I've was invited to join DX-Squad and was very happy to accept.
The guys at DevExpress have invited me to join DX-Squad, a volunteer group of users of their software/components who are willing to spend a little of their time helping out other users in their newsgroups etc. I guess we're that group of people who obsess enough about a cool technology to try to learn everything we can about it and really push it. I guess my previous contributions in the DXCore newsgroups along with the plugins I've developed, got me noticed in some way. This is cool.

Note: I should make it clear that I do not work for Developer Express. Nor do any of the rest of DX-squad. (Although I believe Oliver Sturm used to be a member and is now employed by them). We are all still just very enthusiastic customers.
This means that you can rest assured they have not bought my opinion. I do get to play with beta bits from time to time and as such I have signed an NDA. However I can still say what I want when I want. On my blog, for example, I am totally allowed to say "Coderush Sucks" if I think it sucks.

So don't you worry. Just as soon as I can find something that actually does suck, I'll let you know. Just, please, don't hold your breath. I've been looking at their other products and I think you'll be waiting some time and I wouldn't want you to hurt yourself.