Wednesday, August 20, 2008

.NET Developer Virtual Conference : Oct. 28 - 30

Just wanted to let everyone know that I am lucky enough to be a presenter at this years SSWUG.org .Net Developer Virtual Conference in October.  This is a really cool idea where all the sessions are pre-recorded and on the days of the conference you can login and watch from the comfort of your ergonomically correct cubicle chair.  Maybe you can talk your boss into giving you the days off and you can watch in your PJs from your couch.  Either way you don't have to incur the time or the cost of traveling to an in-person conference.  This is a plus for those of you that are "Dungeon" coders.  You can get all the great content of the conference without leaving the "Dungeon" and being forced to socialize with other people.  That can be uncomfortable...

Seriously, there is some great content from some of the top presenters in the industry on deck for this conference.  I'm just glad I get a free login so I can attend some of the other presenters sessions.  Speaking of cost, you get all three days for just $100.  If you can't sell this to your boss you're never getting any training EVER.

Again there are some great topics and presenters so please use this link to check out the sessions and the presenters for this conference:

.NET Developer Virtual Conference

There are also 3 other Microsoft related virtual conferences scheduled for the fall.  Use this link to find out about all the conferences from SWWUG.org:

www.vconferenceonline.com

Tuesday, August 12, 2008

David Yack's CRM as a Rapid Development Platform Book

Don't let the letters "CRM" in the book title fool you, this is a book heavy on content regarding the latest .NET Framework technologies.  Microsoft Dynamics CRM version 4.0 is a great CRM tool, but it can be used for much more.  That is the purpose of this book.  To inform the developer community about the benefits CRM 4.0 gives you right out of the box along with the many customization points that allow you to turn the product into literally any line of business application you want.  Not only do you get great content in the book, but when you purchase the book you also get a base framework built on top of CRM 4.0 to get you up and running fast.  This book has tons of great real world examples of how to use Workflow, Silverlight and C#.

Being a friend and co-worker of Dave's, I've been a witness to all the hard work and long hours he put into writing this book and creating the base framework that comes with it.  I've also seen all the hard work and support given from many of Dave's friends, family and co-workers.  One person who is all three of these things to Dave is his wife Julie Yack.  She was editor and publisher on the book.  She spent many hours reading through and editing long chapters that included tons of code and examples.  Another friend and co-worker, Cathy Hardman, also put in long hours helping edit the technical content of the book.  In addition, she helped write many lines of code included in the base framework as well as contributing her talents to the book web site.

Me, I helped edit a couple of the chapters, but most of the process I watched from the sidelines.

Obviously, I recommend the book and since I know "people" I have a discount codes for purchasing the book.  Below is the URL to the book site where you can purchase the book and my discount codes.  The codes are good for $10 off.  The discount codes can only be used 20 times so please hurry.  Enjoy!

Book Site: http://www.thecrmbook.com

Discount Code (Printed Version): benblog

Discount Code (E-Book Version): benblogebook

You can also keep up with David Yack at his two bogs.  Developer Related stuff is at http://blog.davidyack.com/ and his CRM stuff is at http://crm.davidyack.com/.

Tuesday, August 05, 2008

Jeff Atwood on Project Management

I had to share Jeff's recent post related to project management.  To me managing a software project is one of the hardest jobs out there.  Especially when it comes to evaluating your team members performances.  Some team members write tons of lines of code, while the architects that really designed the system barely write any.  So, who is more valuable to the team?  It's even harder when you are using a collaboration methodology like Extreme Programming, Scrum or Agile that really promote sharing and working together.  Jeff's post talks to this and other things so check it out.  If you don't subscribe to Jeff's blog I recommend it.  I don't always agree with Jeff's thinking, but at least he puts himself out there.  By doing that he get's me thinking...

Wednesday, July 30, 2008

Are ADO.NET Datasets dead?

If you are plugged in at all to the Microsoft world you have been seeing more and more LINQ and ADO.NET Entity Framework buzz.  You can't go to a conference or attend a User Group meeting without discussing one of these new data access technologies.  I'm not saying that's a bad thing... Unless you are a Dataset, Datatable or Dataview.

I wrote a post back in May trying to shed some light on when to use which technology.  You might want to read that post and the comments before reading on.  In that post I stated that if you are creating new applications or just adding on features to your current app I would use LINQ or EF instead of ADO Datasets.  There are many reasons.  Here are the most compelling reasons to use LINQ and EF.

  • Objects - The nicest thing about LINQ and EF is they provide some of the foundations for Object Oriented programming.  They literally force you to think and work in terms of objects and collections of objects instead of rows and tables of rows.  By setting up this foundation, these technology allow for the application to grow and use some of the more complex OO concepts without doing tons of work to fill and save objects from Datasets.  So, start simple and as the requirements on your application change you can use some more complex OO topics to solve those problems.
  • Memory - There are two schools of though on this topic.  Some people like to pull all the data back into memory and then work with it there.  Others don't like to fill memory with data that might not ever be used.  LINQ and EF allow for both.  When you build your LINQ and EF models you can use stored procedures same as you used to with Datasets and bring back the whole table if you desire.  Or you can use the LINQ syntax to do filtering and sorting, which uses the power of the relational database engine to get only the row(s) you need.  To me it is compelling to have the flexibility that LINQ and EF give me.
  • Performance - We can go round and round about the performance implications here.  People say stored procedures are faster because they are pre-compiled, but with the new technologies these LINQ queries are cached and optimized and the difference is often minimal.  To me this is the 80\20 rule.  80 percent of my queries will run the same or faster in LINQ and EF than they do in a SP.  The other 20 percent of my queries will run faster in stored procedures.  So, use both.  LINQ and EF allow for using SP or the LINQ syntax.  Plus, with LINQ you can bring back only the columns you need which can improve performance as well.  I'm not saying quit using stored procedures, but instead of just blindly using them because that's what you've always done, step back and analyze your requirements to see if it's worth it. 
  • Interop with Other Object Collections - The other benefit of working with LINQ and EF is that you can join your data objects with other object collections.  If you've seen my talk on LINQ and the demo related to joining my SQL data with file data retrieved using the System.IO objects.  It is so easy and would require lots of work with Datasets.

There are many more reasons out there, but these are a few of the ones that are most important to me.  Any one else want to add?

Thursday, July 17, 2008

The Most Popular Computer Languages

This is a shout out to all my VB readers out there.  First check out this article on the most popular languages.  At first I was surprised to find that C# is number 8 and VB is number 4.  However, it looks like they are grouping all versions of VB into the same category.  This makes more sense since VB has been around for way longer than C#. 

I love sitting around with some of the old timers talking about when they used to use punch cards to program.  To me VB is that legacy.  One day I'll be sitting around with some young whipper snapper right out of college saying:

"I remember back when I used VB 3 and I had to choose the option of creating a 16 bit or 32 bit application when creating a new project."

Today, VB.NET is a powerful Object Oriented language and is used in some of the most advanced software packages out there.  I just remember the days when it wasn't....

LONG LIVE Visual Basic!

Tuesday, July 15, 2008

Useful Design Patterns

I'd like to thank the Northern Colorado .NET User Group for giving me the opportunity to speak to their group last night.  We had a good discussion about Design Patterns.  The patterns we discussed were Singleton, Command, State, Strategy, Provider, Plug-In and Module.  Although my demos are pretty simple and cut some corners, I think you can get a good idea of how to use these in your applications.  The take away from the discussion was that these patterns are great and provide some great guidelines, but they may need to be modified slightly to fit the problem you are trying to solve.  The 2 keys are to always code to an interface or base class and try to use aggregation in place of long complicate inheritance trees.  Again it was a great talk and I hope everyone in the group learned something.  I know I did.

Below is a zip that contains the slides, which explain these patterns, and all the demos.  There is also a DB script for SQL Server to create my sample DB.  The only change you need to make is the connection string for the DB.  Enjoy!

UsefulDesignPatterns.zip

Thursday, July 03, 2008

Returning XML from an ASPX page

Today I needed to make an ASPX page return a simple XML document with some basic server information.  The example below is over simplified but I think you can get the point.  This is pretty easy as it turns out.  Here are the steps:

  1. Create a new ASPX page in your solution just like you would any other page.
  2. Next remove everything from the markup except the @Page tag.  It should look like this an have nothing more:

 

  1. Here is a code snippet of the page load event that returns a simple XML element:

That's it.  I also found a nice post here that shows how to read XML from file and stream it back through the browser.  Pretty simple and useful.