General Development Archive

Conary Reaches 1.0

Conary is a distributed software management system for Linux distributions. It replaces traditional package management solutions (such as RPM and dpkg) with one designed to enable loose collaboration across the Internet. It enables sets of distributed and loosely connected repositories to define the components which are installed on a Linux system. Version 1.0 was released a few days ago, and a maintanance version 1.0.2 was released today.

Going Dynamic with PHP v5

"The introduction of new object-oriented programming features in PHP V5 has significantly raised the level of functionality in this programming language. Not only can you have private, protected, and public member variables and functions - just as you would in the Java, C++, or C# programming languages - but you can also create objects that bend at runtime, creating new methods and member variables on the fly. You can't do that with the Java, C++, or C# languages. This kind of functionality makes super-rapid application development systems, such as Ruby on Rails, possible."

C++ Chain of Responsibility Pattern: Network Events

Should you make your C++ classes more intelligent or centralize the intelligence and use dumbed-down surrounding classes? The natural world tends to prefer a pass-the-parcel style of distributed intelligence, which reduces single points of failure and potentially leads to more stable systems. In this article, Stephen Morris shows you how to raise the IQ of your classes while simultaneously allowing other (possibly) more-qualified classes to handle specific problems. The chain of responsibility pattern provides an elegant model for facilitating this behavior.

Remote Python Call

Remote Python Call is a transparent infrastructure for RPC and distributed computing with the python language. It gives you complete and seamless control over a remote python interpreter and lets you execute code either synchronously or asynchronously (which means remote operations do not block and return AsyncResults). It is ideal for managing distributed tests on several platforms.

Borland Plans Separate Company for Developer Products

"Today Borland announced plans to seek a buyer for our IDE product lines that include Delphi, C++Builder, C#Builder, JBuilder (and Peloton), InterBase, JDataStore, nDataStore, Kylix, and our older Borland and Turbo language products and tools. The goal is to create a standalone business focused on advancing individual developer productivity using the people inside Borland who are focused on the success of these award winning products."

CLI Magic: ifup, ifdown, ifstatus

"I've always assumed that ifup and ifdown were conditional commands that performed their assigned duties only if the interface device in question was up or down, as the command might be. I was dead wrong. I blame my mistake on being a programmer, rather than being stupid, but it's simply too close to call. The if in ifup, ifdown, and ifstatus is not a programmer's if - it's an abbreviation for interface. On the off chance that I'm not the only one who has misunderstood these commands because of their rather iffy names, here's what they really do and how they are used."

A Look at R’s Underlying Features

"R is a rich statistical environment, released as free software, which includes a programming language, an interactive shell, and extensive graphing capabilities. This installment discusses creating reusable and modular components for R development. This article follows up two prior installments and looks at the object-orientation in R along with some additional general programming concepts in R."

The Art of Metaprogramming Using Scheme

One of the most under-used programming techniques -- Metaprogramming -- programming with code generators or writing programs that themselves write code, has many uses in large-scale computer programming. This article shows you some tools needed to do Metaprogramming in Scheme, as well as provide several metaprogramming examples. To determine which problems are best solved with a code-generating programs, take a look at this introduction to Metaprogramming article, which teaches you why metaprogramming is necessary.

DTrace in ACM Queue

This article goes into the motivation and architecture for DTrace -- and describes some of the problems that remain to be solved in system observability. The article also includes a short case-study on using DTrace to find a real problem -- a problem that was ultimately due to some seriously fugly code in a monitoring app.

3D Interface Development Tools Released

For years computer interfaces have been held back by two dimensions. The power and flexibility of three dimensional interfaces have remained the stuff of science fiction movies, video games and very custom high-end applications. Aoren Software now brings that power to everyday applications and operating systems through a window server and framework technology called Vision. Vision was designed from the ground up to break away from old paradigms and provide the interface needs of the next generation. Application developers can get their hands on the technology with the developer preview release and start creating programs that have previously resided only in the imagination.

A Brief Programmer’s Guide to Multi-Core Development

"It's cool to say you have a dual-core machine, but in the grand scheme of things, having it doesn't make much difference in performance. If, however, your software can share the computational burden across your collection of processor cores, it's a different kettle of fish. Then you actually get more work done in a given amount of time. The technique is called thread-level parallelism, more commonly known as threading, and it requires some mental adjustment on the part of the developer."

Amanith 0.3 Released

The Amanith library is a cross-platform (Linux, Win32, MacOS X, FreeBSD and IRIX) open source C++ framework for vector graphics. The new 0.3 release adds a full SVG 1.2-compliant enhanced alpha compositing layer, supporting all 24 compositing operations (base and extended Porter-Duff) in pure OpenGL. This makes Amanith the first opensource and crossplatform library that supports all of them in hardware (15 of 24 are available also without fragment programs). In addition a full geometry caching system has been introduced to speed up all drawing tasks. Version 0.3 has been released today.

How to Achieve Sustainable Software Development

Very little software is written once, installed, and then never changed over the course of its lifetime. And yet, the most prevalent development practices used in the industry treat change as an afterthought. This chapter will teach you to not only anticipate change in your software but develop specifically with change in mind. Also, this chapter provides a set of guidelines and formulas to think about when preparing large product teams for the large meetings that move their work forward.

GRUB Tips and Tricks

"The GRand Unified Boot loader, or GRUB, has all but replaced the default boot loader on many GNU/Linux distributions. It includes some conveniences over LILO, the LInux LOader. One advantage is not having to remember to run /sbin/lilo every time you make a configuration change. It also can function as a boot loader for removable media such as floppies, CD-R/W and USB flash memory keys. It is short-sided to view GRUB only as a boot loader to be installed on a hard drive of a GNU/Linux system. Combined with a few other utilities, GRUB can be a powerful and good-looking tool for your home, organization or workplace."