My Resume

  • My Resume (MS Word) My Resume (PDF)


  • Microsoft Most Valuable Professional
  • INETA Community Champion
  • Leader, NJDOTNET: Central New Jersey .NET User Group

Thursday, December 20, 2007

Community Leader Appreciation Outing

I just got back a little while ago from another one of Microsoft's Community Leader appreciation outings, put on by our local Microsoft Developer Evangelists, Peter Laudauti and Bill Zack.  Man, these guys really do know how to treat people!  I just wanted to show my appreciation for your appreciation - keep up the good work, guys... and thanks!

Ignore the fact that they just gave me free food for a minute while I continue on with more praise...

I've been meaning to blog a little something about how impressed I have been with our regional Microsoft Developer Evangelist team as a whole.  As I grow more and more active in the community, I get to see more and more - first hand - how encouraging, knowledgeable, and just plain helpful they all are.  Our recent InstallFest, during which they graciously gave away 35 copies of the recently released (as Peter said, "hot off the presses") Visual Studio 2008.  This was the most recent public-facing thing they've done for us, but what most attendees of the user groups don't know is how helpful they are behind the scenes, helping us coordinate with other leaders in the area and just generally helping our community continue to grow and prosper.  I'm sure I'll be blogging more about their wonderful contributions as I become more deeply involved, but at this point - even though I've basically just recently been introduced - I'm already impressed.  Again - thanks, guys, and keep up the great work!

Monday, December 17, 2007

WPF = Wow!

I feel like I'm fashionably late to some extravagant party.  A bunch of guest have already arrived and I walk in the door, impressed with people I see, and quite glad that I have finally arrived too...  I'm also thinking "what the heck was I waiting for?"

The "party" I'm talking about is the Windows Presentation Framework.  Now, I'm really a "Web guy," so I'll use that as my excuse for taking so long to join the party, but having finally gotten a good look at what I was missing, it's really no excuse at all.  I went to a 3-day training course last week, led by trainer extraordinare, Walt Ritscher, from the WinTellect training group,  and man was it impressive!  Having worked at Infragistics, I have been well-exposed to all of the marketing buzz around WPF.  Unfortunately, being the Webinary I am, I was not really exposed to the real meat and potatoes and ended up waiting until this offer of training came my way to finally get a taste of it.  Walt came in, took an exciting topic, and really brought it to life.  His informative, direct, knowledgeable, and (above all) enthusiastic approach to the course material really sparked my interest in WPF.  I just sat through three days of intense training, watching slide after slide and demo after demo and saying "Wow..." every few minutes. 

My problem with a lot of technologies (including WPF and even Silverlight) is that I see the marketing and say, "Yeah...  that's cool - now I just need to hire myself a graphical designer and I'm good to go."  It's hard to get a feel for how I, the developer, fit in to this new media-rich world.  Generally, I just end up learning the syntax, etc. and end up realizing the full potential later on, once I've got the technical stuff done.  But this time with WPF, Walt was able - through a fine blend of instruction and demo - show me, the graphically-challenged developer, how quickly and easily I can take this new platform and leverage it to build very impressive solutions.  In fact, these impressions extended all the way into my thoughts about Silverlight, since the two are so closely related. 

Is code becoming more and more "obsolete"?

After all this exposure, I'm definitely ready to write some code!  Er... wait... XAML? 

Outside of all the cool (and more importantly: easily-created) "rich interface" bells and whistles, WPF has a lot of concepts at the more technical levels that are just plain revolutionary.  It's quite obvious that XAML - and the paradigm in which it causes you to think - is one of the most important concepts on that list.  Being a web developer, I'm more than familiar with - and at home in - a declarative markup language.  In fact, it's more or less what drove me to working with web technologies in the first place ('cause it sure as heck wasn't ViewState!); I wouldn't say I was lured toward web development so much as I was running away from WinForms development!  To me, declarative markup - while helping you write less code - not only makes everything a bit clearer, but can help you focus on the functional details of both the user interface and user experience and forget about those right-brained concepts such as color and graphics by allowing the right-brainers to modify the looks of your application all they want while making it a lot harder for them to actually break any of your functionality.  For us left-brainers, it makes us more "at home" more of the time as well as greatly easing the burden on collaborating with the right-brainers.

In addition to the awesome increase in separation of function and form, I'd argue that using declarative markup in this way also provides less room for bugs; or, at the very least, lowering their impact.  Obviously, you're still going to have to write the business logic that drives everything, but there is so much "plumbing" that is taken care of for you in declarative markup languages, and with WPF in particular!  What really got me is how many demos Walt wrote and/or showed us that used NOTHING but XAML, and many more that only included a handful of lines of business logic.  It makes sense that this is the direction we're heading and if you follow that idea through it begs the question, "how much code are we going to be writing in a few years?"  By "code" I mean languages such as C#, VB, Python, etc. as opposed to the declarative markup I've been discussing.  Obviously, there will always be room for typos and poor syntax in markup, but things like XAML and the IntelliSense/background compiling of Visual Studio help us reduce these types of mistakes and spend more of our day being productive instead of troubleshooting.  What's more, we may end up with just about the same amount of actual code (C#, VB, etc.) that we did before, only the big difference now is that a tool has generated it for us.

And, since Silverlight and WPF share the common foundation of XAML, when we're all done with our WPF project a lot of it (the UI, at least) can be "easily" ported to Silverlight, allowing us to run essentially the same thing on the web...?  Oh yeah!  Granted, the glaring differences between the two makes this more easily said than done, but even the concept is enticing... and I can only imagine it will get easier as the two technologies evolve.

Diving Deeper...

There are plenty of other things about WPF that I've fallen in love with, but the ideas I've talked about above are the ones that have really intrigued me.  As I hope I've made abundantly clear - I just took the training, and I've done nothing but some sample applications, so I may be looking at this new world with stars in my eyes because my exposure is limited...  but I don't intend for that to remain true for very long.  And, from what I've seen and heard from those already at the party, I'll go through the same learning curve as any new language, but in the end it'll be worth it and I won't be disappointed.

Thursday, December 13, 2007

Taking Over NJDOTNET!

We had a great time tonight during our InstallFest at the Central Jersey NJDOTNET User Group meeting.  In celebration of the long-awaited release of Visual Studio 2008, the community guys at Microsoft were able to get us a bunch of free copies of this awesome new IDE to give away to the loyal (read "first-come-first-serve") members of our group!  Needless to say, the room was filled with a bunch of very happy people...  and that's before the talk got started!  Walt Ritscher was in town this week, giving some of us Infragistics guys some schoolin' in the ways of WPF (Edit: See by detailed blog post about what I think about WPF here).  He was also nice enough to stay for an extra few hours to share his WPF goodness with our users at tonight's meeting, which ended up in an absolute captivating and well-received presentation.  My thanks to Walt for sharing his knowledge and experience with us!

Oh yeah, and one more thing happened, too...  Ed Blankenship, who has been running the group for almost a year now, announced that he had to move back to Texas and that he would be passing over his leadership responsibilities to...  me!?  Cool!  So, here I am, now a Leader of the Central Jersey NJDOTNET user group...  Between Jason Beres and Ed, I've got pretty big shoes to fill, but I shall do my best!

Thursday, December 6, 2007

InstallFest at NJDOTNET Next Week!!

Everyone, come join us at NJDOTNET's upcoming user group meeting where our local Microsoft community representative will be helping us host a Visual Studio 2008 Install Fest!  The licenses will be giving out on a first-come-first-serve basis, so be sure to get there early...  Then stick around to hear our great speak, Walt Ritscher from WinTellect give a talk about WPF Databinding (oh yeah!).

See everyone there!!

Tuesday, December 4, 2007

Review: Red Gate SQL Toolbelt (SQL Prompt, SQL Data Compare, and SQL Compare)

I'm gonna start out this review with: "Wow, that's a LOT of stuff!" Red Gate's SQL Toolbelt package has a whole slew of tools that'll keep you happy for some time. If it has anything to do with working with databases, you can be sure that Red Gate has something that'll help you do it... if it doesn't just do it for you.

I'm gonna follow that intro off with an admission of guilt: I haven't fully explored everything in the Toolbelt.  Seriously, there is a LOT of stuff in there, and I just don't have that kind of time.  For that reason, this review will focus primary on SQL Prompt, which is the one thing I use on a daily (hourly!) basis, and has saved me untold amounts of time since I first installed it.  Another tool that I use on a daily basis - so much so that it's actually become a part of my standard release process - is SQL Data Compare, which has been a wonderful help in keeping all of my databases synchronized.  Along with its companion, SQL Compare, I can be sure that all my databases are exactly the same at any given time, from schema to data, all with a real nice user experience.

SQL Prompt

A few weeks ago, I tried reviewing SQL Prompt and I never finished.  The reason I didn't finish was not because I lost interest or became bored, but simply because there was so much I wanted to write about.  It's not really an understatement to say that this tool has changed the way I do database development.  In this post, I'm going to give more of a high-level review/overview of all my favorite features without all the screenshots and captions, and (hopefully) follow this post up with a more in-depth post drilling down into the specifics at some point in the near future.

So, in case you hadn't noticed, I think SQL Prompt is awesome.  For years I've been doing SQL development as part of my larger coding projects and every time I'd write a piece of SQL I'd think to myself, "ugh - this is so inefficient".  The structure of SQL statements are such that it seems like you keep writing the same things over and over again, substituting a few words here and there.  Just simple tab-completion of the typical commands (SELECT, UPDATE, DELETE, FROM, WHERE) would've been a godsend, but when I finally found SQL Prompt, I got a lot more than just that.  The first thing you'll notice when you first kick up Management Studio after installing is a little, unobtrusive dialog box pops up at the bottom right hand corner of your screen, letting you know that it's parsing through your databases, determining their schema so that it can provide you with the coolest feature: IntelliSense (though they don't call it that... 'cause that would be infringement... right?).  What's more, we're not just talking about a single drop-down with available choices, but a full-blown contextual dialog that intuitively shows you what you're most likely looking for... and then some.  In the initial view, tables, views, stored procs., etc. are all listed in the same list, each with a little icon indicating what type they are.  Then, if you know you're looking for a specific type of object, you can use the intuitive Ctrl-left & right keystrokes to change which tab you're on, allowing you to filter out all of the objects except for a particular type.  I know I keep using the word "intuitive", but that's because that's the word that kept coming to my mind the first few times I used it; there's simply no better word to describe it (plus I lost my thesaurus :)!  Oh, and if all of that intuitiveness isn't enough for ya, guess what happens when you highlight, say, a table or a view while in this dialog?  It shows you that object's schema!  Yeah... that's right.  This is especially helpful when you're not exactly sure what table/column, etc. you're looking for; instead of doing a bunch of typing and deleting, you can just look at the preview pane and see if the column, key, whatever that you're looking for is there.  If not, you just keep on scrolling to the next object.  It's almost like database object window shopping!

There isn't a whole lot of bad stuff I can say about SQL Prompt.  It shows up when you need it, it does what you'd expect, and it goes away...  I would expect that the most likely area complaints would arise in a product like this is in speed, efficiency, and accuracy/knowledge of the auto-completion.  To this point, I must admit that there have been a few times when I've expected something to be there (such as a simple/common keyword) that just didn't show up; to be fair, though, there have been many more instances in which I have expected something would not show up as a suggestion (such as a variable I just created a second ago), and it did.  I also feel as though I need to mention that I talked to our DBA today and he mentioned that he was not happy with the speed of SQL Prompt, so much so that he ended up completely uninstalling it.  (To be fair, he did mention that he's never been happy with any SQL efficiency tool, so maybe his standards are a bit high.)


SQL Data Compare

I'm not sure what I can say about this tool except that I have based a content release process around it.  That is to say, I rely on it to make sure that all of my production databases have the correct, pertinent, and up-to-date content at all times.  If that's not just the most succinct endorsement of a tool, I don't know what is!

Using SQL Data Compare is a snap - you just create a new "project", identify your database connections, and tell it to go to town.  By default, it'll synchronize any table with a primary key (or so it seems), but you can also decide to pick and choose which objects you'd like to synchronize so that you're not wasting your time waiting on a comparison of a table that you don't really care about.  Then, once you're ready, you just tell it to compare, review the results and publish!  It'll walk you through a wizard, and ask if you're really sure you want to completely overwrite/delete/update the precious data on your production server (of which you have made a backup first, right??).  Tell it that yeah, you're really sure, and BAM....  log off and go home, cause your day is done.


SQL Compare

Last on my list (for this post, at least) is SQL Compare. Much like its sibling, SQL Data Compare, this tool remembers changes you make to your database so that you don't have to.  Though I don't use it as frequently as the other two, this tool practically changed my life after I discovered it.  In order to accurately express the impact it's had on me, I have to make (another) confession: for my few bunch of releases containing database updates, I always seemed to miss something when moving to production - it was really a problem!  Well, not after I found SQL Compare!  Now I can go to release knowing exactly the differences between the two versions... Now, choosing to ignore a difference is a conscious decision.  :)


All-in-all, these two tools are incredibly cool, and end up playing an integral role in my daily development and production support life.  I really (honestly, quite literally) don't know what I would do without them.  

Oh yeah - the rest of the Toolbelt seems really cool, too.  :)  Hopefully one day I'll be able to work with them all enough to post some more reviews.  Until then, just enjoy these two tools, at least, and give the rest a try, too!