Searched for : resharper

At Vertica we employ a wide range of Microsoft server products in our solutions to maximize customer value. To help us manage these often complex environments we rely heavily on virtualization. For the longest time the obvious choice was Microsoft Virtual PC simply because it was there and freely available to use and just being able to run a virtual machine was amazing in its own right.

Our default setup when developing in the virtual environment is to install everything needed inside the virtual machine and use that exclusively. Running IIS, a couple of server products with Visual Studio and ReSharper works well but we’ve found that performance leaves something to be desired.

The obvious answer is to move Visual Studio out of the virtual environment, do development on the physical machine, and deploy the code to the virtual environment and test it there. Basically I require two things from this: 1) Pushing the build to the server should be very simple, 2) Debugging must be supported.

Pushing Code

We’ve got a bunch of options for pushing code to another environment: Publish Wizard in Visual Studio, msbuild or nant tasks, Powershell, and my personal favorite bat files :)

I wanted to create a generic solution which doesn’t dictate the use of msbuild or any other technology so I went with a bat file which in turns calls robocopy. With this in place we’re able to push files over the network to the target VM. Of course a one-time configuration of the virtual environment is needed but that isn’t in scope for this thing.

Download my deploy bat file. Basic usage Deploy c:\MyWebSite \\MyServer\MyWebSiteVDir.

Robocopy is part of the Windows Server 2003 Resource Kit.

Remote Debugging

Second requirement is debugging. I want a solution which is on par with running Visual Studio inside the virtual environment and that means debugging people! :)

The steps for doing remote debugging are well documented but for completeness sake I will include them here with nice screenshots to go along.

1) Copy Remote Debugger from \program files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger to somewhere on the virtual machine, e.g. desktop.

2) Run Remote Debugger on virtual machine (msvsmon.exe).

3) Grab the qualifier from the Remote Debugger (You’ll need it in a second).

Remote-Debugger-Qualifier

4) Connect to Remote Debugger from VS on physical machine via Debug > Attach to Process (CTRL + ALT +P)

5) In the Qualifier input field enter the qualifier from Remote Debugger window.

Visual-Studio-Attach-To-Process 

Volia. Set a break point on the remote machine and see the code break in Visual Studio.

VMWare

I stated earlier that we’re using Microsoft Virtual PC which is true but it’s also true that we’re looking into VMWare Workstation. My first reason for doing so is the performance boost which comes from running in VMWare. I haven’t done any sort of scientific testing of how much faster we’re talking about suffice it to say that it’s enough that you notice it when you’re going about your business in the virtual environment. VS is faster, compiles are faster, everything is just smoother. In my book the best sort of performance metric there is :)

Additionally VMWare provides other interesting features. The first one you’ll see is that storing and restoring state of a VM is blazingly fast. Enough so that you’ll actually find yourself using the feature all the time. I know I am.

Secondly VMWare supports multiple monitors. That’s right. Simply select how many monitors you want supported and it’ll do it. You can even switch on the fly. In case you’re wondering, yes, we do have three monitors setup for all the developer machine in the office :)

VMWare-Workstation-Multiple-Monitor-Support

The final feature is significant enough for our story to warrant a paragraph of its own. I accidentally stumbled across it this morning when I upgraded VMWare to version 6.5.

Remote Debugging Support in VMWare

You read my earlier steps to get remote debugging working which will work for any sort of virtual environment. VMWare however brings some nice debugging features to the table available right there in Visual Studio.

1) Goto the menu VMWare and select Attach to Process.

VMWare-Workstation-Debug-in-Virtual-Machine

2) Select the VM you want to start debugging on and point to the Remote Debugger that you’ve got locally in \program files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86.

VMWare-WorkStation-Attach-to-Process-in-Virtual-Machine

3) Click the Attach button and the Remote Debugger will launch inside the VM and you’re ready to debug.

No need to copy anything to the VM. It just works. You can even setup a config for this which enables you to attach to the debugger with F6. Nice!

In conclusion running Visual Studio outside of the VM is not only possible but with the right tools like VMWare in hand it’s even an enjoyable experience. Have fun!

posted on Tuesday, 11 November 2008 10:35:21 (Romance Standard Time, UTC+01:00)  #    Comments [0] Trackback

ReSharper-Logo I was fortunate enough to attend a special event at Trifork at which the manager, Oleg Stepanov, of the Jetbrains team creating ReSharper gave a talk on ReSharper functionality. He basically demoed a bunch of R# features most of which are pretty well known to the Vertica team and myself but a couple of nuggets did present themselves and I figured if we don't know about them probably others don't as well.

Please note that all keyboard shortcuts mentioned in this post are based on the standard R# Visual Studio keyboard layout.

Smart Code Completion

On the light side I'll start with a feature I knew was in there but I never quite got why it was useful. The feature in question is smart code complete or as I like to thing about it Smart Intellisense. You find the feature in the ReSharper menu under Code > Complete Code > Smart (CTRL + ALT + SPACE). Smart Code Completion is basically smart intellisense, you could say that it puts the "intelli" in the intellisense :)

What it does is that when you activate the feature it suggests methods and properties based on the types in the local scope. So if you're in the process of assigning an int variable from somewhere it will only suggest methods based on matching return types, not just name as is the case with standard Visual Studio intellisense. Check out the screenshots below, the one to the right is standard Visual Studio intellisense (CTRL + SPACE), the left one is R# Smart Code Completion where the list is greatly reduced.

ReSharper-4x-Smart-Code-Completion-Normal-Intellisense  ReSharper-4x-Smart-Code-Completion 

Complete Statement

Probably the most useful feature that I picked up at the meeting is Complete Statement. Complete Statement is available from the R# menu under Code > Complete Code > Complate Statement (CTRL + SHIFT + ENTER).

It bascially tries to complete the current statement that you writing so if for example you're writing a method signature you and you use the feature it will complete the method signature and move the cursor to the method body enabling you to write your code in a more fluent manner. It works in a number of situations so you really want to learn the shortcut and start experimenting with it.

Complete Statement for if-statement. First step inserts the missing parenthesis and the curlies. Second step moves the cursor to the body of the if-statement.

ReSharper-4x-Statement-Completion-If-Step1  ReSharper-4x-Statement-Completion-If-Step2 ReSharper-4x-Statement-Completion-If-Step3

Complete Statement for method signature. Inserts the curlies and moves the cursor to the method body.

ReSharper-4x-Statement-Completion-Method-Step1 ReSharper-4x-Statement-Completion-Method-Step2

And for a string variable. Inserts the semi colon and moves the cursor to the next line.

ReSharper-4x-Statement-Completion-string-Step1 ReSharper-4x-Statement-Completion-string-Step2

Generate in Solution Explorer

You probably know about the Generate feature in Visual Studio which enables you to generate properties, constructors, etc.. What I didn't know about this feature is the fact that it's also availble in the Solution Explorer and basically enables you to create a class, interface, struct, or folder. Very handy indeed.

Generate is available from the R# menu Code > Generate (ALT + INS).

ReSharper-4x-Generate-In-Solution-Explorer

Camel Case Navigation

I love the code navigation features of R#. They let me find my way around a code base very simply. I've found this particularly useful in code bases I don't know very well because I usually have an idea of what another developer might choose to call something so I just go look for part of that type name. Anyway a twist on the navigation features is the fact that you can navigate via Camel Casing so if you have a type named OrderManagementService you could look for it by typing the entire thing but with Camel Casing you basically enter the upper case letters of OrderManagementService (OMS) and it will find that type for you. Very handy and my second favorite new feature of R# :)

BTW Navigate to Type is CTRL + T, Navigate to Any Symbol is CTRL + ALT + T, Navigate to File Member is ALT + <, and Navigate to File is CTRL + SHIFT+ T. Learn 'em, love 'em.

ReSharper-4x-Navigate-by-CamelCase-Standard ReSharper-4x-Smart-Code-Completion

Coming Features

Oleg also told us a little bit about what we can expect to see in R# 4.5. The main "feature" of the 4.5 release is performance tuning and bringing down the memory footprint. They're look at speeding up R# by a factor 2 and bringing down the footprint by 100 mb. Certainly very welcome. They are sneaking in new features though and one of them is to include "Find unused code" in Solution Wide Code Analysis.

Download ReSharper 4.1

posted on Saturday, 13 September 2008 15:37:02 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

evil-insideWhen first I saw the var keyword in C# 3.0 I was excited, my body tingling with excitement for the possibilities this keyword would bring to the world of many a .NET developer: Productivity, clarity, fame, and fortune. Unfortunately now that C# 3.0 has been with us for a while I feel that I must warn the public of the evil that is the var keyword. Productivity, clarity, fame, and fortune have succumbed to mind boggling spaghetti code, confusion, and lets be honest fame and fortune were never really on the table to begin with :)

What then is this evil of which I speak? Massive overuse of the var keyword. Observe the following hot dish of spaghetti bolognese:

   1:  public void SpaghettiBolognese()
   2:  {
   3:      var calculator = new Calculator();
   4:      var taxLevel = GetTaxLevels();
   5:      var person = GetPerson();
   6:      var tax = calculator.CalculateTaxLevel(person, taxLevel);
   7:   
   8:      person.Tax = tax;
   9:  }

All kidding aside this piece of code breaks one of my most fundamental rules when reading and writing code: Don't make me think. Grokking a piece of code is though enough as it is having to keep types and varibles in memory (read: the developer brain) will slow down the process of code reviewing or debugging a piece of code.

For now I'm using a couple of rules to keep the var silliness at manageable levels.

1) Always use proper types for variables which are set from a method or property. It makes the code so much more readable.

   1:  Tax tax = calculator.CalculateTaxLevel(person, taxLevel);

2) Do use the var keyword when there is no question about which type it will be inferred to.

   1:  var calculator = new Calculator();
   2:  var i = 100;
   3:  var s = "Søren";

While the var keyword does offer a nice productivity gain it's important to realize when to use and more importantly when not to use it. Also it would seem that the var keyword is in cahoots with the good folks at Jetbrains as ReSharper is very eager to convert perfectly well formed type declarations to implicitly typed ones. As I started out by saying be wary of the var keyword - it's one sneaky bastard :)

Var-keywords-is-a-sneaky-bastard

posted on Monday, 08 September 2008 21:57:14 (Romance Daylight Time, UTC+02:00)  #    Comments [10] Trackback

ReSharper-Logo My favorite Visual Studio add-in just got revved to version 4.0. Full LINQ support included along with a number of other goodies. I may have to update my ReSharper review now :)

Although I got to say that an install screen looking like this would scare me just a little if I didn't know the product all ready. Busy, Busy, Busy!

 

ReSharper-40-install-screen

Download ReSharper 4.0

posted on Tuesday, 10 June 2008 09:20:01 (Romance Daylight Time, UTC+02:00)  #    Comments [7] Trackback

ReSharper-Logo Getting "Failed to load the supplementary package '0c6e6407-13fc-4878-869a-c8b4016c57fe'" every time you fire up Visual Studio will make for veeery long dev days I tell you that. Luckily I was able to find the Issue Details in Jetbrains' JIRA which told me the issue was resolved in version 3.0. Doh! Reinstalling everything in sight won't help either...

A thread on the Jetbrains forum however lead me to the solution. You simply go like this from the Visual Studio 2008 SDK command promt:

devenv /ResetSkipPkgs

We were going through a rocky patch there, ReSharper and I, but I'm happy to report that we're back together and all is well :)

posted on Wednesday, 14 May 2008 15:14:57 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

Commerce-Server-2007-Logo In my mini series about the Commerce Server development experience I did a piece called Magic Strings Galore which describes the general tendency to have all data in the various CS objects accessible via strings. Imagine a product with a rich description. You would access that like a hashtable, e.g. product["RichDescription"]. No way of knowing the return type , no discoverability via intellisense, poor refactoring support. Sure ReSharper takes care of some of that by looking at string literals when doing refactoring but surely there must be a better way to fix this. It turns out there is and I'm going to let you in on the secret :)

In my previous post .NET Framework 3.5 and Microsoft Commerce Server 2007 A Match Made in Heaven I discussed some options for using extension methods to add missing functionality to the built-in Commerce Server classes. Using this method you can augment the existing interface of Commerce Server but it doesn't really provide you with a nice place to put all the domain logic that is bound to turn up eventually. To solve this problem I came out with an automatic mapping layer sitting on top of the Commerce Server Profile System which translates the stock Profile into rich domain entities filling in the gap and giving you that place to put your custom logic and at the same time doing away with all the problem with magic strings that I described above. I call it the ProfileRepository.

The ProfileRepository is not a true object relational mapper in the sense that I'm not really converting from the relational model. Luckily all that is taken care of for me by the profile system of Commerce Server so I pretty much just have to provide the type safe abstraction.

Requirements

ProfileRepository My requirements for the ProfileRepository is the following. I want the developer using the framework to easily be able to map an entity, say User, to a profile, say UserObject.

Additionally I want to abstract the actual implementation of the entity by only working with interfaces so the consumer of the framework has the freedom to switch implementations, e.g. for unit testing or later in the development phase of the application.

Finally I want the consumer of the entity to be blissfully unaware of Commerce Server sitting underneath the repository; basically a full implementation of the repository pattern as outlined by Martin Fowler.

With that in mind we end up with a basic class hierarchy in place as depicted in the class diagram in the picture to the right.

Mapping Engine

ProfileMapper With the basic class hierarchy in place lets take a look at how the actual mapping of a Commerce Server profile to an entity happens.

Interestingly the Profile System operates with a type system completely separate from .NET and indeed COM making mapping interesting. The type system is pretty weak and doesn't express everything needed to perform mapping of all data types. For example there's no way of telling the difference between an association between two profiles and a string; they both turn up as a string.

To work around this limitation I went with assumptions based on the target of the mapping. So from the type of the actual target property on the entity I can deduce that we're dealing with an association because the actual type is IProfile and not string. Same thing goes for GUIDs and strings which also show up as the same thing; a string. Now I love the string type as much as the next guy but this is borderline ridiculous :)

To perform the mapping I employ a mapping engine which knows about all the mapping rules supported by the engine like rules for handling primary keys, one-to-one relationships, one-to-many relationships, value types, DateTimes, Guids, etc..

Each rule is an implementation of the specification pattern meaning that the engine will evaluate against each mapped property of the target entity and determine whether a particular rules is applicable to current property. Each rule employs reflection to determine whether that is case so the GuidMappingRule would use reflection to determine whether the type of a property on the entity is in fact a Guid.

Creating a Mapped Entity

To create a mapped entity you need to perform three simple steps: Create the interface which will expose the entity, e.g. the IUser interface. Second create the actual implementation of that interface, e.g. the UserObject class. The third and final step is to decorate the properties of the implementation with mapping information. Simple and easy. The code for IUser and UserObject might looks like this:

 

public interface IUser : IProfile

{

    string FirstName { get; set; }

    string LastName { get; set; }

    IAddress PreferredAddress { get; set; }

}

 

[Profile("UserObject")]

internal class UserObect : IUser

{

    [ProfileProperty("first_name")]

    public string FirstName

    {

        get { ... } set { ... }

    }

 

    [ProfileProperty("last_name")]

    public string LastName

    {

        get { ... } set { ... }

    }

 

    [ProfileProperty("PreferredAddress")]

    public IAddress PreferredAddress

    {

        get { ... } set { ... }

    }

}

 

Loading an Entity

With the mapping complete loading an entity is pretty straightforward: You new up the profile repository and call the generic method Get<T> with the key of the profile you want and presto you get an instance of the IUser interface returned to you complete with associated entities, the preferred address in the case. The Key class might seem superfluous but there's a point to it as it enables support for multiple key types like Guid, int, etc..

 

IProfileRepository profileRepository = new ProfileRepository();

IUser user = profileRepository.Get<IUser>(new Key("{EEDA89C9-E231-4002-AC24-7FD7FAB2F2FD}"));

 

All the Rest

Your spider sense is probably tingling by now. How's the ProfileRepository able to figure out which implementation of the IUser interface to instantiate? The answer to that is a piece that I omitted in my previous description: Sitting inside the ProfileRepository is an inversion of control container (IoC), in this case Windsor from the Castle project, which dynamically instantiates the correct type based on a configuration file.

Interestingly Windsor will be a key component in coming features in the ProfileRepository. As it stands today there are a number of improvements that can be made to it. Most prominently is implementation of lazy loading. All associations are eager loaded today which means that if you ask for a any one profile entity you'll get a complete object graph back which might not be suitable for all scenarios especially if we're dealing with many associated profiles.

With Windsor in place I intend to employ dynamic proxies to instantiate modified types with the lazy loading pattern injected into the relevant properties. Thanks goes out to Søren Skovbøll who came up with the idea for this and even provided me with POC code. His general knowledge on ORMs came in handy for a couple of things on this too :)

There are several opportunities for other performance improvements. The ProfileRepository uses reflection quite extensively to perform the automatic mapping which as you know is a costly operation. For a future release of this guy I'd like to throw in some caching for the rules which employ the reflection routines. The net result here would be that the rule is evaluated once per property and entity and from that point on reflection is only used for actually initializing the values of the properties.

Finally the ProfileRepository is load-only at this point and naturally I'd like to get create and update functionality in there as well. A customer self-service module would definitely need this feature in place to enable users to edit their user profiles, signing up for newsletters, etc..

With ProfileRepository I've tried to bring the full power of the profile system as a general purpose data access to bear in the sense that what we've got with the profile system is very cool and flexible but needs just that little bit extra to provide a nice development experience as well as something that supports the overall maintainability of the system.

posted on Thursday, 13 March 2008 21:46:16 (Romance Standard Time, UTC+01:00)  #    Comments [0] Trackback

We had little over ten people turn up for the meeting and we had great fun. I admit that the topic was rather esoteric as ESB, SOA, and BizTalk just doesn't apply to all that many people out there, especially in Denmark. ESB and BizTalk was the second part of our SOA topic and I think it rounded the topic off in a nice way. For future meeting we'll try to keep to topic of the presentation a bit more mainstream. Also the next time I plan a meeting I'll make sure not to collide with a major conference in town like JAOO. Having a usergroup meeting right after a full day of conference is a tall order, I know I went there straight after JAOO, I might not have been my most coherent self and it might have affected the turnout as well.

A big thank you goes out to Klaus Hebsgaard and Kristelig fagbevægelse for getting a nice space for us to hold the meeting, probably the nicest yet, and some very good sandwiches too.

Like always we started out the meeting by summarizing what the core group has been up to since last time. First of all we've been busy with getting new talks and speakers together and I'm proud to announce that we've got the next couple of rounds together at this point. I expect that we'll announce new meetings much earlier than we've been doing up to this point to allow people more time to sign up for the meetings. The topic of the next meeting is Object Relational Mapping and LINQ by Søren Skovsbøll and will be held at Ditmer A/S at October 24th at 19:00. Please note that we're not doing the meeting the last Wednesday of the month this time around due to scheduling issues. I'll do a separate post on the next meeting when I've got the last couple of details sorted.

We're planning a couple of meetings which are aimed at the inexperienced .NET developer because we do have a number of you attending the meetings and we'd like for the group to bring something to the table for everyone. As a follow up to that the first meeting we're trying to get a code camp together with the intent of teaching you how to create a .NET application from ground up the right way, or at least the way we feel is the right way. This is not only for the inexperienced developer as we need a number of experienced developers who can act as a kind of instructor at the code camp helping out with questions. I'd like to gauge the interest in this concept so please write me an e-mail if you're interested in participating either to learn something as an instructor.

We're still working on the web site for the group. All the technical stuff is basically done, we just need text and the pretty parts to be done as well.

Like previously we did a quick lap around the attendees to get a feel for who was present. We had a couple of new guys, one of whom had asked me before the meeting whether he could attend even though he hadn't been the previously. So I I'd like to take this opportunity to clarify that Aarhus .NET Usergroup is completely open to all who wish to participate regardless of previous attendance. We'd like you to attend every time of course to ensure continuity but it's completely up to you. You simply sign up to the meeting you want to attend and that's it. If you've attended a meeting previously you'll receive an e-mail whenever a new meeting is scheduled so you have the chance to sign up before anyone else.

Troels Riisbrich Underlien gave an interesting presentation on Enterprise Service Bus and BizTalk. The presentation focused on ESB as a technology and less on BizTalk although he gave us insight into some of the inner workings of BizTalk because they were at the heart of the ESB solution he outlined later on. Troels gave us information on how to go about building an ESB on BizTalk, the Microsoft guidance, and probably most interesting of all how Vertica has created and implemented an ESB for Bestseller. Download the slides if you want to either recap or get a feel for the content of the presentation. Essential an ESB is the way to go if you're considering doing SOA that's my personal take away from the presentation anyway. If you what want is a asynchronous, scalable and flexible solution there really is no way around the ESB as a concept.

After a short break and chatting in the hall ways we went back to the regularly planned programming where Holger Brøns Jensen the CIO of Krifa did a brief presentation on the IT organization of Krifa and the challenges they're facing. Krifa is definitely facing some interesting problems at the moment as they're moving their entire platform to a service oriented architecture, of course they have a lot of legacy which still needs to work so the last two meetings have basically been perfect for their needs. Krifa has done some very interesting stuff in the past and was off to the IP telephony races very early on which provided them with a nice head start on the callcenter side of things compared to their competition. Thanks to Holger for a very informing presentation.

Finally we had the unstructured part of the meeting which we call the Nutcracker. People usually refer to this part of the meetings as the most interesting as it opens up for discussion on various topics. we had a couple of good discussions this time around: Klaus had a problem getting their ESB to talk to WCF and we steered him in the direction of a possible solution. We even got Visual Studio fired up to show him the default binding profile for ASMX, of course I couldn't help but get sidetracked just a bit so I demoed a couple of features of ReSharper a couple of which have actually found their way into Visual Studio without my knowledge making for an interesting demo. Following that I wanted to get people's opinion on ORM and which they use themselves. I didn't really get that one off of the ground but the discussion took an interesting twist regardless so all in all a success.

Thank you to all who attended this meeting. As I started out by saying we're aware that the topic was esoteric and we'll try to keep broader topics of interest in mind for future meetings. I'd like people who plan to attend in the future to think about topics for the Nutcracker so we ca get the discussion going, maybe even prepare a short five minute talk to get the topic going.

posted on Sunday, 30 September 2007 13:25:16 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

Introduction

The following is a list of the plugins I use with Firefox every single day. My hope is to demonstrate the power of the plugin system in Firefox and how you can customize Firefox for a more productive browsing experience.

Tabmix Plus

The first plugin I ever installed and as such I found it proper to start out with this as it showed me the true potential of Firefox. Tabmix extends the existing tab options considerably by providing settings for almost every single scenario imaginable.

I use Tabmix to force links to open in new tabs instead of popping up new Firefox windows. The built in session manager (which the Firefox team implemented directly in Firefox) allows me to restore my previous browsing session automatically which is quite nice. Finally it allows me to change tab opening behavior so that new tabs pops up next to the active one and I've got it set up so that new tabs only get focus in specific scenarios which means that I'm able to go through a site and click interesting links without breaking my reading flow, when I'm done I can checkout the opened links at my leisure. There are tons of other possibilities with Tabmix Plus but those are the ones I use myself.

My-Firefox-Plugins-Tabmix-Plus-Links-Options 

ColorfulTabs

My-Firefox-Plugins-ColorfulTabs-Tabs

Adds a unique color to every tab open making it even easier to navigate your various tabs. An option allows you to have the colors generated based on the URL which means that you get the same color for the same web site each time. Additionally it just brightens up the interface considerably.

My-Firefox-Plugins-ColorfulTabs-Options

(Settings Window)

Greasemonkey

With Greasemonkey you're able to modify or add existing web pages by using Javascript. As such it would seem like a highly specialized plugin only interesting to people able to write Javascript. However this is not the case as Greasemonkey enjoys an entire library of user created scripts at Userscripts.org. Greasemonkey is essentially a plugin system within the plugin system.

A good example of what's possible with Geasemonkey is the Gmail Super Clean script which allows you to turn the standard Gmail interface like below:

My-Firefox-Plugins-Greasemonkey-Gmail My-Firefox-Plugins-Greasemonkey-Gmail-Super-Clean

As you can see from the following screenshot I use Greasemonkey entirely for customizing Gmail but of course many scripts exist for other sites so be sure to check out Userscripts.org.

My-Firefox-Plugins-Greasemonkey-UI

OpenDownload

Coming from IE one of the this I missed the most was the ability to click Run on downloads. Firefox forced me to select a temporary location for every single download which in theory is well and good but in practice I sometimes just download stuff for one times purposes, e.g. I want to test something out, in those cases having to select a location is annoying as hell. OpenDownload takes care of this by adding a Run button to the standard Firefox download dialog. By clicking the button Firefox downloads to a temporary folder and launches the download when done.

It's one of those plugins that saved you a couple of seconds each time you want to just run something. In the long run it adds up, not to speak of getting rid of the annoyance itself.

My-Firefox-Plugins-OpenDownload

Fasterfox

Want to use that big fat pipe to the internets more efficiently? Fasterfox is a bunch of tweaks to Firefox which will allow you to do just that. Fasterfox works in two ways: Firstly It optimized various aspects of the network utilization such as multiple concurrent connections, caching, DNS cache, etc.. Secondly it prefetches links ala what Google has been doing for a while with Google Web Accelerator but with some limitations as to avoid "dangerous" behavior like logging you out from a site, emptying your shopping cart. The primary limitation is that Fasterfox will not prefetch dynamic pages such as ASPX, JSP which to my mind makes a lot of sense as I've never used prefetching due to the problems described earlier.

My-Firefox-Plugins-Fasterfox My-Firefox-Plugins-Fasterfox-Prefetch

Gmail Notifier

As you saw when I introduced Greasemonkey I use Gmail and quite extensively too. In fact I'm at a tipping point where using Outlook for my private mail doesn't make too much sense any more. In essence I'm using Gmail for everything but my calendar so that's the one reason why Outlook is still sticking around. But that's a different story :)

The function of Gmail Notifier as you probably deduced by now is to notify about new mail in your Gmail account. It adds a little icon to the lower status bar of Firefox which indicates the number of unread mails in your account and a notification is displayed on the desktop when new mail is found. Clicking the icon will bring you to your Gmail page via a secure HTTP Connection. Simple, effective.

My-Firefox-Plugins-Gmail-Notifier-No-Mail My-Firefox-Plugins-Gmail-Notifier-New-Mail

My-Firefox-Plugins-Gmail-Notifier-New-Mail-Toast 

Google Toolbar

My-Firefox-Plugins-Google-Toolbar

The Google Toolbar, who can live without it? The toolbar is the first thing I install whenever I do a fresh Firefox install. Yes Google spies on my through this thing, yes my entire life is run by Google services but I don't give a damn it's so nice :) The latest version of Google Toolbar integrates even better with Firefox by adding an option to replace the standard Firefox search box next to the address bar. Makes for a more compact UI. My favorite feature of the toolbar is that search words are added as clickable buttons which finds the search term on the page. Supremely useful.

IETab

For all the usefulness of Firefox you simply can't get around the fact that Internet Explorer has had and still have a huge percentage of the install base covered which means that some sites simply aren't going to play nice with Firefox. IETab alleviates this problem by allowing you to switch rendering engine on a single tab enabling the IE engine to run within Firefox. IETab allows you to configure sites that should always be rendered using the IE engine, Windows Update comes to mind though only a problem in Windows XP as Vista does away with the Windows Update page in favor of a client app. Also available from the Firefox UI is a button for switching between the rendering engines on the fly.

 My-Firefox-Plugins-IETab

PlainOldFavorites

Keeping bookmarks in sync between browsers were a priority to me when I was initially trying out Firefox as I was still very much using IE. I didn't want to commit to the custom bookmark system Firefox introduces so instead of keeping the two in sync I went and found PlainOldFavorites which provides access to the standard Windows/IE favorites from within Firefox. It adds a new menu item to Firefox called Favorites just like we're used to in IE.

del.icio.us

With an increasing number of bookmarks I'm finding it harder to keep them relevant and up to date which is where del.icio.us comes into play. del.icio.us is a service for storing your bookmarks online much like what Google provides with their toolbar however del.icio.us was the original player in that particular space with more focus on the social aspects of bookmarking. For me personally it's just a matter of storing my bookmarks in a central place where I don't have to worry about backups. If you're interested in the social aspects of del.icio.us check out their about page.

Since I started using del.icio.us in Firefox I've noticed that I use bookmarks much more actively and I tend to tag (add) a lot more bookmarks to my collection. An unexpected side effect of del.icio.us is that I'm now able to see what similar pages other people tag within particular tags. Very useful that I can get additional bookmarks relevant to stuff I'm looking for which have already been prescreened by another person.

My-Firefox-Plugins-del.icio.us-Add-Bookmark My-Firefox-Plugins-del.icio.us-Browse-Bookmarks

FireFTP

As a web developer I find myself in need of a FTP client from time to time. The fact that I don't need a client very often doesn't warrant a dedicated software for the FTP'ing file back and forth. FireFTP is a simple FTP client built right into Firefox which. An added benefit of having the FTP client inside Firefox is that it opens up in a separate tab which means you can have multiple connections open at the same time.

My-Firefox-Plugins-FireFTP

Web Developer

My-Firefox-Plugins-Web-Developer

You cannot live without the Web Developer plugin if you're doing any kind of web development. As you can surmise from the name Web Developer helps you out when you're creating web pages. The focus of Web Developer is inspecting the HTML of your pages and understanding the structure of a page. It includes a number of validators for checking CSS, HTML, RSS, and a bunch of other stuff.

Firebug

in the same category as Web Developer we have Firebug which is priceless for developing AJAX enabled web applications and doing client side debugging. You can insert break points in JavaScript, step through code, and even modify code on the fly for an even more streamlined development experience.

Firebug introduces a browser for inspecting the HTML structure in a hierarchical fashion which in conjunction with Web Developer makes for a very powerful development environment; all in the browser.

A neat little feature is an small indicator icon added to the status bar which shows the "compile" status of the web pages; essentially telling you whether any bugs exist in your page.

My-Firefox-Plugins-Firebug-HTML-hierarchical-Browser My-Firefox-Plugins-Firebug-Script-Inspector

Summary 

You can customize Firefox exactly to your liking as you can see from this list of the plugins I use everyday. The plugin system is easily the most powerful feature of Firefox; if you take the time to explore the potential. For me personally the plugins mean that I'm sticking with Firefox now that I've learned the potential. In many ways the plugins goes hand in hand with the reason why I'm using software like Resharper in my day to day development tasks: I want to get the most out of the time I spend behind the screen.

I hope that this list has inspired you to go look at the various plugins yourself and do leave a comment if you find useful plugins for yourself. You can find additional plugins at the Firefox Add-ons page; keep in mind that the Firefox team hasn't actually decided on what to call plugins so you'll see the terms plugin, add-on, and extension used interchangeably on both their web pages and in the actual browser. Honorable mention goes to Greasemonkey: the plugin system within the plugin system (it does get very meta at this point, right :)).

posted on Thursday, 26 July 2007 21:45:32 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

I'm leaving the country for vacation tomorrow morning (at 5 in the morning no less, yikes!). Expect low volume of posts in the coming weeks. I'll leave you with my ReSharper 3.0 Review until I'm back.

posted on Sunday, 01 July 2007 21:35:34 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

... Actually it's been out a couple of days but I wanted to take it out for a spin before posting about it.

Licensing

Users of the previous version need to be aware that this release is not a free upgrade from 2.x like we've been used to. Existing customers can upgrade their license for $199 while a brand spanking new version will set you back $349. It worth nothing that when you upgrade your existing license you actually get a completely new license for 3.0 something Microsoft should sit up and take notice of considering their annoying scheme of installing Windows Vista and then installing the "upgraded version" on top of that. It reminds me takes me back to upgrading Windows 2000 to Windows XP but that's a different story for another time :)

Additionally JetBrains has created a richer licensing model with separate versions for C#, VB, and a full version with support for both of them. Yes, you read that right, JetBrains now has VB support in ReSharper. More on that later.

JetBrains has really gotten their act together this time around and have released ReSharper 3.0 with Orcas support ahead of the final version of Orcas. I still member when Visual Studio 2005 was released and we had to wait for months and months until they got a ReSharper version out the door with support for that version.

Keyboard Scheme

ReSharper-Keyboard-Scheme-Selector When you first fire up Visual Studio with ReSharper 3.0 installed you will be greeted by my favorite new feature: The ReSharper Keyboard Scheme selector. Basically it allows you to select the keyboard scheme with which you are most comfortable like we've been doing in Visual Studio forever. It addresses one of the pain points I've had with ReSharper since version 1.0: The default shortcuts overrides the ones I'm used to in Visual Studio forcing me to remap keys or keep and exported file with my settings handy. When dealing with shortcuts I usually conform to the default layout of the keyboard just to avoid having to remap keys on every installation of Visual Studio I use. As of today I have 4 - 5 separate installations: One for the laptop, one for the desktop, one for a number of virtual machines... basically a lot of environments to keep in sync which is a pain when you're so dependant on the keyboard as I am.

Polish

The product has gotten a lot polish compared to the previous version. Just take look at the settings dialog which will also give you an idea of the scope of the product. Another testament to this fact is that when you install ReSharper you have the option to hide UI elements in Visual Studio which are redundant because ReSharper offers better functionality. Case in point the Refactor menu item on the Visual Studio toolbar which is removed in favor of the ReSharper menu item because that item encompasses so much more than Refactor. Of course this is configurable as you can see on the settings screenshot.

ReSharper-30-Settings

VB Support

JetBrains has spent a lot of time adding support for VB which is great for people doing work in VB. For myself it's a nice to have feature because we do have a couple of projects created in VB still and more importantly projects which mixes and matches VB and C#. I would have liked to I would have been more grateful for the feature two years ago but still it's nice to have the feature I'm used to available to me in both C# and VB. Additionally support for XML and XAML has been added to this version.

TODO Explorer

The TODO explorer (CTRL + ALT + D) is another new addition which actually makes our //TODO comments useful again. I've tried to use TODO comments in my code but I always forget to look them up. I'm sure that Visual Studio provides some sort of UI for viewing a list of TODOs but I can't for the life of me remember how to access it. The TODO Explorer in ReSharper makes it easy to get an overview of the TODOs in your code and ReSharper itself reformats TODO comments in a fashion that makes them stand out more, a nice visual cue that something needs to be done.

ReSharper-30-TODO-Explorer

File Structure Window

I found the File Structure explorer (CTRL + ALT + F) by accident when I was trying out version 3.0 so I'm not sure whether it's a new feature to ReSharper 3.0 or if it's been there all along. It's new to me at least :) Basically it gives you an overview of the structure of the file you currently have open in Visual Studio. Very handy to make jumping to specific stuff in a file easier. Both the File Structure and TODO Explorer are naturally dockable like you would expect.

ReSharper-30-FileStructure

Background Compiling for C#

VB offers a feature called background compiling which is very useful because it provides feedback without compiling. When Vertica initially started out we were using VB because everybody came from an ASP 3.0/VBScript/VB6 background which made the choice to go with VB a nobrainer. When we switched to C# a couple of years later the feature I missed the most from VB was background compiling. In fact I was so used to the feature that C# and Visual Studio felt "wrong" somehow; I weren't able to put my finger on it until later when I dug a little and found the background compiling feature of VB. ReSharper offers much the same feature and improves upon the capabilities offered by Visual Studio itself by adding a nice overview of errors in the current file. Notice the right side of the screenshot where a yellow square and a couple of red and orange bars are shown. The square indicates the overall status of the file, the red color means that the file doesn't currently compile. The bars indicate where the errors and warnings are located in the file.

As a nice addition you can scroll through errors (SHIFT + ALT + PgDn / PgUp) and highlights (ALT + PgDn / PgUp) via keyboard shortcuts making it easy and efficient to fix errors.

ReSharper-30-Background-Compiling

Context Actions

ReSharper offers another interesting feature which is the context based action (CTRL + Enter). Basically it tells you what the allowed operations at any given point are. Very handy when you're learned the product and don't know all the shortcuts. ReSharper is very keyboard driven which makes it the perfect fit for most C# developers but this is one area where they bring some of the stuff I think VB developers are going to like.

ReSharper-30-Context-Action

Refactoring

In previous versions of ReSharper you would have to learn shortcuts for every refactoring which meant, for me anyway, that I took the time to learn the most useful ones and left all the other ones alone. Not anymore. As an extension to context based actions we have Refactor This (CTRL + SHIFT + R) which brings up a list of available refactorings based on the place your cursor is at in your code. What this allows for is a single entry point into refactorings allowing you to get familiar with the various possible refactorings and ultimately to use them more than you would otherwise.

RESharper-30-Refactor-This

Type Completion

Type Completion adds a new level of intellisense to Visual Studio. Basically I can type a partial type name bring up Smart Code Completion (SHIFT+ ALT + Space) which will search through all reference assemblies and suggest type names even without a using statement of the namespace the type is in. Pressing enter will add the using clause to the top of file as well as complete the type. I can't say too many good things about this feature; it simply boots my productivity because I don't have to hunt around for the right namespace.

RESharper-30-Type-Complete

Unit Testing

If you're into unit testing (and you should be :)) ReSharper has something to offer as well. You'll be able to execute your tests from within Visual Studio ala what TestDriven.NET provides and additionally you get an Unit Test Explorer which makes it easy to overview your test suite. Basically ReSharper allows for much of the same convenience as Team System does by integration xUnit frameworks into Visual Studio.

Bracket Completion

Everything provided by ReSharper is about better productivity. In this section I'll cover all the little things you'll love and get addicted to before you know it :)

Bracket completion basically puts in the closing bracket of a block. Type { and ReSharper adds the matching }. Same thing goes for parentheses. You only save a keystroke but think about all the times a day you actually need this feature. I can't live without this one for sure.

Smart Complete Code

Smart Complete Code (CTRL + ALT + Space) basically an evolved version of Intellisense which gives you more relevant completion than what Visual Studio provides. You can think of the feature as scoped intellisense, whatever is relevant for the scope you're currently in ReSharper suggest. Very handy.

Reformat Code

Reformat Code (CTRL + E + F) is an extension to what was introduced in Visual Studio 2005 where you can specify how your coding style is, i.e. how spacing works, line breaks, all that good stuff. ReSharper actually had this in versions before Visual Studio 2005 came out and 3.0 has even richer support for configuring your coding style. Additionally you can reformat the code of the currently open file and as two new options globally for the entire solution or silently so you don't have to choose which settings to reformat by every time.

ReSharper-30-Coding-Style-Settings

Surround With

Imagine that you've written a block of code and you are reminded that you need to do a try-catch around that block of code. You laboriously move the cursor to the start of the block and type try followed by the brace. After you you move the cursor to the end of the block and do the catch maybe followed by a finally block. With ReSharper that operation would go something like highlight the code block press CTRL + E + U select surround with try-catch-block. Surround With is a feature that allows you to surround blocks of code with other code like the try-catch block, a region, an if-statement, and so forth. I use this feature extensively to surround block with regions for example.

ReSharper-30-Surround-With

Goto Usage

How many times have you wanted to know which pieces of code call the particular method you're currently looking at? I know that I daily want to see this and luckily ReSharper does provide exactly this feature (SHIFT + ALT + F12). If only a single usage is found the you're taken there otherwise a list of the usages is displayed.

Summary

With the job market being what it is today my opinion is that it's downright irresponsible to not use tools that boost the overall productivity of developers. Almost every single company is clamoring for developers instead of making the most of the developers already employed in the company. Visual Studio brings a lot of productivity to the table, nice designers, code snippets, background compiling, refactoring. Even innovations in the core framework are about productivity like LINQ, automatic properties, etc..

ReSharper takes many of these familiar tools to new levels and adds new functionality to the best development environment out there. I've been using ReSharper for years and have liked almost every version of the product with exception of 2.0 which was dog slow. I'm happy to report that all the code analysis going on behind the scenes don't slow down Visual Studio noticeably. ReSharper truly delivers on JetBrains' promise of "develop with pleasure".

posted on Sunday, 01 July 2007 21:32:19 (Romance Daylight Time, UTC+02:00)  #    Comments [6] Trackback

I recently took a look at NDepend to checkout whether I'd be able to do some analysis of our solutions with regard to code reviews and overall architural integrity. I must admit that I didn't get the tool, I went ahead and looked at some of the reports but the main window of the tool is just extremely busy. Finding heads and tails of it was beyond me in the 15 minutes I looked at it. Basically I decided that it generated some interesting reports but that it really wouldn't be all that helpful.

I'm thinking that I might have to give the tool a second chance having read Scott Hanselman's post Exiting The Zone of Pain - Static Analysis with NDepend. Getting a down to earth explanation of how to read the charts really made sense of some of the stuff I was seeing. However I still feel that the main window requires lots more investigation before I can effectively use it some anything. The real power of NDepend seems to me to be the query language which lets you find stuff like unused methods. ReSharper already does this for me but only in a very localized way, i.e. only the file I'm currently working on. Having the ability to do this globally in a solutions really appeals to me.

Back to NDepend for a close look.

Conclusion: First read Scott Hanselman's post on NDepend then go download and play around with it.

posted on Tuesday, 20 February 2007 13:28:50 (Romance Standard Time, UTC+01:00)  #    Comments [1] Trackback

It's actually been out for a couple of days now but I wanted to take the time to try it out in various scenarios before telling you about it. It's no secret that I've been very fond of ReSharper in the past. Of course I cooled down a bit when I tried using it on very large projects and it slowed all the way down to the point where it was just painful to develop with it installed. At that point I decided to give it a rest for a while and it wasn't until recently that I noticed that the EAP program for 2.5 was in progress.

Taking a quick look at the feature list I noticed that performance was one of the main problems being addresses in the release so naturally I was excited and got it installed.

Having used it on both large and small projects I can safely say that the performance improvements are definitely there. So much so that I'm back loving ReSharper.

A couple of pain points still exist for me:

  • Automatic intellisense for enum values when you assign to an enum type.
  • Migration of settings between installs is painful. Between versions even more painful as the command names you bind your hotkeys to actually changed between 2.0 and 2.5.
  • Standard hotkeys in VS you use all the time are actually remapped which leaves you with the option of mapping them back or trying to figure out standard hotkeys in ReSharper which does the same thing (hello there F12 vs. CTRL + B).

To relieve the last pain point I'm actually trying to stick with the default key layout as my two last points are closely related to me having to remap keys every time I install ReSharper. I do the same thing with VS because I don't want the hassle there either.

Also please be aware that JetBrains is raising the price for ReSharper to $249. You can buy ReSharper for the usual $199 until the end of the year. So get those credit cards rolling if you're considering getting a license.

Download ReSharper 2.5 (you'll be glad you did).

posted on Thursday, 14 December 2006 14:59:26 (Romance Standard Time, UTC+01:00)  #    Comments [2] Trackback

... aka Free Beer and Tapas night :) OK, so with the day's session overwith we proceed to the exhibition hall where Microsoft has kindly provided us with beer and tapas along with lots and lots of great technical content provided by various exhibitors. I got a nice demo of CodeRush and had them answer some critical questions about the product. Also I got a chance to see the Jetbrains guys showing off Resharper and DotTrace. Two of my favorite products.

Finally Carl and Richard was hosting Speaker Idol which is a contest amongst the attendees in which you can will a speaker slot for next year's TechEd. Afterwards they hosted the 64-bit Question Game Show where some great prizes were given away. Oh and did I mention the free beer? :)

I also got to see another Microsoft podcaster in the flesh: Ron Jacobs was there doing a live ArCast from the floor.

    

posted on Wednesday, 08 November 2006 00:22:49 (Romance Standard Time, UTC+01:00)  #    Comments [0] Trackback

Inspired by Scott Hanselman I bring you my own list of software I absolutely positively cannot live without. This list of software has taken years to compile: I didn’t start out with a list of software as a goal, I simply needed to get a job done. Every single time I need to get a new job done I go out and select the top ten pieces of software which solve a given problem. This list is narrowed down until I’m left with a single piece which will go into my tool box. I refine my tool box continually but some of the piece of software has lived in my tool box for many years, EditPlus is one such piece of software, WinRAR is another. Some categories are left out entirely as time moves on, examples of these would be FTP and IRC which I used religiously previously but have no need for recently.

My quest for an ever increasing level of quality in my tool box has even taken me so far as to consider an different platform than Windows altogether. I’ve yet to explore the Apple platform but I do find that some very interesting pieces of software live on that particular platform. Maybe in the future, for now I’m bound to the Windows platform.

Usability

Launchy
Launchy
Provides fast access to your start menu by popping up a window in which you type the name or part of the name of the program you wish to launch. No need to click on the start menu ever again. My thoughts on Launchy.

TweakUI
Powertoys
Allows for customization of a lot of Windows XP settings. I primarily use this tool to change the location of the “My” folders pointing to locations outside of the Documents and Settings folder in order to facilitate easy backup and faster access. I usually keep my folders on a separate drive than the Windows drive in a folder called Users. Also I point the My Documents folder to the root of my user folder instead of the documents folder which gives me quick access to all my files from the start menu,

Office

Firefox

Firefox-logo

Firefox needs no further introduction. I debated long and hard whether to include it or not. Since I use this browser pretty intensively I figured that I’d better put it on my list as it is usually the first piece of software to get installed. I like Internet Explorer 7 and I think that the user interface of that particular browser is better than what we get with Firefox, but Firefox brings lots and lots of plugins to the table which enables us to customize to our heart’s content. Specifically I enjoy TabMix Plus as it allows me to configure my tabs exactly the way I want them.

FeedDemon 2

FeedDemonLogo

The easy-to-use interface makes it a snap to stay informed with the latest news and information. You can completely customize the way feeds are organized and displayed and set up custom news watches based on keywords. You can even download podcasts and audio files and have them show up on your portable audio device. In addition, FeedDemon now synchronizes with NewsGator Online and the rest of the NewsGator RSS Suite. The software is pre-configured with dozens of feeds, so you can unleash the power of RSS right away. My thoughts on FeedDemon 2.

FeedDemon 2 replaces Omea Reader as my RSS reader recommendation due to persisting bugs in the Omea product.

BlogJet

Bjlogo4

BlogJet is a weblog client for Windows that allows you to manage your blog(s) without opening a browser. Those who are seriously concerned with blogging, cannot imagine their work without using this wonderful tool with elegant interface.

EditPlus
Editplus
Notepad replacement supporting multiple documents in the same window. Automatically colors code with support for many languages.

FoxItPdfReader
FoxItReader
A faster less cluttered PDF reader.

Nero 6

Nero6logo

For burning CDROMs and DVDs. I’m not too fond of the latest version of this software so I may end up finding something better. If you have a suggestion please feel free to mail it me.

PureText

PureText is basically equivalent to opening Notepad, doing a PASTE, followed by a SELECT-ALL, and then a COPY.  The benefit of PureText is performing all these actions with a single Hot-Key and having the result pasted into the current window automatically. I use this tool all the time when copying snippets from sources around the web.

Programming

WinMerge
Winmerge
A visual text file differencing and merging tool. It is highly useful for determining what has changed between project versions, and then merging changes between versions.

Resharper
Resharper
JetBrains ReSharper is a Visual Studio .NET add-in that brings intelligent C# code editing and coding assistance features to VS.NET. By intelligent features we mean usage search, powerful refactorings, smart type completion, using assistant and more. In brief, ReSharper truly understands C# code. My thoughts on Resharper.

Consolas Font
The Microsoft Consolas Font Family is a set of highly legible fonts designed for ClearType. It is intended for use in programming environments and other circumstances where a monospaced font is specified. This installation package will set the default font for Visual Studio to Consolas. My thoughts on the Consolas Font.

CopySourceAsHTML
An add-in for Microsoft Visual Studio 2005 that allows you to copy source code, syntax highlighting, and line numbers as HTML. CSAH uses Visual Studio's syntax highlighting and font and color settings automatically. If Visual Studio can highlight it, CSAH can copy it, and your source should look the same in your browser as it does in your editor.

Cool Commands for Visual Studio 2005
Adds a couple of useful features to Visual Studio 2005: Open Containing Folder for Files,Copy Reference, Add Projects from Folder are the ones I use the most. My thoughts on Cool Commands.

Imaging

Paint.NET
Paintnetlogo
An image and photo manipulation software It supports layers, unlimited undo, special effects, and a wide variety of useful and powerful tools. Covers the basic image editing needs. My thoughts on Paint.NET.

Picasa
Picasa
Picasa is a photo management tool from Google which provides a very nice interface for browsing your photos. Also includes basic photo editing tools such as red eye removal.

Cropper
Cropper
Cropper is a screen capture utility. It makes it fast and easy to grab parts of your screen. Use it to easily crop out sections of vector graphic files such as Fireworks without having to flatten the files or open in a new editor. Use it to easily capture parts of a web site, including text and images. It's also great for writing documentation that needs images of your application or web site. My thoughts on Cropper.

GetCanon!
Image downloader for Canon digital cameras. It's small, quick and simple. It can download images, rotate them automatically and delete them from camera. If you hate the "designer" interface of Canon utilities and hate Windows messing with image filenames, this is the right tool for you.

Music

iTunes
Itunes
iTunes doesn’t really need an introduction. I use this guy because of the very nice integration with the iPod and the sleek podcasting support.

AirFoil
Airfoil
Send any audio to the AirPort Express. My thoughts on AirFoil.

System

WinRAR

Archiver with support for almost all the archive formats out there. I use this one to avoid having multiple archivers installed and because it integrates nicely into the Windows shell.

Daemon Tools ISO Mounter

DaemonToolsLogo

A tool for mounting ISO images as CDROM drives.

FolderShare

FolderShare

FolderShare is a service that allows you to securely keep files synchronized between your devices, share files with friends or colleagues, and remotely download your files from any web browser. I use this tool for both remote backup and synchronization between work and home.

µTorrent

Bittorrent is becoming a pervasive means of distribution on the internet and this client brings a whole lot of features to the table making it on par with clients such as Azureus and BitComet but at the same time being smaller and more importantly not a Java based piece of software

posted on Sunday, 09 July 2006 15:44:52 (Romance Daylight Time, UTC+02:00)  #    Comments [4] Trackback

ReSharper20FinalI was beginning to think that Jetbrains would never actually get ReSharper 2.0 out of perpetual beta. It seems though that that is just what has happend: ReSharper 2.0 is done and ready for prime time.

I sure will be taking this one for a test drive through one of our largest solutions to gauge the performance which previously has been a big issue.

Jetbrains ReSharper 2.0

posted on Tuesday, 23 May 2006 08:17:03 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

The long awaited EAP for Resharper 2.0 with support for both Visual Studio .NET 2005 and more importantly Visual Studio 2005 has finally started. The download weights in at 16 MB, quite a bit larger than the 1.x release. More to follow when I’ve gotten the sucker installed and taken for a spin.

The one thing which has been keeping me from really diving into .NET 2.0 was the lack of Resharper for VS 2005 so naturally I’m psyched about this release

Go download it.

posted on Wednesday, 20 July 2005 09:07:45 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

According to Jetbrains’ Chief Scientist and Vice President of Product Development, Valentin Kipiatkov, we can expect to see an EAP version of Resharper 2.0 soon. He states that a probable time of release will be in two weeks time. Resharper 2.0 is of course the version which we’ve all been waiting for; primarily for the added support for Visual Studio 2005 which is also yet to be released.

Valentin Kipiatkov, “My best guess is in 2 weeks.”.

posted on Monday, 20 June 2005 20:02:53 (Romance Daylight Time, UTC+02:00)  #    Comments [1] Trackback

Refactor-logoFrom the creators of Coderush comes Refactor! a refactoring tool for every version of Visual Studio .NET. If you haven’t seen this thing in action yet you need to check out Carl Franklin and Mark Miller show off Refactor support in VB 2005 posted by Carl Franklin.

Many of the same cool visual effects found in Coderush are present and best of all the product is free for Visual Basic 2005. Of course I’ve found a friend in Resharper but I may have to give the Coderush / Refactor! a spin in the near future. One thing I was missing from Coderush when I first tried it out is the background compile-like feature found in Resharper. This is the one feature I miss the most when switching from VB to C#.

Also be sure to check out the official Visual Basic 2005 Refactor page on MSDN and the product page at DevExpress for the pro version with C# support.

posted on Wednesday, 27 April 2005 14:54:18 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

As a follow-up to my post entitled Jetbrains .NET IDE I’d like to point you in the direction of Sneak Preview of ReSharper IDE which has just been posted on Jetbrains’ web site. This essentially seems to be a reply to my errornous post where a screenshot of the ReSharper IDE was mistaken for a screenshot of ReSharper 2.0.

Great to see Jetbrains on their toes. I’m liking this company more and more for every day which goes by. Their Omea product is helping that along as well. Expect a full review of both Omea Reader and Omea Pro.

posted on Monday, 11 April 2005 17:08:47 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

Jetbrains-logoNow here’s something really interesting. Looks like the screenshot I posted earlier is not ReSharper 2.0 but rather a new IDE in itself. Looks like the .NET community is getting a IntelliJ-ish IDE from JetBrains. VS is a great tool but it’s always great to have alternatives, especially if those alternatives force Microsoft to push the envelope on development even more.

NET IDE Forging Begins

Finally, those of you who have yet to hear the good news, we here at JetBrains have begun to hammer out our own .NET IDE, tentatively lacking an official name (we will have one soon, but if you have some suggestions, bring it to our forums!). If you are familiar with our Java IDE IntelliJ IDEA, we are going to be implementing many of the same navigation and usability features from this IDE into our own .NET IDE. Users can look forward to close integrations with VCS systems, industry leading refactoring support, powerful intelligence features, and a whole lot more. However, the final feature list is still under consideration, but you can start pushing for the features you would like to see in the IDE in our USENET group

Once more about the .NET IDE becomes ready for public consumption, I will be sure to pass it along to the rest of the community.

posted on Thursday, 07 April 2005 15:29:13 (Romance Daylight Time, UTC+02:00)  #    Comments [2] Trackback

I was looking around the JetBrains newsgroups and found a screenshot of ReSharper 2.0.Resharper20

Update: As stated in the comments this is in fact not a screenshot of ReSharper 2.0 but rather a whole new IDE being developed by JetBrains. You can read more about it in my post Jetbrains .NET IDE

posted on Thursday, 07 April 2005 15:10:06 (Romance Daylight Time, UTC+02:00)  #    Comments [2] Trackback

I just received an e.mail from Valentin Kipiatkov who posted the ReSharper 2.0 Plans. He states that while the upgrade for 2.0 is free for existing customers an adjustment of the price is expected for new customers. The new price will probably be $199 so if you’re contemplating buying ReSharper you should buy version 1.5 now and save $100 on version 2.0.

Upgrade to ReSharper 2.0 will be FREE for all customers of ReSharper 1.0 and ReSharper 1.5. The pricing for new customers is not defined yet and it's likely that it will be increased to, say, $199.

Even more information available in the post ReSharper Returns to Intended Price which states that the current price of $99 was temporary all along. The normal price for ReSharper is $149; all the more reason to go out and get ReSharper today. Even though it looks like VS 2005 provide much of the same, I can tell you right now that that isn’t the case. Running VS 2003 with ReSharper feel considerable more powerful than running VS 2005 without ReSharper. It’s that good.

Oh yeah, the $99 offer ends April 5th. Go buy now!

posted on Friday, 01 April 2005 13:34:07 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

As a happy user of ReSharper 1.0 and general software update junkie I’m eagerly looking forward to the next version of ReSharper.

JetBrains has released a detailed list of new features found in the next release. Now we only need to know whether existing customers can upgrade for free.

Update: David Stennett of JetBrains says the following in the comments, “Yes, current ReSharper 1.X customers will upgrade to ReSharper 2.0 for FREE.”. Free upgrades for everybody, happy days.

Spam Bully could learn a lot from JetBrains if you ask me.

posted on Thursday, 31 March 2005 11:16:26 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

JetBrains finally finished ReSharper which is a tool I have talked a lot about on this blog because it is so damn cool :) Luckily the final price is a lot lower than CodeRush ( $100 vs. $250 for CodeRush) which provides similar functionality in Visual Studio.

Only thing keeping me from buying this thing right now is that I know that Visual Studio 2005 will provide a lot of this functionality for free when it gets released next year. Gimme now! :)

posted on Friday, 23 July 2004 11:29:23 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

A few weeks ago I learned abount Reflector by Lutz Roeder which is a tool for browsing assemblies - having downloaded and used it I can't for the life of me think of how I was getting by before :) This got me thinking that there must be a whole bunch of cool stuff out there just waiting to be found whihc is when I found ReSharper a tool which I have ranted about on more than one occasion :)

The reason for this post is that I just found a very nice article on MSDN named "Ten Must-Have Tools Every Developer Should Download Now". This is really what I was looking for back when I found ReSharper so I thought I would share it. Sadly ReSharper isn't on the list but it is still something you should take a look at. Oh yeah - I found the article via MSDN Just Released RSS feed. Nice feed, subscribe now!

 

posted on Saturday, 19 June 2004 15:32:52 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

Hot on the heels of yesterday's release a new version of ReSharper has been made available. Grab build 86 right now.

posted on Thursday, 10 June 2004 22:19:38 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

A new version of ReSharper has been released. Check it out. In case you are wondering what ReSharper is I have written a little something about it previously.

posted on Wednesday, 09 June 2004 22:02:15 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

I have previously mentioned CodeRush here which is an add-in for Visual Studio .NET which adds many of the things we will see in Visual Studio 2005. At $250 a license it is pretty hard to justify when the feature will be available for free in a years time.

While I was tinkering with CodeRush I stumbled across another tool named ReSharper which does the same thing - adds all the IDE sweetness which is found in the VB.NET IDE. ReSharper is still in development and the first release I tried was horribly slow. Today I got an e-mail stating that a new release is available. Not being impressed with the first release I figured I'd give it a whirl just for kicks.

Lo and behold the new version of ReSharper is actually a big improve over build 83 (the first one I tried out). Build 84 addresses the performance issues and also some of the configuration issues. I highly recommend that you try out the new version. Beware though the add-in is still in development and as such can be the subject of changes, breaking stuff, and all that. Consider yourself warned :) Also you should be aware that the performance of previous version decreased as the project size got bigger. I have not yet had a chance to see if this issue is addressed in the new version. If you do try out this build please let me know what you find.

Download latest build of ReSharper (build 84)

posted on Friday, 04 June 2004 12:32:37 (Romance Daylight Time, UTC+02:00)  #    Comments [1] Trackback