September 2005

Monthly Archive

Dallas Developer MakeoverInnerWorkings has teamed with the North Dallas .NET Users Group, SMU, and Microsoft to bring you this special learning event for .NET developers.

Saturday, October 22, 2005
8:30 am - 4:30 pm

SMU @ Legacy Campus
5228 Tennyson Parkway
Suite 103
Building 3
Plano, TX 75024

This session will provide local C# developers with real coding challenges in Visual Studio 2003. Developers will be given direct access to InnerWorkings’ innovative performance capability environment, as presented by our Chief Solution Architect, Claudio Perrone.

Attendees will receive presentations from several quality speakers, access to InnerWorkings Developer, immediate feedback on their coding and solutions, and the chance to win great prizes based on their performance.

In addition, attendees will receive breakfast, lunch, and refreshments courtesy of the event sponsors.

Please visit the North Dallas .NET User Group website to register for this special learning event:

http://www.nddnug.net/

Add this post to: del.icio.us:.NET Developer Makeover digg:.NET Developer Makeover spurl:.NET Developer Makeover simpy:.NET Developer Makeover newsvine:.NET Developer Makeover blinklist:.NET Developer Makeover furl:.NET Developer Makeover reddit:.NET Developer Makeover Y!:.NET Developer Makeover google:.NET Developer Makeover technorati:.NET Developer Makeover stumbleupon:.NET Developer Makeover windowslive:.NET Developer Makeover

.NET Rocks VS2005 TourCarl Franklin & Richard Campbell
20 Cities - Coast to Coast
October 12th - November 10th, 2005

InnerWorkings is a proud sponsor of the .NET Rocks! VS 2005 Road Trip. We’re supporting Carl Franklin and Richard Campbell as they embark on a coast-to-coast journey from Boston to Las Vegas, starting on October 12th and running until November 10th, 2005.

The .NET Rocks! team will be hosting evening events and producing .NET Rocks! shows in the following 20 cities: Boston, Hartford, New York, New Jersey, Philadelphia, Baltimore, Washington DC, Raleigh, Atlanta, Orlando, Nashville, Memphis, Dallas, Houston, Austin, Phoenix, San Diego, Los Angeles, San Francisco for the launch of Visual Studio 2005, and ending up at DevConnections in Las Vegas.

In each city, developers will get a sneak peek at new and exciting elements of Visual Basic 2005 and mobility development in Visual Studio 2005. Look out for post-event interviews with local developers who are doing cool things with .NET 1.1 and the beta of 2.0! There will be lots of giveaways, including .NET Rocks! prizes, sponsor software, and even mobile devices. The .NET Rocks! team will be blogging and podcasting photos and video along the way, delivering a new show online in every city!

XBox 360

As part of our sponsorship, InnerWorkings has teamed with Microsoft to offer Xbox 360 consoles to the top 5 developers on our performance capability leader board. For more information on this exciting contest, please visit the following area of our site:

Win an Xbox 360!

Add this post to: del.icio.us:InnerWorkings Sponsors .NET Rocks! digg:InnerWorkings Sponsors .NET Rocks! spurl:InnerWorkings Sponsors .NET Rocks! simpy:InnerWorkings Sponsors .NET Rocks! newsvine:InnerWorkings Sponsors .NET Rocks! blinklist:InnerWorkings Sponsors .NET Rocks! furl:InnerWorkings Sponsors .NET Rocks! reddit:InnerWorkings Sponsors .NET Rocks! Y!:InnerWorkings Sponsors .NET Rocks! google:InnerWorkings Sponsors .NET Rocks! technorati:InnerWorkings Sponsors .NET Rocks! stumbleupon:InnerWorkings Sponsors .NET Rocks! windowslive:InnerWorkings Sponsors .NET Rocks!

I?m really looking forward to using Quartz, one of the three Expression graphic design tools announced yesterday at the PDC. Quartz is the XHTML/CSS designer, and even the fact that Microsoft would release such a standards-based tool would have been unthinkable not long ago. I think at this stage though (with schema-checking in VS 2005 and the cross-browser Atlas project), it?s fair to say Microsoft is finally embracing web standards and cross-browser compatibility. Quartz provides a completely CSS and semantic markup based designer and uses external CSS stylesheets which are automatically updated when you change the properties of an item.

Most (all?) standards-based web developers are currently forced to use a text editor and constant alt-tabbing to a separate web browser to create their sites, and even though it?s possible to be quite productive this way, it can be pretty painful, and slow. With only a quick demo at the keynote it?s difficult to say how well this will turn out, but for more details check out the Quartz features page.

Add this post to: del.icio.us:PDC05: Expression Quartz digg:PDC05: Expression Quartz spurl:PDC05: Expression Quartz simpy:PDC05: Expression Quartz newsvine:PDC05: Expression Quartz blinklist:PDC05: Expression Quartz furl:PDC05: Expression Quartz reddit:PDC05: Expression Quartz Y!:PDC05: Expression Quartz google:PDC05: Expression Quartz technorati:PDC05: Expression Quartz stumbleupon:PDC05: Expression Quartz windowslive:PDC05: Expression Quartz

The big news for C# developers at PDC has definitely been Language Integrated Query (the LINQ project) and the new features in C# 3.0, and the largest room in the convention centre was packed, with an overflow session scheduled for tomorrow for those that didn?t make it in time.

There?s far too much to describe in a blog post, but the headline features of version 3.0 include lambda expressions, extension methods (a little like mixins in Ruby), anonymous types, and local type inference. A lot of these are designed to support the new LINQ features, which make it possible to write query-like expressions in C# 3.0 or VB9 code. Queries can be run against anything that implements IEnumerable, which means you can query arrays with where clauses, group by, and order the results however you want.

The really great thing is that all of this is strongly-typed ? Anders and his team have managed to take some of the most compelling features of dynamic scripting languages like Ruby and Python and deliver them in C# along with compile-time type checking and IntelliSense.

The syntax takes some getting used to:

Customer[] customers = GetCustomers();
var results = 
   from c in customers
   where c.City == ?London?
   select new { FullName = c.FirstName + ? ? + c.LastName, c.CompanyName }

This little snippet shows a number of things: first there?s the the var keyword, which is not a variant, but rather tells the compiler to infer the type of the results local variable. Writing ?var i = 3? for example, is exactly the same as ?int i = 3?, and this shorthand becomes useful later in the statement.

Most of the rest of the statement is really syntactic sugar for a number of regular method calls. In fact the statement could be written in C# 2.0 as something like:

private class CustSummary { ... }
IEnumerable results = customers
   .Where(delegate(Customer c) { return c.City == ?London? })
   .Select(delegate(Customer c) { 
      return new CustSummary(c.FirstName + ? ? + c.LastName, c.CompanyName)
});

If you haven?t tried out generics and anonymous delegates in C# 2.0, the code above is going to be just as impenetrable as the 3.0 version, and as Anders pointed out, all of the features planned for 3.0 make heavy use of the innovations in the 2.0 release of the CLR. In fact, C# 3.0 does not require a new version of the CLR ? everything works on VS 2005 today once you install the LINQ Customer Technical Preview.

There are a couple of things about this however that are difficult to express in version 2.0. First of all, where did the CustSummary class come from? In fact, CustSummary is an anonymous type, created just to support the statement. It?s a real type, defined in your assembly, and you will have full IntelliSense support for its members, you just can?t refer to it by name since it is generated by the compiler (so it?ll actually be called type0001 or something). This is why we used the var keyword to define the results local ? this way the compiler can define results correctly for us, since it knows the name of the anonymous type.

The other strange thing about the code is the Where and Select methods. Where did they come from? We seem to be calling them on the Customer array, but they aren?t part of the Array class. In fact these are extension methods, which have been added to everything in the current scope that implements IEnumerable, though they aren?t part of the IEnumerable interface. You get to use the extension methods simply by adding a using reference to System.Query, which includes a class that defines the extra methods.

Extension methods are a little scary since they allow you to add methods to any predefined class. By using a special syntax you can define these as static methods in a separate class, but make them available on the class they extend. Want to add a ToTitleCase() method to all strings? No problem. Add ToBase64() to all byte arrays? Easy. Anders demonstrated adding a ToXml method to IEnumerable, which created an XML stream for all arrays, lists and anything else that implements that interface. Powerful stuff, though as he made clear, the potential for abuse is frightening :)

If you want to find out more about these features, the best place to start is the LINQ technical preview, available on the MSDN site. All the source code for the extension methods is included as well, so you can dive straight in and start playing.

Add this post to: del.icio.us:PDC05: Integrated query and C# 3.0 digg:PDC05: Integrated query and C# 3.0 spurl:PDC05: Integrated query and C# 3.0 simpy:PDC05: Integrated query and C# 3.0 newsvine:PDC05: Integrated query and C# 3.0 blinklist:PDC05: Integrated query and C# 3.0 furl:PDC05: Integrated query and C# 3.0 reddit:PDC05: Integrated query and C# 3.0 Y!:PDC05: Integrated query and C# 3.0 google:PDC05: Integrated query and C# 3.0 technorati:PDC05: Integrated query and C# 3.0 stumbleupon:PDC05: Integrated query and C# 3.0 windowslive:PDC05: Integrated query and C# 3.0

After a nice introductory session by Jan Gray, Joe Duffy delivered a much more in depth talk on multithreading issues in .NET. Joe is a PM on the CLR team with responsibility for the System.Threading namespace, so if anyone knows the details on this, he does. He made one interesting point about the double-check locking pattern, which kind of did and kind of didn?t work in 1.1. Double-check locking is an attempt to avoid the overhead of creating a lock by checking a value before entering the lock. The value is then retested inside the lock.

if (instance == null)
{
   lock (creationLock)
   {
      if (instance == null)
         instance  = new Singleton();
   }
}
return instance;

The idea is that, once the instane is created, you never need to use the lock. In theory this is a pretty clever trick, but there?s a problem: modern processors can reorder instructions for performance reasons, which means that some of the assumptions made by the double-check pattern will not always be true. In the singleton example, if there are instructions to execute inside the constructor, instance may be set to a non-null value before the constructor completes, and therefore before the lock is exited. The result of this is that an invalid reference to instance is returned to the caller. For more details on this, read this great post by Chris Brumme.

Processors make various optimizations like these, but for the most part programmers are shielded from this complexity by a memory model defined by the language or runtime which states which optimizations can occur, regardless of what the processor wants to do.

The 1.1 version of the Common Language Infrastructure spec had a relatively weak memory model which did not prevent this specific optimization from taking place, so the double-check pattern was not guaranteed to work. In reality however, the x86 processors (the only ones supported by the offical .NET 1.1 release) don?t reorder instructions in this way, so the double-check pattern did in fact work on that platform.

The good news is that the new 2.0 version of the CLI spec includes a stricter memory model which clears up all this confusion and ensures the double-check pattern will work.

Add this post to: del.icio.us:PDC05: Double-check locking fixed in 2.0 digg:PDC05: Double-check locking fixed in 2.0 spurl:PDC05: Double-check locking fixed in 2.0 simpy:PDC05: Double-check locking fixed in 2.0 newsvine:PDC05: Double-check locking fixed in 2.0 blinklist:PDC05: Double-check locking fixed in 2.0 furl:PDC05: Double-check locking fixed in 2.0 reddit:PDC05: Double-check locking fixed in 2.0 Y!:PDC05: Double-check locking fixed in 2.0 google:PDC05: Double-check locking fixed in 2.0 technorati:PDC05: Double-check locking fixed in 2.0 stumbleupon:PDC05: Double-check locking fixed in 2.0 windowslive:PDC05: Double-check locking fixed in 2.0

Phew! The first day at the PDC was really busy, starting with a long (very long) double-keynote from Bill Gates and Jim Allchin. I guess it?s what you expect with these events, but the speakers themselves weren?t particularly engaging, but the demos really made up for it.

First up was a combined Vista and Office 12 demo ? Microsoft are really keen to promote these together, hoping corporate customers will look at buying both together as part of a long overdue upgrade cycle, and they are the focus of a lot of the sessions here. Visual Studio 2005 in comparison is assumed to be the platform of choice, even though it hasn?t even been released yet.

The Vista demo was impressive, with lots of nice eye candy and a few changes since Beta 1 was released. Beta 2 is a few months off it seems, but the sidebar is back, RSS is everywhere, search is everywhere and IE has of course finally embraced tabs. There?s actually a really nice feature in IE7 that shows the scaled contents of all open tabs in a window, making it easy to navigate between them or close those you no longer need. If you have the habit as I do of steadily building up a collection of tabs over a long browsing session, this is going to be really useful.

Of course a lot of these features aren?t new, at least when you consider non-Microsoft software. Search everywhere looks exactly like Apple?s spotlight technology, as does a new app switching feature (alt-tab now shows live previews of all open windows, a lot like Expos?). Where Microsoft excels though, is improving work others have started. The film producer Julia Philips had a saying, ?If you can?t be best, be first. If you can?t be first, be best,? which seems pretty appropriate.

Having heard some positive things about Office 12 on various blogs before the conference, I wasn?t sure what to expect. Office has had more features than sense for the past 8 years, and Office 97 was the last upgrade to really mean anything. The new version (due next summer I think) has loads of new features of course, but much more important is the new UI, which tries to make all that power more accessible.

Seven or eight tabs now appear where the old toolbars were, and each tab has a number of groups of three or four buttons. It?s a little hard to describe, but it really looks a lot like the old interface, except the grouping of related items really makes a big difference. By reducing the number of items the user has to choose between, it becomes easier to conceptualize and navigate around a complex interface. The hierarchy allows you to ignore anything you?re not interested in and go directly to what you need. This is a pretty common UI approach ? my running copy of iTunes for example, has fourteen buttons on the main window, but you wouldn?t realise it at first. There?s one section to move between tracks, another to search, another to manage playlists, and so on. It seems a small change, but it makes a big difference in managing the complexity of features that modern software offers. Office 12 also uses larger icons for key buttons which makes them easier to distinguish and provides mini ?landmarks? to use when scanning a toolbar with a number of button groups.

Overall, there?s a real feeling of the quality of these products, even though they haven?t left (or for Office even reached) an initial beta. The first public release of Office will be in a few months time, and I?ll definitely be getting a copy and having a closer look.

Add this post to: del.icio.us:PDC05: Vista and Office 12 digg:PDC05: Vista and Office 12 spurl:PDC05: Vista and Office 12 simpy:PDC05: Vista and Office 12 newsvine:PDC05: Vista and Office 12 blinklist:PDC05: Vista and Office 12 furl:PDC05: Vista and Office 12 reddit:PDC05: Vista and Office 12 Y!:PDC05: Vista and Office 12 google:PDC05: Vista and Office 12 technorati:PDC05: Vista and Office 12 stumbleupon:PDC05: Vista and Office 12 windowslive:PDC05: Vista and Office 12

Dublin, Ireland & Pleasanton, Calif. - September 13, 2005 - InnerWorkings today announced its plans to integrate InnerWorkings Developer, its flagship product for enhancing developer performance capabilities, with Microsoft Visual Studio 2005. The integration will allow developers using InnerWorkings’ solutions to access key learning functionality within Visual Studio, enabling them to spend more time solving coding challenges directly in the integrated development environment (IDE).

InnerWorkings’ integration with Visual Studio 2005 will be achieved through the use of optimal add-in functionality. Developers will be able to access custom menu and toolbar options within the IDE, featuring items that enable users to directly access InnerWorkings problem statements, as well as activate the Inferent code-judging engine and Personal Tutor capabilities. All existing InnerWorkings Practice Sets will leverage the tighter integration with Visual Studio, and this add-in functionality will also be available for previous versions of Visual Studio.

“We are encouraged to see advanced learning and performance support functionality embedded in the Visual Studio environment,” said Jay Roxe, Senior Product Manager for Visual Basic at Microsoft Corp. “Microsoft’s community of Visual Basic and Visual C# developers will benefit greatly from InnerWorkings’ learning methodology and the integration with Microsoft Visual Studio 2005. This will allow developers to focus on getting their skills rapidly up to speed.”

“Through integration with Visual Studio 2005, one of the most significant product releases for the software development community in recent years, we’re ensuring that developers are armed with the most effective learning environment for improving their performance capability on the .NET platform,” said Francis McKeagney, CEO of InnerWorkings. “In addition, we are demonstrating our continued commitment to supporting Visual Basic and Visual C# developers across Microsoft’s core product lines. I am delighted to extend our performance capability solutions to all enterprise application development teams using Visual Studio 2005.”

InnerWorkings will showcase the alpha version of its Visual Studio 2005 integration in booth 324 at Microsoft PDC 2005, along with full demonstrations of its existing products. The company plans to release the fully integrated version of InnerWorkings DeveloperT following the official launch of Microsoft Visual Studio 2005 in November of this year. InnerWorkings is a member of the Microsoft Visual Studio Industry Partner (VSIP) program and a Microsoft Gold Certified Partner.

About InnerWorkings
InnerWorkings is a pioneer of performance capability solutions for software developers and their managers. The company specializes in the delivery of practice-based learning solutions that address key coding techniques and enterprise application needs, thereby providing true visibility into developer performance. Inferent, the company’s real-time code judging engine, lets developers evaluate their performance and provides corrective feedback to advance the learning process. InnerWorkings’ goal is to transform the way software developers learn and are supported in the workplace, as well as enabling the accurate measurement of performance capabilities throughout a development organization.

InnerWorkings’ Research and Development facility is based in Dublin, Ireland and the company maintains its corporate headquarters in Pleasanton, California. For more information about InnerWorkings and its services, visit www.innerworkings.com.

All products and company names herein may be trademarks of their respective owners.

Media Contacts

Brian Finnerty
InnerWorkings
bfinnerty@innerworkings.com
+1 925 737 0600

Bob Joyce
Financial Dynamics
bjoyce@fd-us.com
+1 (617) 747 3620

Add this post to: del.icio.us:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 digg:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 spurl:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 simpy:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 newsvine:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 blinklist:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 furl:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 reddit:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 Y!:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 google:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 technorati:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 stumbleupon:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005 windowslive:InnerWorkings to Integrate Performance Capability Solutions with Microsoft Visual Studio 2005

PDC 2005September 13 - 16th, 2005
Los Angeles Convention Center
Los Angeles, CA

PDC05 is designed by developers, for developers.

Join developers at the Microsoft Professional Developers Conference 2005, where the next waves of Microsoft Windows “Longhorn” features and Microsoft Office System developer capabilities will be unveiled. Go deep with the community on building new applications from the ground up, or taking advantage of new features from existing applications.

http://msdn.microsoft.com/events/pdc/


InnerWorkings will be located at booth #324 during the Microsoft Professional Developer Conference (PDC05). Please stop by our booth to get a full demo of our innovative learning and performance solutions for .NET developers, and enter to win one of our coding contests and prize giveaways.

Add this post to: del.icio.us:Microsoft Professional Developers Conference 2005 digg:Microsoft Professional Developers Conference 2005 spurl:Microsoft Professional Developers Conference 2005 simpy:Microsoft Professional Developers Conference 2005 newsvine:Microsoft Professional Developers Conference 2005 blinklist:Microsoft Professional Developers Conference 2005 furl:Microsoft Professional Developers Conference 2005 reddit:Microsoft Professional Developers Conference 2005 Y!:Microsoft Professional Developers Conference 2005 google:Microsoft Professional Developers Conference 2005 technorati:Microsoft Professional Developers Conference 2005 stumbleupon:Microsoft Professional Developers Conference 2005 windowslive:Microsoft Professional Developers Conference 2005

Categories

Archives