Thursday, February 03, 2011
ATTN: Neil Davidson, Co-CEO, Red Gate Software

Dear Neil,

I read, with significant disappointment, your open letter to the .NET community about the demise of the free version of Reflector.

In August 2008, when Red Gate took over the development of .NET Reflector from Lutz Roeder, it was posted on Lutz' blog that "Red Gate will continue to provide the free community version". The community was nervous about the change of control, but comforted that there was a commitment to continue to provide a free version.

Now I can recognize that Red Gate should have the opportunity to profit from its control of Reflector, provided it upholds the free version promise. Adopting a free/paid-for strategy was Red Gate's attempt to profit from Reflector and I appreciate your honesty in saying that the strategy hasn't proved to be commercially successful.

However, the failure of the free/paid-for strategy is not new. Many companies make this same mistake. To make matters worse, a common "Plan B" strategy is to expect that, by dropping the free version altogether, that a significant percentage of a large user-base will pay for the new version. History has shown that this is also a failing strategy.

I implore you to adopt a different plan.

My suggestion would be to adopt an "advertising-based" free version. Microsoft runs one of the biggest internet-based advertising services and Microsoft is clearly invested in .NET developers. Surely Microsoft would be a perfect partner to help provide an advertising income stream for Red Gate through Reflector?

Further, if Reflector becomes advertising-based then surely Red Gate can directly advertise their other products within Reflector. I have only just now looked at your site and see that you have a large number of products. Advertising through Reflector would have already exposed me to your products many times over.

In a nutshell, Reflector has a large community of users that form a highly targeted market for Red Gate's other products and can provide a revenue stream through advertising.

On the other hand, adopting a "paid-only" strategy will decimate not only the Reflector user-base, but Red Gate's own "customer-base".

Wikipedia's entry for .NET Reflector already has the following sentiment (which I suspect will be edited out in due course): "It is speculated that this decision will lead to the demise of Red Gate, given the extremely poor reception in the programming community."

Neil, please consider an alternative to the "paid-only" strategy.

Yours sincerely,

James C-S.

From http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html:

The Future of .NET Reflector

Wednesday, August 20, 2008

After more than eight years of working on .NET Reflector, I have decided it is time to move on and explore some new opportunities.

I have reached an agreement to have Red Gate Software continue the development of .NET Reflector. Red Gate has a lot of experience creating tools for both .NET and SQL Server. They have the resources necessary to work on new features, and Reflector fits nicely with other .NET tools the company offers.

Red Gate will continue to provide the free community version and is looking for your feedback and ideas for future versions.


From: Simple-Talk Special Mailing [mailto:newsletter@simple-talk.com]
Sent: Thursday, 3 February 2011 01:08
Subject: Red Gate will be charging $35 for .NET Reflector

 

An open letter to the .NET community

Red Gate has announced that it will charge $35 for version 7 of .NET Reflector upon its release in early March. Version 7 will be sold as a perpetual license, with no time bomb or forced updates.

As many of you know, our original intention was to maintain .NET Reflector as a free tool. But, after two-and-a-half years of providing it without charge, we realized that we could not make the free model work. We know that this will cause pain for some people in the .NET community, and we apologize for the change in policy.

As a commercial company, we need to charge at least a nominal amount to keep .NET Reflector up-to-date and relevant. Without revenue coming in, we cannot dedicate a team of developers to ensure that Reflector remains a valuable part of .NET developers' toolboxes.

As always, your feedback is important to Red Gate, so please contribute any thoughts on this subject to our .NET Reflector forum.

Sincerely,
Neil Davidson
Co-CEO, Red Gate Software


posted on Thursday, February 03, 2011 9:31:29 AM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Monday, July 07, 2008

I've got a bit of an overload of "Unread or For Follow Up" items in Outlook at the moment => 149 to be precise. To tackle them I'm setting a "count down" schedule that is to finish by 1 October 2008. Every five days I need to make sure that the count is at or below the target number. I've popped my descending count into Outlook using the following PowerShell script.

$o = new-object -com Outlook.Application
$mapi = $o.GetNamespace("MAPI")
$cal = $mapi.GetDefaultFolder(9) # == olDefaultCalendar

$d1 = [DateTime]"1 oct 2008"
$d0 = get-date
$ticks=$d1.Subtract($d0).Ticks*5/151

$n=150
while ($n -ge 5) {
    $d0=$d0.AddTicks($ticks)
    $n-=5
    $appt = $cal.Items.Add(1) # == olAppointmentItem
    $appt.Start = $d0
    $appt.End = $d0
    $appt.Subject = "({0})" -f $n
    $appt.AllDayEvent = $true
    $appt.ReminderSet = $false
    $appt.Save()
}

posted on Monday, July 07, 2008 10:12:11 PM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Wednesday, June 11, 2008

I've been setting up the ability to post images with Windows Live Writer to this blog. My hosting service (Computer Image) have done a great job and it's now working just fine.

James C-S

posted on Wednesday, June 11, 2008 1:07:54 PM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Wednesday, April 16, 2008

I love PowerShell. Every so often - tongue-in-cheek - Microsoft produces one very funky piece of technology. PowerShell is one such bit of goodness.

Well, now that I've installed 64-bit Vista on my Dell XPS I've noticed little things here and there that don't work like I expect. Most cases there's a good security reason. But sometimes it just that programs don't install properly.

PowerShell Community Extensions (PSCX) is one such beasty. There's a problem with the installer not configuring all the 64-bit stuff.

Luckily there's a quick solution.

Run this command:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "C:\Program Files (x86)\PowerShell Community Extensions\pscx.dll"

For more info see: http://www.codeplex.com/PowerShellCX/WorkItem/View.aspx?WorkItemId=6949

Also, don't forget to set Remote Signing in both the 32- and 64-bit PowerShell interfaces.

posted on Wednesday, April 16, 2008 9:04:20 AM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Thursday, April 10, 2008

I've been hearing a lot of good comments about Windows Live Writer lately. So far so good. It's figured out that I'm using dasBlog and I've had no errors. I've had trouble in the past with similar blogging apps. Will it publish?

posted on Thursday, April 10, 2008 8:49:10 PM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Friday, December 07, 2007
I'm doing a presentation on Dependence Injection at the December 12 meeting of ADNUG (Adelaide Dot Net Users Group). Here's my blurb:

The four main features of Object Oriented Programming - Inheritance, Abstraction, Encapsulation and Polymorphism - allow us to create applications where each class is nicely designed, easily tested, maintained and hence reusable across many projects. However, more often than not, the classes in our applications become tightly coupled and tangled with interdependencies, which in turn makes them difficult to test, maintain and reuse. Our applications become fragile and we lose much of the benefit of Object Oriented Programming.

The Dependency Injection Pattern (otherwise known as Inversion of Control) maintains louse coupling of the classes that depend on each other in our applications by "injecting" the dependencies at run-time rather than design-time. In .Net Dependency Injection makes great use of interfaces, thus promoting "Interface Driven Development" and/or "Test Driven Development", and facilitates many other Design Patterns such as Model-View-Controller, Model-View-Presenter, Factory Patterns, the Strategy Pattern, etc.

There are numerous Dependency Injection frameworks available for .Net – Castle MicroKernel/Windsor, Patterns & Practices ObjectBuilder, PicoContainer.NET, Puzzle.NFactory, Spring.NET, StructureMap, Ninject – but I’ve written my own. J

In this presentation, I'm going to demonstrate a couple of aspects of my Dependency Injection framework. There is far more in the total framework than can be discussed in 45 minutes, so I shall be cover the basics of "Interface Driven Development" and the use of "Abstract Factories" my framework to show how I can keep my classes loosely coupled and testable.

I'm going to aim to keep the presentation focused on the practical application of my framework, but there are some very funky "über"-cool coding techniques under-the-hood that would be great to discuss. So for those of you wanting to discuss the implementation of the framework in more detail I'm happy to do so after the presentation. (You can tell I'm proud of my creation, right?)

posted on Friday, December 07, 2007 9:07:23 AM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [3] Trackback
 Monday, November 19, 2007

My new HTC Touch ran out of memory on the weekend and was forced to do hard reset.

I did a couple of soft resets first, and the Touch gave me a couple of nice dialog boxes politely asking me to delete some files, but then it froze before I could actually delete the files.

So a big warning for Touch users. Don't let your HTC Touch run out of memory.
posted on Monday, November 19, 2007 11:10:12 AM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [0] Trackback
 Wednesday, June 20, 2007

I got my hands on the new iRiver T60 MP3 player today.

It's pretty good.

I've only found a few issues that I would like to resolve, but it works very well for my podcast listening needs.

It'll resume from where it was turned off, it allows for copying of files to a USB Mass Storage drive, it will play the podcasts in the order that they are saved to the device.

The only two downsides so far is that setting the "Playback Speed" option to the fastest setting makes podcasts sound like I'm listening to the chipmonks, and every action seems to require the first button click to "wake up" the device and I need to then press the button again to make it do what I wanted. I can live with these issues.

posted on Wednesday, June 20, 2007 7:48:53 PM (Cen. Australia Standard Time, UTC+09:30)  #    Comments [2] Trackback