Archive for the ‘Musing’ Category

CVS is not as bad as its evil reputation…

Sunday, January 27th, 2008

Many Open Source projects, including FreeBSD, OpenPKG, RPM5, etc., for historical reasons even in 2008 still use the old Concurrent Versions System (CVS) — a popular Version Control System (VCS) of the ’90s.

At its zenith, CVS was the ultimative king, as it really dwarfed the older RCS or even the ancient SCCS. CVS was revolutionary because of its “checkout and commit at any time, resolve conflicts later on demand” instead of the “exclusively lock in advance for conflict-free checkout and commit” approach of other VCS. CVS also provided nice global symbolic revision and branch tags on top of the per-file revisions and branches, a consistent command line interface, and many more. Hence, in the ’90s CVS was really everywhere.

But in the last 8 years the VCS world changed dramatically: today we have the more “modern” Subversion, Git, Mercurial, Monotone, Bazaar… and now everybody considers CVS to be “just bad” and everybody still using it to be just “technology agnostic”.

Blind Alley of Data

Sunday, December 16th, 2007

I don’t know whether you once thought about the following interesting fact: many people in the IT are really exited about easy branching in version control, data replication for database/directory systems, hot-standby services in server computing, etc… But wouldn’t you really expect that those people actually better be excited about multi-master support for database/directory systems, real clustering of servers and subsequent branch merging in version control? Do you already see the major difference here? If not, let me describe in more detail why I think people are without any reason excited about blind alley approaches…

Distributed VCS + Central ACL

Sunday, September 16th, 2007

In the Version Control System (VCS) area there are currently mainly two camps: the centralized ones like the good old CVS, the successor Subversion, etc and the distributed ones like the modern Monotone, Mercurial, Git, Bazaar, etc.

The interesting point is that the central VCS style of working inherently allows strong access control while in the distributed VCS style of working the “share everything between everybody” is the primary mantra. If one wants to combine both distributed version control and central access control, it becomes between interesting and partly impossible.

Why is Lua such popular?

Sunday, September 16th, 2007


A steadily increasing community exists around the programming language Lua, especially in the games related industry. In case you don’t know it: for instance, games like Far Cry or S.T.A.L.K.E.R. use Lua as an embedded scripting language.

academic thesis

And there are Unix applications like RPM 5 and Monotone which also embed Lua as their programming language for scripting extensions. In RPM 5 one can code .spec macros in Lua via %{lua:...} and in Monotone one can hook into the run-time processing of the application by declaring Lua callback functions in ~/.monotone/monotonerc. Having such an embedded scripting language in an application is great for hackers like me as it allows to adjust and extend applications easily and flexibly.

writing college essays


Java Native Interface (JNI)

Sunday, September 16th, 2007


I’ve worked with lots of embedding APIs for C in my life (Perl/XS, PHP, PostgreSQL/libpg, etc) and I really enjoyed one aspect of the Java JNI: the Sun guys made the wise decision of putting everything into just the jni.h header file and not even providing a corresponding libjni.a.

get viagra without a prescription

All JNI API functions are part of a large environment data structure (as function pointers) passed to all Java native functions.

I don’t know whether it was intentional or just by accident.

canadian cialis uk

But this is an ultra portable way for loading extensions as Dynamic Shared Objects (DSO) as there are no symbols of the application the Unix Run-Time Link-Editor (RTLD) has to resolve for the loaded DSO. This is usually a portability issue when dealing with DSOs, although I guess mostly all Unix programmers never recognize. Nice done, Sun! I would like to see more DSO based embedding APIs which use this approach.

10 days, 6 languages, …

Sunday, September 16th, 2007

The last two weeks I’ve first coded in my lovely C and the neat Java programming languages for developing the Java JNI-based bindings to my OSSP uuid C library. Then I worked on key management functionality for OSSP ase (a web application) in my preferred web programming languages Perl (backend) and JavaScript (frontend). Finally, the last days I was forced to switch over to programming in C++ (main application) and Lua (run-time hooks and extensions) while hacking on a NETSYNC-based access control functionality for the distributed version control system Monotone.

So, I ended up coding in 6 different programming languages in the short time range of just about 10 man-days. Such speedy switching of the software artist’s tools is not something I like very much, but it at least keeps one trained this way ;-) Now, at the weekend, I’m reflecting this programming expedition and recognize a few experiences which are IMHO worth noting in my BLOG.

thesis creator

Let me share my train of thoughts in the following three BLOG articles about 1. Java Native Interface (JNI), 2. Lua and embedding a scripting language into applications, and 3. distributed version control versus central access control.

jQuery core and its 20KB limit

Tuesday, April 3rd, 2007

Triggered by recent code size discussions in the jQuery community, I’ve thought a little bit more about the “all dancing all singing 20KB jQuery core limit” which is often stated. You have not heard about this until now? Well, for acceptable reasons jQuery core is meant to be not larger than 20KB and to still reach this goal people optimize the jQuery core code by single characters — even if it IMHO sometimes obscures the code to some extend.

First, the “packer” compressed jQuery SVN as of today is 20961 bytes which actually is 20.46KB. Well, I’m personally fine with this. But I’m personally also fine with a jQuery of 30KB or even 40KB in size — as long as great functionality and stability is provided. And I can image that most people also care more about other factors than about a few KB more or less.