This is the first issue of The Left Fold, a weekly programming article digest.
I hope to make it easier to keep up with the news and learn about the practice of programming without having to wade through the fluff common on social news sites. If you write or find an article interesting to a wide audience of programmers, let me know. Feedback is solicited on the format, content, and frequency.
InformIT has two articles on the fifteenth anniversary of Design Patterns:
- A Look Back: Why We Wrote Design Patterns: Elements of Reusable Object-Oriented Software (reddit)
- Design Patterns 15 Years Later: An Interview with Erich Gamma, Richard Helm, and Ralph Johnson (Lambda the Ultimate)
In Python news, Guido proposed a moratorium on language syntax and semantics changes for several years in order to further acceptance of Python 3.x. He hopes the opportunity will be taken to port libraries to 3.x and improve the standard library and implementations:
- Proposal: Moratorium on Python language changes (reddit, news.yc)
- my nomination for reddit comment of the week
In other Python news, the much-maligned Global Interpreter Lock is getting reworked. It's not going away, but multi-threaded performance is expected to improve without degrading the single-threaded case. Here's how:
C++ may be getting software transactional memory. GCC and ICC both already have implementations of varying maturity. No word yet on any monad proposals:
- Draft Specification of Transactional Language Constructs for C++ (pdf) (reddit)
- Intel prototype including sample code
A small roundup of tools to eliminate wasted space in your C/C++/C# structs. Unfortunately, they don't go further and help you lay the structs out optimally; I've seen a nifty Common Lisp macro that does just that.
An in-depth explanation of the difference between pointers and arrays in C from the compiler's perspective, complete with disassembly:
There's a new IETF draft for web sockets. The abstract says it aims to replace "opening multiple HTTP connections (e.g. using XMLHttpRequest or iframes and long polling)".
Factor, a dynamic language, has added more support for typed functions to help with compiler optimizations. This article shows how little intrusion is required to convert your dynamic code to typed code and what the compiler can do with that information:
Memcached released a report card showing metrics on time between releases, time to fix bugs of varying severities. The first step towards improving anything is measuring it, and this shows a few nice ways to measure progress.
And finally, a fun comparison between Haskell and C++ templates that shows lots of common ground: