Saturday, November 14, 2009

Web application load testing: My interview with LoadStorm

Scott Price, a founder of LoadStorm, recently interviewed me about my thoughts on web application load testing. The interview can be seen here.

Saturday, October 31, 2009

Come Learn SketchFlow!

On Saturday, November 7, I'll be presenting an introduction to SketchFlow at the Central Maryland Association of .NET Professionals (CMAP) Code Camp in Columbia, Maryland.

A bit more info on my talk:
Microsoft's Expression Blend 3 has a baked-in tool called SketchFlow, targeted directly at prototyping your WPF and Silverlight applications. In this talk, I'll walk through building a prototype and exercising several SketchFlow features available out-of-the-box. I'll also show how easy it is to distribute a prototype and get back annotated feedback from your reviewers.

A bit more info about the code camp (from cmapcodecamp.org): The Code Camp will run from 8:30am - 5:30pm with 20-25 awesome sessions covering a wide range of database, software and portal development topics. It's totally free. No gimmicks. No sales pitches. Enjoy breakfast and lunch at no charge while you mingle with your peers. To register for this event, visit here.



For even more info, visit http://www.cmapcodecamp.org/.

Saturday, October 10, 2009

NoVa Code Camp - SketchFlow presentation materials

Today I presented an introduction to SketchFlow at the Northern Virginia Code Camp (http://www.novacodecamp.org/). Thanks to those who attended my session!

Here are the presentation materials.



Some takeaways we discussed:
  • SketchFlow is not just for WPF and Silverlight prototyping! While it certainly fits well with a WPF/Silverlight project because of the consistent toolset (using Blend for both prototyping and "real" form development), there's nothing stopping you from prototyping a WinForms or asp.net application.
  • SketchFlow has a built-in feedback and markup mechanism (for the reviewers), and annotations (for the prototype author)
  • SketchFlow provides a screen navigation map, navigation links, and animation links. The latter allows you to provide "what-if" simulated user actions without actually wiring these animations up to a specific UI element. This is very useful to show alternate behaviors for a given action - recall the demo I showed with PassEmployeeAnimation and FailEmployeeAnimation.
  • SketchFlow projects are simple to build and deploy. Silverlight deployment is easier than WPF deployment: just copy your packaged prototype to a website virtual directory, as we saw today on my laptop at http://localhost:9999/)
  • SketchFlow helps remove the distraction of pixel-peepers who get distracted by exact look-n-feel of production-style user controls and graphics.
  • You can work with your prototype screens just like any other XAML form from a Silverlight or WPF app: you can easily view the XAML and make changes to things like a listbox DataTemplate (as I demonstrated with the Interview Question listbox).
  • Last, but not least: Since there's no real code behind the prototype, you won't get stuck in the prototype-gets-turned-into-a-real-app trap.
I'll leave you with one final super-cool tidbit: After loading up the demo prototype, go to the File menu and choose Export to Microsoft Word...   This feature builds a document for you complete with table of contents, screens, component screens, and navigation map. I generated Word output from today's demo and put it online along with the other demo files.

Wednesday, October 7, 2009

Richmond Code Camp - A look back

Over the past year, I've been getting more involved in the software development user community. I've become an active member and presenter at the Rockville .NET user group, presented at Microsoft TechDays 2008, and presented a few topics at the Northern Virginia Code Camp, including *shameless plug* an upcoming introduction to SketchFlow this Saturday, Oct. 10.

A few days ago, I attended the Richmond Code Camp, but as an attendee instead of a presenter. Though I'm still kicking myself for not signing up to speak there, I must admit that the Richmond Code Camp was a very valuable experience to me. In case you're on the fence about attending a Code Camp in your area, let me share a few of my takeaways and (possibly) sway your decision.

For the community, by the community
Code Camps are free for attendees. And the content is presented by volunteers. At RCC, speaker experience varied from first-timer to seasoned MVP. Some were local, some came from hundreds of miles away. Some showed slides, some cranked code. Regardless, these presenters took time to build some great learning material, posted samples on their blogs, and made themselves available for Q&A during (and even after) their sessions.

Networking
If you've been trying to meet some people who are knowledgeable (or experts) in a particular area, Code Camps are great for that. At RCC, there were experts in so many area: XNA, presentation patterns, .NET memory management, CLR and DLR inner workings, LINQ and expression trees, ORM, git... the list goes on and on. It was very easy to meet people, exchange contact info (twitter seemed to be the most popular way), find out about user groups, even inquire about possible career opportunities. I'm now following a slew of people I met at RCC, and it's great seeing the contributions they make to the developer community.

Not just for beginners
You might think Code Camps are more beginner-oriented. While there are beginner sessions (many, in fact), there are definitely advanced topics as well. At RCC, some of the more advanced topics covered expression trees and in-memory lambda compilation; C# garbage collection algorithms and performance issues; app dev with XML databases; and Cloud Computing with Azure, just to name a few.

Looking back
When I signed up for RCC, I was content just being an attendee. As soon as I showed up, though, I was kicking myself for not preparing a talk! This was a great group of people, and there was definitely a level of excitement buzzing through the halls (and on Twitter - just check out #RicCC). This was a great venue for sharing.

The Fall Season of Code Camps is upon us. Several are coming up soon, including Philadelpha PA, Charlotte NC, Columbia MD, and Reston VA just to name a few. If you have the time, I urge you to visit one, either as an attendee or as a presenter. If you've ever wanted to do a tech talk, but find the crowds intimidating, Code Camps are very relaxed and casual, with sometimes no more than 10-15 people in a classroom. And... people tend to be very understanding if things don't go exactly to plan (projector woes, lost slides, crashing code... "it" happens...).

More info
To find out about the Code Camps and user group meetings in your area, check out Community Megaphone, a great resource built by G. Andrew Duthie, a Microsoft Developer Evangelist in the Northern Virginia area.

Did I sway you?

Thursday, September 17, 2009

Silverlight Firestarter is online now

If you're interested in learning about Silverlight 3, it's being streamed live right now (here).
The archived presentation will be available online in about a week.
Slides are available here.

Presenter pages:

Thursday, September 10, 2009

Upcoming talk: Intro to SketchFlow

On October 14, I'll be presenting an intro to SketchFlow, the UI prototyping tool built into Microsoft Expression Blend 3.0. The talk will be at the monthly Rockville .NET User Group meeting in Rockville, MD. See http://www.rocknug.org/ for more info and directions.

Stick around afterward for Q&A, plenty of pizza, and an ASP.NET 4.0 talk by Kevin Jones, a local Microsoft MVP.

Wednesday, August 12, 2009

RockNUG materials: Intro to WPF

For those of you that attended my WPF talk in July at RockNUG, the demos and slide deck are on my shared SkyDrive:


I also uploaded the WPF-based snippets tool that I was using, along with the c# snippets that I applied to the demo code. It's pretty easy to create your own snippets as well - the instructions are bundled in the zip file.

Wednesday, July 22, 2009

Windows 7 Availability Summary

In case you're dying to get your hands on the upcoming Windows 7, the official availability schedule is now published. It can't be purchased until October 22, but if you're a Microsoft partner or software developer, you'll be able to get it much earlier.

UPDATE: Both Windows 7 and Windows 2008 R2 have officially RTM'd.

  • Windows 7 RTM announcement here
  • Windows 2008 R2 RTM announcement here.

Here's a chronological summary, which I originally posted here:

  • Two days after official RTM: OEMs
  • August 6: Downloadable for ISVs, IHV's, TechNet subscribers, MSDN subscribers
  • August 7: Downloadable for Volume Licence with Software Assurance (English only)
  • August 16: Downloadable for Partner Program Gold / Certified members (English-only)
  • August 23: Downloadable for Action Pack subscribers (English Only)
  • September 1: Purchasing for Volume License without Software Assurance (no mention of specific language availability)
  • By October 1: Downloadable for Partner Program Gold / Certified members, Action Pack subscribers, TechNet subscribers, MSDN subscribers (remaining languages)
  • October 22: Purchasing at retail locations

Tuesday, July 21, 2009

Azure SDK July CTP - Multiple web and worker roles

For those of you playing around with Microsoft's cloud computing platform (Azure), the latest community technology preview of the SDK went out today. This comes only 2 weeks after the Azure platform was upgraded (back on July 7), and the SDK now supports deployment of multiple web roles and worker roles within a single cloud service.

I just finished writing up details of the new cloud service creation wizard on the RDA Architecture blog. You can see that here.

The Microsoft Azure team published a feature summary and download link here.

Wednesday, July 15, 2009

Fireworks 2009

Just a bit of fun - here's a set of fireworks I shot on the 4th. These were taken in Gaithersburg, MD, at the Montgomery County Fairgrounds.

Friday, July 10, 2009

SpiderOak saves the day in unexpected way

Ok, I'll admit it - I'm a computer geek. After over 20 years in the industry, I still go gaga over the Next New Toy, regardless whether it's software or hardware. So, of course, I tas totally stoked last week when I finally broke down and purchased an offsite storage solution.

I'm sure everyone has an opinion on the best solution, but for my needs and my reasons, I bought SpiderOak. So far, it's been extremely easy to work with, across both Mac and Windows laptops and desktops. I found out that a single account supports all of my computers, as long as I don't exceed my storage allocation, and this has already come in very handy.

But, as I'm not affiliated with SpiderOak an any way, I'm not rambling to convince you to buy this product (although I'm guessing you'd greatly benefit from it). No, I'm here to pat myself on the back for finding an unintended use of this backup tool, one which helped considerably this morning.

I'm currently 200 miles from home, in a remote campsite (with a laptop and data card, of course). This morning, the family and I treked out to one of these underground caverns. I, being the family photog, had chewed through all but one memory card during our vacation. I believe a 4-leter word might have danced across my lips as I noticed that I hadn't yet formatted the data card. This is when doubt set in - had I copied these pictures to my Mac yet? Of course! Most probably! I doubt I didn't! Um, I did, didn't I???

It's not like I could call someone and have them go to my house and check. This would require 1) finding someone available, 2) giving that person my Mac password, and 3) walking someone through the steps of finding my files. This was not an enticing solution.

It was at that moment that I had my back-patting moment. I ran to the back of the car and fired up the laptop (yes, I dragged along, for fear of leaving it at the campsite). The family groaned in unison, but I convinced them to give me a few quick minutes to "check something," and to go find something fun in the gift shop (in the end, this suggestion cost me dearly, but that's another story).

After an agonizing 3 minutes, Vista was up, the data card was connected, and I was surfed into spideroak.com. A quick login later, and I was staring at my offsite file tree. A few more clicks, and I was all smiles. There, sitting in front of me, was a big fat file listing with all of my photos from my very last data card. Quick shutdown, quick in-camara card format, and quick trip to the gift shop (I was too late to thwart cheesy-gift-shop purchases), and we were off to the caverns, camera locked-n-loaded.

So: Kudos to SpiderOak for an easy-to-use tool that works just as advertised, with a very speedy and easy-to-navigate web interface. And, thanks for providing the bonus feature of allowing me to simply check for the existence of a set of files to ensure that I wasn't permanently deleting the only copy of my data.

Time to get back to vacation - the campfire is roaring and the back of my LCD is getting quite toasty. Good thing my laptop is backed up...

Tuesday, July 7, 2009

Flip4Mac 2.2.3.7 fixes WMV glitches

While being a hardcore Microsoft .NET developer, I've been working on a Mac Pro for the past 15 months as my primary workstation. I've found a great balance, working with OSX as my core operating system and Vista under VMWare Fusion for my Windows development. My biggest gripe so far has been the less-than-stellar support for WMV, which is video encoded with Microsoft's coding processor.

Most videos from Microsoft conferences and how-to's are WMV-encoded. I can't watch them smoothly in a virtual machine, so I'm usually watching these on my laptop. I discovered Telestream's Flip4Mac last year, which allows the QuickTime player to play WMV-encoded video. This mostly works, but for some videos, the rendering becomes chunky or unreadable at times.

Today, Flip4Mac updated itself to version 2.2.3.7. This version seems to have finally fixed the chunky/unreadable video rendering issues. I went back to several videos that consistently failed to render, and they're all playing fine. For example, most of the videos at endpoint.tv had trouble rendering (for example, Consuming REST Services with HttpClient). They play fine now.

So if you're on a Mac and need to view WMV, I highly recommend Flip4Mac. Nicely done, Telestream!

Thursday, July 2, 2009

Upcoming talk July 8: Intro to WPF

Next week (July 8), I'm presenting an intro to WPF at the Rockville .NET User Group (directions and info at www.rocknug.org). Here's the synopsis of the talk:

Yes, WPF lets you do some cool things with animation, but it is also a platform for building real world applications. This presentation will start in shallow end of WPF basics and then dive deeper into architecture. I will cover the following topics:

  • Why move from WinForms to WPF? Pros vs. (almost no) con's.
  • WPF architecture overview: what to know, what to embrace, etc.
  • Pattern focus: ViewModel
  • WPF vs. Silverlight (strictly from a feature perspective): What advantages and disadvantages are there?
  • Introduction to CompositeWPF (this one goes to 11).

Here's the schedule:

  • 6:30-7:00 - n00b Presentation: Getting Generic by Dean Fiala
  • 7:00-7:30 - Pizza/Announcements
  • 7:30-9:00 - Featured Presentation: WPF (me)

Thursday, June 25, 2009

VMWare Fusion: Power-cycling a VM

For those who use VMWare Fusion (which is the Mac version of VMWare's virtual machine engine), I wanted to pass along this quick tip.

Every so often, one of my Vista VMs locks up on me. Typically it's during shutdown, but this morning it was actually during bootup. The normal Virtual Machine menu options Shut Down Guest and Restart Guest don't help at this point, because those are equivalent to clicking the Windows Start menu and selecting Shut down or Restart, and with Windows already locked up, that action doesn't do anything. And suspending the VM doesn't help, because when the VM's state is restored, so is its "locked up" condition.

All I wanted was a way to power-cycle my VM: force a shutdown just like pulling the plug. I finally discovered how to do this: After selecting the Virtual Machine menu, hold down the Option key. This changes two menu items:
  • Shutdown Guest becomes Power Off. This is equivalent to yanking the power cord.
  • Restart Guest becomes Reset. This is equivalent to yanking the power cord, plugging it back in, and restarting the machine.

Thursday, June 18, 2009

Cloud Computing User Group 6/18

I'll be in Reston, VA this evening for the Cloud Computing User Group. Tonight's presentation is about .NET Services, by Damon Squires of RDA.

Info, signup and address here: https://www.clicktoattend.com/invitation.aspx?code=138684

Friday, May 22, 2009

NoVa Code Camp Saturday!


It's finally here - this Saturday, starting at 8am, is the Northern Virginia Code Camp (www.novacodecamp.org). Last I heard, registration is around 250 attendees.

I just double-checked the schedule. My session, Intro to Composite Frameworks with Prism (now named CompositeWPF), is at 10:15.

See the full schedule here.

Wednesday, May 20, 2009

ARCast.TV Interview: Architecting the UI to Improve Testability

A while back, I spoke with Zhiming Xue (Dr. Z), a Microsoft Architecture Evangelist, about improving UI testability. This interview is now available on ARCast. From the synopsis:

"In this interview,David Makogon, senior consultant of RDA, discusses how to architect user interface code to improve testability. A common issue associated with testing code that is tightly tied to user interface (UI) such as a button click event is that when a user interface is modified, the underlying code has to be re-tested. By decoupling the UI code from core programming logic and behavior through use of supervising controllers and views -- a modified Model View Controller (MVC) design pattern that is well explained by Martin Fowler, the need to re-testing the code of the programming logic and behavior is greatly reduced and even eliminated."

Thursday, April 30, 2009

Surviving ATL

This week, I found myself in Atlanta to work with a new client. As this was my first time flying into ATL, I guess I didn't get the memo about how to navigate smoothly through the airport and rental car process. While I sit here waiting for my plane to board, let me offer a few tidbits of wisdom, so that other travelers may avoid some frustrations. If nothing else, read my blurb on airport security…

Take the train

The terminals are connected by light-rail train. If you’re on an airline such as AirTran (which I’m on), you’re likely to end up in Gate C or D (the last one being E). I’m guessing it’s close to a mile to walk to baggage claim and ground transportation. Yes, there are people-mover ramps, but if you’re not up for the walk, do yourself a favor and hop on board for a quick ride.

Rental car – bypass the lines

Ah, the luxury of Avis Preferred. I finally made it to the main area of ATL and saw the Avis counter. I figured I could finagle my way into a car upgrade. Not a chance… I think the saying “Have a slow day…” applies here. Dozens on line, and the agents had no sense of urgency at all. Take my advice: If you’re Avis Preferred (or Insert-your-favorite-rental-company Insert-your-favorite-Special-Program), head straight for the bus. From what I can tell, the bus only comes by every 10-15 minutes, so no dilly-dallying.

Enjoy Atlanta

I can’t suggest much, but I highly recommend Pappadeaux Seafood Restaurant.

Car rental return

If you’re returning a rental car, be sure your on-file credit card on your rental account is the one you plan on using. This makes the return process painless – they scan the car, inspect the car, print a receipt – DONE. I, on the other hand, needed to switch cards. BIG mistake, as now I had to head to the little Avis office and wait on line. Only 6 people in front of me, but it took about 30 minutes. When it was finally my turn, I stared in utter amazement as the agent started typing, one slow key at a time, my entire rental itinerary. I was going to comment about missing my flight, but I was too afraid I’d cause her to fat-finger a key and have to start over.

Airport security

Ok, this one is a true gem (thanks to my co-worker Michael Sparks for tipping me off to this). Assuming you’re already checked in,  head straight to the North Terminal. Go to the far-left side of the terminal and follow the signs for the security checkpoint. There, tucked away to the left, is a set of check-in lanes that typically has no crowd (or at least much less than the other gates). The airport was very crowded when I arrived, but I was through security in just a few minutes.

Safe travels!

Thursday, April 23, 2009

Cloud Computing user group

In case any of you have free time tonight in the NoVa area - the Cloud Computing user group is meeting at the Microsoft office in Reston, VA. Info and registration here.

Heading over there now...

Wednesday, April 22, 2009

Intro to Composite App Frameworks with Prism

On May 23, I'll be speaking at the NoVa Code Camp. I'll be giving a talk on composite application frameworks, using Microsoft's Composite Application Guidance for WPF and Silverlight (previously known as Prism).

Registration is now open. The schedule is up as well.

Tuesday, April 21, 2009

Microsoft Developer Network on Facebook

Microsoft Developer Network (MSDN) now has a Silverlight 2 application that aggregates blogs, news, and videos for the east coast. The app, "MSDN East Coast News," is here.

Details about the app and its development are on Pete Brown's blog. Pete talks about some of the challenges integrating an app into Facebook's environment, with its moving-target API.

Saturday, March 28, 2009

Consultants: Listen up!

I'm a mild-mannered software consultant. My day job consists of guidance, architecture, coding, automated unit testing, coffee consumption: All the fun stuff I love about software development. As if that didn't consume enough of my precious little time on earth, I have this hobby, a thing called photography. Over the past several years, it's evolved into a passion, then an obsession, and finally the potential for some fun side-work.

Up until now, I was content shooting my kids' sporting events (the baseball/soccer/volleyball parents do their share to cover my web hosting costs). Over the past two years, I [unofficially] shot two weddings (my biased opinion is that I out-shot the paid pro, but opinions are like...). Today was a big deal: an opportunity to score a real wedding shoot. Ok, maybe not "score," but at least deliver a compelling proposal.

As we're preparing our proposal, my co-photog and I found out (just a few short hours before our meeting) that the bride wants the "digital negatives." In the photography business, giving away negatives (whether film or digital) is typically taboo: once you give away the original source to an image, the new owner may cut the photog totally out of the loop. This impacts potential revenue as well as control of the photo's usage. So our knee-jerk reaction was something like No Way! But... we figured we could offer up at least some type of compromise: maybe charge a bunch for the digital files, or even agree to handing over a subset of the images but skip the book-layout tasks, saving a ton of labor.

So on we went to meet the bride and groom today, as well as the groom's dad. With a bit of trepidation.

As the bride flipped through our sample images and books, she kept revealing more and more of what she liked, didn't like, loved... along with some hidden gems: how she likes the casual, candid shots over formal stuff, how there are some family squabbles between specific people that shouldn't be photographed together...

Most importantly, we found out why she wanted the digital images: for email, desktop background, screensaver, and her digital photo frame. In fact, she despises the chore of printing photos. And until she saw our sample albums, she didn't even want to purchase any prints (now she's totally jazzed about it).

The moment we realized this, we were able to turn this into something positve: we scrawled it right on the contract: Free web-ready and desktop-ready digital images with every print ordered. The bride was happy. The groom was happy. The dad was happy. And the photog's? Score! The icing on the cake? They admitted that no other photographers interviewed would even consider parting with digital copies. Double-score!

So... time to circle back, and somehow relate this to software consulting. Between the original customer requirements (a phone call the likes of "Hey David - these folks want us to shoot their wedding!"), and initial statement of work, a new requirement popped up at the last minute. A poorly-defined requirement at that: a simple one-liner with no context. But that one-liner triggered an almost-catastrophic set of potential responses:

  • No way! (definitely would have killed the proposal)
  • Sure, but you're gonna pay through the nose! (good chance that would have killed the proposal)
  • You must not know anything about the photography business! (nice way to insult the customer's intelligence, and kill the proposal)

Do any of those responses sound similar to something you might have considered blurting out at some point in your past? C'mon, be honest...

Ok, so we avoided reacting, and instead simply mentioned this new requirement and asked her to give us a bit more information about the need for digital copies. And that's when the "why" behind the "what" surfaced. A very simple, sensible requirement. One that we could painlessly provide a solution for, as it had little impact on our workload and no significant risk to the contract's cost structure or the project itself.

In the end, we were able to deliver a proposal that directly met the customer's needs, simply because we asked questions and listened.

After all this rambling, I guess I'm just trying to remind myself (and others, if they've gotten this far) that listening and asking questions is such an important part of the requirements process. And, after reading the body language of the client, I realize it goes much deeper than that. By being able to ask the right questions, listen to the nuances and details of the responses, and then propose a sensible solution tailored for the customer, I believe this is where true business relationships are formed, and trust is established.

Were you listening???

Wednesday, March 18, 2009

MIX 09 Keynote Recap

Today's MIX 09 Keynote in Las Vegas was hosted by Scott Guthrie. As much as I had hoped to attend, my Vegas trip didn't materialize. However, I watched the live stream and, to be honest, I was blown away by the sheer number of announcements. If you followed my tweets, you probably have a good idea of all the technical goodness. Here's a consolidated summary, with links to the various downloads.

Expression Web 3
  • SuperPreview feature – view rendering across all browser types and versions. Split-screen designer, fullscreen-mode, allows comparison of “baseline” browser vew and alternative browser view side-by-side. Also “overlay” mode – stacks two browser views, to help identify differences.
  • Supports both local browsers and cloud service, to allow for rendering on browsers not installed locally (e.g. Safari for Mac)
  • Easy to compare multiple versions of IE without having each browser version installed
  • Beta available right now: http://www.microsoft.com/expression/try-it/blendpreview.aspx
ASP.NET 4.0
  • Web forms: more control over viewstate, html markup, improvements in data binding and url routing
  • Improvements to Ajax stack and jQuery support
  • Client–side templates and databinding, along with additional REST support
  • Velocity caching engine
Visual Studio 2010
  • Improved JavaScript, Ajax, jQuery scripting support, including intelliSense
  • SharePoint editing/debugging within Visual Studio IDE
  • Publishing and deployment improvements, including database deployment
  • Still a CTP - get the latest here
IIS7
  • Ten new extensions available, including secure FTP, WebDAV, app request routing
  • Grab the new extensions here.
Microsoft Web Platform Installer
  • Provides single source for all components required for Web platform installation.
  • Version 2 (beta) already includes support for just-released ASP.NET MVC 1.0.
  • Grab the latest v2 beta here.
Microsoft Web App Gallery
  • Free apps to download and use
  • Anyone can add an app to the gallery
  • Visit the gallery here.
Commerce Server 2009
  • Available now.
  • View detailed information here.
Azure Services Platform
  • FastCGI support (allows 3rd-party programming languages like php)
  • .NET full trust
  • Raw ADO.NET support
  • View details here.
Microsoft BizSpark
  • New program designed to help startup companies get up and running quickly
  • Includes software and licensing support for 3-year period
  • Includes marketing, business development opportunities, hosting partners
  • Free to qualifying startups
  • Read details here.
  • Demo performed by startup StackOverflow.com, a BizSpark member
Silverlight V3
  • GPU acceleration support (on Windows and Mac)
  • New CODEC support (h.264, aac, MPEG-4)
  • Raw bitstream API
  • Improved logging for media analytics
  • Perspective 3D
  • Bitmap / pixel API
  • Deep linking, navigation page framework (for interfacing with browser navigation)
  • ClearType support
  • Multi-touch support
  • Library caching (download and cache to local system)
  • Data binding improvements
  • Multi-tier data (support for data context updates in Silverlight pushing updates to the server)
  • Binary XML
  • Out-of-browser experience - Silverlight app runs like a desktop app, yet still within a sandbox (and still dependent only on the Silverlight runtime bits). Supported on both Windows and Mac
  • Offline awareness (with network status change events)
  • V3 download is apparently 40K less than V2 download!
  • Get the latest beta here. Warning: once you install the Beta tools, you now have a Silverlight 3-only development environment, so maybe go with a VPC...
IIS Media Services
  • New product, available today.
  • Includes live streaming (in beta, available today)
  • Edge-caching. Akamai has already announced services to support this
  • For more info and installation details, go here.
Expression Blend 3
  • Includes new SketchFlow tool offering sketching/prototyping, complete with transitions, collaboration tool (free SketchFlow player), all built into Blend.
  • Version control support
  • Xaml IntelliSense
  • Photoshop PSD import, including preservation of layers (as well as the ability to selectively toggle layers)
  • Grab the preview here.

MIX 09 Updates

I'll be publishing highlights from the MIX 09 keynote today. In the meantime, you can follow my twitter feed .

Wednesday, February 18, 2009

Windows Presentation Foundation: New composite app framework

It's an exciting day for WPF (ok, for me at least). Today, The new Composite Application Guidance for WPF was released (Feb 2009). You can grab it here: http://msdn.microsoft.com/en-us/library/dd458809.aspx

So what is this? Basically, if you're building any type of UI-driven application, you have a few choices for wiring up your "View" to the underlying logic driving the view. Here are two:
  • Inline. This is where you jam all your code in the "code-behind." For instance: the user clicks a button, that button has a button_clicked() event handler, and you shove a bunch of code right into that event handler.
  • Model-View-Controller (or some derivative). This is where the "view" is limited to the UI portion of your app - buttons, boxes, etc. In the code-behind, you make a call to a "controller," notifying it that something happened (like HEY - THE USER CLICKED ME, THE SAVE BUTTON!!!). Then it's up to the controller to ask the view for stuff (like the info the user typed in) and save it to the model (maybe a database or something).
So the first step in cleaning up all those fat, monolithic apps of yours is moving from an inline model to an MVC model. Now... let's take it one step further: What happens when you start adding functionality to this big app, but the new functionality is relatively independent of the existing functionality? For instance, what if you have an order entry app, but you want the ability to view reports related to ordering, which has nothing to do with entry? And what if you want to build these modules in isolation, and test in isolation? And what if you have a whole bunch of these modules, and you'd like to pick-n-choose which modules to load (or not load), maybe depending on which user is logged into the application?

This is where the Composite Application framework comes into play. It has an entire infrastructure for managing these modules in a loosely coupled way. A long time ago (a few years ago), Microsoft's Patterns and Practices team published a composite framework called the Smart Client Software Factory. This was for WinForms applications. Eventually a Web Client Software Factory was published. And now, with the advent of WPF, there's a composite application framework for it, too (though it's not a port - it's pretty much a rewrite). The framework for WPF is codenamed "Prism."

Version 1 was published last summer, and version 2 was published just this morning. I'll be digging into it and following up with another post, once I find some juicy tidbits to write about.

Tuesday, February 17, 2009

Welcome to my strange not-so-new world

Everything seems to be connected online these days. Emails, IM, social networking sites, photo galleries, blogs...I currently blog at rdaarchitecture.blogspot.com, but that's specifically for software architecture and related guidance. here, I can go beyond that and write about other interests as well, especially photography. We'll see how it goes.