Software development, .Net, SQL Server, TDD, Agile, Community and other Odds and Sods
Mitch Wheat has been working as a professional programmer since 1984, graduating with a honours degree in Mathematics from Warwick University, UK in 1986. He moved to Perth in 1995, having worked in software houses in London and Rotterdam. He has worked in the areas of mining, electronics, research, defence, financial, GIS, telecommunications, engineering, and information management. Mitch has worked mainly with Microsoft technologies (since Windows version 3.0) but has also used UNIX. He holds the following Microsoft certifications: MCPD (Web and Windows) using C# and SQL Server MCITP (Admin and Developer). His preferred development environment is C#, .Net Framework and SQL Server. Mitch has worked as an independent consultant for the last 10 years, and is currently involved with helping teams improve their Software Development Life Cycle. His areas of special interest lie in performance tuning
Sunday, August 30, 2009
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.
More details here.
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:
See also the Patterns & Practices: Application Architecture Guide 2.0 which includes the downloadable .pdf document: Application Architecture Guide 2.0
Thursday, August 27, 2009
A programmer’s knowledge of algorithms can be (very) roughly divided into 3 categories:
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.
Sunday, August 23, 2009
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:
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.
Saturday, August 22, 2009
Ten Common SQL Programming Mistakes
There is a nice article over at Simple-Talk on Ten Common SQL Programming Mistakes. This tip, “Functions on indexed columns in predicates”, crops up a lot in production code, as the consequence of non-searchargs is not always obvious (until you know, of course!).
Thursday, August 20, 2009
Free PowerShell ebook
Saturday, August 15, 2009
Books, Books, Booko!
If like me, you buy a lot of technical books each year, the opportunity to save a few dollars here and there really adds up. In the past, I have used Amazon(US) pretty much exclusively as it was always possible to save considerably on most (if at all) books in an order compared to the local retailers in Perth. And as a bonus, Amazon usually delivered them faster (from the US)!
Recently, a colleague let me know about Booko:
I’ve purchased 5 books in the last 4 weeks via Booko from 4 different sellers in 3 different countries. It’s a great way to save money on books. It is now my first stop, whereas before, I simply used Amazon.
Next time you need to buy a technical book, give Booko a go.
Thursday, August 13, 2009
PDB Files: What Every Developer Must Know
I’m a long time fan of John Robbins’ work, and over the years I’ve followed his blog, MSDN column and purchased several of his excellent debugging books.
He posted a must read blog entry that I meant to mention a while back: PDB Files: What Every Developer Must Know.
Here’s a snippet:
Saturday, August 08, 2009
Windows 7 Just keeps Getting Better
As most people are aware, Windows 7 went RTM and is now available to TechNet Subscribers (and many of those that took part in the Beta program). First impressions are that it feels even faster than the RC release! It installed flawlessly. Easy as.
This is simply, the best OS Microsoft have ever released.
I re-ran the Windows experience index:
Interestingly, my disk score has fallen 0.1 points, which is shame as it’s the slowest component. Rather surprising, given that it’s an SSD (and one with a reasonably high performance). I feel a bit of tweaking coming on…
So never mind your poser laptop with the nerdy cover light! Can it compete with a real PC? ;)
Sunday, August 02, 2009
SQL Server 2008: ETL Data Load: 1 TB in 30 Minutes!
I came across this excellent article on MSDN: We Loaded 1TB in 30 Minutes with SSIS, and So Can You, detailing the design and implementation of a large data load using SSIS. The work was actually done back in February 2008.
MSN, Email: mitch døt wheat at gmail.com