Category Archives: Architecture

Synchronicity: threads vs. events

There are a number of common misconceptions in software development surrounding the idea of concurrency. This has been coming for decades, and some of the issues have just been reinforced one more time in an otherwise interesting post in LinkedIn’s … Continue reading

Posted in Architecture, Go, Java, Python | Leave a comment

The ephemeral life of software development

Lately I’ve been considering the amount of waste we produce during software development, and how to increase the amount of recycled content. I’m not talking about actual trash, though, but rather about software development artifacts. Over the years, we’ve learned … Continue reading

Posted in Architecture, Article, Design | 5 Comments

Multi-doc transactions for MongoDB

I’m glad to announce experimental support for multi-document transactions in the mgo driver that integrates MongoDB with the Go language. The support is done via a driver extension, so it works with any MongoDB release supported by the driver (>= … Continue reading

Posted in Architecture, Article, Design, Go, MongoDB, Project, Test | Leave a comment

Less is more, and is not always straightforward

´╗┐Rob Pike just wrote an article/talk that is the best background on the origins of Go yet. It surprises me how much his considerations match my world view pre-Go, and in a sense give me a fulfilling explanation about why … Continue reading

Posted in Architecture, Article, C/C++, Design, Go, Python | 5 Comments

Good concurrency changes the game

A long time before I seriously got into using distributed version control systems (DVCS) such as Bazaar and Git for developing software, it was already well known to me how the mechanics of these systems worked, and why people benefited … Continue reading

Posted in Architecture, Design, Go, Project, Snippet | 5 Comments

Death of goroutines under control

Certainly one of the reasons why many people are attracted to the Go language is its first-class concurrency aspects. Features like communication channels, lightweight processes (goroutines), and proper scheduling of these are not only native to the language but are … Continue reading

Posted in Architecture, Design, Erlang, Go, Project, Snippet, Test | 8 Comments

The Rubber Boots

(originally posted on G+) Yesterday I was just reading Armin Rigo’s post related to having Software Transactional Memory in PyPy. If you haven’t heard of Armin before, I’ll just set the context by telling you that he’s one of the … Continue reading

Posted in Architecture, Design, Python | Leave a comment

Ensemble, Go, and MongoDB at Canonical

About 1 year after development started in Ensemble, today the stars finally aligned just the right way (review queue mostly empty, no other pressing needs, etc) for me to start writing the specification about the repository system we’ve been jointly … Continue reading

Posted in Architecture, C/C++, Cloud, Design, Go, PostgreSQL, Project, Python | 7 Comments

Efficient algorithm for expanding circular buffers

Circular buffers are based on an algorithm well known by any developer who’s got past the “Hello world!” days. They offer a number of key characteristics with wide applicability such as constant and efficient memory use, efficient FIFO semantics, etc. … Continue reading

Posted in Architecture, Article, C/C++, Erlang, Go, Haskell, Java, Lua, Perl, Python, Ruby, Snippet | 4 Comments

Vector clock support for Go

One more Go library oriented towards building distributed systems hot off the presses: govclock. This one offers full vector clock support for the Go language. Vector clocks allow recording and analyzing the inherent partial ordering of events in a distributed … Continue reading

Posted in Architecture, Cloud, Go, Project, Snippet | Leave a comment