General Development Archive

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.

The D Programming Language

"D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. D is statically typed, and compiles direct to native code. It's multiparadigm: supporting imperative, object oriented, and template metaprogramming styles. It's a member of the C syntax family, and its look and feel is very close to C++'s. See this comparison of D with C, C++, C#, and Java."

The Cocotron: Open-source Cocoa for Windows

The Cocotron is an open source project which implements an Objective-C API very similar to that described by Apple Computer's Foundation and AppKit framework documentation. "The Cocotron Development Tools are a gcc based cross-compiler toolchain which plug into Xcode, once installed they enable Xcode projects written in Objective-C to be compiled for platforms other than Mac OS X, such as Windows, Linux, and Solaris. The CDT is used to compile The Cocotron and non-OS X targets."

Lazy Programming and Evaluation

Lazy programming is a general concept of delaying the processing of a function or request until the results are needed. This concept has numerous applications, from the obvious to the obscure. Thinking in terms of lazy programming can help you rid your code of unneeded computation and restructure programs to be more problem-oriented.

Should Javascript Get More Respect?

JavaScript is often ridiculed as the black sheep of programming languages. Nearly every Web developer has cursed JavaScript at one time or another. Until recently, many developers had all but written off JavaScript as a necessary evil at best or a toy at worst. But JavaScript is becoming increasingly important. See why it remains the most broadly available scripting language for Web development and a better choice for developing modern applications.

Why Haskell?

"Haskell is a valuable language for a lot of different reasons, but the most important one is that it changes the way that you think about programming. Haskell does things in a very different way from the imperative languages that most of us are familiar with. And it's an extremely well-designed language, so there isn't a ton of crap standing between you and the concepts that you can learn from it."

D-Bus 1.0 Released

"D-Bus 1.0 was officially released last week. Developed by FreeDesktop.org, D-Bus is an open source interprocess communication system created to promote interoperability between various Linux desktop environments by providing a cohesive common platform for internal system and application messaging. D-Bus, which has been under active development for four years, is already used extensively in the GNOME environment and will eventually replace DCOP in KDE."

Developing with Apache Derby – Hitting the Trifecta

This article reviews how to modify an SQL query to group related rows together to provide summary statistics database information and introduces the concept of a view, which can be used to simplify database application development by creating a virtual table that represents the results of an SQL query. Also learn about database indexes, which you can use to locate specific table rows. After you've mastered these advanced database concepts, you'll be well positioned to begin developing Java database applications with Apache Derby.

Why Software Sucks

"Software sucks, 80% of projects fail, and most developers are unhappy individuals. Why is this? My answer; complexity. Complexity is the single factor I would attribute poor software to. The more you have to do, the harder you make it on yourself, the way requirements seem to change, the worse the final result is; right? Software needs to be simple", says Chris Stewart.