Brian Di Croce

Passionate about developing and delivering better software with .NET

Subscribe in a readerSubscribe in a reader Subscribe via emailSubscribe via email

For if you love those who love you, what reward do you have? Do not even the tax collectors do the same? And if you greet only your brothers, what more are you doing than others? Do not even the Gentiles do the same? You therefore must be perfect, as your heavenly Father is perfect. (Matthew 5:46-48, NIV)

 
May 08
17
2008
  1. More (Really) Stunning Desktop Wallpapers | Graphics | Smashing Magazine
    A very cool collection of stunning desktop wallpapers for Mac and PC (High resolution!)

     

  2. 20 Things You Can Do In 20 Minutes to Be More Successful at Work
    Granted, this is a CIO.com article, but I think it speaks to more than CIOs. It’s basically a list of 20 things you can do within the hour to make you better at your workplace.

     

  3. 8 College Courses That Will Make You Rich
    A list of 8 college courses that can give you an extra edge on your road to become wealthy.

     

  4. 32 Ways to Keep Your Blog from Sucking
    Scott Hanselman presents 32 ways that might help you to keep and nourish your blog at top health.

     

  5. CodeProject: Creating the Same Program in Windows Forms and WPF. Free source code and programming help
    An excellent article that explains the nuances between building a Winforms and a WPF application.

     

  6. Fifty Habits of Highly Successful People - Stepcase Lifehack
    50 things high achievers do to excel in life.

     

  7. WPF Application Quality Guide
    How to properly own the testing phase of a WPF application (WPF Testing Lifecycle)

     

  8. Towards Bug-Free Code
    Patrick Smacchia writes about practices already available to make sure our software does what it is suppose to do. Some organizations don’t have the luxury to prove the correctness of their software with math, so these simple tips can be a life-saver in these situations.

     

  9. Why bother having a resume?
    Who knew that resumes were ‘passé’? Seth Godin makes a very strong statement about why remarkable, amazing or just plain spectacular people shouldn’t depend on a simple resume to get that special job. Check out what he recommends instead.
May 08
17
2008

A co-worker forwarded us a link to a tourism site about Montreal.  It’s the very first time I see this kind of aerial/ground scenery shot in a film. 

If you have two minutes to spear and would like to see more of Montreal (from the sky to the streets), check out http://www.tourisme-montreal.org/.

May 08
16
2008

I’m getting my hands dirty with Enterprise Library for the first time and we’re currently targeting EntLib v3.1 with Visual Studio 2008.  At first I was editing the configuration files by hand, but then after reading the documentation, I found out that there’s a Configuration Tool that’s shipped with the EntLib installer.  The only problem is that it doesn’t integrate with the IDE automatically upon the installation. 

Here are the steps necessary to have the EntLib’s Configuration Tool integrated with Visual Studio 2008:

  1. Exit all instances of your Visual Studio 2008 before proceeding.
  2. Download and import the registry file that you will find in CodePlex.
  3. Open a Visual Studio 2008 Command Prompt and type devenv /setup.  This operation should take less than a minute to complete.

Now, you can launch Visual Studio 2008 and when you right-click a config file from the Solution Explorer, you’ll be able to edit its configuration using the Enterprise Library Configuration tool. 

NOTE: In order to view/edit an element’s properties, you’ll need to activate the IDE’s Properties Window (from the View menu, select Properties Window or hit F4 on your keyboard).

May 08
16
2008

My favorite podcast related to software development, Software Engineering Radio, recently interviewed Anders Hejlsberg, Chief Language Strategist at Microsoft.  Here’s an excerpt on this interview:

In this episode we have the pleasure of talking to Anders Hejlsberg, Chief Language Strategist at Microsoft. We started by discussing his more distant past, namely, his involvement with Turbo Pascal and Borland’s Delphi. We then looked at the influences Delphi had on C# and how C# evolved from Delphi. In the next section we discussed a couple of general language design issues, among them components and checked vs. unchecked exceptions. Next, we discussed interesting issues about languages of the future, static vs. dynamic typing, functional programming, meta programming as well as the importance of good support for concurrency. We concluded the discussion by looking at the interplay between languages and IDEs.

Click here to download this interview (MP3).

May 08
14
2008

The warm product was released today as a nightly build.  It’s worth checking out.  I’m so impatient ever since developing with C# 3.0.  Some people referred me to CodeRush/Refactor Pro! but I don’t feel like learning new shortcuts all over again…Keep the faith Brian…keep the faith!

Check out this page to download ReSharper (EAP) and view the fixes for this release.

By the way, anyone of you (dear Reader) uses CodeRush/Refactor Pro?  The license fee seems much lower than ReSharper’s, but that apart, what do you think about it?  Some people also told me that they use both at the same time.  Wow.

May 08
14
2008

Every Sunday morning, we are greeted by an usher at church who hands out a weekly news bulletin with various activities, birthdays reminders, words from the pastor and other stuff related to our little church.  A while back, I read something I promised myself I would share on my blog.  I should’ve written this two weeks ago, but I guess there’s never a wrong time to do something good, so here goes.  This one was a real reminder of God’s perfect example to follow as we journey in our lives.  It’s ten simple principles (or self-promises) that can positively affect your life and other people’s lives as well.  I hope you will share them and reveal them in your life.  God bless.

1. Today I will not strike back…

If someone is rude, if someone is impatient, if someone is unkind, I will not respond in a like manner.

2. Today I will ask God to bless my ‘enemy’…

If I come across someone who treats me harshly or unfairly, I will quietly ask God to bless that individual.  I understand ‘enemy’ could be a family member, neighbor, co-worker or stranger.

3. Today I will be careful about what I say…

I will carefully choose and guard my words being certain that I do not spread gossip.

4. Today I will go the extra mile…

I will find ways to help share the burden of another person.

5. Today I will forgive…

I will forgive any hurts or injuries that come my way.

6. Today I will do something kind for someone (but I will do it in secret…)

I will reach out anonymously and bless the life of another.

7. Today I will treat others the way I wish to be treated…

I will practice the golden rule.  "Do unto others as I would have them do unto me"- with EVERYONE I encounter.

8. Today I will raise the spirits of someone who is discouraged…

My smile, my words, my expression of support, can make the difference to someone who is wrestling with life.

9. Today I will nurture my body…

I will not over eat…I will eat healthy…I will thank God for my body.

10. Today I will grow spiritually…

I will spend a little more time in prayer and bible reading today.  I will begin reading something spiritual or inspirational; I will find a quiet place and listen to God’s voice.

May 08
13
2008

I had such a hard time installing SQL Server 2005 on my Windows Vista Enterprise Edition machine running IIS 7.0 this afternoon. In fact, during the setup of SQL Server 2005, I received the following warning message next to the IIS Feature Requirement item on the System Configuration Check page, as shown in the following screenshot.

After Googling for a while, I found out that this situation was already documented by Microsoft as Knowledge Base #920201 in their Help and Support page.

The root cause for this problem is that not all of the IIS 7.0 components essential to SQL Server have been installed. The solution to this problem is (as you may have guessed it) to install those IIS components. To access the IIS configuration page on Vista, you need to go to Start->Control Panel->Programs and Features, then click on “Turn Windows features on or off” on the left pane of the window.

The following table shows you which components (there are 10) to enable with their corresponding folder. The screenshot below the table is a visual representation of the IIS components you should have enabled by ticking the checkbox next to the component.

image

Following this procedure, you can launch the setup for SQL Server 2005 again, and this time you should see the following results:

If you’re looking for more information on how to install/configure IIS 7.0 on Vista, I highly recommend you to read the following page: http://learn.iis.net/page.aspx/28/installing-iis7-on-vista/. If you’re looking for the same information, but for Windows Server 2008, this link will be more appropriate for you: http://learn.iis.net/page.aspx/29/installing-iis7-on-windows-server-2008/.

May 08
12
2008

I’ve been using ReSharper as a complement to Visual Studio since version 2.0 of JetBrains‘ powerful refactoring and productivity tool in my .NET projects.  ReSharper, which fully supports both C# and VB.NET, is not only a time-saver when applying refactoring patterns but is actually a great assistant in making you a better .NET developer.  In a few moments, I will provide my thoughts that support these statements and more. 

In my previous job at a small ISV (seriously, we were three), my boss which is very much on the technical side of business made sure to provide us with the necessary tools and resources to deliver high quality projects to our customers.  In order to achieve this "high quality" level, we had to make sure that our productivity was high, our "comfort zone" was in the green and the tools available to us would support both of these needs at a minimum.  That being said, he provided for us a dual monitor setup (I wish we had three…but then again I wish for a lot of things in life), powerful machines, comfortable chairs…and reliable software tools such as modeling tools, profilers, code analyzers, etc.  Of all these things, I believe that software tools are the most important because even though your productivity might slow down if you’re lacking a second monitor or that chair isn’t as comfortable as it should be (one benefit of having a bad chair is that it reminds you to get up and walk around every 15 minutes which is very good for your back), you can radically lower your productivity and your quality output if you’re not provided adequate tools to fulfill your job.  In my software toolbox, my favorite one is a refactoring tool because it helps me to reduce code duplication, augment code intention when applying refactoring patterns, and supports TDD from the get-go.  In my .NET development toolbox, this tool is satisfied by ReSharper.

Unfortunately, there are many companies that produce software that don’t provide these kinds of necessities to their developers.  My guess is that their CIO or technological managers aren’t as technical as they should be or they don’t see these necessities as a real necessity (maybe it doesn’t align with their current fiscal year’s objectives, who knows…).  My goal in this post (and with your comments) is to present a case to management that developers who aren’t provided the necessary and essential tools to help them in their daily development tasks is like sending a soldier to combat without the appropriate gear (it’s the first example that popped out in my mind…I must confess that I’m watching the late night news as writing this post…and what else is there to talk about than the war in Iraq itself?).  The tool I’ll focus on is ReSharper (but feel free to share your own tools as well!)

All right, here we go.  As you may know, the .NET framework base classes and interfaces are all grouped in various different logical namespaces.  According to Patrick Smacchia’s lately post on on the number of types in the .NET framework, there are close to 933 namespaces and 39 509 types alone in the framework.  I doubt that Kim Peek can memorize all of them.  A tool like ReSharper actually is a time-saver in this scenario because it is intelligent enough to assist you in importing the right namespace for a type.  This is extremely helpful, because when programming, you really want to focus on "the type I need/want to use" and much less on the "which namespace holds the type I need/want to use?".  I don’t know if it happens to you, but I tend to lose my concentration whenever I’m shifting away from focusing on the real task at hand (such as browsing the MSDN documentation or the Object Browser to find a compatible type, a base class, an interface or a namespace).  So this is my first argument for giving a ReSharper license to your employees: a refactoring tool like ReSharper reduces a developer’s time and increases her productivity by letting her focus at the real essence of the application (the code) and less on the plumbing (figuring out which one of the 933 namespaces holds our type).

Furthermore, a tool like ReSharper actually helps developers who are novice in object-oriented programming.  I’ve been doing consultancy for a while enough to know that not many .NET developers have sharpened their OO skills compared to Java or C++ folks.  I’m glad to hear that the ALT.NET movement is making a serious effort in this area, but until this is mainstream, tools like ReSharper can be a valuable resource to help us in this direction.  For example, ReSharper will actually propose you to use a more general type (such as a base class or an interface) whenever possible (check out the screenshot below).  This is extremely useful as it helps to fulfill the principle of favoring interfaces over implementation (which decreases coupling to a specific type) and facilitates testing and maintenance.  Therefore, my second argument for giving a ReSharper license to your employees:  a refactoring tool like ReSharper can make your developers more aware of some key OO principles.  And if your organization takes time to do some code reviews, more people can participate in sharpening their OO skills at the same time.

I’ll give a final argument to my case for enterprises to supply their developers with a tool like ReSharper (the rest of this case will be continued by your comments and ideas).  Whenever you’re doing some contracting for another client, or your changing jobs with another organization, most of the time you’ll have to familiarize yourself with another coding standard or coding guidelines.  This is the perfect situation where a tool like ReSharper can leverage this pain since it can assist you in coding to a standard.  All you have to do is provide the tool with a coding template and that’s it.  That’s actually how it should be.  I once heard that Albert Einstein didn’t even know his own telephone number and when asked why that was the case, he simply responded "I don’t need to remember my own phone number, I can just look it up in the phone book!".  It’s the same scenario in this case.  Why memorize and remember such a static information like a coding standard when it can actually be enforced by a tool?  The less I have to remember things, the better I am at performing my work because I can concentrate more on the essential and less on the "plumbing".  The beauty of a tool like ReSharper, is that you can tell it to format your code according to a given template whenever you want.  That’s my third and final argument for convincing management to provide a tool like ReSharper to their developers: it helps them (once again) to focus more on the essential code and less on the "esthetics" aspects of it by delegating multiple coding standards to the tool.  This guarantees that the customer will always have a codebase that respects her standards.

Of course, there are countless more reasons to provide refactoring tools like ReSharper to your developers.  I highly recommend to take some time and view the features offered by this incredible product.  I know some developers that actually purchased their own licenses or even are using some cracked version of the tool just to satisfy their own needs (man, it sounds like being addicted to drugs or something) because at the end, the tool proved itself more than valuable.  This shouldn’t be the case.  Supplying the right tools to your developers is a great way to let them know that you care about their work, and as a result help your organization to increase in both maturity and capability.

Granted, ReSharper isn’t a silver bullet, but in many cases it provides us with the support we need to concentrate on writing essential code while giving us the opportunity to easily apply refactoring patterns and driving our design with TDD.  That alone gives us a boost in productivity, which can vary on the user’s experience with the tool (see the ReSharper Jedi video for more info) and quality.  That, I believe, is a bullet strong enough to harm the werewolf constantly that frightens developers to respond to changes, refactor their code, organize their unit tests and more.

Apr 08
25
2008

All right, just like Ayende, I’m not too sure about this, but I’m willing to give Twitter a chance…

http://twitter.com/bdicroce

Apr 08
25
2008

I was cleaning my Gmail inbox this afternoon, and I stumbled upon a few old emails. One of them was sent to me by my wife and it includes some funny pictures of (apparently real) math and physics homework answers. To all you students who are about to begin your Summer vacation…enjoy!

Apr 08
24
2008

With the latest release of the popular Linux-based operating system, Ubuntu Hardy Heron, the installation process just got easier for Windows users who wish to try out an alternative to Vista or XP.  Even .NET developers who are looking out on trying the Mono project (the .NET platform for Linux-based operating systems) can benefit from it.  All this is possible thanks to a little Windows utility called Wubi, which is an installer for Ubuntu. 

As described by Wikipedia’s definition on the tool:

Wubi adds an entry to the Windows boot menu which allows you to run Linux. Ubuntu is installed within a file in the Windows file system (c:\wubi\disks\system.virtual.disk), as opposed to being installed within its own partition. This file is seen by Linux as a real hard disk.

According to Wubi’s official site, Wubi is an officially supported Ubuntu installer for Windows users that can bring you to the Linux world with a single click.  Wubi allows you to install and uninstall Ubuntu as any other Windows application, in a simple and safe way.

The beauty of Wubi is that:

  • You don’t need to burn a CD. Just run the installer, enter a password for the new account, and click "Install", go grab a coffee, and when your are back, Ubuntu will be ready for you.
  • You keep Windows as it is, Wubi only adds an extra option to boot into Ubuntu. Wubi does not require you to modify the partitions of your PC, or to use a different bootloader, and does not install special drivers. It works just like any other application. Wubi is spyware and malware free, and being open source, anyone can verify that.
  • Wubi keeps most of the files in one folder, and if you do not like it, you can simply uninstall it as any other application.
  • It’s free!

The following screenshot, which was taken from Wubi’s official site, shows you how easy it is to configure Ubuntu’s installation as a Windows application. 

Remember that you don’t have to create a new partition to install Ubuntu with Wubi.  In fact, it will install the Linux-based operating system in the same partition that Windows is installed (just like a standard application).  You can choose whether to boot in Windows or Ubuntu whenever you reboot your computer. 

There are some things to consider with this installation model:

  1. The performance is identical to a standard installation, except for hard-disk access which is slightly slower than an installation to a dedicated partition. If your hard disk is very fragmented the performance will degenerate.
  2. Hibernation is not supported under Wubi, moreover Wubi filesystem is more vulnerable to hard-reboots (turning off the power) and power outages than a normal filesystem, so try to avoid unplugging the power. An Ubuntu installation to a dedicated partition provides a filesystem that is more robust and can better tolerate such events.

For more information, I suggest you to skim through Wubi’s FAQ page.

Apr 08
23
2008

image Wow! 24 posts for the month of March and only one post so far for April.  Some people were asking me if I was all right, and the answer is Yep!  I finished working for the consulting firm that hired me as an intern during my undergraduate studies, and starting this Monday, I will be working at Avanade as a .NET Solution Developer in Montreal.  The funny thing is that I was actually suppose to start my career at Avanade after my studies, but the timing just wasn’t right as I was already involved in other projects.  But not anymore.  The timing is perfect! Furthermore, I got my acceptance letter to pursue my graduate studies at École Polytechnique de Montréal.  I’ll be starting a Master’s in Technological Project Management this September on a part-time basis.  That’s the news for now.  Oh yeah, and it’s my birthday today! =)

« Older Entries