Josh Heyse

Thoughts Defragmented

Archive for the 'Silverlight' Category

The Applications of our Future

Posted by jheyse on 12th August 2009

Preface

In the past I have used my blog as a medium to post code examples, frameworks, and solutions to common programming issues.  My posts have always been heavily focused on the code with short summarization paragraphs.  These types of posts are the easiest for me to write and they just flow.  I guess the reason is that through my 12 years of development I have become more comfortable writing C#, and other programming languages, than English.  Yes, I said it, I find it easier to communicate with a computer than with other people.  I’m a geek!

I plan to continue to post code snippets, solutions to encountered problems, and new frameworks; but I will also start posting about some of my thoughts on the future of our technical industry.  I’ve been making statements about the direction of our industry through discussions with my peer’s offline for years, but I have never brought these ideas to the online community.  The quickly approaching future of our industry has made me realize that if it’s not online, it doesn’t exist (or won’t for long).

Introduction

Over the last several years we have been inundated with buzz terms like Web 2.0, rich internet applications (RIA), and cloud operating systems.  These are not new concepts just the next iteration in the cycle of technology. People were predicating the death of the personal computer operating system back when Netscape 4.0 was released.  They weren’t wrong just a little a head of their time.  Software has been headed that way for years, but we’ve been waiting for the hardware folks to catch up.  Over the past two years we have finally gotten the internet connectivity (in a majority of the US) necessary to make online feasible over offline.  With WiMax being adopted across the United States, in 2-4 years if you are in a location that has power and indoor pluming, you will probably be able to get a 2Mb+ connection.  Those catch phrases aren’t just marketing propaganda any longer, they are 1st class citizens in our technical world.

Since everything is moving to an online world it makes sense that our operating systems will follow.  But what does an operating system mean in the context of an online desktop?  Is it the file system?  Process & CPU management? Application integration points?  To the end user it boils down to common data & applications across all devices.  And to simplify it even more, if our applications are common, the data can become part of the application.  It is not necessary to split our executable apart from our data files, the two can just co-exist in the same corner of the internet.  After this simplification is made it is much easier for us to move the entire mess into the cloud, instead of worrying about which portions are stored locally as opposed to remotely, and how to synchronizes the changes between the application and data between those stores.  This is even compounded when you think about all of the different devices we interact with on a daily basis, PCs at home and work, laptops, MP3 players, mobile phones, netbooks, e-Books, etc…  The user is feed up with the disparity between these devices and wants a simpler solution.  We as an industry of developers and consumers are dreaming of a ubiquitous environment where data and applications seamlessly follow us around.  Where we can leave the office at the end of the day and open our phones on the train home, and have our RSS readers  remember the location of the article we were last reading or have our media players continue playing your favorite song at the spot you paused it on the PC at work.

It is up to us as developers to make this happen.  So what do we need to do as an industry to make this happen?  Well the big players (Apple, Google, and Microsoft) in the game are doing everything they can to be the first and best to the destination.  What is the destination you ask?  RUA or Rich Ubiquitous Applications not just Rich Internet Applications, but applications that exist everywhere! It is the holy grail of applications and something we have been chasing after for almost a decade.   The platforms are getting closer and we are approaching the browser wars of the current technical generation.  So let’s spend some time looking at the big three, where they are currently, how they are entering the RUA space, what is at stake for them, and how they can help us succeed.

Apple

Apple is a hardware company.  Their business model is to sell hardware devices.  Mac OS X, iTunes, the app store, are all complimentary products and services to help sell more Apple devices.  Apple does an excellent job creating an ecosystem of Apple devices and services that when paired together solve many complicated issues for the typical consumer.  iPod and iTunes are the best example in this case, it just works.  But try to integrate a non Apple product with Apple services or software, good luck!  When was the last time you saw Mac OS X running on a Dell PC or a non iPhone synching with iTunes.  Oh wait, the Palm Pre worked, sorta, well, kinda… doh Apple killed it.

Apple currently has the will of the consumer.  They are dominating the mobile space, the iPhone’s trendiness and ease of use has made it the most popular smart phone in the world.  The addition of the mobile application store and developer APIs pushed them out of the consumer gadget space and into the platform space.  Their next big push towards RUA would be to modify the Apple platform to allow those same applications to easily exist on the Mac OS as well.  Think about it, as a crossword game or Twitter Client developer, it would be great to be able to develop the application once to work seamlessly on both the, iPhone, iTouch, and Mac Book Pro.  Data could then be stored and shared through the cloud or an apple synch service.  What would this take? I’m not sure, I’m not an iPhone or Mac developer, but even if you had to emulate the iPhone on Mac OS, you’d still be headed in the right direction. Jason Calicanis pointed out in a recent email that the “Apple Tablet”  may be the intermediary step. 

Apple’s other option, and one they should have recognized over 2 years ago, is to utilize their strong relationship with Adobe.  Apple should have, and still could, work closely with Adobe to improve Flash/AIR and make it the default application platform for the iPhone.  I can only guess numbers, but at the time of the iPhone’s app store release there had to be at least 20 Flash developers for every objective C developer.  Not to mention the existing tool support, training courses, and communities already dedicated to the Flash platform.  It isn’t too late for Apple to enter the RUA space from this angle, but it would involve screwing over their developers once again, but like the x86 switch, the end goal would be Apple’s best bet.

Previously I had mentioned that Apple had the will of the consumer.  Their consumer base is huge and the appStore is hip.  For the average consumer the iPhone and app store are the only players in the game.  But as technologists and developers we have begun to turn on Apple.  Apple’s recent political actions have left many resilient, bitter, and even broke.  Apple’s closed platform has made it easy for consumers but shunned developers.  While having never been rejected by the app store, developed a single iPhone app, or even own an iPhone, it is easy to relate with developers who have labored hundreds or thousands of hours over their pride and joy just to get rejected because of a business reason.   If Apple is to make it in the RUA space, they have more than technical challenges to overcome.  They have to get over themselves, let their egos go, and share their toys with the other kids on the playground, or they just might get beat.

Google

Google is an advertising company.   Their business model is to sell advertisements to companies and deliver high success rates for those ads.  Since day 1, Google’s main objective has been to collect as much information about you as possible and use that data to deliver the most targeted advertising to you anywhere, anytime.  They have expanded their advertising empire beyond search into every corner of the web: maps, images, email, instant messaging, the list goes on… All in an effort to capture more information about your interests and keep your eye balls on their web pages allowing them to display a greater number of ads to you.  Google will partner with developers and other companies if it gives them additional data on consumer habits or keeps your eyes on their pages longer. 

Google has the will of the technoraties.  Their open platforms and “do no evil” attitude has attracted thousands of technologists scorned by Microsoft and Apple to their open source utopia.  Google is willing to share their source code after all they just want the data and advertisement clicks.  Google has expanded from the internet onto the mobile platform with Android and has been tip-toeing their way on the desktop with their browser, Chrome, and now recent rumor of a cloud OS.  Google has invested everything on their web services, all of which implemented on current web standards.  They have been advocates for web standards such as HTML, ECMAScript (javascript) and CSS since the beginning.  Their message has been that web standards are  ‘for the greater good of the web’, but in reality they want it because it makes their lives easier. In general widely adopted standards do make our lives easier.  But as Google’s services got more advanced and their customers started to demand more, Google quickly reached the limits of the current standards and implementations of those standards. 

What was Google to do? Release their own browser of course.  They have marketed it as the fast, standards compliant browser that it is, but it is also something else very important.  Chrome is Google’s leverage to deliver richer applications on the web and the desktop.  Google can now push new browser features (standards compliant or otherwise) forward instead of waiting for the current browsers to deliver new functionality.  Google has it sights set on one major web technology, HTML5.  Why is HTML5 so important too Google?  It is their channel into the RUA space.  HTML5 will allow Google’s Apps to run on your desktop in an occasionally connected manor.  Google has had their eye on HTML5 for a while and it’s obvious when you look at the the working draft of the HTML5 Spec on W3C.  Ian Hickson, a Google employee, is the lead editor.  With the lead editor on the HTML5 Spec and a new browser, Google can drive “web standards “ to suit them best.  HTML5 is Google’s RUA Space and when implemented by browsers, desktops & mobile phones will be a compelling choice once again.

Microsoft

Microsoft is a software company.  While Microsoft does seem to get involved in every possible technical space their primary object and source of revenue is still based on the number of Windows, Office, and server product licenses sold.  As everyone knows they have grown to be the big player, and with that are also regarded as the bad guy, the monopolist, the Borg, etc… Heck, ever seen Antitrust? A movie was even made taking shots and Microsoft.  All of which was at some point justified.  Microsoft grew to large for it own good, and did some very uncompetitive things.  As a teenager I was one of those kids with a website, bashing MS with a head shot of Bill Gates altered to look like a Borg member, been there done that.  But recently Microsoft has been learning.  Leaders within the company such as Ray Ozzie and Scott Guthrie have been promoting openness.

Microsoft has the will of the business developer.  As a full time developer, Microsoft appeals to us because of their incredible development tools, easy to implement APIs and continued innovation in the way we develop software.  Microsoft’s has hundreds, possibly thousands, of developers whose sole purpose is to make it easier for other developers to develop and deliver software on the Microsoft platform.  Every MS product has an API, documentation, and Microsoft managed message forums all to help the developer succeed.  Microsoft’s platform sweet spot is .NET development the Windows operating system.  Thousands of internal business development teams use Visual Studio to create applications which run the software of our lives. Insurance agencies, hospitals, your bank, etc…

Microsoft also sees the day were applications will move beyond the desktop.  Their approach is to embrace the desktop development experience they are so good at and expand it unto other devices.  Silverlight is just that.  Silverlight allows .NET developers to deliver stateful, rich, data driven interactive applications on the web and the desktop.  Silverlight 3 uses the same languages, similar APIs, and class libraries that the .NET & WPF developer is used to seeing.  It is designed with security upfront to mitigate risks we encounter every day with browsers, cross site scripting, and ActiveX controls.  People say that Silverlight is a Flash competitor but it is more than that, it is in the infancy of a platform that will compete with HTML, Windows desktop applications and mobile applications. 

Silverlight is a media, graphics, and application platform which will continue to grow and provide additional features as fast as Microsoft can deliver and developers can implement them.  Silverlight is on a one year development cycle for the foreseeable future.  With the initial release of Silverlight in September 2007 and Silverlight 3 releasing in July 2009, they are even beating that target.  Microsoft is investing many resources into making Silverlight the dominate RUA platform.  They are making strategic partnerships with Netflix, Blockbuster, NBC, MLB, and the International Olympic Committee.  They are working with Nokai to include Silverlight on the Symbian phone and Novell to create a release for Linux.  (Silverlight is already supported by Microsoft on the Mac.)

Silverlight is not only a platform development tool intended for us developers, but Microsoft’s go-to platform for delivering their own software and services in the future.   They are improving on and rewriting their online services using Silverlight.  Recently they’ve announced brining Office to the web using Silverlight, which is one of the best strategic moves possible to ensure Silverlight’s platform success and to maintain Office’s dominance as the productivity suite.  The final goal should be one where they could replace the native Office implementation for a Silverlight only version.  Reducing costs, maintenance, and helping to deliver a cohesive product across all platforms.

Silverlight 3 introduced offline & disconnected applications which allows users to install the Silverlight application to their local machines and run them while offline.  This was a big step towards a RUA platform.  They are missing one key component though and it may be their greatest mistake, even greater than  Vista’s poor release.  That is Silverlight on the mobile.  Microsoft must release Silverlight to the mobile platform within the next 8 months, or risks losing the market entirely to Apple and Google.  Silverlight on the Mobile phone isn’t the fault of the Silverlight team, but the Windows mobile team.

Microsoft’s entire mobile platform is a mess.  Too many devices, poor implementations on many of those devices, partners rebranding and drastically changing the functionality of the device, etc… The current Windows Mobile 6.1 release is terribly slow on most devices, and developed for user experiences envisioned 10+ years ago.  Windows Mobile 7 which was initially scheduled to be released in 2009 has been pushed back into 2010.  Because of this Microsoft frantically tried to add some incremental updates to 6.1 by releasing 6.5, which is yet to see any production devices available in the US.  Maybe it’s time for Steven Sinofsky, previously in charge of Office and current President of the Windows Division, to make his mark on the Windows Mobile 7 team. 

*Side note: Sinofsky saved Windows 7 from Vista, he was widely regarded within Microsoft as someone who delivers products and for 7 years he delivered Office products on time and with high levels of customer satisfaction.  With Windows 7, he maintained that same reputation, and delivered an amazing product ahead of schedule.

Once Silverlight is available on the mobile phone Microsoft has to add some fairly important incremental features quickly.  The first being integrated support for sensors, location services, and other similar devices.  The most important being GPS functionality, followed by access to digital cameras, microphones, accelerometers, light sensors, etc… The Silverlight sandbox is a great technological improvement over .NET’s security model, but it is constraining developers from delivery highly integrated apps on a single cohesive platform. 

In Summary

The big 3 in the game each have several large obstacles to tackle, before they are positioned to dominate.  But before one stands out as victor the playing field will approach equality.   Each will have a browser, an operating system and a mobile device to deliver applications through.  They will all be using different development tools, languages, and APIs to deliver those experiences, but the end goal is the same.  The ubiquitous application.

The players are laying down the chips, digging in and preparing for the next great technical war, following the operating system wars of the 80’s, the browser war of the 90’s and mobile device wars of the new millennium.  As independent developers, we act as mercenaries in the upcoming battles helping to acquire market share with the applications and services we chose to deliver, and encouraging our users to embrace the platforms we have chosen to deliver through.  Have you chosen a platform? Why?

Overall, I am anxious for the next generation of applications and where they will go.   The future is a better more connected platform to deliver the applications we depend on now.  But the road won’t be easy and with most battles those that suffer most are the civilians, or in our case the users.  There will have to make choices and with those choices will come unexplained consequences.  All because they are caught in the next futile battle for world supremacy.  

There is a solution though.  It’s one of my favorites and one we have revisited many times, it is a adaptation of David Wheeler’s famous quote, “All problems in computer science can be solved by another level of [abstraction]”.  We need to develop a new SIMPLE standard which allows for RUA type platforms to be easily implemented on different consumer devices, regardless of form factor, operating system or connectivity.  We need to embrace Silverlight, HTML5, and Flash/Flex, and Apples platform of choice as equal first class citizens in the next generation of the browser.  The browser should be the new abstraction layer between the HTTP protocol, the file system, and devices connected or integrated on the local machine.  A standard that allows users to seamlessly view and integrate an application written in Silverlight with one that was developed in objective C designed to run on the Mac.  Such a standard would be a great undertaking, but a necessary one to provide the experience our consumers deserve. 

So, I guess it wasn’t that hard to express some of my less concrete technical thoughts.  Too bad I can’t compile the post and run a few unit tests to ensure it communicates my ideas as intended.  I guess I will have to revert to a simpler mechanism and hope for feedback from others. :)

Posted in Apple, Google, Microsoft, Mobile, Silverlight | 2 Comments »

MSDN Developer Conference

Posted by jheyse on 6th January 2009

The MSDN Developer Conference is just around the corner (see event details below).  The MSDN Developer Conference brings the best of PDC 2008 to Chicago.  The event has 3 different tracks covering Cloud Services, Presentation, and Developer Tools.  The speakers for the events are mostly Microsoft evangelists with several community members.  I am extremely happy to say that I will be one of those community speakers.  I will be co-presenting with Patrick Foley, an Architectural Evangelist with Microsoft on Developing Line of Business Applications in Silverlight.  When not presenting, I will be hanging out around the open spaces area.

Location

Hyatt Regency Chicago
151 East Wacker Drive
Chicago, IL, 60601

Date

January 13th 2009

Register

Posted in Silverlight, Speaking | No Comments »

Silverlight 2 At Last

Posted by jheyse on 14th October 2008

After what seems like forever, Microsoft has released the final bits for Silverlight 2.  The product has come an extremely long way since it’s code name of WPF/E and its formal introduction as Silverlight 1.1 during Mix 07.  I am ecstatic about the concept of Silverlight and the RIA potential it brings developers.  While my professional development roots started with the web, I’ve always felt that HTML & Javascript based applications have always been a kludge.  The stateless, scripted environment built on what started as a linkable document format quickly outgrew it’s original architecture.

Silverlight 2 brings us that green field development experience all developers dream of.  The "I could do this so much better only if I didn’t have to worry about …" feeling we all get when digging into an existing code base.  Now that Microsoft has released the technology it is up to us, the developer community, to start creating best practices around developing on this new technology.  It is looking to be an excellent next year for Rich Internet Application space.

Tim Heuer has an excellent blog post on what you need to get started with Silverlight 2 development.  On a very interesting side note, Eclipse will have support for Silverlight 2… cross browser, cross platform and cross IDE.

Posted in Silverlight, Visual Studio | No Comments »

Line of Business Applications in Silverlight 2

Posted by jheyse on 22nd May 2008

A majority of the Silverlight demos I have seen focus on the graphical features such as gradients, layout and animations.  I’m constantly impressed with eye candy the designers who have taken on the Silverlight space create.  I am not that guy.  My graphical design ineptitude is a only surpassed by my lack of musical aptitude.

My role as an architect and developer is to quickly bring business value to my clients.  This is typically done by automating processes and providing intuitive user interfaces.  Up to now, the easiest platform to accomplish those goals has been WinForms.  WinForms, isn’t the ultimate solution though, you have platform limitations, deployment issues and of course it doesn’t run in the cloud.  So, what’s the answer? There still isn’t, and never will be an ultimate solution, but I believe Silverlight 2 is the best option for rapidly developing a connected rich user interface.

So, why Silverlight for business applications?

  • Cross Platform Support
  • Reuse of existing .NET Business Objects
  • WPF DataBinding, Layout, and Styles
  • No-touch deployment

I recently gave a 70 minute presentation at the IndyCodeCamp on LOB applications in Silverlight 2.  For the presentation I created a simple CRM application which has the following entities: Contact, Phone, & Address.  The entities are stored in a SQL Server database using LINQ-to-SQL for the data access layer.  The entities are exposed to the Silverlight application via WCF services, which with a small hack allow you to share the same Business Objects library between the ASP.NET application which hosts the WCF service and the Silverlight application.  The Silverlight UI is modeled after the Office 2007 contacts screens, kind of boring but again, I’m not that guy.

The Solution

BusinessObjects

The BusinessObjects project holds the C# objects for the entities of the application.  This includes things like the Address, AddressList, Contact, etc…  This is a pretty standard BusinessObjects library with two things to note:

  • DataContact and DataMember attributes are included to allow for WCF communication
  • The project is a Silverlight Library which allows for compilation to a true .NET assembly
  • (see this post for more info)

CRM_Web

The CRM_Web project is the ASP.NET web project which hosts the CRM Silverlight app and the WCF services which provide the data to the client.  When you create a Silverlight 2 app in Visual Studio 2008, this project will automatically be created for you with a directory named ClientBin.  This is the ‘working directory’ for you Silverlight app.  In this directory you will see a file named CRM.xap, think of this as your application exe.  It is the assembly that is executed within the browser on the client side.  In the project you will also see several files in the Services directory, this is the code for the WCF service.

CRM

So, on to the good stuff and a picture is worth a thousand words:

CRMThe entry point for the application is a UserControl, all screens are UserControls, there is no concept of a Form in Silverlight, which has a DataGrid displaying the contacts in the system.  I have limited it to the top 5 because responsiveness was a little slow, I am looking into this and waiting for the DataVirtualization features slated for Silverlight 2 beta 2.

I have simulated Modal windows using the Popup control and a well skinned Dialog control I created.  I am going to be continuing development on the Dialog control to add some of the missing features of a standard modal window.

I am going to cut this blog entry here, but I will go into more detail on some of the more interesting concepts in the demo in later posts.  For now here are the slide deck and demo from the IndyCodeCamp:

Download Solution – CRM.zip

Posted in Silverlight | No Comments »

Multi-linking projects between Silverlight and the Desktop CLR

Posted by jheyse on 14th April 2008

I’ve started digging into Silverlight pretty heavily over the past couple of weeks.  My main interest is in developing Line of Business applications using Silverlight.  I am desperately trying to move beyond HTML, Javascript, and the stateless nature of current web development.  I’ve become fond of WinForms development and even more interested in WPF development, data binding is our friend.

SilverlightReference

One of the main benefits I, and others, have been preaching about Silverlight is the ability to write the same code for both the desktop and the ‘web’ using Silverlight.  Well this is only partially true, the language is identical; the referenced and complied assembly are not.  This is obvious when trying to reference a Silverlight project from a Desktop CLR project.  You will receive the following error: "Silverlight projects can only be referenced by other Silverlight projects".

Now I am a pretty stubborn person, and this just wasn’t acceptable. So I started digging into the matter.  The issue really is nothing more the the IDE saying no. As long as you are only referencing assemblies and using types & methods that exist in both the Silverlight and Desktop frameworks there is no reason this shouldn’t work.  So I started to Live Search… whom I’m kidding I Goggled the issue.  I found a post by Paul Stovell describing how to manually compile a Desktop CLR assembly for use in Silverlight apps.  This was enough to get me started with a few minor tweaks:

1) I believe that it is safer to create a Silverlight Class Library for shared components and references that in your Silverlight and Desktop CLR applications.  The reason for this is that the Silverlight Framework is a subset of the Desktop CLR and it’s very easy to include types & methods which are not part of the Silverlight Framework. 

2) Pre & Post build scripts just don’t cut it for me anymore.  They aren’t dynamic enough, so enter MSBuild. 

So with these two modifications, I tackled the problem. I have created two MSBuild targets files which will compile the Silverlight project against the Desktop CLR.  One is for CSharp, and the other VisualBasic.  I will walk through the CSharp.targets build file as an example. If you would like to read more on MSBuild, I recommend this article by Sayed Hashimi.

The first part of the MSBuild file appends my Build step to the Build order defined within Microsoft.Common.Targets.  I found this tip on the MSBuild blog site.

<PropertyGroup>
  <BuildDependsOn>
    $(BuildDependsOn);
    CompileForFramework
  </BuildDependsOn>
</PropertyGroup>

The next step was to define a custom target to recompile against the DesktopCLR.  I had to modify the Inputs and Outputs so that the Target would run, I did this by moving the IntermediateAssembly form the outputs to the inputs. The decoration for the target looks like this"

<Target Name="CompileForDesktopCLR"
        Inputs="$(MSBuildAllProjects);
              @(Compile);                               
              @(_CoreCompileResourceInputs);
              $(ApplicationIcon);
              $(AssemblyOriginatorKeyFile);
              @(ReferencePath);
              @(CompiledLicenseFile);
              @(EmbeddedDocumentation); 
              $(Win32Resource);
              $(Win32Manifest);
              @(IntermediateAssembly);
              @(CustomAdditionalCompileInputs)"
      Outputs="@(DocFileItem);
               @(_DebugSymbolsIntermediatePath);                
               $(NonExistentFile);
               @(CustomAdditionalCompileOutputs)"
      DependsOnTargets="$(CompileForDesktopCLRDependsOn)">

Next I added a task to create a /bin directory in the shared assembly project.  By default Silverlight Class Libraries get build to the /ClientBin directory. This is accomplished by the following task:

<MakeDir Condition="!Exists(bin)" Directories="bin" />

The last step is to modify the task which calls to the compiler.  Based on Paul’s post the only compiler parameter differences that matter are the referenced dlls and the output path.  I transformed the output assembly and references using the following code:

<Csc  Condition=" '%(_CoreCompileResourceInputs.WithCulture)' != 'true' "
      ...
      OutputAssembly="@(IntermediateAssembly->'bin%(FileName)%(Extension)')"
      ...
      References="@(ReferencePath->'%(FileName)%(Extension)')" />

I have attached the two MSBuild files below.  To uses these files, copy them to your MSBuild/Silverlight directory.  On most machines this will be located at C:Program FilesMSBuildSilverlight2.0.  Next open your solution with the Silverlight Class Library you would like to share.  Right-click the class library and select unload project, then right-click again and select Edit.  Change the line:

<Import Project="$(MSBuildExtensionsPath)MicrosoftSilverlightv2.0Microsoft.Silverlight.CSharp.targets" />

to

<Import Project="$(MSBuildExtensionsPath)MicrosoftSilverlightv2.0Catalyst.Silverlight.CSharp.targets" />

Right-click on your class library again and select Reload Project.  If the csproj file is still open in edit mode you will be prompted to close it, select Yes. Next you will be show a Security Warning that states that the project has been customized and could present a security risk.  Select Load project normally, you will be prompted with this warning everytime you open the solution unless you add the path of the targets file to the registry. Here is an excerpt from the MSDN site:

Non-standard Import Elements

A list of standard .targets files is stored in the registry at HKEY_LOCALMACHINESoftwareMicrosoftVisualStudio8.0MSBuildSafeImports. If a project file imports a .targets file that is not stored in the registry, it is determined to be a potential security risk.

Posted in .NET, Silverlight | 1 Comment »

Indy Code Camp 2008

Posted by admin on 1st April 2008

I am presenting at the Indy Code Camp on April 26th, 2008.  I am pretty excited about the opportunity to begin speaking on .NET topics.  Community involvement is something I have wanted to do for a while, and I am finally in a position where I believe I have some thing to bring to the table and the time to do so.  Catalyst has been supporting my community involvement and it has become one of my responsibilities as a Senior Solution Architect.

The Indy Code Camp is being hosted by Aaron Lerch, who has a great blog at http://weblogs.asp.net/aaronlerch/default.aspx.

Location

The Gene B. Glick Junior Achievement
Education Center
7435 North Keystone Ave
Indianapolis, IN 46240

Date & Time:

Saturday, April 26, 2008
8:30 AM – 5:30 PM

Map image

[Woohoo: I got to use the LiveWriter Insert Map Plugin...]

Registration is free: http://www.indycodecamp.org/Register/tabid/424/Default.aspx

My Topics

Core: An Aspect Oriented Business Objects Framework
Learn about aspect-oriented design patterns and how they can be used to quickly add common functionality to your business objects. Aspect-oriented programming allows for the separation of true business logic and the code written allowing interaction with user interfaces. The Core framework is a generation model that dynamically adds common services, such as logging, auditing, persistence, and security to business objects. Aspects, or behaviors, are requested using attributes or configuration files which allows services to be included only where necessary eliminating overly bloated objects and tailored for the environment into which the object is loaded.

Line of Business Applications in Silverlight 2.0
Learn about Silverlight 2.0 and how it can be used to rapidly create feature rich line of business applications. Most Silverlight demos focus on the visual features and pass over binding and data manipulation. While, most developers do not create applications with animations and richly designed user interfaces, Silverlight is still a viable option for line of business application development. Learn how and why Silverlight 2.0 will change the way you write code while walking through the development of a simple CRM solution.

I am looking forward to this event, and hope that you can make it.  If not all presentation materials will be made available on my blog and the Indy Code Camp website.

Posted in Silverlight, Speaking | No Comments »