Monday, March 21, 2005
Engadget podcast returns

The engadget podcast quickly became one of my favorites late last year as Phillip and Lenn always covered very interesting topics, in a very renegade sort of way. It was a great show, and I was a bit upset when it just disappeared one day, no word, no more audio, nothing.

This morning, though, I see 1 new post in the Engadget Podcast folder. Thinking it might be the reason the podcast stopped I clicked on it, and low and behold theres a new show! Yay! This time it seems as if it's hosted by Eric Rice, another big name in podcasting. I haven't listened to it yet (or even downloaded it, damnit left my IRiver's usb cable at home), but hopefully tomorrow. although I found some new podcasts last night that I might need to listen to first, so stay tuned for some reactions to some new software related podcasts.



 Sunday, March 20, 2005
Thinkpad for sale

I'm selling my beloved laptop. I thought about using it for beta bits, but who wants to carry 2 laptops. I tried, it's just not good. So instead of letting my old friend gather dust, I figure it's time to send it off on its way.

The specs are below. It is currently loaded with windows2k3, but will either come clean or with windows2k, buyers choice. I purchased it a year and a half ago used, and have been taking VERY good care of it since I purchased it. It is currently covered by IBM ON SITE warranty. The coverage either ends in August or September of 2005, I will validate that tomorrow. The laptop also comes with 2 power adaptors as shown in the picture.

Specs

  • Pentium 4M 1.8 ghz
  • 1 Gig RAM
  • 40 Gig HD
  • 14.1 XGA Screen
  • CD/DVD-ROM
  • Internal wifi
Laptop has usb1.1 built in. I also have a powered pccard for usb2 I will include.

I'm asking 850$ shipped for the package. I would consider trades (or trades + cash), but must either be local (New England/ New York), or have alot of heat or ebay feedback. I would be interested in LCDs, or possibly a beefy desktop/server. Contact tranqy at gmail dot com for more details. (note, thats a Q)



DotNetNuke 3 released

Congrats to the DotNetNuke team who released version 3 of their open source portal framework. I know many sites have have been built with DNN2, and I'm sure this release will have continued success.

Downloaded the source, changed the project type (I'm not sure I'll ever work with another web project), and built first try. A little surprised to see 51 projects, but that speaks to how modular this version is. A quick glance through the code shows some assemblies that have no more then 50 lines of code. I'm intriguing to say the least.

After building, I simply had to setup my virtual directory, provide valid db credentials in the config file, then browse to the site, and the installation was complete. Within a few minutes I was sampling some of the many skins that come in the box. I haven't had a chance to review the built in modules yet, but I also noticed theres already quite a few other modules released here.

I definitely plan to spend a bit more time with this release of DotNetNuke.



 Saturday, March 19, 2005
Subversion merge tools

After a week of playing with svn on and off, I'm convinced it's the right choice for me. Changing my thoughts on version control took a bit, but the optimistic locking style of thinking has quickly grown on me. We are in the final testing stages at work, and I'm hoping we get through the migration next week. Sweet.

One thing we are still looking at are merge tools. Although we expect conflicts to be the exception, we wanted to make sure we had a solid understanding of the merge process, and the tools available to manage it. For those not familiar with how svn handles a conflict, it is actually quite simple. Right before you are going to commit a changeset (check in), you update (get latest) your existing working set. At this time, you are notified if any of the files you are going to commit conflict with existing files in the repository. Physically in your file system, you have a number of files to review: The original file, your changed file, and the file that is currently in the repository.

When you ask Tortoise to update your working set, it will display what has changed, and alert you of any conflicts. Directly from that dialog, you can launch a merge tool to assist in reviewing those files I was talking about. We have been evaluating some tools to be used here, and here are my initial thoughts. I only tested 3 paned merge tools we could find.

Tortoise Merge

Tortoise Merge is built right into tortoise, and certainly should not be shrugged off. It allows for you to see all 3 of the versions very easily, and very quickly pick which version you would like to keep via it's 3 pane layout. You can also directly resolve the changes (which tells svn you are ready to commit) right from within the ui. For very basic operations, this tool does very well.

The tool does have some shortcomings though. It does not allow you to edit the the files manually in case you so wanted. You can also only see that a line has changed, not what in that line has changed. It's a great built in tool for basic operations.

Araxis Merge

Araxis merge is a commercial product with a pretty hefty price tag, but has the features and capabilities to be worth it. It is certainly the most feature rich merge tool I evaluated. Araxis makes it very simple to find all of the conflicts by line, and also notes the exact section of the line that is in violation. The files can also all be edited inline.

Although feature rich and capable, I found the interface clumbsey, and difficult to use. Although powerful, I'm really looking for quick in this instance.

Tortoise settings : "C:\Program Files\Araxis\Araxis Merge v6.5\compare" /wait /a3 /3 /title1:"Mine" /title2:"Theirs" /title3:"Base" %mine %theirs %base %merged

Perforce P4WinMerge

Perforce offers a nice merge tool that works quite well also. This merge tool is free, but I want to read the license very well before I suggest it to the company. The tool is very nice, and simple to use as well. It makes simple work of choosing which version of the file you want to use from all of the available revisions, as well as edit the file inline.

P4WinMerge does not however show where in the line the change is, only showing that the line is different. The only other shortcoming I can think of is there could be some license implications, as I saw a couple posts somewhere about being careful with corporate usage.

Tortoise settings : C:\Program Files\Perforce\P4WinMrg.exe %base %theirs %mine %merged

Guiffy

Guiffy is a java based commercial app with a very reasonable price. Being a java app I was worried about a performance issue that some java ui's suffer from, but was pleasantly surprised with it's performance. It is extremely full featured, closely rivaling the featureset of Araxis. I feel Guiffy does not suffer from the same UI complexities of Araxis, though, presenting your versions in a very clean and easy to understand manner. Guiffy also makes it very simple to choose between your current version, and the version from the repository, as well as edit the file inline.

The only complaint I have with Guiffy is its support for the original file. The only way I could find to see the original file is to right click on the top pane, and choose view parent. The view parent dialog box also does not allow you to use that revision. Although I think it would be a rare occasion you would want to roll to the original version of a file, the only way I could see to do that was view the parent, copy the change, and paste it inline in the merge window.

Tortoise settings : C:\Program Files\guiffy70\guiffy.exe -s %mine %theirs %base %merged

KDiff

Thanks Darrell Norton for pointing out kdiff which somehow flew beneath my radar. KDiff is a cross platform open source 3 paned diff tool. I grabbed 0.9.88, which is dubbed as a "beta" set of bits. After swapping out my tortoise settings, I quickly came to realize this tool is exactly what we were looking for.

KDiff fills in all the holes, where the other apps I reviewed seemed to all miss at least 1 hole, for what I'm looking for. Please remember, the context of this review is quick and easy merge based on a svn conflict. And KDiff fits the bill perfectly. It allows the user to see where in the line the change is, as well as inline editing, while showing all 3 versions of the file right there. In just the first 5 minutes I knew this tool would bit the bill perfectly. The only changes I made to it's out of the box config was changing the font (man I love profont 8pt), and turning off the .orig file creation.

Tortoise settings : C:\Program Files\KDiff3\kdiff3.exe %base %theirs %mine -o %merged

Final thoughts

At this point I am leaning towards recommending Guiffy. I feel it's features, and low cost are a good fit for what we may need. Although not as powerful as Araxis, I think it will be much faster and more intuitive to work in. I would suggest reviewing all of the tools, though, since they all have pluses and minutes that may fit better into your environment.

Wow I'm sold on kdiff. It certainly doesn't have the power of araxis, but it's intuitive interface greatly makes up for it. The featureset is also quite adequate for what we are looking for. I would still highly suggest reviewing all of the tools, but will also say keep kdiff for last, since I really think it will fit the bill in most cases where developers want to review merge conflicts.

Edit 03.21.05@14.32 [Added Kdiff/ Changed Final Thoughts]



 Thursday, March 17, 2005
Going to Teched 2005

I'll be there. After months of persistance, I just got word that my request to go to teched this year was approved. Excellent. I have wanted to go to teched for many years, but never had the chance. This year, though, I'll get to be at the geekfest, and now I'm counting the days.

I haven't added myself to the techedbloggers list yet, but will in the next couple days. And of course I'll need to add the purty image that reminds me everyday that I'm going. I'll make sure to post a picture up (like Dave and Sahil) so if you see me there, make sure to say hi.



March madness baby

I've said it before, and I'll certainly say it again....

GO UCONN!!!!!!

We now return to our normally scheduled nerdy content



 Wednesday, March 16, 2005
Want gmail?

Went to google on another developers PC here and saw something really interesting, a want gmail link. Click it, and low and behold, you can sign up for a gmail account. Looks like the flood gates may have opened, although I still have 50 invites :) Congrats google on launching gmail (probably still beta) to everyone. I use gmail, and have since June as my primary email, and love it. Thanks for the great email service!



 Tuesday, March 15, 2005
Moving existing vss version controlled web projects to class lib

Yesterday I played the role of subversion salesman to our development team, and I wish svn had some sort of referral program :) I pretty much have our team sold on the value of svn, as well as moving away from web projects. We still have some learning to do before we implement it fully, but hope to have a sample svn repository setup later this week for a followup meeting. The biggest thing we need to brush up on are merging procedures and tools, since in my demo I was really fumbling around with that.

Out of the meeting, though, I did get the approval to move us off of web projects. So I took my manually modified .sln and .vbproj files and checked them into vss. Everything is working great. Until.... One of our developers was staging his new laptop and needed to get the whole project from VSS. I assumed with no web projects, it would go very smoothly. Nope. Can't get the projects that used to be web projects. Hmm, they aren't web projects anymore, so why not?

Come to find out, besides whats covered here, if your sln was controlled under vss, there are a few more steps that need to be done. Now, I couldn't really find anyone else doing this yet, so do this at your own risk. It seems to work here. The problem comes from the fact that the VS.Net VSS client adds more meta data that needs to be changed/removed. In the .sln file there are some values for SccProjectUniqueName, SccLocalPath, SccProjectName, and SccProjectEnlistmentChoice that need to be changed. I looked at another class lib and made the web projects match, and things seemed to work ok. So the final values looked something like this. (X being the number in the sln file)

  • SccProjectUniqueNameX = Folder\\file.vbproj
  • SccLocalPathX = .
  • SccProjectNameX : Removed the whole line
  • SccProjectEnlistmentChoiceX : Removed the whole line

After doing this and checking it all in it _seems_ to be working. If I find anything else that needs to be updated I'll update the post. Also, for those doing the same thing, the first step of the process is to add the "web" types to the class lib project. Here are the lines I added to my two files.

Added to C:\Program Files\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems\LocalProjectItems.vsdir

..\CSharpAddWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2236|10|#2263|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4534|0|WebForm.aspx
..\CSharpAddWebServiceWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2243|20|#2266|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4521|0|Service.asmx
..\CSharpAddMobileWebFormWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2398|25|#2399|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4571|0|MobileWebForm.aspx
..\CSharpAddWebDataForm.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2380|45|#2381|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4559|0|DataForm.aspx
..\CSharpAddWebUserControl.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2378|55|#2379|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4558|0|WebUserControl.ascx
..\CSharpAddMobileWebUserControl.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2400|56|#2401|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4572|0|MobileWebUserControl.ascx
..\NewHTMPage.htm|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2042|60|#2280|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4528|0|HTMLPage.htm
..\Frameset.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2241|70|#2284|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4541|0|Frameset.htm
..\StyleSheet.css|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2314|80|#2315|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4544|0|StyleSheet.css
..\CSharpAddWebControlWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2297|120|#2298|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4533|0|WebCustomControl.cs
..\CSharpAddGlobalASAX.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2304|160|#2305|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4542|8192|Global.asax
..\CSharpAddWebConfig.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|#2312|170|#2313|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4545|8192|Web.config

Added to C:\Program Files\Microsoft Visual Studio .NET 2003\Vb7\VBProjectItems\Local Project Items\LocalProjectItems.vsdir

..\WebForm.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3062|10|#3063|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4533| |WebForm.aspx
..\WebService.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3032|20|#3033|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4516| |Service.asmx
..\MobileWebForm.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3127|25|#3128|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4562| |MobileWebForm.aspx
..\WebDataForm.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3094|55|#3095|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4552| |DataWebForm.aspx
..\WebUserControl.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3107|65|#3108|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4544| |WebUserControl.ascx
..\MobileWebUserControl.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3129|66|#3130|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4563| |MobileWebUserControl.ascx
..\StyleSheet.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3072|90|#3073|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4538| |StyleSheet.css
..\WebControl.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3060|130|#3061|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4532| |WebCustomControl.vb
..\WebConfiguration.vsz|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|#3076|180|#3077|{164B10B9-B200-11D0-8C61-00A0C91E29D5}|4540| |Web.config



Alton Brown is awesome!

Alton Brown is awesome. As far as I'm concerned, Good Eats is one of the best shows on foodtv, which also has many other great shows. Alton takes the cake in my mind though. His shows are always filled with fantastic tips, and plenty of science behind how cooking works. Also noticed this morning he runs a blog here, but couldn't seem to find the rss feed yet.

My wife was telling be about this yesterday, and I had to blog it. I haven't seen it yet, and it looks like the episode hasn't even aired yet, but this sounds sooooooo good. I'll be begging for some mac and cheese this week just to try this out. mmmmmm...

Link to fried mac and cheese.. yes, mac and cheese, but fried.. mmmmm



 Saturday, March 12, 2005
Pragmatic Version Control with Subversion book review and starting with svn

I remember the first day I saw VSS, and I wondered how on earth I worked without it, and how I ever kept up with all those copied source folders before. After living with VSS for years, though, it's limitations become obvious. The biggest downfall of VSS in my opinion is when the need arises to branch, and VSS offers little to no support.

So what do you do when you outgrow VSS? There are many options for more capable version control systems, but in many cases the community seems to pick Subversion (svn), and does so because of it's speed, branching support, and of course it's open source price. After reading the praises, I decided it was time to learn me some svn. Having just come off reading the pragmatic series book on unit testing, I decided to read the reviews on their entry into the svn arena, Pragmatic Version Control Using Subversion. They were good. Very good. I bit, and ordered the book Monday.

I got it yesterday, and pretty much didn't put it down until I was done. Knowing very little about svn yesterday, I can say this book is a fantastic introduction to svn, and version control in general. In true pragmatic form, Mike Mason walks the reader through version control and svn in a fast but thoroughal manner, covering not only the hows, but more importantly the whys.

The book tackles the topic of source control from the beginning, walking the reader from the first checkin, all the way to merging branches back into the trunk. It covers all of these issues in a situational sense instead of like a reference manual, making the book very easy to read from cover to cover. The book then goes on to cover integration with apache, and some of the more popular 3rd party tools. The book then ends out with a complete command reference.

I really enjoyed this book, and feel like I couldn't have had a better introduction to svn, as well as getting some fantastic tips on how to use version control effectively. I would highly suggest this book to anyone looking to learn svn.

That being said, I do wish the book had covered ignoring files in more detail. This aspect of source control is huge, and the book only touches on it in a couple places. From what I can tell there are 3 ways to handle ignores, in the repository itself, in local svn config, and in a given client (eg : tortoisesvn). I would have liked to read about these different methods, and some of the pros and cons of each method. I did notice this covered in some thoughtworks content here, but I chose to use John Elliot's exclusion list in my client for now. I'll definitely have to discuss these different methods with our team, and see what fits us best.

Also, switching to svn either means saying goodbye to web projects, or using a hacked client, since svn manages its data in a .svn folder, and this does not work with vs.net. I chose to change my local projects to class libraries as this tutorial shows, which makes the projects load MUCH faster, and also breaks the dependancy between IIS and my projects. Killer. Not sure how this methodology will fly in the office, though. Hopefully I can convince my peers of the benefits of this method.

All in all, get this book if you want to learn svn. It's cheap, a quick read, and another killer title in the pragmatic series. With this book in hand I've now moved all my personal code to svn, and merged a few branches for practice. Way to go guys!



 Friday, March 11, 2005
Reminder to self, always alias tables

I should always alias tables in queries, even if I'm not joining anything. It just makes life that much easier when I need to come through later and add a join (or 10), and not adding a new alias to XX places (yeah, I over use subselects sometimes).



Ron Jacobs podcasting

Ron Jacobs (blog) from the patterns and practices group has been producing a series of podcasts with .net patterns and practices in mind, that compliment his webcast series. I've listened to the first two so far, and managed to get well lost in the second one. Although the concept of dynamic config is interesting, I really need to find those blog posts :) Either way, there are two more, and I'm sure they will be quite technical if they follow the lead of the first two.



 Thursday, March 10, 2005
Great diagram of asp.net page lifecycle

I'm sure like many .net developers, I have the asp.net page lifecycle printed and on my wall at work. On the codebetter.com feed Raymond Lewallen points to this great colorful diagram of the asp.net page lifecycle by Leo Laposte. Can't wait to print this tomorrow.



 Monday, March 07, 2005
Taming del.icio.us

I've been using del.icio.us to manage my links since about the first of the year, and I can't say enough good things about it. I love the idea of organizing my links via tags, and navigating the trail of other like-minded geeks. Plus, it solved the age old problem of having way to many computers, and no good place to put urls.

Since I started the new blog, I have been using a very easy service to include a link blog. You can see it on the right there, the RssInclude portion. Rssinclude was a free and (Very) easy way to include the feed in my site, or any site for that matter. On the other hand, though, it's not meant for del.icio.us. It's just an RSS feed, and I think my linkblog could be so much more.

Enter del.icio.us.net. I have been working on this for a bit now, and finally have something at least up on the internet now to check out. It's way basic, and way pre-alpha. Basically, I have wrapped up all of the del.icio.us rss handling in a few classes, and am in the process of making a few controls on top of that. The first will be a new linkblog sidebar with new, more del.icio.us friendly features. You can check it out here to see where it stands. Currently that page is implemented as a control that displays the links (with appropriate css selectors for when I get to formating), and a form to feed the tags and username to the control. It's pretty clean, and I'm shooting for xhtml strict (although I'll take transitional :).

The next steps are going to be to wrap up the API model, and then build a winforms app to make managing links easier. Since using del.icio.us is so easy, I often put links in with bad descriptions, mainly because I know that I WILL be interested in this, I'm just not yet. When I'm interested, though, I then have the context needed to appropriately tag and describe this link. I hope the winforms app will support this workflow better.

I do plan on releasing the code for this soon. It's almost in a beta to where I will release the core lib, test suite (yes, this is also my first foray into straight TDD, or as close as I can come :) more on this later), and the ascx to include your linkblog in your own sites. Stay tuned.



 Saturday, March 05, 2005
CT .net users group happenings

Things are rolling with the new CT .net developers group. There is a new community server site, where we invite you to participate in the forums, or request to be setup with a blog. I am going to start cross posting over there soon also. We are also discussing putting together a code brew group, so if your interested make sure to stop by the forums and send in your suggestions. If your local make sure to check back often, our community is only as good as we make it.

Also noticed last night that Bill Hollis is going to be speaking on smart clients down at the Uconn .net users group in Stamford April 6th. Quite a hike for me, but I would love to make it down there to hear him speak.



Pragmatic Unit Testing in c# Review

Developer testing is a very interesting topic that gets more and more momentum everyday. All developers know they should be testing, but even with the advent of numerous tools to assist in testing, many still let it fall by the wayside.. As a developer, I've been using nunit for about a year now to test my professional code, as well as my personal code. That being said, I know I have not been using nunit as effectively as I could be, so a couple weeks ago I picked up Pragmatic Unit Testing in c# with nunit by Andrew Hunt and David Thomas hoping it would help get me thinking in TDD.

The book as a whole is relatively short, and an easy read. Direct and to the point, without being dry, I found it easy to just pickup and read this book cover to cover. There is also a good mix of commentary and code.

The first few chapters of the book act as an introduction to unit testing, and the basics of writing fixtures and tests with nunit. The authors do a good job of presenting the whys of unit testing, without being overly religious and theoretical, focusing on things like productivity and quality. The basics of nunit are then presented in a concise and thoroughal manner, showing enough code to feel like an nunit expert by the end of chapter 3.

The next three chapters focus on what to test, why, and how. These chapters were definitely the ones I took the most away from. The authors present a good set of concepts that will help developers think about their tests, and write the tests that will matter. Not too much code in these chapters, but since the chapters focused on the concepts of what to test, I didn't see that as a bad thing.

The last few chapters dive back into code showing how to apply the concepts from the first 6 chapters, covering mock objects, refactoring for testing, and TDD. These chapters take a higher level view at these concepts, showing some details here and there. These subjects could each fill a book themselves, and in fact do, but this book does a good job of providing an introduction to some of these concepts.

Overall, I enjoyed this book very much. It was a small, quick read, and pretty cheap, even at my local Borders. I would highly suggest this book for people that are looking to start unit testing, while those that have been writing tests for a while may want to peruse it first. I purchased this book hoping to think more TDD, but ended up just thinking about my tests more, which isn't a bad thing at all.



 Thursday, March 03, 2005


 Wednesday, March 02, 2005
Worldwind new release

Last week on .net rocks the guys interviewed some folks from NASA who are behind world wind, a fantastic open source world viewer created with .net. I've been playing with this since Richard bloged about it, and it's really alot of fun.

They eluded to a new version during the show, and it must have hit the shelves either yesterday, or early today. I started the download at home when I woke up, but it didn't finish before I left, so I just started it again here at work. Can't wait to play with it.