Archive for October 29th, 2008

29
Oct

October CINNUG – Silverlight 2

Really informative and engaging CINNUG last night as Matt Casto demo-ed much of his work in Silverlight 2. Of course, with Mike out of town there had to be technical difficulties. We couldn’t get the projector working with Matt’s laptop. With a bit of finageling Tim Apke got Matt setup on his Mac.

A boatload of people attended including Rich Rayburn, Parag, Phil Japikse, Matt Brewer, Joe Wirtley, Nino Benevenuti, Peggy, Maggie Longshore, and Leon Gersing to name a few.

Ryan Cromwell from SDS kicked off the evening once we figured it might take a while to get Matt up and running. Ryan did a quick presentation on the visitor pattern.

Ryan Cromwell - Visitor Pattern

Ryan Cromwell - Visitor Pattern

The bottom line: Don’t muddy entities classes with unrelated logic, get away from single responsibility.

Matt Casto - Silverlight 2

Matt Casto - Silverlight 2

Most of Matt’s presentation was a demo of Silverlight 2, so there isn’t a whole lot to report on. Much of the night we spent modifying XAML and seeing what happens. Yet there were a few nuggets of valuable information.

Silverlight is the Microsoft browser plugin usually likened to Flash. From a developer perspective, the difference is that Silverlight is based on XAML, a declaritive language, to define UI, where Flash uses other descriptors. Silverlight supports vector graphics to ensure a detailed rendering at any resolution.

The XAML standard supports full 3D. Someone commented that perhaps you could load 3D renderings into XAML designer. A team somewhere is developing a Quake port to Silverlight.

WPF, the superset of Silverlight maybe, has a number of new user controls – announced at PDC – that make developing user interfaces in Silverlight a much less tedious process. When you write your own controls in Silverlight you wind up writing the same code over and over. The addition of Visual State Manager allows a developer to define styles that can then be applied to states. This paradigm reduces the amount of customization necessary for each individual control in the UI. Check out codeplex for details.

Expression Blend is the designer oriented tool for WPF and it contains a storyborad editor.

Parag using Expression Blend

Parag using Expression Blend

Other controls include the treeview, doc manager, view panel, auto complete, and others. Again, the code is available on codeplex.

Is Silverlight ready for the enterprise? What’s the standard technology answer? “It depends.” Some enterprises do WPF work now, so the integration of Silverlight may not be a big issue. A problem with Silverlight is that all the stuff resides in the .xap file, so a change requires a full download to the client. There are ways to split this up, but the problem is not solved yet. Also, printing doesn’t work consistently, or even well, across browsers. A kludgey work-around includes implementing a managed bridge to Javascript where you layout  elements in a div in the page the way you would want it printed out. Crappy, but it’s the best solution at the moment.

Can grids compare to the .NET grids? It depends. Silverlight runs in a mini-framework pared down. You don’t get all the functionality of .NET. Yet, it’s a 4.3MB download, so a tiny footprint.

Microsoft is partnering with Novell to develop Moonlight, a Silverlight for Mono implementation that targets non-Microsoft platforms.

The bottom line? Most IT shops don’t blink at Flash as a requirement, so Silverlight may be a targetable platform.

- Andy

29
Oct

October CinArc – Who’s Responsible for Code Quality

There’s something to be said for smaller groups. Around 10 of us had some great discussion about developing efficient processes to move builds from dev to test to prod and about an architect’s responsibility for code quality. Leon Gersing, Mike Levy, Mike Wood, Maggie Longshore, Nino Benvenuti, and some others talked around the table, fishbowl style, at Max Training in Mason.

A quick note about future meetings. The new date will be the 3rd Thursday of each month as Max is consolidating user groups to Thursday evenings. So check the dates of your favorite group. Chances are the date has changed. CINNUG, by far the largest group to meet at Max, is the only exception as it will keep the 4th Tuesday of the month schedule.

I gotta get some exciting announcements out of the way. The 10/28 CINNUG will feature ineta speaker, Matt Casto, talking about controls in Silverlight 2.0 (yeah, I’m publishing on 10/29 – it was a great presentation, though). The 11/25 CINNUG will be the culmination of the membership drive and you’ll want to be there to hook some awesome swag. We’re giving away an xbox 360, a 1-year subscription to Safari Books online, and 1 MSDN premium subscription valued at $10,000 that includes VSTS. You have to be present to win. You get one entry in the give aways for each meeting you attend and for each new friend that comes with you. So you still have Oct CINNUG, Nov CinArc, and Nov CINNUG to earn entries. Bring some people with you.

November 17th will feature a CINNUG special meeting (and, yes, it counts towards entries in the giveaway) where Microsoft’s Mark Mydland will present on VSTS Tester edition. Mark manages the development and QA teams responsible for Visual Studio Team System for Software Testers, and he’ll take us on a deep dive of what to expect in future releases. 6PM at Max Training.

Other odds-n-ends include the next MSDN event on 11/5 that will cover SQL Server 2008. PCD keynotes will stream live this year. Expect announcements and unveiling of Microsoft’s implementations of cloud computing, Oslo, and distributed computing.

Back to CinArc. Our first topic was the process for moving builds from dev to test to prod efficiently. The notes are in raw form below for those who are interested in following along. I’m way behind on posting, and I didn’t have a lot of time to make it all nice and pretty. You can thank Matt Brewer for a great job on the notes.

Creating/Designing Dev-Test-Prod Environments – Handling the differences (Mike Wood)

Topic Synopsis:

  • How do you architect a solution to ease the transition of code artifacts between dev-test-prod environments?
  • How do you handle the differences between these environments?

I’m already late on getting this out, so here’s a raw dump of the notes.

Creating/Designing Dev-Test-Prod Environments – Handling the differences

Topic Synopsis:

  • How do you architect a solution to ease the transition of code artifacts between dev-test-prod environments?
  • How do you handle the differences between these environments?

Discussion:

  • Are Web Apps the answer? Helped to take five deployment steps down to one
  • How to handle Test and Prod when dealing with outsourced/offshored development shops? Hard to prevent code churn.
  • Is there an inherent policy problem?
  • Try to get as close to a “click-to-deploy” as possible via automation
  • Change management Red Tape – grows over time
    • Find an external partner to help define the process – Helps keep politics to a minimum.
  • There is a perception that Change Management process provides throttling which in turn produces quality. “It takes time to do things right”
  • Communication is key
    • Project Management -> Change Management
    • Processes need to align
  • Projects need to bake in time
  • If following an Agile approach –
    • Start to invite the operations folks to stand up when sprint is 75% complete.
    • This gives them time to start on your infrastructure needs
  • Know how to correctly test before moving environments
  • The solutions architect must act as a “Broker” in the process

Key Conclusions:

· Baking in project time to do the change management function

· Communication with operations

· Involving the right people in the project at the right time

o E.g. Inviting Ops to daily scrums at a certain time in the sprint

Moderators Note: This topic obviously went off course from Mike’s original intent. We talked more about the process of change management slowing down time to market than how to architect system to move across environments easily.

Architects Managing Code Quality

Topic Synopsis:

  • Is Quality a last priority?
  • Where does Quality fit in the software development lifecycle?
  • Quality as defined by Leon: Reducing Cyclomatic Complexity, Following good OO principles (SOLID)
    • It is not just following coding standards

Discussion:

  • Code Reviews with everyone involved
    • Maintain a wiki of the reviews
    • Frequency: once a week starting out, taper off over time to specified intervals – be consistent
  • How do you fight the “If it runs, it’s good enough” mentality?
  • Code review need to be done on everything – including patches
  • There needs to be leads (architects) that are constantly training/retraining devs on the process
  • Book from Parasoft CEO (link needed)
  • Creating a culture of shared responsibility for quality
    • Lean Manufacturing – “Pulling the Rope”
  • Having the proper tooling for a team code review is very important
    • Helps streamline the process
  • Explicitly ranking quality
    • Where does quality fall in the Time – Features – Cost triangle?

Key Conclusions:

· Quality is fostered through a process of code reviews with architects at the lead

· Everyone on the team must be involved review the code

· Collective ownership of code helps to drive quality

Mike had a number of great reads to give away including

The Enterprise and Scrum

I. M. Wright’s Hard Code (Best Practices)

- Andy