Ten LINQ Myths

I was browsing over at Joe Albahari’s personal web site (Joe is the creator of the easy to use and very successful LINQPad, and one of the authors of O’Reilly’s excellent ‘C# in a Nutshell’) and noticed this 10 LINQ Myths: The ten most common misconceptions.

As well as being a C# guru, Joe is an active participant and supporter of the Perth .NET User Group. In fact, he will be presenting a session in November on the New features in C# 4.0 (More details will be posted shortly…).

Perth .NET UG Meeting: Friday, Oct 2nd: Introduction to the SQL Server 2008 Data Collector – Brad McGehee

We are fortunate to have Brad McGehee present two sessions while he is in Perth. The second session is “Introduction to the SQL Server 2008 Data Collector”. In previous versions of SQL Server, performance tuning was often difficult because the available tools weren’t always easy to use or interpret. In SQL Server 2008, Microsoft is introducing the Performance Data Collector. This comprehensive new toolset has been designed to integrate the collection, analysis, troubleshooting, and persistence of SQL Server diagnostic information, making the jobs of DBAs much easier. 

  • TOPIC: Introduction to the SQL Server 2008 Data Collector – Brad McGehee
  • DATE:   Friday, Oct 2nd, 5:30pm – 7:00pm
  • VENUE: Excom, Ground Floor, 23 Barrack Street, Perth
  • COST:   Free. All welcome

Brad McGehee is a MCSE+I, MCSD, and MCT (former) with a Bachelors’ degree in Economics and a Masters in Business Administration. Currently the Director of DBA Education for Red Gate Software, Brad is an accomplished Microsoft SQL Server MVP with over 14 years’ SQL Server experience, over 6 years’ training experience, and has been involved in the industry since 1982. He is a frequent speaker at SQL PASS, European PASS, SQL Connections, SQLTeach, SQLBits, SQL Saturdays, TechFests, Code Camps, SQL Server user groups, and other industry seminars.

RedGate have generously donated a license to their excellent SQL Compare Pro.

More details here.

Perth .NET UG Meeting: How to Interpret Graphical Execution Plans – Brad McGehee

Join us at the Perth .NET User Group in October for two talks with a SQL Server focus, aimed at both Developers and DBAs. We are fortunate to have RedGate’s Brad McGehee present two sessions while he is in Perth. Brad is a frequent speaker at conferences around the world.

The first talk is Thurs October 1st, where Brad will present on “How to Interpret Graphical Execution Plans”. One of the SQL Server black arts is how to read and interpret graphical Query Execution Plans. This is a key thing to understand as Execution Plans provide valuable clues as to why a particular query may be running slowly. In this session, you will learn how to read an Execution Plan, and learn what to do with the information you have gained from reading it.

  • TOPIC: How to Interpret Graphical Execution Plans – Brad McGehee
  • DATE:     Thursday, Oct 1st, 5:30pm – 7:00pm
  • VENUE:  Excom, Ground Floor, 23 Barrack Street, Perth
  • COST:     Free. All welcome

Brad McGehee is a MCSE+I, MCSD, and MCT (former) with a Bachelors’ degree in Economics and a Masters in Business Administration. Currently the Director of DBA Education for Red Gate Software, Brad is an accomplished Microsoft SQL Server MVP with over 14 years’ SQL Server experience, over 6 years’ training experience, and has been involved in the industry since 1982. He is a frequent speaker at SQL PASS, European PASS, SQL Connections, SQLTeach, SQLBits, SQL Saturdays, TechFests, Code Camps, SQL Server user groups, and other industry seminars.

We will have pizza at this session courtesy of INETA.

RedGate have generously donated a license to their excellent ANTS Memory Profiler Pro. There is also a door prize of a choice of license from JetBrains (one of ReSharper , TeamCity Build Agent, dotTrace Profiler, RubyMine, IntelliJ IDEA).

Try to arrive early if you want a seat!

More details here.

Microsoft WebSiteSpark in Australia

Microsoft has launched a new initiative, WebSiteSpark, aimed specifically at independent web developers and small web development companies.  The only two requirements to join the program are:

  1. Your company builds web sites and web application on behalf of others.
  2. Your company currently has less than 10 employees.

The Australian launch of WebSiteSpark will be on the 8th of October.

What do you get?

Software licenses that you can use for three years AT NO COST.  Once enrolled, you can download and immediately use the following software from Microsoft:

• 3 licenses of Visual Studio 2008 Professional Edition
• 1 license of Expression Studio 3 (which includes Expression Blend, Sketchflow, and Web)
• 2 licenses of Expression Web 3
• 4 processor licenses of Windows Web Server 2008 R2
• 4 processor licenses of SQL Server 2008 Web Edition
• DotNetPanel control panel (enabling easy remote/hosted management of your servers)

The Windows Server and SQL Server licenses can be used for both development and production deployment.  You can either self-host the servers on your own, or use the licenses with a hoster. 

For more info see Scott Guthrie’s post: Announcing the WebsiteSpark Program

Performance Tuning Guidelines for Windows Server 2008 R2

Even though you no longer have to worry about disk partition alignment for SQL Server on Windows Server 2008 (you did on Windows Server 2003 and Earlier; see Disk Partition Alignment Best Practices for SQL Server), there are still important tuning parameters and settings that can result in improved performance for the Windows Server 2008 R2 operating system. You can download the document from here: Performance Tuning Guidelines for Windows Server 2008 R2.

Feynman: A Magician at Work

It is often said that Richard Feynman was truly a magician. The Tuva project (apparently Bill Gates is its sponsor) at Microsoft Research is showing Richard Feynman’s ‘Messenger Series’ lectures. Although the format is slightly dated (check out the non-wireless microphone!), it does nothing to hide Richard Feynman’s infectious enthusiasm for science and its exposition. As Bill notes in his introduction, his motivation for making these publicly available is “…everybody ought to see these, as they make science interesting…”.

If this has whet your appetite, check out The Feynman Lectures on Physics including Feynman’s Tips on Physics: The Definitive and Extended Edition

Perth .NET User Group Meeting: Continuous Integration: Improving Quality and Reducing Cost

Join us at the Perth .NET User Group, Thurs September 3rd to hear Colin Scott talk about Continuous Integration and why you should be doing it. Merging the work of multiple developers and producing reliable, deployable systems is a time consuming and tedious process that wastes developer effort that could be better spent on creating software. Continuous Integration (CI) allows us to automate these tasks and include automated testing and code analysis. This results in higher quality outputs at a lower cost. This presentation shows how to set up simple CI for .NET projects using readily available tools.

  • TOPIC:   Continuous Integration: Improving Quality and Reducing Cost – Colin Scott
  • DATE:    Thursday, Sept 3rd, 5:30pm
  • VENUE:  Excom, Ground Floor, 23 Barrack Street, Perth
  • COST:    Free. All welcome

More details here.

Architecture Guidance

If you have not seen it already, J.D. Meier (of the Patterns & Practices group at Microsoft) has created the Architecture Guidance Share wiki, a catalogue of software engineering principles, patterns and practices:

My purpose for this site is to share the body of guidance in software engineering that I’ve built over the years, while working with customers and experts in the field. While there’s a lot of existing information on software engineering, it can often be difficult to find, understand or use.

See also the Patterns & Practices: Application Architecture Guide 2.0 which includes the downloadable .pdf document: Application Architecture Guide 2.0

Algorithms

A programmer’s knowledge of algorithms can be (very) roughly divided into 3 categories:

  1. Essential: Basic knowledge of the algorithms you use in your day-to-day work (hopefully, along with their ‘Big Oh’ Complexity, although it is surprising how often this is lacking…)
  2. Desirable: Knowledge of a wide range of algorithms, including sorting, searching, graph algorithms etc.
  3. Rarely Required in a Business Setting: Ability to Analyse an Algorithm’s Complexity

Now, I’m obviously not advocating that all programmers should be algorithm guru’s, but if you want to broaden your knowledge, here are a few places to start:

One of the classic Introduction to Algorithms books is Sedgewick’s Algorithms This used to be a single book (the format I read it in), but is now split into two volumes. It comes in various (computer) language versions, including C++: Fundamentals (parts 1-4) and Graphs (part 5). It is accessible, and covers most of the common algorithms you are likely to encounter (or need).

Another classic introductory book on the subject is Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein (sometimes referred to as CLRS).

For an excellent free resource, check out the Introduction to Algorithms course on MIT OpenCourseWare (which uses CLRS as the course text; one of the authors, Prof. Leiserson, taught the course at MIT): MIT 6.046J / 18.410J Introduction to Algorithms

The course materials also contain video lectures. Here’s an example of why having at least some broader knowledge of algorithms and their application is useful: The skip list is a little known data structure (possibly because it is a relatively recent invention), and yet it is extremely useful and much easier to implement from scratch than many of the other balanced data structures: This is described in lecture 12.

Two books that are lighter and less formal are Algorithms in a Nutshell and the Algorithm Design Manual (Second Edition). Instead of formal mathematical proofs these books take a more practical approach, with real world problems and their solutions. They also show you how to estimate and measure the complexity of a solution. Both books are good, practical reference guides for programmers (I’m just about to add the Algorithm Design Manual to the Perth .NET User Group library…). Highly Recommended.

If you want something more advanced, then try these MIT OCW courses: 6.854J / 18.415J Advanced Algorithms, and the more mathematically advanced: 18.409 Topics in Theoretical Computer Science: An Algorithmist’s Toolkit.

For learning how to analyse algorithms (and let’s be honest, it will be a rare event that you actually have to!), another of Sedgewick’s books, An Introduction to the Analysis of Algorithms, is a good place to start. A more advanced text is Concrete Mathematics: A Foundation for Computer Science and of course Knuth Volumes 1 – 3 (and the remaining volumes, which Knuth is releasing as ‘fascicles’…) which are not for the faint hearted and require considerable mathematical knowledge as a pre-requisite.

Parsing Log Files

If you need to parse log files, before you decide to write your own parser, try using the free Log Parser from Microsoft:

Log parser is a powerful, versatile tool that provides universal query access to text-based data such as log files, XML files and CSV files, as well as key data sources on the Windows® operating system such as the Event Log, the Registry, the file system, and Active Directory®. You tell Log Parser what information you need and how you want it processed. The results of your query can be custom-formatted in text based output, or they can be persisted to more specialty targets like SQL, SYSLOG, or a chart.

This post shows a nice example of SMTP Log Parsing, with the process automated via PowerShell.

The TechNet script centre contains several Examples of using LogParser.