General Development Archive

Techniques for Memory Debugging

"Exercise good memory-related coding practices by creating a comprehensive program to keep memory errors under control. Memory errors are the bane of C and C++ programming: they're common, awareness of their importance for over two decades hasn't eradicated them, they can impact applications severely, and few development teams have a definite plan for their management. The good news, though, is that they needn't be so mysterious."

MS Ex-Chief Architect Aims to Revolutionize Programming

After helping develop the Xerox Alto's Bravo word processor and leading Microsoft Office development for years, Charles Simonyi left Microsoft in 2002 to found his own company, Intentional Software. His company's novel goal: to ease software-development headaches by abstracting the software's requirements away from the code itself, similar to the way that WYSIWYG word processors abstract the document from the formatting tags that underlie it. "Software as we know it is the bottleneck on the digital horn of plenty," he says. "It takes up tremendous resources in talent and time. It's disappointing and hard to change. It blocks innovation in many organizations." Code should be abstracted into models that are easier for end customers to visualize and to modify, he argues. This article, written by Dreaming in Code author Scott Rosenberg, provides an overview of Simonyi's life, ideas, and current initiatives.

Autopackage Struggling to Gain Acceptance

14 months ago, the Autopackage project was small and active, and members sounded optimistic about its success. Now, although the alternative installer project continues, progress has almost come to a halt. The #autopackage channel on irc.oftc.net sits vacant most days, the developer blogs cover almost anything except the project, and commits to the source code repository have become rare. Formally, the project is still alive, but the major contributors all agree that it is faltering. So what happened?

XML for Perl Developers

"This series is a guide to those who need a quick XML-and-Perl solution. In a surprisingly large number of cases, you only need one tool to integrate XML into a Perl application, XML::Simple. Part 1 tells you where to get it, how to use it, and where to go next. Once you whet your appetite for working with XML in Perl, the other two articles in this series will help you sharpen your new skills further."

The Tale of a Developer’s Quest for Sanity

The Yarra engine was designed to be a cross platform C++ gaming engine, using OpenGL for 3D graphics and OpenAL for positional sound. Unlike existing engines, Yarra was primarily designed to allow dynamic adding of programmable objects to a scene graph with handlers to control game flow. This design doesn't suite a majority of software out there, but works great for games. But the article isn't about Yarra, it's about the developers personal experiences working with Windows, MacOSX and BeOS. The article discusses the pro's and con's of each environment, and give sa very subjective opinion about the merits of each.

Five Eclipse Plugins for Discovering Bad Code

"What if you were able to discover potential problems in your code prior to building it? Interestingly enough, there are Eclipse plugins for tools such as JDepend and CheckStyle that can help you discover problems before they are manifested in software. In this installment of Automation for the people, automation expert Paul Duvall provides examples of installing, configuring, and using these static analysis plugins in Eclipse so that you can prevent problems early in the development life cycle."

Two Tools for Building Third-Party Installers

"Bitrock's InstallBuilder and Macrovision's Install Anywhere Enterprise edition are tools for building third-party software installers. InstallBuilder uses Qt widgets, while Install Anywhere requires a Java Virtual Machine, but both are cross-platform, multi-lingual, proprietary tools that are available in downloadable demos. Both, too require minimal expertise to use. When run in wizard mode, Install Anywhere is more basic than InstallBuilder and suffers in comparison, but, when run in Advanced Designer mode, it eclipses its rival with a huge set of options."

Decentralised Installation Systems

In the Free and Open Source communities we are proud of our 'bazaar' model, where anyone can join in by setting up a project and publishing their programs. Users are free to pick and choose whatever software they want... provided they're happy to compile from source, resolve dependencies manually and give up automatic security and feature updates. In this essay, I introduce 'decentralised' installation systems, such as Autopackage and Zero Install, which aim to provide these missing features.

Construct 2.00 Released

Construct 2.00 has been released. "Construct is a Python library for declaratively defined data structures, called 'constructs'. These constructs can both parse data into an object and build an object into data. Constructs handle fields of either byte or bit granularity, structs, unions, sequences, repeaters, adapters, validators, switching, pointers, on-demand (lazy) parsing, and many more. The library defines a large number of primitive constructs, as well a large inventory of file formats and network protocols."

End User Programming Packages: Revolution

Revolution is descended in spirit from Hypercard (HC). When Apple's support for HC withered, Scott Raney developed Metacard (MC), a near clone. Metacard was then bought by Revolution (RR), based in Scotland. Metacard was two quite distinct things: an engine, and an IDE. When Metacard was sold, the MC IDE became public domain. It still exists, is volunteer maintained, and it can be used with the latest RR engine. Some on the RR user mailing list prefer the much simpler MC IDE to the RR IDE, at least for initial project development. Other IDEs are possible, and there is a third party (non-free) IDE called Galaxy.