PLINQ “Grok Talk” at Developer Developer Developer Melbourne

I did a very quick and choc-full of ramblings talk summarising Parallel LINQ (PLINQ) at the weekends Developer Developer Developer Melbourne.

First up, DDD Melbourne was great, thanks to all the sponsors (NAB, Readify, DevExpress, Pluralsight, JetBrains, Redgate), the presenters and key organisers Alex, Mahesh and others.

The message I wanted to get across was have a look at the Parallel Extensions in the Task Parallel Library of .NET, it can help speed up a few longer running tasks that might exist in your application and that it’s easy. Check out the parallel extension teams MSDN blog for the latest stuff.

The intent of this quick post is to clarify what I was rambling on about, and to offer some links to old posts, my PowerPoint slides that would have made my talk go a little smoother.

*Note: This is in fact demo-ware just to perform PLINQ benchmarks.

Giving Birth to an Old User Group

Tonight was the first Melbourne ALT.NET meeting. The ALT.NET movement is a few years old, but there’s been some delay (lack of motivation) in getting a Melbourne ALT.NET group running. This is probably in part due to there being is an overwhelming* number of software development usergroups in particular .NET specific ones to get.

*None-the-less more community, more discussion, more learning, more choice, more sharing is always welcome and very beneficial for passionate developers.

A missing ALT.NET Melbourne scene has now changed with Andrew Bienert stepping up and taking the lead.

I enjoyed the evening, it’s great to see people motivated in adding suggestions for the direction of a new group, It’s great to see a new community start to form.

I’d like to offer up my quick summary of how this “planning session” went, and add my opinion here in writing on what I think would be valuable and interesting for this usergroup to offer up.

Critical Mass Already

  1. One thing it has the attention of some current and former senior architects at Oakton (by the way that’s little ‘a’ architects), in part due to the evening being hosted at their head office boardroom.
  2. Large initial attendance (almost 30), even with a drop off the group will have enough people to make it worthwhile, and exciting topics will bring in non-regulars.
  3. Having the ALT.NET brand/classification itself will help too.
  4. Having a wide variety of experience in the community, to begin sharing knowledge, tips and tricks, pitfalls of tools/patterns/approaches/etc.
  5. Stay tuned for a web poll for the group attendees to vote on initial areas of focus, to gauge the level of interest and current understanding.

Topics and Interests

  1. There was general consensus that Test-Driven Development (TDD) as an umbrella topic is of great interest to the attendees.
  2. TDD combined with it’s supporting requirements Inversion of Control (IoC) & Mocking frameworks will be a focus.
  3. General real world considerations, including how to influence architecture design in a positive way as a developer, promoting concepts such as TDD to team members and management.
  4. There was a large list of potential future topics, from DSLs to BizTalk to Azure to ‘Ruby on Rails comparison to ASP.NET MVC‘ to all-things-dot-net to all-things-microsoft to you-name-it.

Presentation Structure

  1. A popular and very promising idea that I’m particularly on-board with is a “Deep Dive” session mash up with the concept of a Coding Dojo, where a particular topic will be introduced, then deeply investigated through real practical application of code.
  2. “Regular” Coding Dojos of known problems. Something that’s new to the majority of us in attendance.
  3. All these are still in proposed state, and will be undertaken over the next few meetings to see how well they work in this community, refined and improved.
  4. Lightning talks, and standard power point presentations.
  5. General discussions, set subjects see where they go, see when they dry up, and begin the next topic. This will work well if the group is marshalled to stay reasonably on topic (leaving such topics as politics, American universal health care and internet filters to the “after meeting”).

The focus for the next 2 meetings is looking to be TDD & Domain Specific Languages (DSLs).

It was a great night, good people, good discussion, if you didn’t come along tonight I urge you to join us in the future.

SQL Indexing – July 2009 PASS Session

Just attended the Victoria.NET – Professional Association for SQL Server (PASS) session hosted by Greg Low, with future meeting listed on the user group site:

Greg’s a very knowledgeable database specialist (don’t know his actual title). I’ve seen him present previously at RDN sessions, and really enjoy the “run throughs” using SQL query editor, and his ability to answer tricky questions raised by the audience.

I took a heap of notes, and managed to type them reasonably well on landscape mode on the iPhone, while still focusing on the presentation. I’ll try and transcribe some of it here, for it to be a somewhat useful summary.

The presentation focussed on Clustered and Non-Clustered indexes in SQL Server, with 1 key tip off the bat: index selection should be a fundamental part of the design. Combining that with the final statement of the presentation “tuning is never over” – can be interpreted as during system development indexes should not be ignored and should be re-factored as development moves forward.

General Tips:

  • Incorporating a bit in an index is a wise choice if that field has a significant selectivity impact reduction for certain queries.
  • Guid’s are where you draw the line as primary key’s anything larger such as string’s isn’t wise due to lack of efficiency, and blob like data such as varchar(1000)’s are just shooting yourself in the foot.

Another key take away was a simple list in order of priority what to look for and check when fine tuning performance:

  1. Selecting an appropriate clustering strategy
  2. Primary Key
  3. Uniqueness declared
  4. Foreign Key Indexes
  5. Then begin with usage tools

    Missing Indexes – Careful not to blindly accept all recommendations

    – Dynamic Management View (DMV)

Point 3 being a common index that offers a performance boost, but is overlooked as it’s not auto-created like those for primary keys.

The previous list can be combined with this list in columns of concern for indexes, in order of priority to improve performance:

  1. JOINS
  2. WHERE clause members
  3. ORDER BY members
  4. SELECTed columns

The final tip I walked away with is; if making use of the “Books Online” then update them every 2 months, as on average they are updated every 6 weeks, with Greg providing the example of a “Bit Field” cannot be indexed being explicitly mentioned in online documentation up until a recent correction.

The upcoming presentations of the PASS group will focus on Reporting Services and Profiling.