December 2007 Entries

I just signed up the Philly.net Code camp. Did you? There are only 400 seats available!

Here are the details:

Our first installment of the 2008 Code Camp series will be held at the DeVry University campus in Fort Washington, PA on Saturday, January 12 from 8:00-5:30. Detailed directions are on the DeVry web site.

  • Lots of code, just say no to slides!
  • 9 hours
  • 48 sessions (8:00, 9:30, 11:00, 1:00, 2:30, 4:00)
  • 8 tracks
  • 400 seats with tables (laptops welcome)
  • Free breakfast, lunch, and afternoon snack (expanded menu!)
  • Raffles and prizes at 5:30
  • Easy parking
  • Limited wireless

All of this is made possible by our Gold partners (Component One, Infragistics, Neudesic, RDA Consulting, Red Gate), Silver partners (Spherion, Steel Blue) and our site sponsors (DeVry University, Microsoft).

Here is the tentative agenda, room assignments and times will be posted by New years:

7:30 Registration, continental breakfast

Alt.NET
Brian Donahue - Panel Discussion
David Laribee - Fundamental Domain-Driven Design
Jeremy Jarrell - Decoupling Your Design - Dependency Injection with Windsor
Jeff Deville - ASP.NET MVC - A New Way To Build Web Apps 
Steve Eichert - Behavior Driven Development In Action:  The Evolution of TDD
Don Demsak - Design Patterns

Architecture
Mitch Ruebush - Designing for Extensibility: Patterns and Practices that Can Make Your Software More Flexible
Harish Bidad - BizTalk R2 BAM
Chip Lemmon - Entry Level Event Models
Tim Dodd - IIS 7
Sam Gentile - Advanced WCF with Neuron ESB

Business Intelligence
Dan Clark - Integrating SQL Server Reporting Service Reports in .NET Applications
Dan Hartshorn - Performance Point
Mark Scott -
Andy Leonard - Incremental Loads with SSIS
John Lynn - SQL Server 2008 New feature: Change Data Capture

User Experience
Andy Schwam - ASP.NET Custom Controls
Jonathan Newell - Databinding ASP.NET
Bill Wolff - Silverlight 2.0 with Expression and Visual Studio 2008
John Juback - Real World Experiences with Silverlight
Eric Pascarello - Investigating JavaScript and Ajax Security
Tony Lombardo - Polishing your Ajax application with Silverlight

Frameworks
Marc Ziss - Building ASP.NET Dynamic Data Web Sites using LINQ for SQL
Jim Bonnie - SubSonic as a Data Access layer for DotNetNuke
Rachel Appel - Exception Handling & Management Strategies
Kevin Goff - Crash Course on LINQ and VS2008 Language Enhancements
Milan Negovan - Can we LINQ it? Yes we can! 

Collaboration
David Mann - Delivering Modular SharePoint Workflow Functionality via Components
Bob Fox - SharePoint Disaster Recovery, Backup and more…
Tony Testa - AJAX in SharePoint
Michael Lotter - InfoPath 2007 with Visual Studio 2008
Russ Basuira - Programming Composite Applications that use the SharePoint Business Data Catalog
Gary Blatt - Using OpenXML to Access Excel and other Office 2007 Files
Susan Lennon - Using SharePoint Designer to build a dashboard-type view of lists
Dani Diaz - Office Business Applications

Database
Sharon Dooley -
Ed Pochinski -
Joshua Lynn - SQL Server 2008 T-SQL Enhancements
Reed Sutton -
Hilary Cotter -
Chuck Urwiler -

Toolbox
Mark Magliocco - FaceBook Developer Toolkit in .NET
Judy Calla - Visual Studio 2005
Travis LaBorde - Top Ten Dev Tools
Rob Keiser - Powershell 2.0
Todd Snyder - Using Refactoring to hunt down code smells
Steve Andrews - Visual Studio 2008 Tools and Add-Ins
John Baird - Mobile App Development with .Net Compact Framework, SQLCE and PPC’s

5:30
evals, lots of raffle prizes

Recently I had to replace an application that was not designed for growth. As with most the applications I’ve seen written in classic asp with an access backend, the major problem is with the database design. The difference between a bad design and great design is all in the tables.
Most databases revolve around a client/customer. This is where the average poorly designed database goes wrong first. Countless of databases I’ve seen have the name data stored in the same table as the address and phone data. Some even have other info all in this same table. This design does not allow for growth. A properly designed name table consists of an ID field, a full-name field, a name type field (meaning business or Individual). The ID field should not be an auto-generated integer. Instead of auto-generated you should have a table used to store the ID numbers of all your tables. So the first place you should really start is creating a table named DB_Counters. This DB_Counter table is one row of data with each column holding a different ID total (NameID, PhoneID, AddressID). I usually name column 1 ID and name my next columns for each table.
Back to the root of all databases, the name; you might ask why just an ID, FullName and NameType columns. In a single word growth. Customers come as either individuals or businesses. They can have multiple addresses, multiple phone numbers, multiple orders, multiple employees, family members, prospects, the list goes one… This single table can fill drop downs, can be used to search for names, you can search by name type, or all names.
Tables 2 and 3 should be Individuals and Businesses; the ID columns of these tables should use the identical ID integer that is used in the NameEntity table. In the Individuals table you should have a break down of the name, meaning first, middle, last, suffix, prefix, professional title, etc.. The Business table can house, taxid, and other business information like that. The next 4 tables you should create are Phone, PhoneLink, Address and AddressLink. The phone table should have an ID, Phone Type, Phone number and extension columns. The Phone link table is just 2 columns the NameID and PhoneID . This design allows the name entities to have a multitude of phone numbers.  Follow this same design with the address table. Then add another column to the Individual and Business table to indicate the primary addressed.
Other tables you should consider are one that could hold dropdown list data and/or checkbox, labels, etc.
If you follow this design style with all the tables, you won’t have to code around a poorly designed database, instead you will code for growth. As the business object changes, your database will be able to handle those changes.

 

 

Up until two weeks ago I never heard of ALT.NET. Have you? Are you like me; constantly thinking outside the box? 

I've always said that I build systems that work around problems and brick walls. I've always developed using whatever worked best and gave the users the best experience.

I was thinking about what Brian Donahue said at the last Philly.Net meeting. I started searching around and found lots of information. And then I found this stupendous summary by David Laribee;

What does it mean to be to be ALT.NET? In short it signifies:

You’re the type of developer who uses what works while keeping an eye out for a better way.
You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principals (e.g. Resharper.)

After finding this thought provoking blog, I came to the realization. Yes I now develop mainly using .Net technologies, but I still use whatever works best. Therefore I must be ALT.Net - Heck I used to listen to Rock now I listen to Alternative...

Check out ALT.NET - you might find you too are pro Alternative!