Tuesday, June 28, 2005

255 possible causes

I'm currently working with serialization via binary formatters in .NET. I ran across this exception thrown by the ObjectReader's Deserialize() method a little while ago, which I find particularly amusing:

"Binary stream does not contain a valid BinaryHeader, 255 possible causes, invalid stream or object version change between serialization and deserialization      "

Only 255? Gee, and I thought this was going to be hard!

I like the trailing spaces tacked onto the end of the exception text too; that's a nice touch.

<sigh />

my list of tools - part two

Here's part two of my list, which contains some of my favorite development tools that I use often.

Developer Tools
  • Reflector - Every .NET developer will obviously list this as one of their favorite tools. When it comes right down to it, there just isn't another tool out there that comes close to being useful for a .NET programmer than this one.

  • TestDriven.NET - This handy tool integrates with Visual Studio .NET and allows you to run unit tests without leaving the IDE. You can also run ad hoc tests on just about any method you care to right-click on.

  • WinMerge - WinMerge is probably the best diff/merge tool I've been able to find. And I've tried a lot of them.

  • XML Marker - Easy to use XML tool that validates as you type. This is a good one to use if you just want to get down and dirty and crank out some handwritten XML.

  • CygWin - Installs a Linux-like environment onto your Windows machine. Lets you use a Linux command shell and run many utilities that just aren't available for Windows.

  • NAnt - This is Ant, only geared towards the .NET Framework. Great for scripting builds and automation.

  • CruiseControl.NET - Another port from the Java world, this is a wonderful build server automation tool. It will monitor your source code repositories and execute a build script when changes are detected. This lets you know immediately when a checkin has broken the build so that you don't have to hunt through two-month-old code that broke the build.

  • GhostDoc - This Visual Studio plugin lets you use a keyboard shortcut to auto-generate skeleton XML documentation for your C# code. Saves lots of typing.

  • Regions Addin - Yet another Visual Studio plugin that lets you easily create and add existing code to regions. Very useful for organizing code files.

  • TortoiseCVS and TortoiseSVN - These are the best clients for CVS and SVN that I've come across. They integrate exceptionally well with the Windows shell, allowing you to perform checkouts, updates, commits, etc. right from Windows Explorer.

  • NHibernate - A nice ORM (object-relational mapping) solution that has its roots in the Hibernate Java ORM. There are, of course, plenty of ORM solutions out for .NET, but this is my current favorite.

  • Boo - This is a new language for the CLI (Common Language Infrastructure) that a lot of people are talking about nowadays. What I've looked at looks extremely intriguing, and I'm hoping to be able to delve into it a bit more in the near future.

  • SharpDevelop - Can't afford an MSDN subscription? Can't stand Visual Studio? Then this is the IDE to use. It's not quite as full featured as VS, but still has plenty to help you write .NET code. This is an excellent tool for people wanting to get their feet wet writing code for .NET that don't want to invest huge sums of money to get Visual Studio. There's also a Linux version, MonoDevelop, available that lets you write code geared towards the new Mono framework.

  • ColorMania - This is great for web developers, but also for client developers. Lets you find out what color a particular pixel is, and even suggest complementary colors and offers options to tweak the color to your heart's content.

  • Snippet Compiler - Snippet Compiler lets you try out pieces of code in a quick, easy to use environment, saving you from having to wait an eternity and a day for Visual Studio to load a new project.

  • SQL Buddy - This one's great in a pinch. It's basically a replacement for Enterprise Manager. And guess what? If you double click on a table in the treeview, it opens the table as a grid!! What a novel idea!!

  • db4Objects - This is a database engine that allows you to store instances of classes directly, without the need to map them to a relational database. It seems to be quite good at what it does, and is currently the tool of choice for many Mono developers.

  • Mono - This is the open source, funtional equivalent of Microsoft's .NET Framework. It's pretty well striving for binary compatibility with the .NET Framework, but with the goal of getting that running under a number of platforms. There have already been several significant applications built with Mono, and seems like a very viable solution for anyone who wants to target both Windows and Linux.

groktalks are available

GrokTalks were a series of 10-minute presentations given at TechEd earlier this month. They're up and available for podcasting now at groktalk.net. I've watched a few of them, and they do an exceptional job of cramming in lots of information in a very short time frame. From the looks of things, Scott put in a lot of rehearsal time to make sure his presentation was just under the ten minute mark. :) Billy Hollis' presentation was also quite good, as always, even if he does use the god-forsaken language of Visual Basic. I'm hoping to watch the others as I have time this week. Now I just need a new computer to play with all the cool things mentioned in these videos. :)

Tuesday, June 21, 2005

my list of tools - part one

Taking a page from Scott, I decided to sit and catalog some of my favorite tools and programs. Here are the more general purpose tools that I love and use often. If I have time later on, I'll try to list all the development tools that make my life easier.

General Utility
  • Notepad2 - I really like this one as an alternative to Notepad. It's got line numbers, better formatting, syntax highlighting, and tons of options. Yet, it doesn't sacrifice simplicity for all these additional bells and whistles.

  • AppRocket - Great utility for launching programs without a mouse. Simply hit Alt-Space and type in the first few letters of the program you're looking for. It learns as it goes, and even allows you to browse directory structures and find/play music.

  • TopDesk - Great for anyone looking for an Expose clone on Windows. I've already wowed several colleagues with this one.

  • TaskSwitchXP Pro - This is a wonderful replacement for Windows' Alt-Tab functionality. Coupled with TopDesk, any problems you've ever had managing several windows at once while multitasking will disappear.

  • Trillian Pro - Lots of people use the free client, but the only way to go with this one is Pro. The advanced history view, availability of plugins, and meta-contact management are well worth the $30 the pro version costs.

  • imeem - Social networking/P2P/blogging software from the same people who make AppRocket. This is essentially orkut-meets-Blogger-meets-Kazaa. It's invitation only, but I've got 14 invitations to give out, so let me know if you'd like to give this one a try.

  • Foxit PDF Reader - Do you think Adobe Reader is a bloated piece of crap that you just have to deal with in order to read PDFs? This little app will let you read PDFs and weighs in at just under 2 MB. Very nice.

  • Virtual TI-89 - Any math geek will tell you that the TI-89 was calculator nirvana. I love that I can emulate it on the PC now, complete with an authentic skin! You'll have to do your own digging to find a suitable ROM for the emulator though.

  • Paint.NET - As far as I'm concerned, this is the only good freeware paint program out there.

  • MaxiVista - If you've got a spare laptop or tablet PC laying around that you'd like to turn into a virtual monitor, this is the tool to do it. It's really nice if you have a laptop that is only used when you're away from your desk.

  • OneNote - This is, quite honestly, one of the very few Microsoft products that I just can't get enough of. I doubt I'll ever take notes on paper by hand again.

  • del.icio.us - Very cool online bookmark tool with a social networking slant. The link goes to my current bookmark collection.

  • SauceReader - A nice RSS aggregator. I've gone through my share of these lately, and this is the one that best suits my usage habits.

  • Rainlendar - Puts a nice calendar and to-do list on your desktop. It's pretty, and doesn't take too many resources either.

  • Rainmeter - Small plugin-based utility that can do everything from showing an analog clock on your desktop to monitoring CPU and memory usage. Like Rainlendar, it's also very light on system resources.

  • HydraIRC - This is a nice alternative IRC client for anyone who's tired of mIRC.

  • CDBurnerXP Pro - A freeware CD burning utility. Not as full featured as some of the commercial ones, but it's great in a pinch.

  • The GodFather - If you have digital music files, you need this tool. It allows you to rename and organize all your music in a way that you define. It's a little obtuse at first, but after you've worked with it for a while, you can do some amazing things with it.

  • DAEMON Tools - I love this utility. It sits in your system tray and allows you to mount ISO files from your hard drive and view them as if they were actually additional CD-ROM drives in Windows Explorer. As an aside, the tool also claims to be able to sidestep many PC game copy protection schemes, but I wouldn't know anything about that.....

  • CommandBar for Explorer - Integrates with the Windows shell so that pressing Ctrl-M will bring up a command prompt inside of the Explorer window. If you change directories with Explorer, it issues the appropriate cd commands to synchronize the prompt with the current location of the window. There's lots of other goodies that this one lets you do as well. It's incredibly valuable to be able to see the files in Explorer as you work with them on the command line.