Tools of The Trade
First, Do No Harm
Author Diomidis Spinellis provides an audio recording of his On Computing column, in which he discusses how we must be very careful to avoid breaking or degrading the system while working to maintain existing code.
Service Orchestration with Rundeck
Author Diomidis Spinellis provides an audio recording of his On Computing column, in which he discusses how managing and controlling a service’s provision is tricky, but tools for service orchestration, like Rundeck, can make our lives easier.
Continuous Integration and Its Tools
This audio recording of the Tools of the Trade column discusses how continuous integration is more than a set of practices, it’s a mindset that has one thing in mind: increasing customer value.
Developing in the Cloud
Many affordable cloud-based offerings that cover software development needs, like version control, issue tracking, remote application monitoring, localization, deployment, payment processing, and continuous integration, do away with the setup, maintenance, and user support costs and complexity associated with running such systems in-house. The most important risks of cloud-based tools concern control of the data stored and the services an organization uses. On the other hand, cloud-based...
Infrastructure developed within an organization for its own internal use can take many forms. The obvious reason for creating a bespoke solution is that it can be tailored to fit an organization’s unique needs, which offers many advantages: better performance, increased flexibility, and tactical or strategic advantages over the competition. However, such solutions are associated with a steep learning curve for newcomers, maintenance and support costs, and the risk of hijacking by groups...
Systems software is the low-level infrastructure that applications run on. As an applications programmer, first try to find existing systems software rather than writing it from scratch. Once you start writing systems software, use the most efficient algorithms and data structures that gracefully accommodate the workload. Have your code check for all error returns, block when it has nothing to do, and avoid repeatedly processing data in memory. You can accelerate stress testing your...
Software Tools Research: SPLASH Panel Discussion
On 25 October 2012, at ACM's SPLASH conference, six practitioners and academics came together for a panel discussion about "Software Tools Research A Matter of Scale and Scope--or Commoditization?" This episode is a postconference report on the discussions based a transcript of the session.
The Importance of Being Declarative
A declarative programming style focuses on what you want your program to do rather than how to perform the task. By avoiding implementation details, well-written declarative code is easier to understand, modify, and maintain. The code you write in a declarative style is often so readable that you can share it with your project's domain experts. Furthermore, once you start working with declarative code, you can automatically process it to verify properties of its operation, generate test...
APIs, Libraries, and Code
The choice between using the functionality of the application’s platform (Java EE or .NET), calling one of several available external libraries, or writing code on your own involves numerous factors. When you write your own code, you control its quality. If some alternatives come in the form of external libraries, start by looking at the licensing terms. Next, judge the usability of the library or the platform API and the library’s compatibility with your system. Elements with diverse...
The DTrace dynamic-tracing framework provides uniform mechanisms for spying comprehensively and unobtrusively on the operating system, application servers, runtime environments, libraries, and application programs.
Cracking Software Reuse
The Unix system and its pipelines are a model of software reuse, while software repositories, package-management systems, shared-library technologies, and language platforms have also increased reuse's return on investment.
Open Source and Professional Advancement
Open source software development efforts offer professionals a new and valuable way to obtain significant experience in a wide range of areas as an alternative to existing certification schemes.
Choosing a Programming Language
When choosing a programming language, developers have to weigh multiple factors. Balancing efficiency, productivity, hardware interface, and external issues can enable programmers to make the right choice.
Debuggers and Logging Frameworks
Debuggers are cheap and effective tools. Typically we use them in a bottom-up fashion starting from the problem going to its source, but when this strategy fails, we might have to resort to a more tedious top-down breadth-first search.
Stringent quality control helps eliminate bugs. Tools can help prevent them from ending up in production code. We can use type-safe languages, heed compiler warnings, adopt specialized bug-finding tools, and adjust our code to locate bugs during testing.
Project Asset Portability
Source code makes up only a small part of a system’s assets; we also have specs, design diagrams, build rules, version history, documentation, regression tests, and more. Chances are you dread even the thought of changing the tools you use.
Working with Unix Tools
With modern shell command-line editing facilities, we can build commands bit by bit until they are exactly what we need. Nowadays, many systems offer the original Unix tools, so there's no reason not to add this approach to your arsenal.
Version Control Systems
Many software projects limp along without using a version control system. If you or your project isn't using a VCS, adopting one might well be the single most important tooling improvement you can undertake.
Tool Writing: A Forgotten Art?
When trying to create a tool for collecting metrics, the author discovered something important: writing stand-alone tools that you can combine efficiently with others to handle more demanding tasks appears to be becoming a forgotten art.
Java Makes Scripting Languages Irrelevant?
With the evolution from general-purpose scripting languages to Java and .NET, the niche occupied by scripting languages is rapidly shrinking. Software developers, as avid tool users, can enjoy viewing the battle from on top and reap the benefits.