Developer Cabana Night In Waltham (October 6th) Is Shaping Up Quite Nicely

In his lastest weblog post, Thom Robbins has posted a list of just some of the people who will be present at the upcoming Developer Cabana Night at the Microsoft – Waltham offices on October 6th from 6:00 to 10:00 PM.


The list includes -


Chris Bowen

www.monster.com

Carl Franklin

www.franklins.net

Robert Hurlbut

www.hurlbut-consulting.com

Patrick Hynds

www.criticalsites.com

Duane Laflotte

www.criticalsites.com

Jesse Liberty

www.libertyassociates.com

Chris Pels

www.idevtech.com

Richard Hale Shaw

www.richardhaleshawgroup.com

Don Sorcinelli

www.bostonpocketpc.com

Pat Tormey

www.4square.net


Yes, that’s my name you see there. It should be in very small font type, espcially when compared to the people it is listed with ;-)


I will be leading the discussions in the “Mobile Application Development” room that evening. Remember – this is a “NO SEMINAR ZONE”, so there will be no canned Powerpoint presentations.


If you have not yet registered for the Developer Cabana Night, you can do so at the Microsoft Events web site. In addition, if you have a question you would like to pose to the “experts” in advance of the event, you can do so by sending the question to cabana@bostondotnet.org.


I look forward to see you there!

Just to Clarify…

It’s funny, the things we take for granted that (when heard or read by others) causes such surprise. Take, for example, my post the other day entitled “Your Compact Framework ‘Phrase of the Day'”. In that post, I mentioned my current employer (Progress Software Corporation). Well, I have since received a few e-mails regarding this fact and the surprise it generated amongst some of the readers of this blog.


Some of the e-mails could be paraphrased into “What – you mean you’re NOT an independent consultant?” To respond simply – no, I am not and have not been since I ran my own consultancy for a number of years (until 1996) down in South Florida. Other e-mails were based upon the fact that after doing research on Progress Software, it was concluded that “no, they are NOT a .NET Compact Framework or .NET Framework-specific business”. This seemed to lead these folks to conclude that there is no way I personally could have direct knowledge of enterprise development and the .NET CF.


I will not go into a highly-detailed “job history defense” diatribe here, as I hate to see what I consider to be a waste of good bandwidth. Let me say however that –


  1. My professional career (15+ years) has been almost exclusively devoted to enterprise application development. This includes architectural design, development and deployment using over 16 development languages on both Windows and Unix platforms, and encompasses a number of architectural paradigms (host-based, Client/Server, Web, N-Tier and SOA).
  2. My involvement in developing thin client applications for the enterprise dates back to (gasp!) AvantGo development for the Palm platform (before CodeWarrior), and has carried through C/C++, eVC++ and now Windows Mobile and the .NET CF. Ironically, recent work at my “day job” has included serving as both a Subject Matter Expert and developer on both C# and VB.NET client integration to my company’s “backend” technologies.
  3. While I do get some sleep, it’s not much really. I think the last really good night’s sleep I got was the result of too much partying one night back in the 80’s ;-)

For those that know me and have talked to me, I believe they can attest to these facts and the fact that I do not do what I do in the .NET CF space blindly. Now that I have clarified that I am not an independent consultant, do not work for Microsoft (did I mention that – I don’t work for MS either), and do not work for a company dedicated to .NET development you still can see past this and read what I write in the knowledge that there is substance to my words. If not, I am sorry to hear that; it’s been nice having you visit :-)

Code Camp II Back In Boston This October

For those who are unaware, Code Camp is a free one-weekend intensive training session sponsored and hosted by the Microsoft – Waltham offices. For one weekend (Saturday and Sunday, so you don’t have to be out of the offices), Code Camp provides track-oriented sessions that are really code-intensive and beneficial.


The first Code Camp in Boston earlier this year was a great success. So successful, in fact, that the sequal (Code Camp II) has been scheduled for the weekend of October 16th and 17th! Thom Robbins has posted more information on all of this in his .NET weblog. This page provides links to the current (and ever-growing) list of speakers and sessions, as well as the registration page for the event.


I was looking forward to presenting on Windows Mobile topics under the “Smart Client” track at this Code Camp. Unfortunately, I found out yesterday that the closing date my family’s first home purchase (time to grow up, I guess) will be on October 15th. Rather than being the first man to be thrown out of his home before he even officially owns it, I have had to back out of the event. While this is disappointing personally, I know that the event will be a huge success for all of the lucky participants and presenters.


Speaking of presenters – if you are interested in presenting one or more sessions at this upcoming Code Camp, I encourage you to read Thom’s post on his “Call For Speakers” and take advantage of the opportunity. I have told Thom that I would gladly offer my support and assistance to any Windows Mobile-oriented presenter; while I cannot be there in body, I can in spirit :-)

Reference Architectures, Design Patterns, Application Blocks and the .NET Compact Framework

Anyone who knows me also knows I am a sort of “enterprise architecture junkie”. Fifteen-plus years of application development focused on the enterprise has taught me many lessons, and the recent major push on enterprise application design (reinforced through Reference Architectures, Patterns and Practices and Application Blocks) is a great way to share the wealth of knowledge surrounding enterprise application development.


From a Microsoft and .NET perspective, I have to salute the efforts made towards providing a tremendous amount of content surrounding enterprise application architectures. The MSDN Architecture Center (http://msdn.microsoft.com/architecture) provides a great repository of information. One thing I have found lacking from MS in regards to enterprise architectures, however, is content focused on the .NET Compact Framework.


In most enterprise scenarios, Windows Mobile devices and the .NET Compact Framework are used to extend specific parts of the enterprise application to mobile users. As a result, it could be said that the most applicable portion of the .NET Enterprise Reference Architecture is the Presentation Layer. If followed closely, this layer should most likely utilize the MVC (Model-View-Controller) design pattern. Interestingly enough, there is only the vaguest of references to Windows Mobile devices in any Presentation Layer documentation, and usually only occurs as a passing reference in Smart Client topics, with all the real focus (including sample code) on .NET Framework applications (presumably for laptop and Tablet PC devices). I really believe that the MVC (with some “tweaking” for platform optimization) design pattern is highly applicable in the design of .NET CF applications connecting to a .NET backend. Lets face it – that is the whole idea behind a design pattern being “language-agnostic”. The lack of supporting information from Microsoft, however, leaves me constantly having to justify an MVC approach to design.


Another area of frustration for me relates to the ever-growing number of Microsoft “Application Blocks”. For those who are unaware, Application Blocks are essentially pre-built components that provide application support and are usually based upon design patterns and other best practices. Unfortunately, there are a number of Application Blocks that would be of great benefit for enterprise .NET CF developers. The most notable of these is the Data Caching Application Block. Great bit of functionality, .NET Framework-specific (even though it is heavily promoted in Smart Client development). I have considered tearing apart and rebuilding the Data Caching Application Block, but the time and effort required is just a bit too much for me with my current schedule. This is something, however, that I believe MS should be mindful of when delivering the SmartClient message.


Don’t get me wrong here – Microsoft has done an awful lot to promote .NET CF development in the enterprise. My point is that there is still much more that can be done, especially when it comes to delivering “fair but equal” content relating to the MSDN Architecture Center and supporting tools like Application Blocks. If nothing else, it is content of this very nature that makes my job of promoting and justifying the .NET CF in the enterprise a lot easier. It does get a bit frustrating when someone points out that the .NET CF doesn’t seem to get the same support (or even mention) when it comes to Microsoft’s own architectural guidelines.


Finally, I would be curious to hear other people’s experiences relating to this. If you are extending a part of an enterprise application to the Windows Mobile platform, are you leveraging any architectural guidelines or design patterns? If so, how’s it going? If not, why?

Your Compact Framework “Phrase of the Day”

People often ask for a brief description that compares the functionality of the .NET Compact Framework to the full .NET Framework. A few years ago, the company I work for (Progress Software Corporation) used a term to describe their web-based server-side programming language (SpeedScript, part of the WebSpeed environment) in comparison to their standard 4GL programming language – “extended subset”. I think this term applies well to the .NET CF.


The .NET CF is a subset of the full .NET Framework, with many of the base classes not included. At the same time, the .NET CF is tailored, or “extended” to provide functionality that is specific to the Windows Mobile platform. Therefore, the .NET CF is an “extended subset” of the full .NET Framework.


There you have it – now you have a really brief answer to common question… ;-)

Gotta Question?

One of my goals with starting this particular blog separated from BostonPocketPC was to focus on Windows Mobile and Tablet PC development, especially in the enterprise. One of the best ways for me to effectively communicate and provide value on these types of topics is to here from you, the reader. While I feel as though I have always been as accessible as possible, it never hurts to remind everyone that you can e-mail me with questions or things you would like to read about (rant or otherwise).

Developer Cabana Event in Boston October 6th

OK – I promise – there will be NO Barry Manilow music playing at this event… ;-)


ca·ban·a also ca·ba·ña


- A shelter on a beach or at a swimming pool used as a bathhouse.


- A cabin or hut.


- A place to talk technology


- A place to give and get expert advice


- A community based project


Cabanas were a hit at TechEd 2004 and now they’re coming to Boston! That’s right, community based technical discussions with experts. Bring you questions, your expertise, and even code on a laptop. Every question is fair game. The cabana is the place to have discussions with experts and other developers on .NET topics of your choice. One-on-one, in a small group or whatever. No pre-canned demos or slide shows allowed. The Boston Cabana is a quarterly event not to be missed. Got a question? Got a problem? Got an idea? This is the place. Stayed tuned for the list of peers and experts that are planning on attending!


I can tell you at this point that one of the many “cabana rooms” set up for this event will be focused on mobility, and I will definitely be there.


You can register online for this event at the Microsoft Events web site.

Fitting a Truck Into a Carport

I have been getting a lot of questions lately about extending enterprise applications to Windows Mobile devices. While I am really excited about the number of organizations finally considering making the move, I have become a bit concerned about some of the initial design thinking that some have been doing. In some cases, developers have equated “extending the application” to “moving the application”. In other words, the thought is that the entire application must be ported to the Windows Mobile platform in order to be successful. While this may be true in some situations, this is usually not the case.


Imagine yourself trying to recreate an entire ERP or CRM application for a Pocket PC or Smartphone. For all of the labor involved, what would be the true benefit of such a project when all is said and done? Would a Windows Mobile user really benefit from the entire application being available, or would they only use a small portion of the functionality? In most cases, there is only a small
portion of a larger enterprise application that would truly benefit from being extended to Windows Mobile devices. In the ERP scenario, the solution might be oriented towards shop floor job roles that require movement between stations. The average shop floor worker tends to be quite stationary, and a desktop PC serves them well. For CRM applications, the portions of the application that
allow mobile personnel to gain access to critical information to customers would be beneficial, but the entire application is very likely to be overkill.


When considering extending an enterprise application to the Windows Mobile platform, the starting point should not be focused on moving the entire application, which can be like trying to fit a tracker-trailer truck into your home carport or garage. Instead , you should be asking yourself the following:


- Which members of my organization will I be giving Windows Mobile devices to?
- What job functions can they perform using a Pocket PC or Smartphone?
- What job functions around they be willing to perform on a Pocket PC or Smartphone (never discount user buy-in)?
- Can the aspects of the overall application be extended to the Windows Mobile platform in an effective and productive fashion?
 
In addition to all of the benefits that proper scoping and planning of a project of this nature provides, there is also that little consideration of cost. It is definitely more cost-effective to develop a specific portion of an application rather than porting an entire application over ;-)

Time To Focus A Bit

As someone who has spent a great deal of time over the past 2+ covering the breadth of information around the mobility space at BostonPocketPC.com, I began to recently think about how I might (or should) put a bit more focus on some technical areas I have strong passions about – the development side of mobility, including Windows Mobile, the .NET Compact Framework and Tablet PC. Now don’t panic just yet – I am not going anywhere as far as BostonPocketPC.com is concerned. That will all remain the same. I just thought it might be time to start up a new venture with a bit more focus and a bit less “journalism”.

So what will you see here? Well, I will be putting out code when applicable, of course. I also want to spend a bit of my time here focusing on the issues surrounding Windows Mobile development as well, especially in how it relates to the enterprise. 15-plus years of enterprise development, starting with host-based systems and moving through Client/Server, distributed architectures, web-based development and SOA leave me with a lot of – well, “strong opinions” regarding the implementation of systems that take full advantage of the benefits of the Windows Mobile platform. I want to take advantage of this space to try to address all of this as best as I can.

Of course, I always encourage your comments, feedback and input regarding all of this. Many of you out there reading this blog will probably have strong opinions as well, and I welcome them. It is only through dialog that we really learn about what works and what doesn’t.

So, let’s get started – shall we? ;-)