The drop is always movingYou know that saying about standing on the shoulders of giants? Drupal is standing on a huge pile of midgetsAll content management systems suck, Drupal just happens to suck less.Popular open source software is more secure than unpopular open source software, because insecure software becomes unpopular fast. [That doesn't happen for proprietary software.]Drupal makes sandwiches happen.There is a module for that

Drupal on various platforms

Submitted by nk on Tue, 2007-01-23 14:16

A recent news article mentioned PHP implemented in Java and how it's fast and how Drupal runs. We began to discuss this in #drupal and found an earlier blog entry which also mentions the same. The latter also raises the concept of porting Drupal partially to Java.

Things went downhill from that point in the channel. redLED thinks that would lead to "drupal becoming a concept, like 'on rails' :p and gets ported to *".

The smallest Drupal development platform

Submitted by nk on Wed, 2007-01-17 07:32

What is the smallest machine that one could use for Drupal development? Do you need a laptop? No. The Nokia N800 Internet Tablet is enough, or to be more exact, will be enough once SQLite hits core. PHP (with preg and ereg engines and with SQLite) and lighttpd is compiled on maemo (the Linux distribution N800 runs) and they work together nicely. The speed? From very basic benchmarks, it's 5-10 times slower than my 1.1 GHz Intel Celeron M CPU (Intel Core based). So you would not do real webhosting on it, but it is on par or even faster than an Intel Pentium I. Not too shabby from a 200 gram machine...

Further menu phases

Submitted by nk on Mon, 2007-01-15 08:02

Now that menu phase 1 is basically done at how we proceed?

Phase 2 will see some new fields, mid (for menu id), pid (for parent id), parents (comma separated list ids of all parents), menu_link, task, visible and finally, display_order. menu_link is the aliased and themed menu link. task and visible are flags which tells us what their name suggest. display_order will provide, well the display order, based on vancoding. All this means that one relatively simple query SELECT menu_link FROM menu WHERE pid IN $parents AND visible = 1 AND task = 0 ORDER BY display_order will be able to select the whole visible tree. $parents will be initialized to the parents of the current menu item and in phase 2 that's it. But in phase 3, as we create the menu tree we will check for expanded items and add them to parents and redo the menu tree. This means some slowdown especially if expanded is used in depth, but I can not care less -- for some time, I thought I will not even do expanded.

Throwaway development sites

Submitted by nk on Mon, 2007-01-08 17:00

Since long I was looking for a hosting provider where I could put a sandbox site. A prototype site. To do this, I needed PHP, MySQL and SSH access. Disk space and bandwidth constraints are not really a concern. Reliability is somewhat not a top priority. Price is. I found HostIgniton MiniFire and was pretty impressed: it provides all three. And to my greatest delight when I SSH'd in I found that they have cvs command line utility. Alas, the outgoing port was blocked. I filed a support ticket and 32 minutes later the port was open. Later mails got answered with similar speed

Module weights is weak and blunt

Submitted by nk on Sun, 2006-11-26 06:27

So I have written some simple code which lets you write


function poll_define_hooks() {
  $hooks['implement']['nodeapi'] = array('before' => array('forum'), 'after' => array('taxonomy'));

This will define a directed graph. So, the code does a depth first search. This has two uses: detects cycles and orders as well. The whole code with some test code is 2K. It's in my sandbox.

CSS is wrong and some Drupal six plans

Submitted by nk on Thu, 2006-11-23 22:52

We all know how various CSS implementations are bogus in browsers. If you think only iE has quirks, then here you can find some others. Of course, IE is the most broken, far, far more than anything else. But, this is not to topic for today.

New menu system

Submitted by nk on Sat, 2006-09-30 23:09

There are lengthy posts of this on the development list, but I will try to describe it again, and there are some news which are not yet covered on devel.

So, instead of caching a huge serialized array per user we store each menu item in a normalized table. The primary key is the path. However, it's not always a real path as it can have a wildcard instead of a part. So, to define the node edit URL, we now have node/%/edit. To stay with this example, instead of 'access' => node_access('update', arg(1)) now we have 'access' => 'node_access', 'access arguments' => array('update', 1). This way we can run the access callback when the user visits the page.

Excellent idea of Dries

Submitted by nk on Tue, 2006-09-05 15:13

Dries, whom I love and honor with all my being (sorry if I write a bit harsh emails), again had a brilliant idea: . So far, I coded two patches out of and one is already committed. Checkboxes on the admin modules page got moved to the left -- I would have never thought of it, i just posted that I can't find which checkbox belongs to which and folks said, let's move it to the left. So it happened.

Form API workshop

Submitted by nk on Fri, 2006-08-04 23:05

If there is interest, I would be happy to host a workshop about form API at the Sep. 2006 DrupalCon in Brussels. I prefer sort of advanced level -- I am not that good in teaching the basics. Post your questions and I will pick the best.

Going to Vancouver

Submitted by on Fri, 2006-06-30 04:07

I will be in (North) Vancouver between Aug 1-31 and I am very eager to met Drupalers in the area. If you would like to meet, contact me.