CMake 2.8.2 for RHEL 5.5

I just went thru the process of making my first package for RHEL b/c I wanted to use cmake for building another application. In the ZIP file below, you’ll find the source, binary and debuginfo RPMs for cmake 2.8.2 (compiled on RHEL 5.5 i386).

cmake-2.8.2-rpms download

RedHat Enterprise Linux 5.5 Client

For the first time in my life, I’ve purchased a RedHat subscription, to see what wonders and merits this system might bring compared to other Linux distributions. RHEL 5.5 might appear a bit dated at first, but everything makes a rock-solid impression, which is what you would expect from such a system. If you are a developer, make sure you purchase the Client + Workstation Option subscription or a similar one, to get access to the developer repositories. Of course, you might ask: Why pay for such a system, when all of the packages are free open-source software and available in other distributions also? The answer is: You don’t have to. You could pick a Fedora distribution, for instance, which has many of the merits of RHEL, but don’t cost a dime. RHEL is plain, simple, and rock solid. It doesn’t get many updates. In an enterprise environment, this might be exactly what you want. You can administrate your RHEL systems comfortably from the RedHat Network. It’s relatively easy to configure optional repositories for a machine, for instance, or manage your subscriptions and installed systems. The licensing scheme is pretty good and allows for reassignment of license entitlements. One notable advantage over other distros is the age of the kernel, which might have some disadvantages in some areas, but advantages in other areas. For instance, ATI drivers (from AMD) work on RHEL without a hitch. Many commercial software packages are available only for RHEL (and other commercial distros). If you want multimedia, you don’t have to use any gray-area plugins. Instead, you can purchase professional grade multimedia packages from Fluendo, for instance. Their GStreamer codec pack and DVD Player products work perfectly with RHEL, and enable playback of almost any multimedia file or DVD. Together with original packages from the usual suspects like Adobe et al, RHEL gives you systems you don’t have to worry about.

(p.s. for simple virtualization needs, you can use Oracle VirtualBox, especially if you don’t have a VT capable CPU).

Check Out a Preview of My New Game!

Check out my a preview of my new game, “2017!” . It’s my first program for Adobe Flash, and I created it using the free Adobe Flex 4 SDK (the underlying framework is even open-source). I used only free and open-source tools on Linux to create all of the program and artwork. It’s still only an intro, but I hope to be able to work on it occasionally in my spare time. :)

On the page, you’ll also find the source code to the application. It illustrates with how little effort you can create applications using Flex 4. :)

MusicEd: A Music Editor V0.0.1

A very very early version of my new music editor MusicEd, which is still a work in progress. It’s written in C and uses SDL for its graphical user interface. This also means that all controls are self-drawn. I chose a look and feel akin to that of AmigaOS 2.x/3.x, mainly b/c it was the quickest to implement and also renders quickly, since it needs only 4 colors / palette entries and hence can run in SDL’s palettized 8 bit per pixel mode.

MusicEd v0.0.7 - Update (see comments)

Screenshot of MusicEd v0.0.7

MusicEd v0.0.6 - Update (see comments)

MusicEd v0.0.5 - Update (see comments)

MusicEd v0.0.4 - Update (see comments)

Screenshot of MusicEd v0.0.4

MusicEd v0.0.3 - Update (see comments)

Screenshot of MusicEd v0.0.3

MusicEd v0.0.2 - Update (see comments)

Screenshot of MusicEd v0.0.2

MusicEd v0.0.1 - Initial version

Screenshot of MusicEd v0.0.1

MusicEd SourceForge project

Rosegarden 10.02 Binary Package for Ubuntu 64-Bit (x86_64)

I’ve created a binary package for Ubuntu 9.10 64-Bit (x86_64) from Rosengarden source using “alien”, a package converter tool. I simply installed Rosegarden into an empty directory (using a “–prefix=/homedir/tempdir/usr” configure script option), tar-gzipped the result at the root node and converted it using “alien –to-deb zipfile”. I inspected the dependency list in the package settings, and they seem to be okay. That was quick! :-)

Rosegarden 10.02 binary package for Debian-based systems, architecture x86_64

Making Music with Linux

After fiddling around with various solutions for some years, I think I’ve found something now that looks promising, on Ubuntu 9.10 (64 bit). The following text describes how to install the packages. Everything is free open source software, and hence won’t cost a penny:

Install Jack Demon (package “jackd”). This is a program to serve as an audio and MIDI hub. It’s like a switchboard, of sorts. After installation, the demon needs to be configured in “/etc/default/jackd” (you can use “gksu gedit /etc/default/jackd” or “sudo nano /etc/default/jackd” from a command line to do that). It can be run using “sudo /etc/init.d/jackd start” from a command line. If you don’t set up the demon, you have to start Jack manually using the Jack Control program (in the “Applications / Multimedia”  menu); Otherwise, the demon runs as soon as the system starts.

Install package “timidity” (you can do that by either using the Synaptics package manager or “sudo apt-get install timidity”). There’s also a “timidity-daemon” package. Timidity is a program to emulate a MIDI synthesizer module on the computer. Since Timidity is sound-font driven, the included sound fonts are open source, and they lack some instruments, but I didn’t find that to be a problem.

Install Virtual Keyboard from the repository using “Application / Software Center”. In the Jack Control program (available in the “Applications / Multimedia”) program, you can set connections between devices. In the “ALSA MIDI” section of that, you’ll find available MIDI ports (real and virtual). Connect Virtual Keyboard to one of Timidity’s output ports, and you’ll be able to play all the instruments Timidity provides. The user interface of Virtual Keyboard can be changed using the menu to show all elements.

Rosegarden is a MIDI and audio sequencer program using musical notation (which is often preferrable to tracker-style programs for various reasons). Install Rosegarden using Software Center. Note that this version (1.7.3) is pretty old. From the Rosegarden website (www.rosegardenmusic.com), you can download the latest source code (version 10.02). Unfortunately, compiling and installing that from source (which shouldn’t be done anyway normally) is only for advanced users. Currently, there’s no Ubuntu package available for that (it’s pretty new). For the curious: You start by changing into the source directory and enter “./configure”, then “make” (after you’ve manually installed all the dependent packages) and finally “sudo make install” (by default, it’s installed into “/usr”). You can manually remove it only by entering “sudo make uninstall”. I’ve had the thought of making an Ubuntu package for it myself, but I’ve not begun working thru the Debian Maintainers Manual yet. If you search through the Ubuntu forums, you can find a thread about “Rosegarden 10.2″ (sic). There is apparently a package for the 32 Bit version of Ubuntu 9.10 made by one of the users. (BTW, if you’re using ArchLinux or Gentoo Linux, you can get a Rosegarden 10.02 package from the website.) UPDATE: In fact, I managed creating a binary package today using the “alien” package converter tool. See this new blog entry.

Anyway, after you have some version of Rosegarden installed (don’t attempt to minimize the window in Version 1.7.3. there’s apparently a bug preventing it from coming back up in the build that I used), you can use the Jack Control panel to check and set up connections between Rosegarden, Virtual Keyboard and other things you might want to connect to your PC (like external MIDI synths, keyboards, etc.). Version 10.02 apparently fixes a lot of bugs found in the older versions still in Ubuntu’s or Debian’s repositories, so it might be worth going the extra mile for that.

In Ubuntu’s repository, there are plenty of tools for Jack that you can install using either Synaptics or Software Center.

I hope this can help people like me who want to make music with their computer for the least amount of money possible.

UPDATE: If you read the comments that I wrote, you’ll see which other changes might be necessary to make it all work.

Here’s a screenshot of  the finished environment:

Screenshot

GobSmack: A GUI Framework for the Web V0.0.1

In an effort to create a GUI framework that can be used on web pages, I managed to complete a first, very early version. It includes a session manager demon for UNIX-like systems, a CGI frontend that communicates with the daemon, an AJAX library for communicating with the CGI frontend, and a simple test page to write the screen size to the session manager.

GobSmack v0.0.5 - Version with bugfix for get_resource() and the new features of configuration files and JavaScript serving.

GobSmack v0.0.4 - Version with bugfix for internal document fragment serving.

GobSmack v0.0.3 - Version with bugfix for invalid CGI request handling.

GobSmack v0.0.2 - Version with bugfix for random number generator.

GobSmack v0.0.1 - Initial version.

Tool to Synchronize Filing Systems in Regular Intervals on Linux

If you ever had to stare at fsck repairing a filing system after an unclean reboot, you’ll appreciate this very tiny but also very useful utility. You can run it as part of your startup services in GNOME, or as part of a cron job, or init script, or whatever. The program does nothing except calling sync(2) every three seconds in a loop.

I seriously wonder why on Earth this isn’t done automatically in the Linux kernel or as a part of a system script.

BTW, the tool is also useful when you’re dealing with removable media like USB sticks, other Flash media, diskettes or optical storage systems. Although it seems that on modern Linux systems like Ubuntu 9.10, syncing is done more frequently now for particular types of storage, extra syncs can do no harm.

The reason I wrote it is b/c I’ve begun using ext2 as my main filing system for the sake of speed (ext3 and especially ext4 are comparatively slow when compared to ext2, for instance). ext2 has no journalling, and hence is more susceptible to damage from unclean reboots. Again, I wonder why ext2 doesn’t sync automatically as any reasonable filing system (or OS kernel) should.

SyncOften ZIP File

Binary Data Structure Definition Language

I just had an idea how to store the definition of data structures in binary form, which can be useful for implementing high-level programming language compilers.

Full Text

RFC2396 URI Syntax Analyzer

During the weekend, I wrote a syntax analyzer package for URIs, fully conformant to RFC2396. With that, you can convert a URI into a syntax tree and extract all available information. BSD-licensed, with test program, all in ANSI C source code.

Source code (.tar.gz format)