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/
Posted in software | 2 Comments »
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:
- Are the dependencies always moving down, or are there circular dependencies?
- Are the components too big or too small?
Read the rest of this entry »
Posted in asp.net, dotnet, software | Comments Off
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.
Read the rest of this entry »
Posted in apple, dotnet, microsoft, software | Comments Off
January 19th, 2008
Be sure to sign up for Heroes Happen Here. For attending you will get a free copy of Visual Studio 2008, SQL Server 2008 and Windows Server 2008. I am registered for the Chicago event on March 11.
I am sure it will fill up quickly, so get registered now.
Posted in microsoft | Comments Off
January 9th, 2008
I cannot wait for Firefox 3. The performance and memory usage improvements are becoming increasingly important. Lately I write more JavaScript than C# and over the last few "minor" updates to FireFox 2 I have been noticing some annoyances. The main annoyance for me is a flickering that now occurs when I replace a section of content. Before I could replace a section, often with identical content, and you would not see the change. At first I thought I just needed to reboot my computer, like something was killing the processor and causing Firefox to perform badly. Then I saw it on a few other computers, and now I just saw Google Mail flicker when updating for new messages.
Last week John Resig reviewed the timer performance in various browsers. You may notice that occasionally an animation looks choppy. He explained that in Firefox that is caused by the garbage collector. It seems this issue has been a focus of recent work on Firefox. Smoother animations will improve the state of AJAX development and stall competing solutions that are still proprietary, no matter how open they appear to be. (Flash, AIR, Silverlight, etc) I still prefer a slick HTML, JavaScript and CSS application because there really is almost nothing it cannot do.
I expect Firefox 3 will be out within the next few weeks. And shortly after that I hope to see the early beta of IE8. Now that it has passed the Acid2 test I am anxious to see that overtake the IE6 and IE7 market share so that we can start producing web applications that work seamlessly across browsers.
Posted in ajax, web | 2 Comments »
January 4th, 2008
Kevin over and ScribeSonic is cleaning up the vast collection of feeds taking up space in his blog reader. You might say he has a plethora of feeds.
He is using Google Reader, which I also use. An easy way to subscribe to a new feed is to use the little bookmarklet/favlet that you can find on the Settings tab. It is buried towards the bottom. As you come across a good blog entry via services like DotNetKicks.com or DZone you can click this link in your toolbar to send the feed to Google Reader to subscribe to it immediately. This link is copied below.
[ Subscribe... ]
Also keep in mind that RSS content can be more than just comments from some blithering blogger. One useful kind of feed is the latest activity on your source control system, such a project hosted in Subversion. I created a little RSS generator that uses the log and list commands from the Subversion command-line tool to generate an RSS feed for any URL you throw at it. There are a few query string parameters that you can use to customize the behavior. Just look at the sample links to see how they can be used. They are pretty self-explanatory. (url, title, username, password)
[ SvnTracker ]
It is a very tiny web application and the source for it is available via the link at the bottom of the page. It is a bit sluggish, but when it placed being an aggregator like Google Reader you should never notice the delay. If you want to use it, please host it on your own server as this is just a temporary location.
Posted in blogging, dotnet, tech | Comments Off
December 31st, 2007
I am starting a new blog called SmallSharpTools.Blog. It will be an improvement on this blog because it will focus on higher quality content that I only achieve on this blog occasionally.
The higher quality may mean the posts will be less frequent, but they should be more worthwhile. I have worked out plans to ensure the quality of the content. Read about it at my first post.
Posted in blogging | Comments Off
December 23rd, 2007

Last night around 7pm it was 41 degrees with drizzling rain and sleet and overnight the temperature dropped to well below freezing. It is definitely Winter in Wisconsin.
Posted in life | 1 Comment »
December 21st, 2007
Back in the Christmas of 2005 I read a story by Sean McCormack about something that happened that is worth reading again.
Right before Christmas I was rushing around trying to get some last minute
shopping done. I was stressed out and not thinking very fondly of the
Christmas season right then. It was dark, cold, and wet in the parking lot
as I was loading my car up with gifts that I felt obligated to buy.
I noticed that I was missing a receipt that I might need later. So mumbling
under my breath, I retraced my steps to the mall entrance. As I was
searching the wet pavement for the lost receipt, I heard a quiet sobbing.
The crying was coming from a poorly dressed boy of about 12 years old. He
was short and thin. He had no coat. He was just wearing a ragged flannel
shirt to protect him from the cold night's chill.
Oddly enough, he was holding a hundred dollar bill in his hand. Thinking
that he had gotten lost from his parents, I asked him what was wrong. He
told me his sad story. He said that he came from a large family. He had
three brothers and four sisters. His father had died when he was nine years
old. His mother was poorly educated and worked two full time jobs. She made
very little to support her large family. Nevertheless, she had managed to
skimp and save two hundred dollars to buy her children Christmas presents.
His Mother, on the way to her second job, had dropped off the boy. He was to
use the money to buy presents for all his siblings and save just enough to
take the bus home. He had not even entered the mall, when an older boy
grabbed one of the hundred dollar bills and disappeared into the night.
"Why didn't you scream for help?" I asked.
The boy said, "I did."
"And nobody came to help you?" I queried.
The boy stared at the sidewalk and sadly shook his head.
"How loud did you scream?" I inquired.
The soft-spoken boy looked up and meekly whispered, "Help me!"
I realized that absolutely no one could have heard that poor boy cry for
help.
So I grabbed his other hundred and ran to my car.
Posted in dotnet, fun | Comments Off
December 21st, 2007
On Tuesday we had our local installfest holiday part of the new release of Visual Studio 2008 and .NET 3.5. This was a big one. I feel like I have been hearing about multi-targeting and LINQ for years now. A few weeks back I wrote a summary of my favorite new features. In that post I forgot to mention the new code metrics, so I followed up with a summary of that great set of features.
Since I had a copy of Visual Studio 2008 prior to the installfest I was able to dig in and build a little application that I showed during my mini demo. I call it Kvetch Reborn because it is a recreation of the original Kvetch.com which is no more. I made use of LINQ to get it up and running faster than writing the stored procedures I have typically used with .NET 2.0.
I also made use of the ASP.NET AJAX features to convert a web service into a JavaScript proxy so the methods provided by the service could be used directly from the client-side. The service callbacks are extremely lightweight. Most communications are measured in bytes while your average ViewState is multiple kilobytes. I have been leveraging this functionality for several months now since it was released with ASP.NET AJAX release last year. But now it is a bit easier with intellisense support for JavaScript. You can try it and download all of the source with the following links. In later blog entries I will detail exactly how it was all built. Check back for those details.
It was a great event. We nearly filled the seats with an expected attendance around 200 people. There were lots of prizes thanks sponsors like KForce, Fullhouse Interactive and Apress. All of the tasty food was sponsored by Centare. And Microsoft also threw in some big prizes like the Xbox Elite, Zunes and lots of other great prizes.
I especially want to thank Matt and Kerrie at Direct Supply and Patrick at Northwood Software for helping out the .NET User Group this past year by hosting events at their facilities. I look forward to more meetings with them.
Lastly I want to thank our organizers and hosts: Scott Isaacs, Gerry Heidenreich, Larry Clarkin and Dave Bost. Without them these events would not happen. Thanks guys!
Posted in ajax, asp.net, dotnet | Comments Off