Log <-

Archive for March, 2004

Linux IDE's

Saturday, March 27th, 2004

Lately I've been hearing all kinds of people say "Linux doesn't have a decent IDE". For those that don't know: an IDE is an Integrated Development Evironment, which means that you get a tool that includes all kinds of other tools with which you can easily develop programs. It's kind of like a mix between an editor, debugger, compiler, etc. Most of the time these users also mean that Linux doesn't have a decent GUI builder also known as a Rapid Application Development tool. They want stuff like Delphi, Visual C/C++ builder, Java builder or some other clickety-click 'programming' enviroment. And they're right, Linux doesn't have one. And that's a Good Thing.

Why is that a Good Thing? Because programmers are lazy. Now, usually that's a good thing. A lazy programmer is a good programmer because they don't want to do stuff twice. This forces them to create all kinds of neat stuff which they can re-use later on. On the other side, being a lazy programmer is a Bad Thing. Some programmers don't want to think about design or underlaying structure of programs. They just want something that works.

So, what does that have to do with RAD (Rapid Application Developement) tools? A lot. Today's RAD tools like Java Builder or Visual .NET allow you to click around a bit and put together a nice interface. Then you double click some button and add some code to load some things into some list somewhere. Double click another button and make it write the information in the list to a file. You're happily clicking all over the place, adding some code here and some code there, but you've missed a very important thing. You're mixing the logic of your program with the interface! In expensive manager-speak: You're mixing Business Logic with Presentation Logic. Ouch, that's a very bad thing.

One of the most important (and incidentelly one of the least tought lesson in IT educations) leasons in programming is: Low coupling! What?! Low coupling! Let me explain by quoting my favorite piece of programming-related writing, The TAO of programming:

"A program should be light and agile, its subroutines connected like a string of pearls." — TAO of programming.

The pearls are your Business Logic. The string is the interface. It's as simple as that. One pearl for loading a list of data, one pearl for the list (not the list you see on-screen but the list in memory) itself, one pearl for saving, etc. The user interface is the string which connects the pearls. From the load button, which calls the load pearl to the list you see on-screen which calls the list pearl.

Suppose you've mixed the business logic of saving the list into the save button. What if you want to extend your program so it can be controlled remotely via the network? You would have to move the logic of saving the list to a seperate function and have the save button and the remote save method both call that function. In the end, you are still decoupling your user interface and business logic. So why not start out with low coupling in the first place?

Of course it's perfectelly possible to write low coupled applications in Rapid Application Development tools, but they make it sooo easy too just add the business logic into the user interface. I once said to a proffesional programmer: "Then you add a function there to do this and that" and he replied: "Uhm, where's the button for adding a function?". Excuse me?

Most good open source developers know about low coupling. They also know about the power of the current tools for developing programs under Unix. They know that NO RAD tool can beat the development power of Vim or Emacs or some other advanced editor. Want to compile stuff from your editor? Vim does that. Debugging? Vim does that too. Advanced Unix editors do all of the stuff an 'IDE' can do and much much more. Except for designing an interfacei by dragging buttons onto some window. And that's just the way most developers like it. That's probably why there aren't any RAD tools for Linux like there are for Windows.

And besides; coding your interface from scratch isn't that hard to do at all. And because you have to actually assemble the interface yourself, you get a much better understanding of the underlaying code. Extending your program will become easier and faster. No more copy-pasting of code from all over the place and ending up with the same piece of code in four places all over your program.

Why?! Whyyyy?!

Thursday, March 25th, 2004

I wrote a really really big, nice entry about XSLT for my log just now. And when it was almost done… Firefox crashed! I don't know what it is, but since I've started working at EastSite, everything with this computer seems to go wrong.

it's as if the more mature Open Source software gets, the buggier it becomes. Can you believe that I actually have to save data I enter in, i.e. Open Office or Vim or Firefox every 10 minutes because I'm afraid it will crash? I live in fear! This is the whole reason I stopped working with windows, because everytime I turned on the computer my bloodpressure would go through the ceiling while I clicked away the virusses, useless dialog windows, commercial pop-ups, spyware, bluescreens and everything else that makes windows windows.

This bites.

Internship update

Thursday, March 18th, 2004

Well, I've been working at East Site for about 2 months now, and we've been busy doing research and design of content-types. We are now full experts in metadata storage, XML, XSL and XSLT, RDF and many more interesting technologies. I must admit that I was sceptical about them at first. Although I already did some research on various XML topics earlier on, I didn't really think there was too much too it. It's just text, after all. But XSLT in combination with XPATH to transform any kind of XML document to any other document is really very powerfull. I now also understand much more about the inner workings of DocBook.

Tomorrow we will be attending CeBIT, one of europe's largest IT fairs. There we'll mostly be visiting various open source and CMS stands (hall 3+4). Normally I'm not a big fan of fairs like these since they tend not to yield a high ammount of useful information. We'll see how it turns out. We leave Arnhem at about 6:30 in the morning, meaning that I'll have to get up at about 5:00. Life's a bitch.

Meanwhile I've been working on Nimf for a while. Rights modification and Ownership changing are almost completed. The future roadmap will probably look something like this:

  • v1.1 : Ownership and rights
  • v1.2 : Various bugfixes, autocompletion in all text entries
  • v1.3 : Various bugfixes, enhancements in navigation and keyboard handling, context-sensitive menu's (right clickitidy stuff)
  • v1.4 : Drag and drop??
  • v1.5 : GTK2 port??

No dates yet. I have no idea how much time I can spend in the next few weeks/months on the project. I hope I'll be able to work about 2 to 3 hours a day on it, about 16 hours a week.

WindowMaker hidden feature?

Thursday, March 18th, 2004

I've been using WindowMaker for years now, and thought I knew about it's possibilities pretty well. Turns out there's a feature I really didn't know about.

When pulling up the 'Windows' list, normally done by clicking the middle mouse button, you will get a list of all the windows currently open on every virtual desktop. It's realy handy for quickly switching between windows using the mouse. Once the window list is open, you can click the titlebar to keep it from closing automatically when you choose a window from the list. This will probably be old news to anybody using WindowMaker, since it's a pretty well known feature.

However: Did you know you can drag the window to the bottom of the screen so only the titlebar is showing, and it will act like an auto-raise menu for your windows? When moving the mouse over the title bar and downwards, the window will 'unfold' and show all the current open windows. When you pick a window from the list, WindowMaker will switch to that window and, get this, colapse the window list back down so only the titlebar is showing. It feels the same as the auto-hide feature some menu-bars in some desktop enviroments have. Pretty neat.

Firefox and Vim, they're back

Thursday, March 11th, 2004

I've transfered and refactored the old Vim and Firefox pages from my old homepage over to this place. They're here: Firefox and Vim.

New News & Log backend

Saturday, March 6th, 2004

I've put in place a new News and Log module. Since I slaped it together in a few hours, it might still contain some bugs. I'm thinking about open sourcing the thing once it's done, since it's pretty modular. It can be included in other pages without much work (as you can see here). But first i'll try it out for a while to see if it contains any bugs.

XHTML 1.0 Transitional

Monday, March 1st, 2004

Well, this page is now officialy W3C XHTML 1.0 Transitional compatible. Not that it matters all that much, but it's nice nonetheless. Unfortunally there are only two browsers which are fully XHTML 1.0 transitional comptible: Mozilla and Internet Explorer.. and I'm not even sure about that last one. Oh well.

update: Well, after putting in the new log module, this page isn't valid XHTML transitional anymore. This due to the OnClick param in link tags. Well, back my usual "Fuck the W3C"-mentality again then.

Update 2: Oeh, I've managed to fix it again. I keep forgetting that XHTML is case-sensitive, so it should be: onchange instead of OnChange.