Being Busy

I’ve currently got two (paying) jobs so I don’t have really much time to blog. I cannot tell much about the first because it is confident, but it’s a central system application, a GUI frontend for a Linux distribution, written in Python, using PyGTK. The other is implementing various pieces of code factoring algorighms in GCC that reduce code size at the Department of Software Engineering of the University of Szeged. Interesting stuff.

It’s Revolution!

Once upon a time there was a guy whose name was Linus Torvalds. He made a miraculous kernel with the help of thousands of open source folks. Several years later desktops began to evolve on Linux. First they were hardly usable since Unix folks, minimalistic geeks had a loose or no concept of usability. By time, it got better. Desktops matured more or less rapidly but then, there was a big shift, a real change. Something has happened. Several people emerged from the dark and revitalized Linux on the desktop. They were named Ximian.

Well, I know Ximian is bought by Novell but they started the real show. I’m aware that the above tale was somewhat opionated at my side, but let me tell you why I find their universe so unique and exciting. The things that they made comes down to me primarily as:

  1. They built an architecture, rather than separate applications.
  2. They shared as much code as possible. That’s the reason that the main codebase of GNOME is written in C (it’s easily wrappable) and that’s the main reason why they started Mono (because the languages on top of the CLR can all use the Mono APIs).
  3. These folks really innovate. Building on the existing architecture (primarily the GNOME libs and Mono) it is possible to create high-end applications in a relatively short period of time. Look at F-Spot. I’ve just compiled and tried it out. It’s much more than yet another image viewer.

Bill Gates was (is?) ugly like hell

Look at these pictures. I wonder whether Billy has a wife. Maybe he’s got, but she should be blind or this guy must had some massive plastic surgery. I can’t watch the pictures more than ten secs or so.

If you want to refresh, look Miguel’s related posings. They made me roll on the floor. They are extremely humorous in their strange, wicked ways.

Beagle Blows Up My Mind!

Nat did some fascinating flash demos about beagle in action. It’s worth watching them.

Electra

Electra tries to make the configuration hell disappear. I didn’t dvelve into it but I welcome the idea. The only thing I miss is some kind of configuration change notification feature but because the lack of a daemon it’s hardly possible. Maybe GConf is indeed too heavyweight for lighter applications.

Newsforge has a nice article titled “Innovations in window management” about guess what.

Emacs Is Not The IDE

Matt Rajkowski has written a great article on Java IDE comparsions. Well, his article was mainly about the IntelliJ IDEA IDE. It seems like a fascinating development tool. I tend to idealize things. Some years ago I idealized Linux. I thought it’s the best operating system for everyone. Later I idealized Emacs. Now as I see this comparsion I realize Emacs is not the IDE and even the IntelliJ IDEA is only the IDE for Java. I won’t discount Emacs in the future, but I must admit that it’s not the universal, optimal solution every time and I’ll experiment with other tools in the future. If one writes such a generalized applications like Emacs (s)he’ll probably miss out some details. That’s almost inevitable even with a lot of developer resources. It would be beautiful to use highly generalized tools for everything but it tends to be almost impossible to engineer anything that is both flexible, fast and superior in every minor details.

News

Gnome Journal is an exciting magazine to read. I don’t know why I haven’t heard about it earlier, but it’s there and is very cool. From the current issue I especially enjoyed Seth Nickell’s article titled “Experimental Culture” in which he speaks of the social and policy changes of the past few years regarding GNOME. Very interesting read.

XFCE got a nice installer (article). Unfortunately it’s only a GTK frontend above autoconf. Ideally one would replace that piece of crap. The installer looks nice and usable by the way.

Peter Gerdes has written a nice article titled “Virtual Machines and the OS” in which he talks about how we could speed up VMs by integrating related features to the OS.

Managing Our Stuff Better

Slobodan Celenkovic has written a nice article on combining database systems with file systems. I’ve been thinking a lot on this issue and I want to spend time in the near future understanding the current free alternatives better, but I already have some thoughts on how such an ideal system should be designed.

Let There Be Objects

First of all there should be an object model designed. It is a layer above a filesystem stored in an DBMS. Objects should be stored in a DBMS because it makes us able to search them at light speed. The object model makes one able to work with objects instead of files. Objects have metadata associated with them. A set of standard object types should be defined for every MIME types. The object type system should support inheritance so MP3s and VOBs were both Audio objects and this would make users able searching on a higher level. Additionally the object type system should be extendable with system wide, user specific and maybe group specific metadata. This way Brian could assign to his audio files how much he likes them or Mary could categorize her doggy pictures based on the name or color of the related dog.

Suck Metadata from Files into Objects

An ideal system should monitor the filesystem and whenever a file created or changed it would extract the metadata from it and refresh the related object’s metadata. This would require a set of extractors. One for every file type to be created. That’s what Beagle is doing with inotify.

Related Objects

Individual objects are not enough. Suppose you want to categorize your audio collections by (among other criterias) albums. In this situation you want to declare a new object type, let’s say AudioAlbum. Such an object type would reference a set of related Audio objects. One could also create a Performer type which would store the name and home page of the related performer. Maybe you realized that these objects have nothing to do with files. The standard objects are based on standard MIME types, but these are higher level, more abstract objects that can relate those lower level objects which are connected to files.

By the way file is a loose concept and the only reason we shouldn’t throw them away is backward compatibility. Because legacy appilcations all use the VFS API.

Indexed Objects

In the recent past I’ve been more and more conscious about the importance of indexing. Since I have a high speed Internet connection I use Google very often with excellent results. So building a system which is capable of the same thing would be fascinating and this feature is so powerful that we really need it. So indexing is a really important issue.

News

News.com made an interview with Linus. He mentions that he’s a short-term person. I’ve been never thought in these terms. I’m definetly a long-term one. If Linus hadn’t been a short-term person, Linux wouldn’t have been born.

Firefox Extensions

Firefox is the best browser in the universe, no doubt. Am I maybe somewhat opionated? I realized that some extensions make it much more usable and some time ago I tried out quite a lot of them so here are the ones I use:

  • Mouse Gestures
  • Tabbrowser Extensions
  • Link Toolbar
  • Download Statusbar
  • Download Manager Tweak

I Hate Computers

Sometimes I feel that I must throw my computer out the window. Should I read dozens of manuals and fix hundreds of bugs just to make my computer usable? I don’t think so. Computers are not fun today. Although this problem of mine is Linux/Unix specific, computing is full of this kind of problems.

I just wanted to disable this stupid visual bell under X which irritates the hell out of me so I googled for “disable visual bell” (not google-quoted) and other similar things and found the visible bell mini-howto. It says that I need to do an “xset -b” to disable this thing so I did it. The command had no output so I thought everything is okay. Unfortunately it changed nothing. Thinking that it’s a GNOME specific problem I went to gconf-editor and searched for “bell” in keys and values. I found some related Metacity keys and changed them. Same shit. X visual-bells whenever I try to search for an invalid string in Firefox or in Emacs. In Emacs I could disable the bell unlike in Firefox.

So should I disable the visual bell in every single application I encounter? Yeah? It’s really damn funny!

UPDATE: Later somehow I magically fixed this problem by messing around with gconf-editor. Maybe I was just too frustrated earlier.

There Is Indeed a System Tray

My desktop gets more and more usable every day. In the past I reported a “bug” to the Azureus developers related to the system tray. Well there’s indeed a system tray in GNOME too. You can add it to your panel by right clicking on it, choosing the “Add to Panel…” button and selecting the “Notification Area” item from the list. In the end it seems staightforward, but damn, why the hell this thing can’t be named system tray?

It’s really good stuff by the way. Makes my desktop less cluttered. Gaim uses it too.

LVM

I’m fascinated by LVM. I got to the point where I don’t have to arrange my stuff between partitions all the time like a madman. I just use LVM and everything is fine. Maybe you should too. The obvious drawback of using several hard disks as one device kicks in when one of them dies. That’s why in a situation like this it’s a very good idea to archive often.

Some personal notes

It useful to do a “apt-get install less mc mozilla-firefox emacs21 gcc libc6-dev ncurses-dev g++ xlibs-dev” on a fresh Debian installation. Most software I need is packaged by Debian. Sometimes I have to use unstable packages. Other times I have no choice but to separately install them. The latter category is Azureus, Mplayer, the Nvidia video driver and the Linux kernel for example.

It’s worth installing MS truetype fonts. X handles them for a long time. Looks really good.

On the Top

I’m finally using Debian Testing. I installed it using the netinstall method. I’m almost using the most recent stuff. Wow!

Amarok

I’ve tried Amarok too. It looks really slick. It’s obviously a work in progress since it has terminated many times. I don’t know whether it’s more a gstreamer or an Amarok issue, but you shouldn’t try this thing if you want to use a reliable audio player.

Another interesting thing about Amarok is that I saw SQL quieries in its debug output. Amarok doesn’t use MySQL nor PostgreSQL so I can only think there is an SQL interpreter embedded into it. It’s probably the best method acquring object metadata. Another observation is that pushing an object metadata system down into the architecture could really boost our applications. But that’s nothing new.

Configuration Hell

Software configuration is a nightmare on the Debian and the Linux kernel front. I’ve spend many hours on that. If ESR’s CML2 had been evangelized more the situation probably would have been much better. Mentionining Debian, it’s not the most user friendly distribution in the universe. I love its package management by the way.

Other

The CIA Open Source Notification System is a great tool. You can really get the big picture. Love it.

I finally catched up with Planet Beagle and Miguel’s log. Feels good.

Ohh, and the holidays were fine too reagarding the noncyber world.

I have to study for for my exams.

My Choice of OS

J. Scott Edwards OS geek has written a nice article on OSNews about his ideal operating system. A lot of his ideas feel familiar to me (except from the 3D UI which I think is totally braindead and useless).

When he talks about the global object store as I would call it, I can really feel his pain. Let’s take a short break… it’s object store because it’s a layer above the filesystem (ideally without a file system, but because backward compatibility it makes sense today using the Unix VFS API) that lets one define and create his/her own objects and relate them together. And it’s global, because it not only stores which is accessible but it also stores which is inaccessible (off the disk – archived to CDs, DVDs, …). So it’s a 2 in 1 solution. I’ve been very concerned with archivation and sturctural storage problems in the last few months (years?).

Storage promised to implement this long-awaited architectural piece, but seeing how it progresses I’m not sure it’s ever gonna ready.

When he talks about continuity, he thinks of orthogonal global persistence featured in the EROS OS.

I think another extremely important trait of a future OS is strong interprocess communication and code reuse. Applications are rather monolithical because of the diverse APIs and languages. Maybe language oriented programming really has a place because laguages are long term while APIs are rather short term. Ideally an OS is a set of strongly interconnected state machines with no multiplied, only reused code.

I like the philosophy of the Unununium OS. On the main page you can see Hans Reiser’s quote: “The utility of an operating system is more proportional to the number of connections possible between its components than it is to the number of those components.” I cannot tell in words how much I feel this statement true.

This guy even started his own project implemting this stuff in Eiffel among other languages. It seems to me like yet another idealistic never-will-be-ready project. Good luck dude! Anyone knows Eiffel by the way?

Imagemapmaker

I don’t like C++. In my opinion it’s a hack, an OOP layer above C. I’m not alone, of course. I’ve just written an application in it. It was a prerequisite for a job and I had no choice in language, that’s why I’ve used it. The task of the application was to create image maps and the related (X)HTML document from image files contained in a set of directories. It’s a CLI application. I’ve used gd which is a C library so the mixed C, C++ code is ugly like shit and I sucked a lot with some segfaults too as expected and stdstream bugs (less expected), but it works pretty well by this time. However several things left that I couldn’t figure out completely. I wanna clean up the code and completely get it.  Here’s how it looks like:

imagemapmaker

Apart from the hack feeling of C++, the separate definition (.h) – implemetation (.cpp) layout makes me mad. It’s so disturbing editing dozens of these stupid files separately.

Amarok

Amarok doesn’t seem to be yet another winamp clone. I like its unique features and design. Especially the song playing statistics, the CD cover preview, its fancy visualization and the advanced playlist. It’s worth reading the OSNews interview with the Amarok developers. Gstreamer is probably very flexible also. If everything goes well, I’ll test it within a short time.