General Development Archive

The Protothreads Library Version 1.1

Protothreads are an extremely lightweight, stackless type of threads written in portable C code. Protothreads provide blocked waiting and sequential code execution on top of event-driven systems, without the overhead of full multithreading or per-thread stacks. They are designed for severely memory constrained systems, has a very low RAM overhead, and can be used with or without an underlying OS. New in version 1.1 is the PT_YIELD() operation that allows a protothread to yield the CPU.

Installing Software: A GNU/Linux VS. MS Windows Comparison

I read a lot of reviews comparing GNU/Linux and Microsoft Windows, and inevitably the topic of installing software comes up. Most reviews indicate that installing software in Windows is much easier than that of the desktop GNU/Linux world. I decided to do my own comparison based on my desktop usage to see the difference. The following are my results. Those of you that come from the Windows world may be a tad bit surprised at the ease in which software can be installed.

Autopackage 1.0, the now and the next

After two and a half years of work, autopackage 1.0 has finally escaped into the wild. It has a fundamentally new design, and offers an alternative system of software distribution and management on Linux. This article will talk about what this means for the Linux community, and what new directions and possibilities it opens up. It'll talk about problems remaining to be solved, and finally it will propose solutions for them. If you just want to see what autopackage is like, check out the screenshots or the Flash demo, available from the website.

HOWTO: Creating Images Of Your Linux System With SystemImager

Falko Timme wrote a tutorial describing how to create images of your Linux system with SystemImager. SystemImager lets you create images of your installations. So you can make a backup of your systems, clone your systems (if you have to maintain more than one machine with exactly the same software), or even distribute your software over the internet. To do so, you need an image server (should have enough disk space to store your images) and a so-called golden client (i.e., your "perfect system" of which you want to make an image).

Language Driven Development

Xactium has published a white paper on Language Driven Development (LDD). LDD is a revolutionary approach to designing and implementing software and systems. LDD makes huge productivity gains by bridging the gap between the way developers think about their problem domain, and the languages and tools that implement the solution.

Reliability and availability: What’s the difference?

How do you design a computing system to provide continuous service and to ensure that any failures interrupting service do not result in customer safety issues or loss of customers due to dissatisfaction? Historically, system architects have taken two approaches to answer this question: building highly reliable, fail-safe systems with low probability of failure, or building mostly reliable systems with quick automated recovery.

The Ten Worst Engineering Pitfalls

I've been a professional software engineer for close to ten years. Based on my experience, I recently attempted to enumerate the ten worst engineering "traps" most developers seem (for whatever reason) prone to fall into. Here's the list I came up with. It should be noted that wherever two of these come into conflict, the item close to the top of the list wins.

Quality Assurance: Much More than Testing

Quality assurance isn’t just testing, or analysis, or wishful thinking. Although it can be boring, difficult, and tedious, QA is nonetheless essential. Ensuring that a system will work when delivered requires much planning and discipline. Convincing others that the system will function properly requires even more careful and thoughtful effort. QA is performed through all stages of the project, not just slapped on at the end. It is a way of life.