Craig Stuntz

F# • Compilers • Programming Languages • Functional Programming • Web

How to Think Like the ADO.NET Entity Framework at CodeRage 4 This coming Wednesday 9 September I'll be doing a presentation at the free, online CodeRage 4 conference: How to Think Like the ADO.NET Entity Framework (and why you might want to bother learning to do so in the first place) In order to use the ADO.NET Entity Framework effectively, you must understand its value-based data model, which is distinctly different from the SQL and ORM approaches to representing and querying data. Programmers who approach the Entity Framework as "just another ORM" o...
On That Delphi 7 Virus and Ken Thompson's Turing Award Speech In 1984, Ken Thompson, the operating system and programming language pioneer, received the ACM's Turing Award. In his short, highly-readable Turing Award speech, he describes "the cutest program I ever wrote." He notes that because the C compiler is written in C, it is possible to alter the source code maliciously to produce a malicious compiler executable. The malicious code can then be removed from the C source, and the original code recompiled. The malicious code remains in the "new" executab...

Posted by on in Blogs
InterBase 2009 Hotfix Update 3 InterBase 2009 Hotfix Update 3 (version 9.0.3.437) is out. See the readme for the full list of bug fixes....
Embarcadero Change Manager To Support InterBase, Firebird Embarcadero's Change Manager will support InterBase (and Firebird) this fall, according to PM Gordan Lucas. He even has video evidence! Change Manager 5.1.1 will add support for InterBase 2007 and 2009 databases to: compare, version, and synchronize schemas; compare, synchronize, move, and mask data; and compare, version, and monitor version configurations for compliance and tracking. And for any Firebird SQL users out there, you can join the party too because Change Manager will support ver...

Posted by on in Blogs
2D Goggles - Babbage and Lovelace Warning: The following comic has been demonstrated to severely lower developer productivity upon first introduction. Sydney Padua has done the impossible: Created a programming comic which I like as much as XKCD. You can start at the beginning or read the latest, thrilling episode. She also did a special for the BBC. Navigation is a bit awkward (look for the "next" and "back" links above each post), but entirely worth the effort....

Posted by on in Blogs
Columbus Give Camp This past weekend I, along with around 50 other local geeks, volunteered three days of my time to build web applications for eight different Columbus-area nonprofits. Columbus Give Camp is based on a similar series of events in Michigan. The Columbus Give Camp was hosted by Quick Solutions, who, conveniently, are located five floors above my own office. The event was a huge success. I'm particularly proud of the work my team did, taking the project from nothing to live and in production in just ...

Posted by on in Blogs
Skip(0) in LINQ and Testing A couple of weeks ago, I wrote In LINQ, Beware of Skip(0). In that post, I observed that calling Skip(0) on a query result in LINQ, which has no effect on the dataset returned, imposes a performance penalty with at least some LINQ providers. At the time I commented that there might be some desirable behavior of this that I had missed. Sure enough, one of the developers on the LINQ to SQL team noted in comments that Skip(0) will cease to be a no-op in LINQ to SQL in .NET 4.0, and supplied a perfe...

Posted by on in Blogs
Kahn Racing Again Philippe Kahn is once again competing in the Transpac (sailboat) Ocean race....

Posted by on in Blogs
Columbus Give Camp If you're a geek in the Central Ohio area, please consider volunteering for Columbus Give Camp, if your schedule permits....

Posted by on in Blogs
In LINQ, Beware of Skip(0) Calling IQueryable<T>.Skip(0) seems like it should be "free." In other words, since it will have no effect on the resulting data, there should be little to no performance cost for calling it. But this is demonstrably not true in LINQ to Entities, and it occurs to me that LINQ providers are not required to optimize it away. Therefore, it is probably a good idea to avoid making such a call at all, so that you do not have to concern yourself with whether the provider will generate a slower qu...

Check out more tips and tricks in this development video: