GCC Finished

It was a long time to blog. I hadn't really much time for it. Well, to be honest the situation is the same this time too, but I wanna write a few words because of informational purpouses and for fun also.

GCC Finished

I've finished the GCC job. There would be other things to do, more specifically generalizing some aspects of the algorithm, but I've done the basic task and I hadn't really much time to go on. What was it exactly? I've implemented the special hoisting case described in the Proceedings of the GCC Developers' Summit paper, page 81, Figure 2 at the Tree SSA level. It's good to try different kinds of jobs because it makes me realize what kinds of works fit me best personally. GCC has some ugly aspects and I generally didn't enjoy this work much. That's for several reasons, namely 1) I don't really like C, it's too low level for me. Of course in case of compiling, speed really matters so one has no choice, 2) GCC is full of macro definitions which need to be used extensively throughout the code. My main problems with these is that I cannot tell the signature of a macro call. I don't know what types I need to give and what type is returned so it's like a chaos for me. One can tell their signature at some degree because macro names are well-chosen, but the exact signature is a hard stuff to find out.

On the other hand it was a good lesson to get to know the internals of GCC. I hadn't ever thought of how many intermediate internal representations and transformations are there which make up the whole process of compiling. GCC is probably one of the largest and most complex free software project in the history.

Multiuser rdesktop

Windows XP has a feature called Remote Desktop which makes you able to remotely administrate your WinXP box (suprise!). The evil aspect of this thing is that you are only allowed to run one user session at a time. Yeah, that means if you wanna log in, you must kick out another user who was already logged in at that time. It's a bad, bad thing. Microsoft states you need to use Windows 2000 or 2003 to be able to use one Windows by more users. Thanks God, one have not to spend any money to do that, since some clever folks out there had figured out some ways to tweak this thing. You may check it out yourself too. Search with google on "windows xp concurrent sessions termsrv.dll".


I've found an extremely helpful site on insecurity. I'm talking about psychology, not computer security. You might wanna check it out along with all the related materials on this site.

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 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.


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.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.


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!


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.


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.