Developing for Developers

Tools, techniques, and theory for measuring and improving the power and performance of developers and their code

New blog: Papers in Computer Science

Hey all - I apologize for the (extremely) long period of no updates, I've been prioritizing other...

Author: MSDN Archive Date: 02/28/2009

P-complete and the limits of parallelization

We're entering an era where CPU clock speeds will soon cease to scale upwards and instead CPU...

Author: MSDN Archive Date: 09/07/2007

Robin's theorem

Most computer scientists are familiar with the P = NP problem, which asks essentially whether we can...

Author: MSDN Archive Date: 07/16/2007

Cache-oblivious data structures

In most data structure and algorithms classes, the model used for basic analysis is the traditional...

Author: MSDN Archive Date: 06/12/2007

I apologize to everyone for the hiatus - I realise a post is more than a little overdue and will try...

Author: MSDN Archive Date: 06/07/2007

Functional list processing in C# 2.0 with anonymous delegates

One of the benefits of functional languages is their great flexibility in list manipulation, which...

Author: MSDN Archive Date: 06/30/2006

Factoring large numbers with quadratic sieve

Today I'm going to talk about how the quadratic sieve factoring algorithm works, giving a...

Author: MSDN Archive Date: 06/19/2006

Color quantization

If you've ever done work with Web graphics, I'm sure that at some point you reduced an image with...

Author: MSDN Archive Date: 05/09/2006

How does JPEG actually work?

JPEG is an image encoding designed to compress photographs and similar images effectively, often 5...

Author: MSDN Archive Date: 04/12/2006

Encoding correctness in types

This article will discuss effective use of types to catch some common problems at compile time not...

Author: MSDN Archive Date: 03/27/2006

LiteratePrograms wiki

Hi everybody. This is a short post, but I just wanted to tell you all about a new wiki I created...

Author: MSDN Archive Date: 03/03/2006

Dependency tracking in builds

Happy Valentine's Day, everyone! Today I'm going to talk about the important problem of successfully...

Author: MSDN Archive Date: 02/14/2006

The nature of computing and infeasible machines

If asked what they do, some developers might say "I write code" or "I program computers". But more...

Author: MSDN Archive Date: 02/06/2006

Literate programming

Literate programming, invented in 1981 by the same Donald Knuth who wrote The Art of Computer...

Author: MSDN Archive Date: 01/23/2006

Efficient selection and partial sorting based on quicksort

Most people who have studied algorithms remember quicksort, the ubiquitous sorting algorithm...

Author: MSDN Archive Date: 01/18/2006

Integer division by constants

Today I'm going to discuss a few clever algorithms for dividing values by constant values known at...

Author: MSDN Archive Date: 12/12/2005

Succinct data structures

Sorry for the long hiatus, everyone. Today I'm going to talk about succinct data structures, which...

Author: MSDN Archive Date: 12/05/2005

Persistent data structures

When learning to program in a functional language such as Lisp, Ocaml, or Haskell, one of the most...

Author: MSDN Archive Date: 11/08/2005

Software transactional memory

Software transactional memory (STM) is a scheme for concurrent programming with multiple threads...

Author: MSDN Archive Date: 10/20/2005

Non-nullable types

If you write programs in C, C++, Java, or C#, you've gotten used to having the null value around....

Author: MSDN Archive Date: 10/10/2005

Secret sharing

One of the most difficult problems in cryptographic key management is keeping a secret key safe from...

Author: MSDN Archive Date: 10/02/2005

Custom building and code generators in Visual Studio 2005

I'm a fervent fan of using code generator tools wherever possible to make your life easier. Although...

Author: MSDN Archive Date: 09/13/2005

Modular arithmetic and primality testing

Number theory is, roughly speaking, the study of properties of integers. Often a problem which is...

Author: MSDN Archive Date: 09/07/2005

The point location problem

Computational geometry is a field that studies efficient solution of geometric problems, which are...

Author: MSDN Archive Date: 09/01/2005

The Visitor pattern and multiple dispatch

Today I'll talk about multiple dispatch, a programming language feature that increases flexibility...

Author: MSDN Archive Date: 08/29/2005

Floating-point arithmetic

What's got a mantissa field, an exponent field, is included in nearly every major programming...

Author: MSDN Archive Date: 08/24/2005

Unrolled linked lists

Today I'll be discussing unrolled linked lists, a simple variant of the linked list which has many...

Author: MSDN Archive Date: 08/22/2005

Stop writing header files

Although one of my favorite languages, C++ has a number of issues that make it difficult to write...

Author: MSDN Archive Date: 08/19/2005

Bloom filters

Imagine you're writing a simple spell checker in C. You've already collected a dictionary of 100,000...

Author: MSDN Archive Date: 08/17/2005

Welcome!

Hi everybody. My name is Derrick Coetzee. I'm totally new to the blog scene - I've barely read any,...

Author: MSDN Archive Date: 08/16/2005