Fabulous Adventures In Coding
Eric Lippert's Erstwhile Blog
Murky Research
No computers today, but some interesting - and important - math. (And, happy Canada Day, Canadians!)...
Author: Eric Lippert Date: 07/01/2010
Computing a Cartesian Product with LINQ
And here we have yet another post inspired by a question on StackOverflow: how do you compute the...
Author: Eric Lippert Date: 06/28/2010
Hide and seek
Another interesting question from StackOverflow. That thing is a gold mine for blog topics. Consider...
Author: Eric Lippert Date: 06/14/2010
Don't repeat yourself; consts are already static
Today, another entertaining question from StackOverflow. Presented again as a dialogue, as is my...
Author: Eric Lippert Date: 06/10/2010
Live from New Orleans
Just a quick note that Mads, Luke and I are going to be on Channel 9 Live from TechEd this afternoon...
Author: Eric Lippert Date: 06/08/2010
Better late than never
Good heavens, I just realized I completely forgot to post a link to this interview. I'm a year late,...
Author: Eric Lippert Date: 06/07/2010
Cast operators do not obey the distributive law
Another interesting question from StackOverflow. Consider the following unfortunate situation:...
Author: Eric Lippert Date: 05/27/2010
More Boring Metablogging
Hey everyone, those of you who read this blog on the main MSDN page rather than via your own RSS...
Author: Eric Lippert Date: 05/25/2010
Every Program There Is, Part Nine
[This is the final part of a series on generating every string in a language. The previous part is...
Author: Eric Lippert Date: 05/24/2010
Every Program There Is, Part Eight
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/20/2010
Every Program There Is, Part Seven
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/17/2010
Every Program There Is, Part Six
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/13/2010
Every Program There Is, Part Five
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/10/2010
Every Program There Is, Part Four
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/06/2010
Every Program There Is, Part Three
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 05/03/2010
Every Program There Is, Part Two
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 04/29/2010
Every Program There Is, Part One
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 04/26/2010
Every Tree There Is
[This is part of a series on generating every string in a language. The previous part is here. The...
Author: Eric Lippert Date: 04/22/2010
Every Binary Tree There Is
[This is the first part of a series on generating every string in a language. The next part is...
Author: Eric Lippert Date: 04/19/2010
It's Essential!
My copy of Essential C# 4.0 just arrived, and it looks great. I was one of the technical reviewers...
Author: Eric Lippert Date: 04/15/2010
Ignoring parentheses
Yet another amusing question from StackOverflow: is there a difference between “return...
Author: Eric Lippert Date: 04/12/2010
Precision and accuracy of DateTime
The DateTime struct represents dates as a 64 bit number that measures the number of “ticks” since a...
Author: Eric Lippert Date: 04/08/2010
Turning a bug into a feature
I was amused to read this post about an arithmetic bug which accidentally turned into an AI feature...
Author: Eric Lippert Date: 04/05/2010
Some Last-Minute New C# 4.0 Features
As I’m sure you know by now, we are done implementing C# 4. We’ve added support for...
Author: Eric Lippert Date: 04/01/2010
Knights, Knaves, Protected and Internal
When you override a virtual method in C# you are required to ensure that the stated accessibility of...
Author: Eric Lippert Date: 03/25/2010
Socks, birthdays and hash collisions
Suppose you’ve got a huge mixed-up pile of white, black, green and red socks, with roughly equal...
Author: Eric Lippert Date: 03/22/2010
Do not name a class the same as its namespace, Part Four
(This is part four of a four part series; part three is here.) Part Four: Making the problem worse I...
Author: Eric Lippert Date: 03/18/2010
Do not name a class the same as its namespace, Part Three
(This is part three of a four part series; part two is here, part four is here.) Part Three: Bad...
Author: Eric Lippert Date: 03/15/2010
Do not name a class the same as its namespace, Part Two
(This is part two of a four part series; part one is here, part three is here.) Part Two:...
Author: Eric Lippert Date: 03/11/2010
Too much reuse
A recent user question: I have code that maintains a queue of pending work items waiting to be...
Author: Eric Lippert Date: 03/04/2010
Attracting Talent
Today I want your insights, opinions and advice. In any large organization over time people are...
Author: Eric Lippert Date: 03/01/2010
Careful with that axe, part two: What about exceptions?
(This is part two of a two-part series on the dangers of aborting a thread. Part one is here.)...
Author: Eric Lippert Date: 02/25/2010
Careful with that axe, part one: Should I specify a timeout?
(This is part one of a two-part series on the dangers of aborting a thread. Part two is here.) The...
Author: Eric Lippert Date: 02/22/2010
What’s the difference between ternary and tertiary?
The conditional operator ( condition ? consequence : alternative ) is often referred to as both the...
Author: Eric Lippert Date: 02/18/2010
Chaining simple assignments is not so simple
UPDATE: I interrupt this episode of FAIC with a request from my friend and colleague Lucian, from...
Author: Eric Lippert Date: 02/11/2010
Making the code read like the spec
As I mentioned a while back, there are some bugs in the compiler code which analyzes whether a set...
Author: Eric Lippert Date: 02/08/2010
How Many Passes?
Large bodies of code written in the C/C++ languages typically divide up the code into...
Author: Eric Lippert Date: 02/04/2010
Style follows semantics
Which is better style? bool abc;if (Foo()) abc = Bar();else abc = false; vs bool abc = Foo()...
Author: Eric Lippert Date: 02/01/2010
Calling constructors in arbitrary places
C# lets you call another constructor from a given constructor, but only before the body of the...
Author: Eric Lippert Date: 01/28/2010
Why are unused using directives not a warning?
As I’ve discussed before, we try to reserve warnings for only those situations where we can...
Author: Eric Lippert Date: 01/25/2010
What’s the difference between a destructor and a finalizer?
Today, another dialogue, and another episode of my ongoing series "what's the difference?"...
Author: Eric Lippert Date: 01/21/2010
A Definite Assignment Anomaly
UPDATE: I have discovered that this issue is considerably weirder than the initial bug report led me...
Author: Eric Lippert Date: 01/18/2010
Why Can't I Access A Protected Member From A Derived Class? Part Six
Reader Jesse McGrew asks an excellent follow-up question to my 2005 post about why you cannot access...
Author: Eric Lippert Date: 01/14/2010