What if all the software layers in a virtual appliance were compiled within the same safe, high-level language framework?
ANIL MADHAVAPEDDY AND DAVID J. SCOTT
Cloud computing has been pioneering the business of renting computing resources in large data centers to multiple (and possibly competing) tenants. The basic enabling technology for the cloud isoperating-system virtualization such as Xen1 or VMWare, which allows customers to multiplex VMs (virtual machines) on a shared cluster of physical machines. Each VM presents as a self-containedcomputer, booting a standard operating-system kernel and running unmodified applications just as if it were executing on a physical machine.
> Unikernels: Rise of the Virtual Library Operating System
Self-Healing in Modern Operating Systems
Erlang for Concurrent Programming
Passing a Language through the Eye of a Needle
Enterprise computing in the public cloud
JASON LANGO, BRACKET COMPUTING
The public cloud has introduced new technology and architectures that could reshape enterprise computing. In particular, the public cloud is a new design center for enterprise applications, platform software, and services. API-driven orchestration of large-scale, on-demand resources is an important new design attribute, which differentiates public-cloud from conventional enterprise data-center infrastructure. Enterprise applications must adapt to the new public-cloud design center, but at the same time new software and system design patterns can add enterprise attributes and service levels to public-cloud services.
> Toward Software-defined SLAs
Why Cloud Computing Will Never Be Free
Condos and Clouds
There’s Just No Getting around It: You’re Building a Distributed System
An intellectual history of programmable networks
NICK FEAMSTER, GEORGIA INSTITUTE OF TECHNOLOGY
JENNIFER REXFORD, PRINCETON UNIVERSITY
ELLEN ZEGURA, GEORGIA INSTITUTE OF TECHNOLOGY
Designing and managing networks has become more innovative over the past few years with the aid of SDN (software-defined networking). This technology seems to have appeared suddenly, but it is actually part of a long history of trying to make computer networks more programmable.
> The Road to SDN
“Not invented here” syndrome is not unique to the IT world.
When I first read the claim that HealthCare.gov, the Web site initiated by the Affordable Care Act, had cost $500 million to create,4I didn’t believe the number. There is no way to make a Web site cost that much. But the actual number seems not to be an order-of-magnitude lower, and as I understand the reports, the Web site doesn’t have much to show for the high cost in term of performance, features, or quality in general. This is hardly a unique experience in the IT world. In fact, it seems more the rule than the exception.
> Center Wheel for Success
Dante’s tale, as experienced by a software architect
ALEX E. BELL, THE BOEING COMPANY
The Software Inferno is a tale that parallels The Inferno, Part One ofThe Divine Comedy written by Dante Alighieri in the early 1300s. That literary masterpiece describes the condemnation and punishment faced by a variety of sinners in their hell-spent afterlives as recompense for atrocities committed during their earthly existences. The Software Inferno is a similar account, describing a journey where “sinners against software” are encountered amidst their torment, within their assigned areas of eternal condemnation, and paying their penance.
> The Software Inferno
Death by UML Fever
Coding for the Code
Software Development with Code Maps
HTTP continues to evolve
HTTP (Hypertext Transfer Protocol) is one of the most widely used application protocols on the Internet. Since its publication, RFC 2616 (HTTP 1.1) has served as a foundation for the unprecedented growth of the Internet: billions of devices of all shapes and sizes, from desktop computers to the tiny Web devices in our pockets, speak HTTP every day to deliver news, video, and millions of other Web applications we have all come to depend on in our everyday lives.
> Making the Web Faster with HTTP 2.0
Improving Performance on the Internet
High Performance Web Sites
How Fast is Your Web Site?
The increasing significance of intermediate representations in compilers
Program compilation is a complicated process. A compiler is a software program that translates a high-level source language program into a form ready to execute on a computer. Early in the evolution of compilers, designers introduced IRs (intermediate representations, also commonly called intermediate languages) to manage the complexity of the compilation process. The use of an IR as the compiler’s internal representation of the program enables the compiler to be broken up into multiple phases and components, thus benefiting from modularity.
> Intermediate Representation
All Your Database Are Belong to Us
Stream Processors: Progammability and Efficiency
Software Development with Code Maps
Interfacing between languages is increasingly important
Interoperability between languages has been a problem since the second programming language was invented. Solutions have ranged from language-independent object models such as COM (Component Object Model) and CORBA (Common Object Request Broker Architecture) to VMs (virtual machines) designed to integrate languages, such as the JVM (Java Virtual Machine) and CLR (Common Language Runtime). With software becoming ever more complex and hardware less homogeneous, the likelihood of a single language being the correct tool for an entire program is lower than ever. As modern compilers become more modular, there is potential for a new generation of interesting solutions.
> The Challenge of Cross-language Interoperability
The Robustness Principle Reconsidered
Erlang for Concurrent Programming
The Rise and Fall of CORBA
It’s not always size that matters.
I’ve been dealing with a large program written in Java that seems to spend most of its time asking me to restart it because it has run out of memory. I’m not sure if this is an issue in the JVM (Java Virtual Machine) I’m using or in the program itself, but during these frequent restarts, I keep wondering why this program is so incredibly bloated. I would have thought Java’s garbage collector would prevent programs from running out of memory, especially when my desktop has quite a lot of it. It seems that eight gigabytes just isn’t enough to handle a modern IDE anymore.
Lack of RAM
> Bugs and Bragging Rights
Combining agile and SEMAT yields more advantages than either one alone
IVAR JACOBSON, IAN SPENCE, AND PAN-WEI NG
Today, as always, many different initiatives are under way to improve the ways in which software is developed. The most popular and prevalent of these is the agile movement. One of the newer kids on the block is the SEMAT (Software Engineering Method and Theory) initiative. As with any new initiative, people are struggling to see how it fits into the world and relates to all the other things going on. For example, does it improve or replace their current ways of working? Is it like lean, which supports and furthers the aims of the agile movement, or is it more like waterfall planning, which is in opposition to an agile approach?
> Agile and SEMAT — Perfect Partners
Breaking the Major Release Habit
UX Design and Agile: A Natural Fit?
The Essence of Software Engineering: The SEMAT Kernel