General Development Archive

C coding tip: Self-manage data buffer memory

The C programming language defines two standard memory management functions: malloc() and free(). C programmers frequently use those functions to allocate buffers at run time to pass data between functions. In many situations, however, you cannot predetermine the actual sizes required for the buffers, which may cause several fundamental problems for constructing complex C programs. This article advocates a self-managing, abstract data buffer. It outlines a pseudo-C implementation of the abstract buffer and details the advantages of adopting this mechanism.

Resources for Windows Longhorn Driver Development

For Windows codenamed "Longhorn," Microsoft is investing in the development infrastructure for industry partners, as well as investing in technologies and innovations that continue to expand the PC capabilities and experiences for end-users—including support for advancing technologies such as PCI Express, new storage technologies, and robust advances for both wired and wireless networking. This site provides pointers to technical information for hardware, driver, and firmware engineers who are planning and creating new products that will run Windows "Longhorn."

Whitepaper: Mutexes Battle Priority Inversions

This whitepaper by a veteran real-time trainer David Kalinsky provides an introduction to the subject of Priority Inversions and Mutexes, from the perspective of embedded systems software developers using a real-time operating system. It discusses unbounded priority inversions, including a detailed example. Then it surveys the differences between mutexes and “classic” semaphores, and the use of priority promotion, priority inheritance and priority ceiling protocols. More articles here.

Review of JBuilder X Enterprise Edition

Borland JBuilder X has been touted as Borland’s most significant release in these two years. Building on the stable foundation of the previous releases, Borland JBuilder X Enterprise Edition introduces support for newer application servers, along with enhanced performances and better overall user experience. With JBuilder X, Borland is taking application development into another level. Read on to find out more.

Elementary Computer Graphics: Drawing with Pixels

If you have a promising young programmer in the family, you might want to take advantage of the extra time together during the holidays to teach a little programming. Michael Norton wrote this tutorial for his fourth grade son, and offers it to Mac DevCenter readers and their children. In just seven easy lessons your child can program a fun drawing program ... and I'm sure that will be just the beginning.

Interchange E-commerce App Server Reaches 5.0

Interchange, though not as well-known as other open source projects like Linux and Apache, nevertheless forms the backbone for many companies' technology efforts, large and small. After being absorbed by Red Hat, then cut loose as that company narrowed its focus, its development community has continued to expand the project, and released version 5.0 yesterday. Read the announcement and the release notes. If you need to build a customized, database-driven web application, check it out.

Zero Install and the Web of Software

The Zero Install system removes the need to install software or libraries by running all programs from a network filesystem. The filesystem in question is the Internet as a whole, with an aggressive caching system to make it as fast as (or faster than) traditional systems such as Debian's APT repository, and to allow for offline use. It doesn't require any central authority to maintain it, and allows users to run software without needing a root password. In this editorial, we will see how software is accessed via Zero Install and how we can distribute our own programs through it.

Myths Open Source Developers Tell Ourselves

"One persistent misfeature of open source development is thoughtless mimicry, copying the behaviors of other projects without considering if they work or if there are better options under the current circumstances. At best, these practices are conventional wisdom, things that everybody believes even if nobody really remembers why. At worst, they're lies we tell ourselves." Read the rest at OnLamp.com.

Tutorial: “Message Passing for Intertask Communication”

"This online training lesson contains material taken from our introductory courses. This particular section presents the basic approaches to message passing for communication between concurrent tasks. In an actual training course, this section would be preceded by introductory sessions covering the fundamental definitions of embedded and real-time systems, as well as the fundamentals of multi-tasking (priority-based pre-emptive task scheduling)." Read it here.

C#: An Extensive Examination of Data Structures

This article kicks off a six-part series that focuses on important data structures and their use in application development. We'll examine both built-in data structures present in the .NET Framework, as well as essential data structures we'll have to build ourselves. This first installment focuses on defining what data structures are, how the efficiency of data structures is analyzed, and why this analysis is important. In this article, we'll also examine the Array and ArrayList, two of the most commonly used data structures present in the .NET Framework.