Keep It Simple Stupid

A set of research papers to familiarize oneself with. Part 3

| comments

Hello everybody!

This the third set of interesting IT-related research papers that you may want to read. Also see: part 1, part 2, and part 4. Enjoy!

  • FBI, Directorate of Intelligence. Bitcoin Virtual Currency: Unique Features Present Distinct Challenges for Deterring Illicit Activity

The Cyber and Criminal Intelligence Sections, with contributions from the FBI Detroit Division, initiated this intelligence assessment to explore the unique aspects of the P2P virtual currency Bitcoin. This assessment does not attempt to judge the likelihood of Bitcoin’s long-term success as an alternate payment method, but explores how bitcoins (or any future virtual currency similar to Bitcoin) are traded and how criminals can use them to conduct illicit activity. This assessment draws primarily on intelligence from January 2011 through April 2012, unless otherwise referenced for historical perspective.


  • Prabhat Totoo, Pantazis Deligiannis, Hans-Wolfgang Loidl. Haskell vs. F# vs. Scala. A High-level Language Features and Parallelism Support Comparison

This paper provides a performance and programmability comparison of high-level parallel programming support in Haskell, F# and Scala. Developing several parallel versions, we employ skeleton-based, semi-explicit and explicit approaches to parallelism. We focus on advanced language features for separating computational and coordination aspects of the code and tuning performance. We also assess the impact of functional purity and multi-paradigm design of the languages on program development and performance.
Basis for these comparisons are several Barnes-Hut implementations of the n-body problem in all three languages, on both Linux and Windows. Our performance measurements on state-of-the-art multi-cores achieve a speedup up to 5.62 (on 8 cores) with a highly-tuned Haskell version. For comparable implementations in Scala and F# we achieve speedups of 4.51 (on 8 cores) and 2.28 (on 4 cores), respectively. We observe that near best speedups are achieved using the highest level abstraction in these languages.


  • Colin S. Gordon, Matthew J. Parkinson, Jared Parsons, Aleks Bromfield, Joe Duffy. Uniqueness and Reference Immutability for Safe Parallelism

A key challenge for concurrent programming is that side-effects (memory operations) in one thread can affect the behavior of another thread. In this paper, we present a type system to restrict the updates to memory to prevent these unintended side-effects. We provide a novel combination of immutable and unique (isolated) types that ensures safe parallelism (race freedom and deterministic execution). The type system includes support for polymorphism over type qualifiers, and can easily create cycles of immutable objects. Key to the system’s flexibility is the ability to recover immutable or externally unique references after violating uniqueness without any explicit alias tracking. Our type system models a prototype extension to C# that is in active use by a Microsoft team. We describe their experiences building large systems with this extension. We prove the soundness of the type system by an embedding into a program logic.


  • Raphael Pham, Leif Singer, Olga Liskin, Fernando Figueira Filho, and Kurt Schneider. Creating a Shared Understanding of Testing Culture on a Social Coding Site

Many software development projects struggle with creating and communicating a testing culture that is appropriate for the project’s needs. This may degrade software quality by leaving defects undiscovered. Previous research suggests that social coding sites such as GitHub provide a collaborative environment with a high degree of social transparency. This makes developers’ actions and interactions more visible and trackable.
We conducted interviews with 33 active users of GitHub to investigate how the increased transparency found on GitHub influences developers’ testing behaviors. Subsequently, we validated our findings with an online questionnaire that was answered by 569 members of GitHub. We found several strategies that software developers and managers can use to positively influence the testing behavior in their projects. However, project owners on GitHub may not be aware of them. We report on the challenges and risks this creates and suggest guidelines for promoting a sustainable testing culture in software development projects.


  • Rob Pike, Brian W. Kernighan. Program design in the UNIX environment

Much of the power of the UNIX operating system comes from a style of program design that makes programs easy to use and, more important, easy to combine with other programs. This style has been called the use of software tools, and depends more on how the programs fit into the programming environment — how they can be used with other programs — than on how they are designed internally. But as the system has become commercially successful and has spread widely, this style has often been compromised, to the detriment of all users. Old programs have become encrusted with dubious features. Newer programs are not always written with attention to proper separation of function and design for interconnection. This paper discusses the elements of program design, showing by example good and bad design, and indicates some possible trends for the future.


  • ESS. Digital vs. Analog Volume Controls

In a Digital Audio System what is the trade-off between using a digital or an analog volume control?


Part 1, Part 2, Part 3, Part 4.