Coding Smart: People vs. Tools:
Tools can help developers be more productive, but they’re no replacement for thinking.
Cool tools are seductive. When we think about software productivity, tools naturally come to mind. When we see pretty new tools, we tend to believe that their amazing features will help us get our work done much faster. Because every software engineer uses software productivity tools daily, and all team managers have to decide which tools their members will use, the latest and greatest look appealing.
The Developer’s Art Today: Aikido or Sumo?:
Software development, tools, and whether or not they make us more productive
About once a month the Queue Advisory Board gets together for dinner to hammer out ideas for upcoming issues. Well, a few months back we fell into discussion about the problems surrounding software development these days. A few of us piped up straight away that tools are very important. Others countered, “Oh, sure, but do they help or do they hurt?” And so this issue was born.
Microsoft’s Compact Framework Targets Smart Devices:
Welcome to my first installment of ACM Queue’s ToolKit column. Each issue I’ll dig beneath the market-friendly, feature-rich exterior of some of the best-known (and some of the least-known) development tools in an attempt to separate the core app from the product spec sheet.
This month we’re embedding ourselves inside Microsoft’s .NET Compact Framework (CF), billed by Microsoft as the perfect platform to create software applications that target mobile devices. That’s accurate—and it’s not.
Toolkit: GNU Tools: Still Relevant?:
Often lost amid the focus on software you don’t have to pay for - such as Linux and Eclipse - is any mention of the organization that started it all: the Free Software Foundation (FSF).
FSF was founded in 1984 by Richard Stallman. Then a programmer at MIT’s Artificial Intelligence Laboratory, Stallman resigned to protest its restrictive copyright policy. He started the GNU (GNU’s Not Unix) Project, an effort to build a free Unix clone, and wrote the GNU (General Public License), which essentially said you could redistribute GNU code for free as long as you also gave away any modification you added—and the free software movement was on its way.
Intel Is Stealth Source of Heavy-Duty Software Tools:
As we shift froma 32-bit world to a 64-bit paradigm, the right development tools matter—big time.
In the PC and server worlds, the engineering battle for computer performance has often focused on the hardware advances Intel brings to its microprocessors.
Grid Tools: Coming to a Cluster Near You:
Hot scientific tools trickle down to support mainstream IT tasks.
A set of surprisingly mainstream software tools has come out of an unlikely source—a scientifically focused collective called the Gelato Federation. Formally launched in March 2002, the group seeks to apply open source Linux software running on Intel’s advanced Itanium processor as an enabling technology toward the goal of putting together large, highly scalable clusters of 64-bit systems. The Gelato group believes such scalability is the most significant trend in high-performance computing in the last 10 to 15 years. It marks a potent—and much cheaper—alternative to the Cray supercomputers that populated university labs in the 1980s and early 1990s.
Kode Vicious Bugs Out:
What do you do when tools fail?
This month Kode Vicious serves up a mixed bag, including tackling the uncertainties of heisenbugs -- a nasty type of bug that’s been known to drive coders certifiably insane. He also gives us his list of must-reads. Are any of your favorites on the list? Read on to find out!
A License to Kode:
Code-scanning software is expensive and I’m not sure it’s worth it. What do you think?
While it’s sometimes tempting to blame the coders, the seeds of many problems are sown well before any lines of code (dodgy as they may be) have been written. Everything from the choice of tools to the choice of a software license can affect the quality, usability, and commercial potential of a product. This month Kode Vicious takes a step away from coding technique and addresses some of these tough decisions with which developers must grapple.
Making Sense of Revision-control Systems:
Whether distributed or centralized, all revision-control systems come with complicated sets of tradeoffs. How do you find the best match between tool and team?
Modern software is tremendously complicated, and the methods that teams use to manage its development reflect this complexity. Though many organizations use revision-control software to track and manage the complexity of a project as it evolves, the topic of how to make an informed choice of revision-control tools has received scant attention. Until fairly recently, the world of revision control was moribund, so there was simply not much to say on this subject.
Porting with Autotools:
Using tools such as Automake and Autoconf with preexisting code bases can be a major hassle.
A piece of C code I’ve been working on recently needs to be ported to another platform, and at work we’re looking at Autotools, including Automake and Autoconf, to achieve this. The problem is that every time I attempt to get the code building with these tools I feel like a rat in a maze. I can almost get things to build but not quite.
Scale Failure:
Using a tool for the wrong job is OK until the day when it isn’t.
Dear KV, I have been digging into a network-based logging system at work because, from time to time, the system jams up, even when there seems to be no good reason for it to do so. What I found would be funny, if only it weren’t my job to fix it: the central dispatcher for the entire logging system is a simple for loop around a pair of read and write calls; the for loop takes input from one of a set of file descriptors and sends output to one of another set of file descriptors. The system works fine so long as none of the remote readers or writers ever blocks, and normally that’s not a problem.
Using Free and Open Source Tools to Manage Software Quality:
An agile process implementation
The principles of agile software development place more emphasis on individuals and interactions than on processes and tools. They steer us away from heavy documentation requirements and guide us along a path of reacting efficiently to change rather than sticking rigidly to a pre-defined plan. To support this flexible method of operation, it is important to have suitable applications to manage the team’s activities. It is also essential to implement effective frameworks to ensure quality is being built into the product early and at all levels.
Benchmarking "Hello, World!":
Six different views of the execution of "Hello, World!" show what is often missing in today’s tools
As more and more software moves off the desktop and into data centers, and more and more cell phones use server requests as the other half of apps, observation tools for large-scale distributed transaction systems are not keeping up. This makes it tempting to look under the lamppost using simpler tools. You will waste a lot of high-pressure time following that path when you have a sudden complex performance crisis.