Tools of the Trade

A collection of articles written by Diomidis Spinellis in IEEE Software column 'Tools of the Trade' (2005-2014).

This collections includes 53 articles published between 2005 and 2014.

(stats / articles)
(stats / downloads)
(top articles)




2014 (4)

2014
First, Do No Harm
IEEE Software 2014 (5); by D. Spinellis

When we maintain existing code, we must be very careful to avoid breaking or degrading the system we're working on.

2014
Service Orchestration with Rundeck
IEEE Software 2014 (4); by D. Spinellis

Managing and controlling a service's provision is tricky, but tools for service orchestration, like Rundeck, can make our lives…

2014
Developing in the Cloud
IEEE Software 2014 (2); by D. Spinellis

Many affordable cloud-based offerings that cover software development needs, like version control, issue tracking, remote application monitoring,…

2014
Bespoke Infrastructures
IEEE Software 2014 (1); by D. Spinellis

Infrastructure developed within an organization for its own internal use can take many forms.

2013 (6)

2013
The Frictionless Development Environment Scorecard
IEEE Software 2013 (6); by D. Spinellis

The environment in which we work as developers can make a tremendous difference on our productivity and well-being.

2013
Differential Debugging
IEEE Software 2013 (5); by D. Spinellis

Finding yourself in a situation with a working and a buggy system is quite common.

2013
Portability: Goodies vs. the Hair Shirt
IEEE Software 2013 (4); by D. Spinellis

Deciding whether to write portable code or not should be the outcome of a cost-benefit analysis.

2013
Systems Software
IEEE Software 2013 (3); by D. Spinellis

Systems software is the low-level infrastructure that applications run on.

2013
Software Tools Research: SPLASH Panel Discussion
IEEE Software 2013 (2); by D. Mancl, S. Fraser

On 25 October 2012, at ACM's SPLASH conference, six practitioners and academics came together for a panel discussion about…

2013
The Importance of Being Declarative
IEEE Software 2013 (1); by D. Spinellis

A declarative programming style focuses on what you want your program to do rather than how to perform the task.

2012 (6)

2012
APIs, Libraries, and Code
IEEE Software 2012 (6); by D. Spinellis

The choice between using the functionality of the application's platform Java EE or .NET, calling one of several available external libraries, or…

2012
Virtualize Me
IEEE Software 2012 (5); by D. Spinellis

Modern virtualization technology allows us to run operating systems in a virtual machine that can be hosted on facilities ranging from our laptop to a…

2012
Don't Install Software by Hand
IEEE Software 2012 (4); by D. Spinellis

An IT system's setup and configuration affects developers mainly due to the proliferation and complexity of Internet-facing systems.

2012
Git
IEEE Software 2012 (3); by D. Spinellis

Git is a distributed revision control system available on all mainstream development platforms through a free software license.

2012
Package Management Systems
IEEE Software 2012 (2); by D. Spinellis

A package management system organizes and simplifies the installation and maintenance of software by standardizing and organizing the production…

2012
Refactoring on the Cheap
IEEE Software 2012 (1); by D. Spinellis

Refactoring with ad hoc methods increases the scope of possible refactorings, allows you to use the same approaches on various languages, and…

2011 (5)

2011
Lessons from Space
IEEE Software 2011 (6); by D. Spinellis, H. Spencer

Given the parallels between the complexity of human spaceflight and large software systems, there are many things we developers can learn from…

2011
Faking It
IEEE Software 2011 (5); by D. Spinellis

CPUs are no longer getting faster. Instead, CPU manufacturers now package multiple cores in each CPU and ask us developers to put them to good use.

2011
Agility Drivers
IEEE Software 2011 (4); by D. Spinellis

Our growing ability to swiftly put together sophisticated software affords us the luxury to listen to our customers, to try out new things, to make mistakes,…

2011
Choosing and Using Open Source Components
IEEE Software 2011 (3); by D. Spinellis

The developers of the SQLite open source database engine estimate that it's deployed in roughly half a billion systems around the world.

2011
elytS edoC
IEEE Software 2011 (2); by D. Spinellis

This paper presents a elytS edoC - a software used in writing source codes.

2010 (4)

2010
Farewell to Disks
IEEE Software 2010 (6); by D. Spinellis

Sophisticated processing of huge, complex datasets requires us to rethink the relationship between disk-based storage and main-memory processing.

2010
UML Everywhere
IEEE Software 2010 (5); by D. Spinellis

A standardized and widely used diagramming notation is a sign of a profession's maturity.

2010
Code Documentation
IEEE Software 2010 (4); by D. Spinellis

The basic principles of good code documentation include the avoidance of repetition, the coexistence of code and its…

2010
Software Tracks
IEEE Software 2010 (2); by D. Spinellis

Railroad tracks offer guidance and support.

2009 (4)

2009
Basic Etiquette of Technical Communication
IEEE Software 2009 (6); by D. Spinellis

Advice on courteousness and politeness in technical communication is in short supply, yet this is needed when developers communicate with other…

2009
Job Security
IEEE Software 2009 (5); by D. Spinellis

In this paper, job security in code design is discussed.

2009
Drawing Tools
IEEE Software 2009 (3); by D. Spinellis

A drawing is often the best way to describe a large, complex artifact.

2009
Start with the Most Difficult Part
IEEE Software 2009 (2); by D. Spinellis

Any development project involves elements that we don't know at the beginning and discover as we progress.

2008 (5)

2008
Sometimes the Old Ways Are Best
IEEE Software 2008 (6); by B. Kernighan

Brian Kernighan looks back at what has and has not changed in computing, programming, and tools over the last 30 years.

2008
The Way We Program
IEEE Software 2008 (4); by D. Spinellis

Code lacking comments, meaningful identifiers, and correct indentation is a nightmare.

2008
Software Builders
IEEE Software 2008 (3); by D. Spinellis

The tools and processes we use to transform our system's source code into an application that we can deploy or ship have always been important, but nowadays…

2008
Using and Abusing XML
IEEE Software 2008 (2); by D. Spinellis

XML is an extremely nifty format. Computers can easily parse XML data, yet humans can also understand it.

2008
Rational Metaprogramming
IEEE Software 2008 (1); by D. Spinellis

Metaprogramming, using programs to manipulate other programs, is as old as programming.

2007 (6)

2007
On Paper
IEEE Software 2007 (6); by D. Spinellis

This paper tries to devise an algorithm for analyzing initializers for C arrays and structures.

2007
Abstraction and Variation
IEEE Software 2007 (5); by D. Spinellis

This paper presents similarities in data by expressing them as a new type.

2007
The Tools We Use
IEEE Software 2007 (4); by D. Spinellis

What's the state of the art in the tools we use to build software To answer this question, I let a powerful server build from source code about…

2007
Silver Bullets and Other Mysteries
IEEE Software 2007 (3); by D. Spinellis

What can developers do when faced with an aged software system This is where a silver bullet comes in handy.

2007
I Spy
IEEE Software 2007 (2); by D. Spinellis

The ultimate source of truth regarding a program is its execution.

2007
Cracking Software Reuse
IEEE Software 2007 (1); by D. Spinellis

The Unix system and its pipelines are a model of software reuse.

2006 (5)

2006
Open Source and Professional Advancement
IEEE Software 2006 (5); by D. Spinellis

Open source software development efforts offer us professionals a new and valuable way to obtain significant experience in a wide range…

2006
Choosing a programming language
IEEE Software 2006 (4); by D. Spinellis

This paper evaluates the use of a functional language for implementing domain-specific functionality.

2006
Debuggers and logging frameworks
IEEE Software 2006 (3); by D. Spinellis

The testing, diagnostic, and repair equipment of many professions is horrendously expensive.

2006
Bug busters
IEEE Software 2006 (2); by D. Spinellis

One way to deal with bugs is to avoid them entirely.

2006
Project asset portability
IEEE Software 2006 (1); by D. Spinellis

Nowadays, a software system's program source code makes up only a small part of its assets stored as bits - taking up a larger percentage are…

2005 (8)

2005
Version Control, Part 2
IEEE Software 2005 (6); by D. Spinellis

This is the second installment of a software engineering glossary of version control terminology.

2005
Working with Unix Tools
IEEE Software 2005 (6); by D. Spinellis

Line-oriented textual data streams are the lowest useful common denominator for a lot of data that passes through our hands.

2005
Version control systems
IEEE Software 2005 (5); by D. Spinellis

Sane programmers don't write production code without the help of an editor and an interpreter or a compiler, yet the author has seen many software projects…

2005
Version Control, Part I
IEEE Software 2005 (5); by D. Spinellis

This is the first installment of a software engineering glossary of version control terminology.

2005
Tool writing: a forgotten art? (software tools)
IEEE Software 2005 (4); by D. Spinellis

The author decided to create a tool to fit the needs.

2005
Java makes scripting languages irrelevant?
IEEE Software 2005 (3); by D. Spinellis

In computing, we often solve a complex problem by adding another level of indirection.

2005
Dear editor [programming tools of the trade]
IEEE Software 2005 (2); by D. Spinellis

In this article, we give some advices for the programmers for an efficient software design.

2005
The Tools at Hand
IEEE Software 2005 (1); by D. Spinellis