Scalability! But at what COST? - McSherry et al. 2015 With thanks to Felix Cuadrado, @felixcuadrado, for pointing this paper out to me via twitter. Scalability is highly prized, yet it can be a misleading metric when studied in isolation. McSherry et al. study the COST of distributed systems: the Configuration that Outperforms a Single … Continue reading Scalability! But at what COST?
Tag: Software Engineering
Mostly posts relating to software design and architecture.
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
Out of the Tar Pit
Out of the Tar Pit - Moseley & Marks 2006 This is the final Desert Island Paper choice from Jonas Bonér, and a great way to round out the week. 'Out of the Tar Pit' was the 10th paper that I covered in the #themorningpaper series, but at that time I was only giving highlights … Continue reading Out of the Tar Pit
Epigrams on programming
Epigrams on programming - Perlis, 1982 See also the original formatted version in PDF at the ACM Digital Library if you have a subscription. A bit of Friday fun today. Not strictly a paper, but certainly a classic! Twitter didn't exist in 1982, though if it did, Alan Perlis would be a master tweeter. This … Continue reading Epigrams on programming
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
Debugging reinvented
Debugging reinvented: Asking and answering why and why-not questions about program behavior - Ko and Myers 2008 Today's choice is another great example of the value of constantly challenging the status quo and asking if there might be a better way. In more than half a century of research on debuggers, there have been countless … Continue reading Debugging reinvented
On ICSE’s “Most Influential Papers”
On ICSE's "Most Influential Papers" - Parnas 1995 Today is the 50th paper in the #themorningpaper series! It seemed fitting therefore to choose this essay by David Parnas, written on his receipt of the 'most influential paper' award for his paper on the modular structure of complex systems. Do papers really have an influence on … Continue reading On ICSE’s “Most Influential Papers”
Software Aging
Software Aging - Parnas 1994 This paper contains one of my all-time favourite passages, and is a timeless discussion on why software ages, and what we can do to slow the aging process. Programs, like people, get old. We can't prevent aging, but we can understand its causes, take steps to limit its effects, temporarily … Continue reading Software Aging