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 8 critical issues office hours Oct 24, 2014

Submitted by nk on Sat, 2014-10-25 20:46

This was our first critical office hours. webflo have forward ported a Views SA (turned out that Twig autoescape made short work of the security hole -- yay! so now it's just a test) and even past the office hours followed up with a patch that now passes. I will monitor the issue further and make sure it gets reviewed and committed.

Following up on Doctorow's keynote

Submitted by nk on Fri, 2014-10-03 02:14

You will often find the less you are allowed to do with a computer the more user friendly it seems. This is hardly a coincidence. You need to make your decisions on how much inconvenience you are willing to take in exchange for your freedom in computing. The first and most important step is to make these decisions deliberate. Perhaps after the keynote this necessity is clear.

What JS makes this monkey dance?

Submitted by nk on Tue, 2014-09-16 04:27

Today I found myself in a complex codebase and my ticket was: this JS on this old page makes the monkey dance, can you make it dance on the new page? Well, my JS knowledge is... limited but I have a really mean right click. So I right clicked and looked around the source Chrome showed me. There was a div with a class slideshow-node-embed-processed.

Drupal 8 progress from my / MongoDB perspective: update #29

Submitted by nk on Sun, 2014-09-14 22:47

Perhaps the most important development is the final naming of what was field/field instance in Drupal 7: in Drupal 8 these are configuration entities. The machine names are field_storage_config and field_config. There has been several renames but we have settled on these finally (although the field_config rename is not yet in). It does reflect the most important difference between them: field storage contains everything pertaining to the storage of the field. The things that do not change the storage of it go into the instance.

I AM GROOT

Submitted by nk on Wed, 2014-09-10 05:36

Or, languages are really hard.

So I was handing over some CSV export functionality to a client who loaded it into Excel as it is without using the import wizard. This resulted in misinterpreted UTF-8 as WIN-1252. I quickly wrote this little function to add a BOM (error handling omitted for brevity):
<?php
function uconv($text) {
$descriptorspec = array(array("pipe", "r"), array("pipe", "w"));
$process = proc_open("/usr/bin/uconv --add-signature", $descriptorspec, $pipes);
fwrite($pipes[0], $text);
fclose($pipes[0]);
$text = stream_get_contents($pipes[1]);

PhpStorm debugging is indispensable

Submitted by nk on Fri, 2014-09-05 16:48

I was given a problem: the (somewhat usual) error message showed up Warning: Invalid argument supplied for foreach() in element_children() (line 6396 of common.inc).. Trying to debug it with the usual print-and-see is entirely and totally hopeless. If you print just $elements from element_children? You get picture. If you try to print the backtrace? It's impossibly big. One hope is printing the backtrace with DEBUG_BACKTRACE_IGNORE_ARGS and then manually opening up every step in the rather big backtrace.

Drupal 8 progress from my / MongoDB perspective: update #28

Submitted by nk on Mon, 2014-08-04 22:13

The standard mechanism for backend-aware service overrides is in and these services are already tagged. We have agreed on how to transfer data from one backend to another and my sandbox contains the first getTransferIterator implementation for config with more to follow.

Why is your avatar a crying Druplicon?

Submitted by nk on Sun, 2014-08-03 07:59

While I had many disagreements over the direction of Drupal 8, https://drupal.org/node/2264041 is pretty much an end-of-the-world issue. We had security holes before, but this is not only a complete failure on technical grounds but also of process: a secure-by-default system was switched to an insecure-by-default and this was known and documented. Somehow people have architected this, coded this, reviewed this, committed this and documented this across a multitude of issues and all along noone said "wait a minute".

OOP developer experience: snap to grid

Submitted by nk on Sun, 2014-08-03 05:47

After writing my first Drupal 8 contrib module I have a new appreciation. Let me try to explain. It is certainly possible to write a letter on an empty sheet of paper but achieving tidy results is quite a lot easier if it's a lined sheet. In Drupal 7, the code flow in general is calling a function, getting an array, manipulating the array and passing it to another function. Pretty much anything goes. In Drupal 8, you are handed an object and the object has methods.

Drupal 8 progress from my / MongoDB perspective: update #27

Submitted by nk on Mon, 2014-07-14 22:53

There hasn't been an update for some time now; things have quieted down a bit, I am mostly just writing drivers now (and coach people on migrate). MongoDB module caught up with the latest config changes and so the module works again. Migrate bugfixing moves along steadily with more and more people actually trying it and fixing bugs, hurray!

User login