The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors

The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors - Clements et al. 2013 The way you design your interface (API) has a significant impact on the scalability you can achieve with any implementation. Clements et al. define the Scalable Commutativity Rule - which will look familiar to those who study distributed systems - … Continue reading The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors

Church’s Thesis and Functional Programming

Church's Thesis and Functional Programming - Turner 2006 One of a collection of papers celebrating the 70th anniversary of Church's thesis in 2006, as recently recommended by Erik Meijer on twitter. Both the thesis and the lambda calculus have been of seminal influence on the development of Computing Science. There were three independently developed definitions … Continue reading Church’s Thesis and Functional Programming

End-to-End Arguments in System Design

End-to-end arguments in system design - Saltzer, Reed, & Clark 1984. A true classic from 30 years ago. From the abstract: This paper presents a design principle that helps guide placement of functions among the modules of a distributed computer system. The principle, called the end-to-end argument, suggests that functions placed at low levels of … Continue reading End-to-End Arguments in System Design

Compiler Error Notifications Revisited

Compiler Error Notifications Revisited: An interaction-first approach for helping developers more effectively comprehend and resolve error notifications - Barik et al 2014 A short and easy to read paper this morning picking up on the Debugging Reinvented theme of challenging the tools we use everyday. Error notifications and their resolutions, as presented by modern IDEs, … Continue reading Compiler Error Notifications Revisited