Fabulous Adventures In Coding
Eric Lippert's Erstwhile Blog
Never Say Never, Part One
Can you find a lambda expression that can be implicitly converted to Func<T> for any possible...
Author: Eric Lippert Date: 02/21/2011
Looking inside a double
Occasionally when I'm debugging the compiler or responding to a user question I'll need to quickly...
Author: Eric Lippert Date: 02/17/2011
What would Feynman do?
No one I know at Microsoft asks those godawful "lateral-thinking puzzle" interview questions...
Author: Eric Lippert Date: 02/14/2011
Optional arguments on both ends
Before we get into today's topic, a quick update on my posting from last year about Roslyn jobs. We...
Author: Eric Lippert Date: 02/10/2011
Strange, but legal
"Can a property or method really be marked as both abstract and override?" one of my coworkers just...
Author: Eric Lippert Date: 02/07/2011
Curiouser and curiouser
Here's a pattern you see all the time in C#: class Frob : IComparable<Frob> At first glance...
Author: Eric Lippert Date: 02/03/2011
Spot the defect: Bad comparisons, part four
One more easy one. I want to "sort" a list into a random, shuffled order. I can do that by simply...
Author: Eric Lippert Date: 01/31/2011
Spot the defect: Bad comparisons, part three
Did you notice how last time my length comparison on strings was unnecessarily verbose? I could have...
Author: Eric Lippert Date: 01/27/2011
Spot the defect: Bad comparisons, part two
Suppose I want to sort a bunch of strings into order first by length, and then, once they are sorted...
Author: Eric Lippert Date: 01/24/2011
Spot the defect: Bad comparisons, part one
The mutable List<T> class provides an in-place sort method which can take a comparison...
Author: Eric Lippert Date: 01/20/2011
Not as easy as it looks, Part Two
Holy goodness, did you guys ever find a lot of additional ways in which an "eliminate variable"...
Author: Eric Lippert Date: 01/17/2011
Not as easy as it looks
My colleague Kevin works on (among many other things) the refactoring engine in the C# IDE. He and I...
Author: Eric Lippert Date: 01/13/2011
Enormous Explosions
Welcome to 2011 everyone; I hope you all had as restful a time as I did over the winter break....
Author: Eric Lippert Date: 01/10/2011
Why are anonymous types generic?
Suppose you use an anonymous type in C#: var x = new { A = "hello", B = 123.456 }; Ever taken a look...
Author: Eric Lippert Date: 12/20/2010
All your base do not belong to you
People sometimes ask me why you can’t do this in C#: class GrandBase{ public virtual void M()...
Author: Eric Lippert Date: 12/13/2010
Asynchrony in C# 5, Part Seven: Exceptions
Resuming where we left off (ha ha ha!) after that brief interruption: exception handling in...
Author: Eric Lippert Date: 11/19/2010
Asynchrony in C# 5 Part Six: Whither async?
A number of people have asked me what motivates the design decision to require any method that...
Author: Eric Lippert Date: 11/11/2010
Asynchrony in C# 5 Part Five: Too many tasks
Suppose a city has a whole bunch of bank branches, each of which has a whole bunch of tellers and...
Author: Eric Lippert Date: 11/08/2010
Asynchrony in C# 5.0 part Four: It's not magic
Today I want to talk about asynchrony that does not involve any multithreading whatsoever. People...
Author: Eric Lippert Date: 11/04/2010
Asynchrony in C# 5, Part Three: Composition
I was walking to my bus the other morning at about 6:45 AM. Just as I was about to turn onto 45th...
Author: Eric Lippert Date: 11/01/2010
Asynchronous Programming in C# 5.0 part two: Whence await?
I want to start by being absolutely positively clear about two things, because our usability...
Author: Eric Lippert Date: 10/29/2010
Asynchrony in C# 5, Part One
The designers of C# 2.0 realized that writing iterator logic was painful. So they added iterator...
Author: Eric Lippert Date: 10/28/2010
Continuation Passing Style Revisited Part Five: CPS and Asynchrony
Today is when things are going to get really long and confusing. But we'll make it through somehow....
Author: Eric Lippert Date: 10/27/2010
Continuation Passing Style Revisited Part Three: Musings about coroutines
Last time I sketched briefly how one might implement interesting control flows like try-catch using...
Author: Eric Lippert Date: 10/25/2010
Continuation Passing Style Revisited Part Two: Handwaving about control flow
Last time on Fabulous Adventures: “But we can construct arbitrarily complex control flows by...
Author: Eric Lippert Date: 10/22/2010
Eric Lippert, from Microsoft?
No technology today, just an amusing story from a couple summers ago. Leah and I rent out a room in...
Author: Eric Lippert Date: 10/18/2010
Debunking another myth about value types
Here's another myth about value types that I sometimes hear: "Obviously, using the new operator on a...
Author: Eric Lippert Date: 10/11/2010
No backtracking, Part One
A number of the articles I’ve published over the years involve “backtracking”...
Author: Eric Lippert Date: 10/04/2010
The Truth About Value Types
As you know if you've read this blog for a while, I'm disturbed by the myth that "value types go on...
Author: Eric Lippert Date: 09/30/2010
Ambiguous Optional Parentheses, Part Three
(This is part three of a three-part series on C# language design issues involving elided...
Author: Eric Lippert Date: 09/27/2010
Is is as or is as is?
Today a question about the is and as operators: is the is operator implemented as a syntactic sugar...
Author: Eric Lippert Date: 09/16/2010
Teach Yourself C# In... how long?
Earlier this year I was the technical editor of "Teach Yourself Visual C# 2010 in 24 Hours" by Scott...
Author: Eric Lippert Date: 09/13/2010
Eric's solution for old school tree dumping
sealed class Dumper{ private StringBuilder sb; static public string Dump(Node root) { var dumper =...
Author: Eric Lippert Date: 09/09/2010
Old school tree display
I'm back from my various travels, refreshed and ready for more fabulous adventures in coding. A...
Author: Eric Lippert Date: 09/09/2010
Graph Colouring, Part Five
I said last time that I was interested in finding colourings for graphs that have lots of fully...
Author: Eric Lippert Date: 07/29/2010
Graph Colouring, Part Four
Let's give it a try. Can we colour South America with only four colours? Let's start by stating what...
Author: Eric Lippert Date: 07/26/2010
Graph Colouring with Simple Backtracking, Part Three
OK, we've got our basic data structures in place. Graph colouring is a very well-studied problem....
Author: Eric Lippert Date: 07/22/2010
Graph Colouring With Simple Backtracking, Part Two
Before I begin a quick note: congratulations and best wishes to David Johnson, currently the...
Author: Eric Lippert Date: 07/15/2010
Graph Colouring With Simple Backtracking, Part One
As regular readers know, I'm interested in learning how to change my C# programming style to...
Author: Eric Lippert Date: 07/12/2010
Spoiler Alert
The remaining video of the talk with Neal Gafter and me at NDC is up on the streaming content server...
Author: Eric Lippert Date: 07/08/2010