An idempotent operation is one that has the same effect whether it is performed once or many times. On the Ably platform we provide idempotent semantics for publishing messages via REST. This article shares what we learned about identifying and overcoming engineering challenges associated with providing idempotent guarantees over a globally-distributed messaging platform.
Jonathan Blow of “The Witness” fame likes to talk about just typing the obvious code first. Usually it will turn out to be fast enough. If it doesn’t, you can go back and optimize it later. His thoughts come in the context of working on games in C/C++. I think these languages, with modern incarnations of their compilers, are compatible with this philosophy. Not only are the compilers very mature but they are low level enough that you are forced to do things by hand, and think about what the machine is doing most of the time, especially if you stick to C or a ‘mostly C’ subset of C++. However in most higher level languages, there tend to be performance traps where the obvious, or idiomatic solution is particularly bad.
Every developer knows that the testable code can make life easier. “Good code” and “Unit-testable code” are not always equivalent terms. Your code can be understandable, self-documented, but untestable at the same time.
For a little under a decade Git and SVN competed for market share in a fashion reminiscent of browser wars. As recently as 2010, there are forum discussions that perhaps Git and SVN were not competitive — that the two were best in class products of two different breeds (distributed and centralized version control), and that companies would likely support both. It’s clear that Git won hearts and minds. But why?
Concurrent collections are a feature added in .Net 4.0 and allow developers to create thread safe collections without worrying as much as they had to worry with Generic Collections.