Archive for the 'software' Category

New Book on Visual Studio Extensibility

Thursday, March 13th, 2008

Book on VSX Professional Visual Studio Extensibility (VSX) by Keyvan Nayyeri has been released. This book covers pretty much everything you will want to know about extending Visual Studio. I received several copies of the book which I will be sharing with the local .NET User Groups at our coming conference, Deeper in .NET.

The primary topics you will want to learn about VSX are how to create an add-in or a package and deploy it to Visual Studio. These topics are covered extensively but the book also goes into other modern topics like domain specific languages (DSL) which are enabling very powerful applications. A good example of what you can do with DSLs is DSLFactory Utilities.

I have not had a chance to read much, but at a glance I cannot see anything that is missing. What I really want to know is how to traverse solutions, projects and project items and then manipulate them so I can add generated files to projects transparently. These details appear to be covered in depth. After reading about nightmares in doing VSX I have actually found that it is not as bad as I thought it would be. I created custom tools and a VSPackage before these books arrived but that work was difficult as I had to dig through a great deal of documentation on MSDN that was not always complete or even accurate for the latest version of Visual Studio. This book is focused on Visual Studio 2008 which will definitely save me a lot of time and effort.

What I have learned I have presented to the Milwaukee and Madison .NET User Groups. My presentation in Madison covered working with Visual Studio 2008 and while I covered how to create and deploy a custom VSPackage I still have many questions that I hope this book will answer. I will write up a review once I have had a chance to go through the book.

Top “must have” Tools for Software Development

Friday, January 25th, 2008

Christopher Bennage wrote up a list of his "must have" tools for software development. Since his captcha system is broken for comments and for contacting him I will post my list here. Hopefully he can get his site fixed soon. I always find useful tools after posts like these.

Notepad2 - simple editor with color-coding support
http://brennan.offwhite.net/installers/NotePad2-2.0.16.msi

JSLint - for checking JavaScript syntax which integrates with Visual Studio
http://www.javascriptlint.com/
http://www.javascriptlint.com/docs/running_from_your_ide.htm

Packer for .NET - shrinks JavaScript with Packer or JSMin
http://svn.offwhite.net/trac/SmallSharpTools.Packer/
http://www.smallsharptools.com/Projects/Packer/

MSBuild Community Tasks - lots of helpful tasks, like zip
http://msbuildtasks.tigris.org/

Reviewing Software Design for Growing Applications

Sunday, January 20th, 2008

Applications that live for a long time tend to grow to the point that they become unmanageable. It is a common problem. Large projects grow by adding new features continually. And when critical bugs are discovered they are fixed as quickly as possible without fully considering the impact on the overall system. It is too bad because even the most basic check on the design is a process that can be as simple as a 10 minute review.

Reviewing the application can be as simple as drawing up a diagram to represent all of the parts of the application with lines drawn between the dependent pieces. This diagram does not have to be a detailed UML diagram but can instead be simple circles and lines. The diagram will quickly reveal some obvious problems. Once you have the diagram you can ask yourself a couple of questions:

  1. Are the dependencies always moving down, or are there circular dependencies?
  2. Are the components too big or too small?

(more...)

Restart a Bloated Application from Scatch?

Sunday, January 20th, 2008

In the work I do I have often have to work on large applications that have grown for a few years without effective controls in place to ensure the application remains manageable. Sometimes you just have to start from scratch, perhaps cannibalizing the old application wherever possible, and carefully assemble everything piece by piece while following a disciplined plan to make sure it all meets your current requirements.

As I have watched Microsoft for the past 10 years I have seen the progression from DOS to Windows 3.1 to WinXP and now to Vista. Along the way the OS pulled along a great deal of backward compatibility at the expense of agility. Back in 2001 Apple released MacOS X which was a completely different OS from MacOS 9. Apple bet the house on a fresh start after the popularity of the Internet forced the personal computer to account for new requirements that did not exist before. Meanwhile Microsoft chose to gradually upgrade their flagship product, Windows. Watching the consequences of these two choices unfold has been a good lesson in enterprise software design.

(more...)

Another Reason to Upgrade to Visual Studio 2008

Wednesday, November 21st, 2007

I cannot believe I neglected to mention the new code metrics features in Visual Studio 2008 along with previous list of worthwhile features. Code metrics will scan your project and show you a Maintainability Index at the class and method level based on Cyclomatic Complexity, Depth of Inheritance, Lines of Code and other values. Knowing how your code looks from this perspective should help you in refactoring it into a more simple form that should save you many headaches in the future. The details are presented to you with an easy to read grid that is ideal for quick code reviews.

You can read more at the Visual Studio Code Analysis Blog.

(more...)

Tidy up your Markup in .NET

Monday, November 19th, 2007

Clean markup is important. If you allow a page to include sloppy markup it will switch from rendering in "Standards Compliance Mode" to "Quirks Mode" which will apply different rules to how the layout and style works. It makes for an unpredictable result and can be a major headache. One way to introduce sloppy markup into a website is making use of rich editors that spit out HTML, such as the ASP.NET Rich Text Editor Control on CodePlex. There are others like the RichTextBox, FreeTextBox and FckEditor. Each of these editors are ASP.NET controls while you can get a purely JavaScript solution using TinyMCE which is used in BlogEngine.NET. Some of these solutions do create decent markup, but in the case of the ASP.NET Rich Editor Control, it still creates HTML 3.2 instead of XHTML 1.0 Transitional which has become the de facto standard since ASP.NET 2.0. (XHTML?) It still includes FONT tags and other older syntax which has been deprecated. This is where Tidy comes in.

(more...)

Code Generation, Software Factories and Visual Studio Extensibility

Wednesday, October 17th, 2007

Last night I presented Code Generation, Software Factories and Visual Studio Extensibility at Direct Supply. Below is the project download with all of the source followed by many useful links related to the various topics.

[ Download the sample project: SmallSharpTools.VisualStudioPlugins.zip ]

(more...)

What is ESB and do you need it?

Thursday, October 11th, 2007

The ESB term has been thrown around a lot lately. It stands for Enterprise Service Bus and from what I can gather it is a system for orchestrating services. It comes out of the push to SOA (Service Oriented Architecture) which was hyped a lot in recent years and has started to mature most recently. Real world examples appear everywhere. Sites like Flickr have publicly accessible services that can be consumed to create composite applications with services from multiple sources. The success of these existing services and the application built to use them indicates to me that an ESB solution is redundant.

(more...)

Packer for .NET 3.0.2 Released

Sunday, August 26th, 2007

Packer for .NET has been updated to include an MSBuild Task in addition to the command-line functionality. See the documentation site to learn how to use the MSBuild Task.

Also, Scott Hanselman has released his tools listing and this year it includes a link to Packer for .NET. I am glad he and others have found it useful. The new MSBuild Task should make it even easier to integrate with your build process.

Another Reason to get a Mac

Saturday, August 18th, 2007

Apple has released iWork and it can open and export documents that are completely compatible with Microsoft Office. I remember as a part of the anti-trust ruling several years ago that Microsoft had to release technical details about their protocols and file formats to their competitors. Perhaps this is a result of having that critical documentation.

Also, I read recently that virtualization is taking another big step. Apparently there is at least one project that is designed to virtualize a single application at at time, so I could potentially run Notepad on a Mac without running a full virtual copy of Windows. It is not clear exactly how this could be possible, especially with a much more complex application like Visual Studio, but I am looking for a way to get away from the buggy experience I have been getting with Dell and Vista.