Coming to an End

Well the weekend of fun is coming to an end. Another GiveCamp is almost in the books.  New friends were made and a good time was had by all.  Cinco-De-Mayo celebration was a nice break.  This weekend, my team an I worked with Respond, Inc. to redesign their website and update all the content. Here is a screen shot of their current site:

before

As you can see the site needed some love.  Thanks to the talent of our designer Amanda, we were able to update the look.  Here is the how it looks now, keep in mind that we are still working so the content so some on the screen will change but you get the picture:

After

Work will continue up until the end, which is a couple of hours away.  Stay tuned for the publish date!

I have to say that after three GiveCamps, the keep getting better.  I  can’t wait to see what next year brings.  To all the sponsors thank you, to all the volunteers until we meet again, and the Jim O’Neil and Kelley Muir for organizing such a fantastic event.  I would also like to thank Microsoft for letting us camp out in your spaces, the views can’t be beat (even overcast):

WP_000036

So until next year!

Posted in Give Camp | Leave a comment

That Time of Year Again! New England Give Camp

GiveCampColorLogo2012

Well it is that time of year again.  I am once again volunteering for New England Give Camp.  For one weekend, over a hundred volunteers will help over 20 Non-Profit organizations solve there technical needs, getting help that most of these organization would not otherwise get due to cost.  Over the coarse of the weekend these organizations will get technical help, attend seminars that help teach them how best to use technology to their advantage, and network with other organizations.

WP_000028This year I will be helping redesign the website for Respond, Inc.  They are New England’s first domestic violence agency and the second oldest in the nation. My team will be working closely to help solve all their web needs over the course of this weekend.  Quite ambitious, I know, but we are up to the challenge.  You will have to tune in at the weekend to see the results of our work. Our goal is to leave them with a site that will help them help their clients.

Camp is in the Name

That’s right we spend the weekend working into the wee hours of the morning.  Some go as far as to pitch a tent.  I would like to thank the sponsors who keep us fed and caffeinated. Good luck campers!!!

2011-05-01_08-23-45_358_thumb

Posted in Give Camp | Leave a comment

What is This ‘LayoutAwarePage’ You Speak Of

The other day Microsoft released the Consumer Preview of their  next version of Windows.  The next version of Windows will bring Microsoft in direct competition with iPad and the various Android tablets.  I was excited about this release since I had been using the Developer Preview since it was released.  I installed the new version of Windows and the tools to build apps as soon as I could.  I wanted to get a handle on developing Metro applications.

So the first thing I decided to do was see if any of the apps I built using the Developer Preview would run in the Consumer Preview.  Low and behold neither application would run. After a quick internet search I found Microsoft’s guidance on upgrading applications.  This document comes in at over a hundred pages.  According to what I found they listened to the feedback of early adopters and as such had to make many breaking changes. It was nice to see them listening to the community.  It does mean that any developers that created applications will need to spend time converting their apps. Since the applications I are not that import I decided to hold off on upgrading them.

Making Life Easy

CommonsFolderSo I decided to work on a new project.  I started by creating a blank C# Metro Application.  After the template finished loading I noticed something new, a ‘Common’ folder.  Inside the common folder there are some interesting files.  The first thing to take a look at is the ReadMe.txt.  In there, Microsoft explains what these new classes are there for.

Here is the contents of the ReadMe file:

The Common directory contains classes and XAML styles that simplify application development.

These are not merely convenient, but are required by most Visual Studio project and item templates. Removing, renaming, or otherwise modifying the content of these files may result in a project that does not build, or that will not build once additional pages are added.  If variations on these classes or styles are desired it is recommended that you copy the content under a new name and modify your private copy.

That is a little scary. These file are here to help but don’t modify them or your project may never work again.  So there are a couple of value converters which are ones I tend to build so thank you Microsoft. There is also a StandardStyles.xaml.  This is a nice change for the previous version where the styles were on each new page. I did not think that would carry through to the final version of the templates. 

Layout My Page Please

This leaves three other classes.  The one that I am going to take a deeper look at here is the LayoutAwarePage.  I will leave the rest for a different post. The first thing to notice is that the class is heavily commented which is nice but how it used?  Well it inherits from Page, so I assume it has to do with code behind files. I did a search of the entire solution for this class and it is not used anywhere.  So I created another solution using one of the other templates.  All the pages in that template inherit LayoutAwarePage.

One of the complaints I had with the Developer Preview is that there was no easy way to navigate from page to page. There was also no means to capture page history.  Hitting the back buttons on a page created by the templates did not necessarily do what the user thought it would.  It may or may not navigate to the last page the user visited.  Of course you could override that behavior but it required build a custom navigation framework.  This is now taken care of in this new class. Here are the convenience methods that handle that for you.

NavigationMethods

The Page class has a Frame member that handles the navigation and handles the call stack.

Handle Those Turns

One of the sensors that most tablets have is an accelerometer.  This allows user to orient their tablets in any orientation they want.  Also Metro apps can be snapped side by side with another Metro application.  Developers have to handle these changes.  In the Developer Preview each page subscribed, in the code behind, to the orientation event that gets fired. This functionality has been abstracted into the LayoutAwarePage class.  This makes sense since this class is named LayoutAwarePage. Here are some of the methods that handle that:

image

I like that this functionality has been centralized and removed from the code behind.  I like to develop XAML applications using Mode-View-ViewModel (MVVM) pattern.  Anything that helps limit the code in the code behind I am for.  So how does MVVM play out in Windows 8.

Is MVVM Dead?

When Microsoft released Expression Blend for Windows Phone development, they included a MVVM template.  That made a lot of people happy.  They started wondering when will there be a temple for MVVM within Visual Studio.  Sure there were third party frameworks that contain MVVM templates, MVVMLight being the one I liked the most.  Since there was not a template within the Developer Preview I was hoping that there would be one in the Beta. Alas I was disappointed.

What I did find is that there is a DefaultViewModel in the LayoutAwarePage class. Here is the property declaration:

image

This is implemented as an ObservableDictionary. This view model is set to the pages DataContext in the constructor.

image

“Properties” on the DefaultViewModel as you would using any dictionary.  There are two things to note first to pass data between pages through the Frame.Navigate method as NavigationsEventArgs.  Second notice the magic strings.  Bindings are handled the same as before, binding to the magic string noted above.

BindingExample

 

I am not sure that I like this.  My view models tend to have a little bit of logic in them.  It is convenient to be able to pass data in the navigation event but that would mean moving some service/data logic into the code behind.  I will have to think about this a bit to figure out how I want to handle my view models.

Summary

This was a look at one of the ways that Microsoft is trying to make it more convenient to develop applications.  I don’t like the language of the ReadMe text or how they seem to be forcing a paradigm down developers’ throats. Kind of like how Apple treats their iOS developers. I will have to see how much of a pain it will be to use or not use these convenience classes.

Posted in MVVM, Windows 8 | 3 Comments

Windows 8 is Coming….Should I Care?

Win8LogoRecently I have been using the Developer Preview of Windows 8.  Back in September Microsoft announced how developers can build the next generation Windows applications. So Microsoft is trying to revamp its tablet industry while moving their operating system forward. They are developing an operating system that is attempting  unify their operating system across platforms and if the rumors are true the next version of the Windows Phone.

In this post I will take a look at what coming and give my feedback on what I have encountered thus far.  I have had to opportunity to build a couple of demo applications so I have experienced Windows 8 from the point of a developer and a user.  I installed it on the Acer laptop that Microsoft gave away at PDC 2009.  Windows 8 runs have way  decent on that machine though the touch drivers acts a little funny.

Architecture

From the time Microsoft announced Windows 8 to the time they announced the developer experience, there were a lot of rumors as to the fate of Name your favorite development language here. The only known at the time was that HTML5 was going to play a key part of the ecosystem. This sent all the XAML developers into fits. Then along came Build.  During the keynote all was revealed:

Win8_Arch

As you can see there are two stacks available for developing applications. The blue stack is the same stack that we have now.  The green stack on the left is the new goodness that allows developers to build applications targeted towards the tablet side of the house. These applications are called Metro Apps.  As a side note Microsoft has said that these applications will work just as well with a mouse as it will with touch.

These Metro applications operate just like WP7 apps.  They operate in a sandbox and can only access external resources through well define contracts.  Also they need user permission to access sensors, location data, camera and such.  This gives user a constant user experience. Metro apps are built on a core framework called WinRT.   WinRT abstracts access to the underlining operating system.  It then projects the API in the various languages.

With this architecture, Microsoft open windows application development to a whole new group of people, HTML/Javascript developers.  These developers can develop the same rich applications as the XAML developers, using the same WinRT API. This architecture also keeps C#/VB XAML developers in the loop but brings also brings C/C++ into modern times by allowing them to develop rich user experiences.  At the same time legacy applications will still run in desktop “mode”.

There are so many new features.  Too many to mention is a “short” blog post.  In an attempt to solicit feedback early and often the Windows 8 team have been releasing blog posts about their endeavors to Windows 8. You can read, in detail, the many new features that are coming.  You may even influence their course of action by posting comments on each topic.

Metro Everywhere

Over the years, Microsoft has paid little attention to User Experience (UX).  In contrast Apple has put most of their effort into creating the best UX possible.  In order to keep up Microsoft has recently  started to develop a common style that places UX in the forefront.  It started with Zune software, then it made an appearance in Windows Phone 7, the XBOX dashboard was not far behind, and finally it is the premier UX for the new Windows 8. The style is Metro.

What is Metro? It is a style based on simplicity. Inspired by signage seen in European Subways.  The style emphasizes clean line, subtle animations  and simple fonts.  Metro also takes power consumption into consideration. By standardizing the experience across the Microsoft  ecosystem, the user is familiar with how to interact with the system.  Couple that with the integration across platform and you can see that Microsoft has definitely learned that UX matters.

For Windows 8, Microsoft has published a set of design guidelines.  These guidelines assists developers and designers, in make compelling UX while adhering to the UX that Microsoft envisions for its users.   There has been some rumbling that if you follow those guidelines then how do you differentiate your application from all the rest?  Microsoft has even published in its guidelines on how to accomplish differentiation. 

Below are some screens shots from one of my demo applications.  As you can see I was able to follow the Metro guidelines while allowing my company’s brand shine through.  Windows 8 makes it easy to implement a Metro design.  There are built in styles and animations that helps in following the Metro guidelines.

Metro1          Metro3

XAML vs. HTML5

Now that we have a little background on Windows 8 how do we develop applications?  The frameworks available are shown in the green boxes above.  If you start from choosing a UI technology then your choices are HTML5, XAML, and DirectX.  For now we will concentrate on the HTML5 and XAML. Which one do is the best choice?  The answer is the same answer it depends. It depends on your skill set and on if you have resources that you want/need to reuse. 

Lately Microsoft has been emphasizing HTML5 and downplaying their XAML technologies.  In my opinion they are doing this to enable a whole new group of Windows developers.  By exposing WinRT in Javascript HTML developers can now can now build rich applications that will run on Win8 tablets. These developers will be able to develop HTML and CSS that can be reused in web applications.  There may even be some Javascript that can be reused, as long as the pieces of Javascript that interacts with the WinRT projection, are isolated.

XAML developers need not worry.  XAML is there, but not only is it there it has been opened up another language, C/C++.  There is even an opportunity for reuse here.  The XAML in Win8 is closest to the XAML in Silverlight.  The namespaces may be different but the XAML is similar.  Also class libraries be able to be reused as long as the functionality exists in WinRT.

So who can develop Win8 Apps? Web developers…..XMAL developers…C++ developers. The ecosystem of developers is large, larger than iOS and Andriod.  This was a smart move, in my opinion.  In order to steal market share away from those other platforms, Microsoft is going to need a large and varied collections of applications available from day one.  By lowering the barrier to development, they may be able to reach that goal.

It is Just WindowsWin8_DT2

“I have been developing applications for years, are my skills dead?”  The answer to that no. At the end of the day Windows 8 is just Windows.  You WPF application will run just as it did in Windows 7.  Even your WinForm apps will run.  Icons to launch your applications will even appear in the new start menu. As you can see “legacy” applications will appear side by side with new Metro applications.  You can even optimize these application for touch

Microsoft has creating an operating system that will run on a 7 inch screen all the way up to a desktop with rather large screens.  One of the goals of the system had to have been that it had to run Microsoft’s other cash cow, Office.  The current version of Office should run just fine but is not optimized for touch.  It is rumored that the next version of Office (Office 15) will have Metro versions of Office applications that will even run on devices that use the ARM processor.  The Metro versions will probably on have a limited set of features, features that make sense in a tablet environment.  But since a Windows 8 tablet is still just Windows (there is some debate as to the extent of  “legacy windows” will be available to ARM devices) the user just has to switch over to the desktop and launch the full version of that Office application. My guess is the functionality of Metro will be close to their Office Online versions.

Another nice feature of having full Windows on a tablet is the security features available.  One of the barriers to enabling tablet computers into the corporate environment is security.  Most network administrators are nervous when it comes to letting devices onto their networks that they cannot secure using their tried and true means.  With Windows 8 they will be able to encrypt the hard drive using BitLocker.  They will also have the ability to enforce Group Policy. So securing a table becomes as easy as securing a desktop.

Win8_DT

App Store

Another lesson learned from WP7 is they have to control the user experience when it comes to Metro applications.  To do this they are creating an App Store.  This will be the only place where applications will be able to be loaded.  Applications must be submitted to Microsoft where they will be tested to ensure that they are safe for user to install.  The App Store is also where developer will be able to monetize their work.

Summary

This was a long post but there is some much that Windows 8 encompasses that I did not even scratch the surface. My observations have been made against the Developer Preview which has been out since September. With this release the development tooling is a little lacking, only an express edition of the next version of Visual Studio and an Expression Blend that only works with HTML5 applications.  There quite a few bug that popped up from time to time.  In less than 2 weeks a Consumer Preview will be released with a final version rumored to arrived later in the year.  

If Microsoft is able to deliver all that they have announced thus far they will have a viable competitor to Andriod and iOS.  They have taken a page out of Apple’s book and kept the details of Windows 8 under tight wrap. Hopefully the next release of Win8 will more details of what is yet to come.  I have enjoyed developing Metro apps and the tablets given to Build Attendees is a nice piece of hardware.  I am looking forward to the different form factors that been rumored to be delivered later in the year.  I just hope that Microsoft does Windows 8 right and that it does not become another Windows Vista!

Posted in .NET, C#, HTML5, Metro, Software Architecture, Windows 8, WP7 | 1 Comment

Everything Goes in Cycles

Recently a colleague of mine at BlueMetal Architects presented to the following trend image:

Trends

State of The Environment

I find it funny how these things go in cycles.  It is like the cycle of Client/Server –> Desktop –> Distributed.  If you think about it the technology of the time dictates the paradigm flavor of the month.  Take the switch from web apps to native switch right around the time smartphones started to become more common.  Native apps emerged to take full advantage of the hardware they were running on. Along comes HTML5 that starts to take advantage of parts of this functionality. So where does that leave us? Go native? Ride the leading edge of HTML5?

One of the reason native applications became prevalent in mobile applications is because the vendors keep out plugins that enabled rich applications. That left the developer with two choices: a) go native or b) go web.  Each of these has advantages and disadvantages. Native allows the developer to utilize the full feature set of the device, but for companies that want to be on all platforms, this requires redevelopment of the app into each native form.  If the developer decides to go the web route, they cut down on development time/costs but more than likely they can’t take advantage for all the capabilities the devices have to offer.  They also develop an app that doesn’t follow the visual design standards for the device. Windows Phone has Metro, Apple wants their apps to look like iOS apps, and even Google has guidelines for Andriod.

Keeping Developer Costs Low

So how do companies keep their development costs low while creating native apps for all the platforms?  They use frameworks that take one language as input and output native applications or HTML5 equivalents.  The input languages could be HTML5, Xaml, C#, or others.  The problem with approach is that the conversions don’t always take advantage of all the functionality of the devices. Or they can only handle a small subset of tasks (look at ComponentArt Mobile Dashboard Server). The ComponentArt server takes in Xaml and outputs many different formats that works on all different platforms.  The problem is that the input is Xaml markup of a ComponentArt dashboard.

Converter

Another barrier to conversion frameworks is cost.  So you are cutting developer costs but the costs of the different frameworks may wipe out and savings you are getting.  The aforementioned ComponentArt Server cost in excess of $10k (at the time of this post).  That’s a lot to pay for such limited functionality.  When evaluating whether to use one of these frameworks you should keep the cost vs. functionality in mind.

The Best of Both Worlds

Some organizations try to get the best of both worlds by creating hybrid applications.  They use native where it makes sense and incorporate HTML components when needed.  This allows them to create reusable components that can then be utilized within native applications.  This is just one way to get reusability out of common components. There are issues here.  Not all platforms handle hosting HTML within native apps the same so there maybe some workarounds that need to be implemented.  So how much time/money are you really saving.

Reusability to the Max

Cloud

Another way to maximize reusability is to encapsulate as much business/data access logic behind web services.  Now the native app only has to handle creating a compelling user experience for displaying data.  That is where native apps excel.  Developers can take advantage of the capabilities/design guidelines of each platform.  What’s the catch? Well this approach requires the device to always have a connection and in certain situations a high bandwidth connection (data dependent).

When is Enough, Good Enough

Sometimes you have to ask yourself “When is enough, good enough” for my users.  There are situations when a mobile optimized web application is “good enough”.  If your applications does not require an accelerometer or fancy touch gestures then go ahead and build that web app.  Content delivery applications are another good candidate for the web.  These apps usually don’t have heavy interactivity requirements. Besides at the end of the day most users ignore apps on their mobile devices.

Summary

At the end of the day there is no right or wrong answer to what app should I build.  The situations, time, developer skill set, target audience, and budget are all going to factor into the decision on application type.  It is always good to look at the trends leading up to this point in time. 

What will the future hold?  Which paradigm will drive future development?  These are questions that only time will tell. If we don’t learn from the past we are destine to relive it.

Posted in HTML5, Software Architecture, Windows 8, WP7 | 1 Comment

Code Once Use Twice….or More

If you have programed against any of Microsoft’s Xaml based user interface frameworks then you might have heard about the MVVM (Model-View-ViewModel) pattern.  One of the benefits of this pattern is the separation of the view  from the view model.  All of the logic lives in the view model which is then bound to the view.  This separation allows for rapid revolutions of the visual components.  All that is needed is to recreate the Xaml and go.  What is you do that across Xaml technologies?  As of now Microsoft has three Xaml based UI Frameworks, WPF, Silverlight, WP7 (which is of course is a variant of Silverlight 3).  There is even a hint of a new/revamped Xaml Framework in Windows 8.

I have recently started to look at reusing a Silverlight 4 ViewModels in a WP7 applications. I figured this would probably be the easiest place to start since they are both Silverlight. I was recently asked what would it take to make a component reusable across Silverlight and WPF.  That figures right into my ViewModel sharing research. I will start by looking at different ways to share code across all three frameworks.  In a future post I will explore ways to reuse Xaml.

The Challenges

Let’s start off by examining the challenges associated with this task.  The first challenge is the fact that they are three different frameworks that are designed for three different use cases.  That means that any reusable code would have to be coded to the lowest common denominator.  In this case it means WP7.

For this post I don’t have any working code to share but I have been trying a few things.  One of the first things I ran into was in the System.ServiceModel namespace.  Each framework handles calling web services differently.  Silverlight and WP7 can only make calls asynchronously and WPF defaults to synchronous calls.  I am still working out how I want to handle this.  There are other challenges too, take third party libraries for instance.

Another challenge that you are going to face is keeping consistent namespaces across the frameworks.  If your organization has a strict naming convention then this could become a challenge.  Luckily you control what your namespaces are but it can become quite hairy if you are not careful. 

Third Party Libraries are usually compiled against specific runtimes.  The third party library that I consistently use when working with Xaml is the MVVM Light Toolkit.  Luckily the MVVM Light Toolkit is compiled against the different Xaml runtimes and the functionality is consistent across the frameworks.  But with other libraries you may not be as lucky.  Now it is time to talk about the different options available for reuse.

Copy and Paste

CopyAndPasteThe most basic method is copy and paste.  This is a quick and dirty solution.  First you create a file that works in one framework.  Then you create that same file in the other projects copying the code from the original class to the new class.  The up side to this method is that you can tweak the code for each framework.  But red flags should be waving and alarms sounding.

Copy and paste architecture is NOT the key to a reusable strategy.  There is no means to update the code once it resides in each project since the code is not linked together. Any change would need to be propagated across the different files.  Which may be ok if there is one “shared” file and more than that and you are asking for a nightmare. In other words there is no maintainability or scalability with this option.

Add As a Link

AddAsLinkDiagThe next option I explored is add linked files to the projects. For this method you create a class in on project and then add it as a link to another project.  In the “Add Existing Items” dialog you can navigate to the file you want to link and select “Add As Link” from the “Add” button dropdown.

 

AddAsLinkYou can tell the file is linked by the icon of the file in the linked project. With this solution there is only one physical copy of the file.  Each project then compiles the file against the proper framework. The up side to this approach is that there is only one file to maintain.  On the downside namespaces can become an issue. You may also have to use conditional compile tags if modifications are needed.  Conditional tag will allow for the use of different using statements when it comes to third part libraries as long as the internal namespaces are consistent.

Portable Library Tools

The final method I looked at was the Portable Library Tools from Microsoft. The Portable Library tools

is a new Visual Studio add-in from Microsoft that enables you to create C# and Visual Basic libraries that run on a variety of .NET-based platforms without recompilation. – Visual Studio Gallery Description

The add-in can be downloaded from the Visual Studio Gallery.  This method allows you to create a class library that can run against many of the .Net runtimes.  To accomplish this the class library compiles against a very restrictive version of the .Net framework.   This can be a challenge when planning out what to include in a reusable library.

Since this project is still in the CTP/Beta phase not all of the available frameworks libraries have been included. Most notably there is no odata support so you cannot create a reusable odata access library with this tool. According to the Q and A tab in the gallery there is a product road map that plans to include more of the framework.

On a side note it looks like this tool is part of the developer story for Windows 8.  Take a look at the response, on the Q and A Tab, to the “System.Threading.Thread problem” question.

We needed to remove explictly thread creation for a reason that we’re not ready to discuss yet (ask me again in 3 months).

Note that the Build Windows Conference is three months away.

Conclusion

Sorry there is not any working code for this post.  I am still mulling over how I want to accomplish my goals.  I wanted to put this together to organize my thoughts and get feedback from others who have tried for reusable nirvana.  One of the lessons that I have learned so far is be picky about what you include.  The different frameworks kind of take care of that for you by restricting what libraries are available.

The other early lesson I have garnered from my investigation is that you have to be more aware of Framework updates that could break your reusable code.  There is a lot of churn happening right now with Xaml frameworks (Silverlight 5 and WP7.1).   New releases may break what you are doing but they may also bring in more components that can be reusable! 

Next I will be looking to see how compatible Xmal is across the different frameworks. The ultimate goal is to develop a strategy that allows components to be used across Silverlight, WPF and Windows Phone.

Posted in .NET, C#, Software Architecture, Windows 8, WP7, WPF | Leave a comment

Greetings From New England givecamp!

GiveCampColorLogo2011What can you do with 48 hour and over 120 volunteers.  I will tell you what we did.  We helped out over 25 charity with variety technical projects.  Projects that would normally not get done because of lack of budget and lack of skill but desperately needed none the less. 

This weekend was the second annual New England givecamp.  A weekend dedicated to helping out charities with technical projects.  These projects range from designing web sites to building out content management systems.  In addition to getting technical help there are seminars designed to help charities make the most of the technology they are getting.  This weekend there were sessions on content management, engaging social media, and others to help these organizations grow in a highly technological world.

First I would like to thank all the sponsors of providing the means to fuel all the activities this weekend.  What does it take to keep developers developing…..a lot of support so again thanks.

2011-05-01_08-03-07_699

Next I would like to thank Jim O’Neil and Kelley Muir for organizing the event.  It may not have seemed it to you but to us it was very well organized.  Leaps and bounds over last year.  Which means next years should be spectacular…..no pressure!

The one thing you need to realize is that the word camp is in the title and camped we did.  A number of the volunteers camped out here at Microsoft’s New England Research and Development Center, affectionately known as NERD! Thank you Microsoft for letting us have run of your beautiful facility for the weekend. There was plenty of room for people to pull up a piece of the floor, grab a couch and pitch a tent……wait pitch a tent?  That’s right some people even pitch tents!

2011-05-01_08-23-45_358

As I stated before it takes a lot of food to keep an Army of Techies moving.  The food this year did not disappoint!  We had  chowdah from Legals, sandwiches for Cosi and pizza from Naked

2011-05-01_07-51-35_478

And when there was too much food what did givecamp do?  Give it away, of course, to a local shelter:

“took #givecamp leftovers, fruit, chips to CASPAR in Cambridge – shelter housing 100 tonight. Another way #negc2011 makes a difference.” @jimoneil

So here we sit, the morning of the final day.  Tech teams have 5 hours to get their projects done.  They are frantically racing to deliver quality projects to their charities.  The key word is quality.  The goal is to handover all the work to the charities so they can build upon a foundation laid out by their tech teams.

So until next year I leave you give camp with this quote

“Ladies and gentlemen, take my advice, pull down your pants and slide on the ice.” Dr. Sidney Freedman (M.A.S.H.)

And I would add

Get out of your office and do something nice!

Posted in Uncategorized | 2 Comments