Hello, my name is Karim Ratib. I plan and build Drupal applications using the best modules from the community. I maintain or co-maintain many modules, including Views Bulk Operations and Sheetnode. I specialize in multilingual applications (especially Arabic), configuration management using Features, data modelling and processing using Views and Feeds, and integrating 3rd party libraries and services. I have good experience leading Drupal teams.

Mediatheque, a Drupal media organizer

Over the years, I've accumulated a large collection of e-books and digital music albums, not to mention family pictures. Information overload is not a philosophical point of view, it's a real problem that forces me to devote time, effort and money to maintain that collection.

That's probably why so many media organizers exist. Because I believe that all applications should be delivered from the Web, and because no ready-made Web media organizer struck me as fulfilling my needs, I started to write my own using Drupal 6, dubbed Mediatheque.

Porting Sheetnode to Drupal 7

About a month ago, I started porting Sheetnode to D7. The natives were getting restless on the issue queue, so I thought I would pacify them with some serious porting effort. I am glad to announce that the port was completed a few days ago: Sheetnode 7.x-1.0-beta1 is now available, a fully-functional port of the latest D6 version.

The porting process was surprisingly smooth. I'd been avoiding porting my modules to D7 because it felt like rewriting the same code all over again - and I hate rework.

Time for Views.js?

Web applications are changing. Whereas most of the processing used to happen on the server, the current generation of browsers is capable of performing non-trivial tasks via the increasingly powerful HTML5 + JavaScript environment. Drupal, however, is still a server-heavy platform where JavaScript is used mostly as user interface candy.

Auto-refreshing views, part II: Optimizing the pings

I wrote last time about the latest developments to my Views Auto-Refresh module, which periodically refreshes a Views page, either by reloading the whole view, or by incrementally inserting new items only. It's a useful tool for activity streams and other Twitter-like, real-time lists.

Still, I had a nagging feeling that my code was endangering the server. Consider this: every 15 seconds, each connected browser invokes a full Drupal bootstrap plus a full View render, just to ask the server if there are new items.

Auto-refreshing views for real-time information streams

Imagine you are creating an activity stream for your site. You'd like to use Views because it gives you all the power you need to query items and style them on the page - all in time for your 11am nap. However, the resulting page is static and users have to keep refreshing it manually to see updates. In 2011, that's just uncool.

That's why I created Views Auto-Refresh, a Views Hacks sub-module that implements an auto-refreshing mechanism that integrates right into Views 2 or 3.

WorkerQueue: Background tasks in JavaScript

One of the most enjoyable aspects of maintaining Sheetnode is getting to practice more JavaScript. Douglas Crockford called it the World's Most Misunderstood Programming Language and that's certainly how it's been for me until I decided to put a concerted effort in finding out more about it.

Sheetnode's underlying spreadsheet engine, SocialCalc, is entirely client-side, JavaScript-based.

VBO for D7, with a little help from my Drupal friends

I've been a lazy adopter of Drupal 7. I admit it, mea culpa, but I'll leave this discussion to another post. What happened in the mean time is that VBO for D7 languished for a year or so in a zombie state until it was rescued in early May by Bojan Živanović, bojanz on d.o. He started out by announcing a sandbox project containing his code, and a few days later, I was convinced that this was the way to go for VBO on D7.

Node translations with Panels and CTools

I wanted to create a node view containing both the original node and its translation, sort of like this neat Meedan.net page.

Reusing Views to display predefined results

As a Web developer, I spend most of my time rendering lists of objects to HTML, formatted in every imaginable way. Fortunately for us Drupal heads, the Views module exists just to make this task easier - this is in fact my standard introduction to my "Views for hackers" talk.

One common scenario that I've encountered, and about which I was asked several times, is how to reuse Views to render a pre-defined list of objects - i.e., a list that already exists without the need for an SQL query. Why would anyone want to use Views in that case?

Views for hackers at DrupalCon Chicago 2011

I gave my "Views for hackers" talk at DrupalCon Chicago yesterday. This was definitely the biggest attendance I've ever had in my short experience as a speaker! Thanks everyone for attending and for the great questions. Please rate it at the DrupalCon site, this will help me improve it.

Syndicate content