This publication describes Tupleware, an implementation of a distributed tuple space which acts as a scalable and efficient middleware for computationally intensive numerical and scientific applications. Tupleware is based on the Linda coordination language introduced by David Gelernter in 1985, and incorporates additional techniques such as peer-to-peer communications and exploitation of data locality in order to address problems such as scalability and performance, which are commonly encountered by traditional centralised tuple space implementations. Furthermore, unlike some other distributed tuple space implementations, Tupleware does not burden the programmer with any additional complexity due to this distribution. At the application level, the Tupleware middleware behaves exactly like a centralised tuple space. It is hoped that this research in some way furthers the adoption of the tuple space programming model for distributed computing, by enhancing its ability to provide improved performance, scalability, flexibility and simplicity for a range of applications not traditionally suited to tuple space based systems.