Feed aggregator

jfhovinne pushed to 7.x-1.x at jfhovinne/integration

Devel - Mon, 25/04/2016 - 11:39
Apr 25, 2016 jfhovinne pushed to 7.x-1.x at jfhovinne/integration
Categories: Networks

Red Route: CSS-only slideshows in Drupal with keyframes generated in Sass loops

Planet Drupal - Mon, 25/04/2016 - 10:41

One of the principles I'm trying to follow as I rebuild The Gallery Guide is to minimise the amount of code. I'm keen to reduce the number of Drupal modules, but also the amount of JavaScript used, mainly for performance reasons, but also as part of a strategy of progressive enhancement around the site.

On the current site, there are quite a few image slideshows, which are built using the views_slideshow module. Given that I don't need to configure timings via the UI, I could just handle the slideshows in theme code, maybe using a plugin like Cycle, or perhaps I might not need jQuery. But then I started thinking maybe I can avoid using JavaScript altogether for this.

I found a nice CSS-only slideshow by Dudley Storey, which uses CSS animations. It's set up for 4 images, with the first image duplicated at the end. Looking at the keyframes code, 25% of the time is allotted to each slide, of which 5% is the transition. On The Gallery Guide, gallery, exhibition, and artist pages can all have an arbitrary number of images attached, so I needed to do a tiny bit of maths to convert that into a more flexible formula. It works nicely in modern browsers without adding much extra code, and falls back to a single image in browsers that don't support CSS animations.

Seems like an ideal use case for Sass loops - here's the Sass partial that generates the keyframes code:

/// Set up image carousels.
/// @param {int} $items - the number of items
/// @param {int} $speed [6] - the duration of each item in seconds

@mixin carousel($items, $speed: 6) {
  $duration: $items * $speed;
  animation: #{$duration}s slidy-#{$items} infinite; 
  width: (100% * $items);
  .field__item {
    width: (100% / $items);
    height: auto;
    display: inline-block;
    position: inherit;

@for $i from 2 through 5 {
  .carousel-#{$i} {
    @include carousel($i);

  @keyframes slidy-#{$i} {
     * There are $i images in the carousel.
     * The first image is repeated, so there are $i - 1 distinct images to share the transition time.
    $duration_per_slide: 100 / ($i - 1);
    $moving_time: 5;
    $still_time: $duration_per_slide - $moving_time;

    @for $j from 0 through $i {

      $slide_start: round($j * $duration_per_slide);
      $slide_end: round($slide_start + $still_time);

      // Move everything one image width left for each slide.
      $left_offset: 0 - ($j * 100);

      @if ($slide_start <= 100) {
        #{$slide_start}% {
          left: #{$left_offset}%;

      @if ($slide_end < 100) {
        #{$slide_end}% {
          left: #{$left_offset}%;

This is a nice example of using variables in selectors, using the interpolation syntax - for instance, this Sass selector inside the loop .carousel-#{$i} generates the selectors .carousel-2, .carousel-3 and so on. You need to be careful not to end up with bloated output CSS, but I appreciate the ability to avoid repetition and keep the Sass code elegant.

As Sass code becomes more like "real programming" with mixins and functions, there's more need for formal documentation of code - this is my first time using SassDoc, and I like it so far.

Drupal makes it easy to set up classes with the number of elements, and with Twig in Drupal 8, it isn't even necessary to write any PHP code to achieve that - it's simple to create a template for a node type or field, and use the Twig filters to get at any relevant data. In this case, my field is called field_images, so the template is field--field-images.html.twig - there's more info about template naming conventions on drupal.org, and here's an extract from the field template:

{% if items|length > 1 %}
<div class="image-carousel carousel-{{ items|length + 1 }}">
  {% for item in items %}
    <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div>
  {% endfor %}

  {# duplicate the first item #}
  <div{{ items[0].attributes.addClass('field__item') }}>{{ items[0].content }}</div>
{% else %}
  {% for item in items %}
    <div{{ item.attributes.addClass('field__item') }}>{{ item.content }}</div>
  {% endfor %}
{% endif %}

Having been bogged down for a while with my attempts to migrate the site to Drupal 8, it's a refreshing change to be using new tools and have nothing but good things to say about them - in my experience so far I think that theming Drupal 8 will generally feel less hacky and more enjoyable than 6 and 7 did - I'm looking forward to working on bigger Drupal 8 projects.

Tags:  Drupal CSS Sass The Gallery Guide Drupal 8 All tags
Categories: Elsewhere

Cheppers blog: Breakthrough Media Management in Drupal with Scald - Part I

Planet Drupal - Mon, 25/04/2016 - 10:30

When creating websites, it can be tricky to find the ideal solution for media management. If you have ever worked on a website where there were countless image styles and videos to manage, you probably already know that choosing the best solution to handle media content is very challenging. The following blogpost will be useful to you if you want to know more about media management in Drupal, whether you’re an expert or just experimenting with the platform.

Categories: Elsewhere

Ricardo Mones: Maximum number of clients reached Error: Can't open display: :0

Planet Debian - Mon, 25/04/2016 - 10:20
Today it happened again: you try to open some program and nothing happens. Go to an open terminal, try again and it answers with the above message. Other days I used to reboot the session, but that's something I don't really think should be necessary.

First thought about X gone mad, but this one seems pretty well behaved:

$ lsof -p `pidof Xorg` | wc -l 5
Then noticed I had a long running chromium process (a jQuery page monitoring a remote service) so tried this one as well:

$ for a in `pidof chromium`; do echo "$a "`lsof -p $a | wc -l`; done 27914 5 26462 5 25350 5 24693 5 23378 5 22723 5 22165 5 21476 222 21474 1176 21443 5 21441 204 21435 546 11644 5 11626 5 11587 5 11461 5 11361 5 9833 5 9726 5
Wow, I'd bet you can guess next command ;-)

$ kill -9 21435 21441 21474 21476
This of course wiped out all chromium processes, but also fixed the problem. Suggestions for selective chromium killing welcome! But I'd better like to know why those files are not properly closed. Just relaunching chromium to write this post yields:

$ for a in `pidof chromium`; do echo "$a "`lsof -p $a | wc -l`; done 11919 5 11848 222 11841 432 11815 5 11813 204 11807 398
Which looks a bit exaggerated to me :-(
Categories: Elsewhere

Norbert Preining: Gödel and Daemons – an excursion into literature

Planet Debian - Mon, 25/04/2016 - 02:31

Explaining Gödel’s theorems to students is a pain. Period. How can those poor creatures crank their mind around a Completeness and an Incompleteness Proof… I understand that. But then, there are brave souls using Gödel’s theorems to explain the world of demons to writers, in particular to answer the question:

You can control a Demon by knowing its True Name, but why?

Very impressive.

Found at worldbuilding.stackexchange.com, pointed to me by a good friend. I dare to full quote author Cort Ammon (nothing more is known), to preserve this masterpiece. Thanks!!!!

Use of their name forces them to be aware of the one truth they can never know.

Tl/Dr: If demons seek permanent power but trust no one, they put themselves in a strange position where mathematical truisms paint them into a corner which leaves their soul small and frail holding all the strings. Use of their name suggests you might know how to tug at those strings and unravel them wholesale, from the inside out!

Being a demon is tough work. If you think facing down a 4000lb Glabrezu without their name is difficult, try keeping that much muscle in shape in the gym! Never mind how many manicurists you go through keeping the claws in shape!

I don’t know how creative such demons truly are, but the easy route towards the perfect French tip that can withstand the rigors of going to the gym and benching ten thousand pounds is magic. Such a demon might learn a manicure spell from the nearby resident succubi. However, such spells are often temporary. No demon worth their salt is going to admit in front of a hero that they need a moment to refresh their mani before they can fight. The hero would just laugh at them. No, if a demon is going to do something, they’re going to do it right, and permanently. Not just nice french tips with a clear lacquer over the top, but razor sharp claws that resharpen themselves if they are blunted and can extend or retract at will!

In fact, come to think of it, why even go to the gym to maintain one’s physique? Why not just cast a magic spell which permanently makes you into the glorious Hanz (or Franz) that the trainer keeps telling you is inside you, just waiting to break free. Just get the spell right once, and think of the savings you could have on gym memberships.

Demons that wish to become more powerful, permanently, must be careful. If fairy tales have anything to teach is, it’s that one of the most dangerous things you can do is wish for something forever, and have it granted. Forever is a very long time, and every spell has its price. The demon is going to have to make sure the price is not greater than the perks. It would be a real waste to have a manicure spell create the perfect claws, only to find that they come with a peculiar perchance to curve towards one’s own heart in an attempt to free themselves from the demon that cast them.

So we need proofs. We need proofs that each spell is a good idea, before we cast it. Then, once we cast it, we need proof that the spell actually worked intended. Otherwise, who knows if the next spell will layer on top perfectly or not. Mathematics to the rescue! The world of First Order Logic (FOL, or herefter simply “logic”) is designed to offer these guarantees. With a few strokes of a pen, pencil, or even brush, it can write down a set of symbols which prove, without a shadow of a doubt, that not only will the spell work as intended, but that the side effects are manageable. How? So long as the demon can prove that they can cast a negation spell to undo their previous spell, the permanency can be reverted by the demon. With a few more fancy symbols, the demon can also prove that nobody else outside of the demon can undo their permanency. It’s a simple thing for mathematics really. Mathematics has an amazing spell called reductio ad infinitum which does unbelievable things.

However, there is a catch. There is always a catch with magic, even when that magic is being done through mathematics. In 1931, Kurt Gödel published his Incompleteness Theorems. These are 3 fascinating works of mathematical art which invoke the true names of First Order Logic and Set Theory. Gödel was able to prove that any system which is powerful enough to prove out all of algebra (1 + 1 = 2, 2 + 1 = 3, 3 * 5 = 15, etc.), could not prove its own validity. The self referential nature of proving itself crossed a line that First Order Logic simply could not return from. He proved that any system which tries must pick up one of these five traits:

  • Incomplete – they missed a detail when trying to prove everything
  • Incorrect – They got everything, but at least one point is wrong
  • Unprovable – They might be right, but they can never prove it
  • Intractable – If you’re willing to sit down and write down a proof that takes longer than eternity, you can prove a lot. Proofs that fit into eternity have limits.
  • Illogical – Throw logic to the wind, and you can prove anything!

If the demon wants itself to be able to cancel the spell, his proof is going to have to include his own abilities, creating just the kind of self referential effects needed to invoke Gödel’s incompleteness theorems. After a few thousand years, the demon may realize that this is folly.

A fascinating solution the demon might choose is to explore the “incomplete” solution to Gödel’s challenge. What if the demon permits the spell to change itself slightly, but in an unpredictable way. If the demon was a harddrive, perhaps he lets a single byte get changed by the spell in a way he cannot expect. This is actually enough to sidestep Gödel’s work, by introducing incompleteness. However, now we have to deal with pesky laws of physic and magics. We can’t just create something out of nothing, so if we’re going to let the spell change a single byte of us, there must be a single byte of information, its dual, that is unleashed into the world. Trying to break such conservation laws opens up a whole can of worms. Better to let that little bit go free into the world.

Well, almost. If you repeat this process a whole bunch of times, layering spells like a Matryoska doll, you’re eventually left with a “soul” that is nothing but the leftover bits of your spells that you simply don’t know enough about to use. If someone were collecting those bits and pieces, they might have the undoing of your entire self. You can’t prove it, of course, but its possible that those pieces that you sent out into the world have the keys to undo your many layers of armor, and then you know they are the bits that can nullify your soul if they get there. So what do you do? You hide them. You cast your spells only on the darkest of nights, deep in a cave where no one can see you. If you need assistants, you make sure to ritualistically slaughter them all, lest one of them know your secret and whisper it to a bundle of reeds, “The king has horns,” if you are familiar with the old fairy tale. Make it as hard as possible for the secret to escape, and hope that it withers away to nothingness before someone discovers it, leaving you invincible.

Now we come back to the name. The demon is going to have a name it uses to describe its whole self, including all of the layers of spellcraft it has acquired. This will be a great name like Abraxis, the Unbegotten Father or “Satan, lord of the underworld.” However, they also need to keep track of their smaller self, their soul. Failure to keep track of this might leave them open to an attack if they had missed a detail when casting their spells, and someone uncovered something to destroy them. This would be their true name, potentially something less pompous, like Gaylord Focker or Slartybartfarst. They would never use this name in company. Why draw attention to the only part of them that has the potential to be weak.

So when the hero calls out for Slartybartfarst, the demon truly must pay attention. If they know the name the demon has given over the remains of their tattered soul, might they know how to undo the demon entirely? Fear would grip their inner self, like a child, having to once again consider that they might be mortal. Surely they would wish to destroy the hero that spoke the name, but any attempt runs the risk of falling into a trap and exposing a weakness (surely their mind is racing, trying to enumerate all possible weaknesses they have). It is surely better for them to play along with you, once you use their true name, until they understand you well enough to confidently destroy you without destroying themselves.

So you ask for answers which are plausible. This one needs no magic at all. None of the rules are invalid in our world today. Granted finding a spell of perfect manicures might be difficult (believe me, some women have spent their whole life searching), but the rules are simply those of math. We can see this math in non-demonic parts of society as well. Consider encryption. An AES-256 key is so hard to brute force that it is currently believed it is impossible to break it without consuming 3/4 of the energy in the Milky Way Galaxy (no joke!). However, know the key, and decryption is easy. Worse, early implementations of AES took shortcuts. They actually left the signature of the path they took through the encryption in their accesses to memory. The caches on the CPU were like the reeds from the old fable. Merely observing how long it took to read data was sufficient to gather those reeds, make a flute, and play a song that unveils the encryption key (which is clearly either “The king has horns” or “1-2-3-4-5” depending on how secure you think your luggage combination is). Observing the true inner self of the AES encryption implementations was enough to completely dismantle them. Of course, not every implementation fell victim to this. You had to know the name of the implementation to determine which vulnerabilities it had, and how to strike at them.

Or, more literally, consider the work of Alfred Whitehead, Principia Mathematica. Principia Mathematica was to be a proof that you could prove all of the truths in arithmetic using purely procedural means. In Principia Mathematica, there was no manipulation based on semantics, everything he did was based on syntax — manipulating the actual symbols on the paper. Gödel’s Incompleteness Theorem caught Principia Mathematica by the tail, proving that its own rules were sufficient to demonstrate that it could never accomplish its goals. Principia Mathematica went down as the greatest Tower of Babel of modern mathematical history. Whitehead is no longer remembered for his mathematical work. He actually left the field of mathematics shortly afterwards, and became a philosopher and peace advocate, making a new name for himself there.

(by Cort Ammon)

Categories: Elsewhere

jmolivas.com: The Drupal Console cheat sheet, a quick reference guide.

Planet Drupal - Sun, 24/04/2016 - 23:00
The Drupal Console cheat sheet, a quick reference guide.

I published a quick reference guide (cheat sheet) for listing Drupal Console commands. The idea is to build an easy to use reference document, you can view it with modern desktop computer browser and mobile devices.

You can find this project at http://drupalconsole.com/cheatsheet/

The command information you can find on this cheat sheet is the same available commands at http://docs.drupalconsole.com/en/commands/available-commands.html documentation. In both projects, the information is exported from the main Drupal Console project and as you can expect the information within this cheat sheet is multilanguage.

You can fork this project to contribute from https://github.com/hechoendrupal/drupal-console-cheatsheet

jmolivas Sun, 04/24/2016 - 21:00
Categories: Elsewhere

Bits from Debian: Debian welcomes its 2016 summer interns

Planet Debian - Sun, 24/04/2016 - 21:00

We're excited to announce that Debian has selected 29 interns to work with us this summer: 4 in Outreachy, and 25 in the Google Summer of Code.

Here is the list of projects and the interns who will work on them:

Android SDK tools in Debian:

APT - dpkg communications rework:

Continuous Integration for Debian-Med packages:

Extending the Debian Developer Horizon:

Improving and extending AppRecommender:

Improving the debsources frontend:

Improving voice, video and chat communication with Free Software:

MIPS and MIPSEL ports improvements:

Reproducible Builds for Debian and Free Software:

Support for KLEE in Debile:

The Google Summer of Code and Outreachy programs are possible in Debian thanks to the effort of Debian developers and contributors that dedicate part of their free time to mentor students and outreach tasks.

Join us and help extend Debian! You can follow the students weekly reports on the debian-outreach mailing-list, chat with us on our IRC channel or on each project's team mailing lists.

Congratulations to all of them!

Categories: Elsewhere

Dominique Dumont: Automount usb devices with systemd

Planet Debian - Sun, 24/04/2016 - 19:34


Ever since udisk-glue was obsoleted with udisk (the first generation), I’ve been struggling to find a solution to automatically mount a usb drive when such a device is connected to a kodi based home cinema PC. I wanted to avoid writing dedicated scripts or udev rules. Systemd is quite powerful and I thought that a simple solution should be possible using systemd configuration.

Actually, auto-mount notion covers 2 scenario :

  1. A device is mounted after being plugged in
  2. An already available device is mounted when a process accesses its mount point

The first case is the one that is needed with Kodi. The second may be usefull so is  also documented in this post.

For the first case, add a line like the following in /etc/fstab:

/dev/sr0 /mnt/br auto defaults,noatime,auto,nofail 0 2

and reload systemd configuration:

sudo systemctl daemon-reload

The important parameters are “auto” and “nofail”: with “auto”, systemd mounts the filesystem as soon as the device is available. This behavior is different from sysvinit where “auto” is taken into account only when “mount -a” is run by init scripts. “nofail” ensures that boot does not fail when the device is not available.

The second case is handled by a line like the following one (even if the line is split here to improve readability):

/dev/sr0 /mnt/br auto defaults,x-systemd.automount,\ x-systemd.device-timeout=5,noatime,noauto 0 2

With the line above in /etc/fstab, the file system is mounted when user does (for instance) “ls /mnt/br” (actually, the first “ls” fails and triggers the mount. A second “ls” gives the expected result. There’s probably a way to improve this behavior, but I’ve not found it…)

“x-systemd.*” parameters are documented in systemd.mount(5).

Last but not least, using a plain device file (like /dev/sr0) works fine to automount optical devices. But it is difficult to predict the name of a device file created for a usb drive, so a LABEL or a UUID should be used in /etc/fstab instead of a plain device file. I.e. something like:

LABEL=my_usb_drive /mnt/my-drive auto defaults,auto,nofail 0 2

All the best


Tagged: kodi, systemd
Categories: Elsewhere

Dirk Eddelbuettel: Brad Mehldau at the CSO, again

Planet Debian - Sun, 24/04/2016 - 19:23

Almost seven years since the last time we saw him here, Brad Mehldau returned to the CSO for a concert on Friday eve in his standard trio setup with Larry Grenadier on bass and Jeff Ballard on drums.

The material mostly (all?) new and drawn from the upcoming album Blues and Ballads. The morning of the concert---which happened to be the final one in their tour---he retweeted a bit from this review in the Boston Globe

[Brad Mehldau] flashed facets of his renowned pianism: crystalline touch, deep lyricism, harmonic sophistication, adroit use of space, and the otherworldly independence of his right and left hands.

I cannot really describe his style any better than this. If you get a chance to see him, go!

Categories: Elsewhere

Freelock : Quality-oriented Drupal DevOps - Session recording

Planet Drupal - Sun, 24/04/2016 - 16:32
LinuxFest Northwest 2016: Quality-oriented Drupal DevOps Video of LinuxFest Northwest 2016: Quality-oriented Drupal DevOps

The audio quality isn't the best, but the talk I gave yesterday at LinuxFest Northwest is already up on YouTube! You can watch it here...

DrupalDrupal PlanetDevOpsQualityQuality AssuranceMatrixPrometheusSaltJenkinsConcourseIcingaWraith
Categories: Elsewhere

Norbert Preining: Armenia and Turkey – Erdoğan did it again

Planet Debian - Sun, 24/04/2016 - 13:19

It is 101 years to the day that Turkey started the first genocide of the 20th century, the Armenian Genocide. And Recep Tayyip Erdoğan, the populistic and seemingly maniac president of Turkey, does not drop any chance to continue the shame of Turkey.

After having sued a German comedian of making fun of him – followed promptly by an as shameful cowtow of Merkel by allowing the jurisdiction to start prosecuting Jan Böhmermann, heis continuing suing other journalists, and above all putting pressure on the European Community to not support a concert tour of the Dresdner Sinfoniker in memoriam of the genocide.

European Values have disappeared, and politicians pay stupid tribute to a dictator-like Erdoğan who is destroying free speech and free media, not only in his country but all around the world. Must be a good friend of Abe, both are installing anti-freedom laws.

Shame on Europe for this. And Turkey, either vote Erdoğan out of office, or you should not (and hopefully will never) be allowed into the EC, because you don’t belong there.

Categories: Elsewhere

Daniel Pocock: LinuxWochen, MiniDebConf Vienna and Linux Presentation Day

Planet Debian - Sun, 24/04/2016 - 08:23

Over the coming week, there are a vast number of free software events taking place around the world.

I'll be at the LinuxWochen Vienna and MiniDebConf Vienna, the events run over four days from Thursday, 28 April to Sunday, 1 May.

At MiniDebConf Vienna, I'll be giving a talk on Saturday (schedule not finalized yet) about our progress with free Real-Time Communications (RTC) and welcoming 13 new GSoC students (and their mentors) working on this topic under the Debian umbrella.

On Sunday, Iain Learmonth and I will be collaborating on a workshop/demonstration on Software Defined Radio from the perspective of ham radio and the Debian Ham Radio Pure Blend. If you want to be an active participant, an easy way to get involved is to bring an RTL-SDR dongle. It is highly recommended that instead of buying any cheap generic dongle, you buy one with a high quality temperature compensated crystal oscillator (TXCO), such as those promoted by RTL-SDR.com.

Saturday, 30 April is also Linux Presentation Day in many places. There is an event in Switzerland organized by the local local FSFE group in Basel.

DebConf16 is only a couple of months away now, Registration is still open and the team are keenly looking for additional sponsors. Sponsors are a vital part of such a large event, if your employer or any other organization you know benefits from Debian, please encourage them to contribute.

Categories: Elsewhere

Scott Kitterman: Computer System Security Policy Debate (Follow-up)

Planet Debian - Sun, 24/04/2016 - 00:12

As a follow-up to my recent post on the debate in the US over new encryption restrictions, I thought a short addition might be relevant.  This continues.

There was a recent Congressional hearing on the topic that featured mostly what you would expect.  Police always want access to any possible source of evidence and the tech industry tries to explain that the risks associated with mandates to do so are excessive with grandstanding legislators sprinkled throughout.   What I found interesting (and I use that word with some trepidation as it is still a multi-hour video of a Congressional hearing) is that there was rather less grandstanding and and less absolutism from some parties than I was expecting.

There is overwhelming consensus that these requirements [for exceptional access] are incompatible with good security engineering practice

Dr. Matthew Blaze

The challenge is that political people see everything as a political/policy issue, but this isn’t that kind of issue.  I get particularly frustrated when I read ignorant ramblings like this that dismiss the overwhelming consensus of the people that actually understand what needs to be done as emotional, hysterical obstructionism.  Contrary to what seems to be that author’s point, constructive dialogue and understanding values does nothing to change the technical risks of mandating exceptional access.  Of course the opponents of Feinstein-Burr decry it as technologically illiterate, it is technologically illiterate.

This doesn’t quite rise to the level of that time the Indiana state legislature considered legislating a new value (or in fact multiple values) for the mathematical constant Pi, but it is in the same legislative domain.

Categories: Elsewhere

Damien McKenna: Rough plan for planning to port a site to Drupal 8

Planet Drupal - Sat, 23/04/2016 - 17:26

I have a small freelance client whose site I've offered to port to D8 pro-bono as a learning exercise for myself and a friend who's learning Drupal. It'll take a number of months to do, even though architecturally it's a small site, but that's fine. My very first step was to create an initial plan on what steps we'd need to do to to plan the site build. Seeing as this list ended up being completely generic, I figured I'd share it.

Categories: Elsewhere

OSTraining: Kint is the Drupal 8 Alternative to Krumo

Planet Drupal - Fri, 22/04/2016 - 22:07

Kint is part of the new part of the Devel module in Drupal 8.

Developers who worked with Drupal 7 may remember Krumo, which is a very helpful debugging tool. Kint is an almost direct replacement for Krumo.

In this video from our Drupal 8 Theming class, Rod shows you how to use Kint to print the arrays on your site.

If you place {{ kint () }} into your theme's page.html.twig file, you'll be able dig into your site's arrays and variables.

Categories: Elsewhere

Gergely Nagy: ErgoDox: Day 0

Planet Debian - Fri, 22/04/2016 - 21:30

Today my ErgoDox EZ arrived, I flashed a Dvorak firmware a couple of times, and am typing this on the new keyboard. It's slow and painful, but the possibilities are going to be worth it in the end.

That is all. Writing even this much took ages.

Categories: Elsewhere

Palantir: Thank You, Larry!

Planet Drupal - Fri, 22/04/2016 - 20:45

I’ll never forget Larry Garfield’s first day at Palantir, just over a decade ago. We were using Windows workstations at the time, but Larry brought a Knoppix CD into the office so that he could run Linux on his computer instead. Larry later followed the rest of the office when we switched to Macs, but with reluctance and much grumbling.

Since that time, Palantir has moved offices three times and grown to a company of over thirty people distributed around the country. Instead of acting primarily as a development shop, we now provide a full array of strategy, design, development, and support services tailored to the needs of our diverse client base.

Much of this growth and success has been fueled by our embrace of open source technologies, like Drupal, that have enabled us to create and collaborate in an open environment and provided the flexibility that helps us and our customers make the right choices.

Anyone who knows Larry knows that he’s always been a passionate advocate for software freedom. As someone who was involved in the Drupal project even before Palantir started working with it, he helped introduce us to its community as we made the transition to becoming a truly open source company. He played key roles in the development of Drupal 7 and Drupal 8, and in recent years, he’s focused on helping different open source communities share knowledge and work together toward building standards and best practices for the open web.

At Palantir, Larry’s technical leadership has helped elevate the work of our technical team and helped us build a robust and sustainable development process designed to evolve along with the ever-changing needs of our customers.

After more than ten years as part of the Palantir team, Larry is leaving the agency world to tackle new challenges. We very much appreciate the time he spent with us at Palantir, and while his presence will certainly be missed, we are also very excited to see how he applies his skills and knowledge to help improve open source software development for people everywhere.

Categories: Elsewhere

Larry Garfield: The end of an era

Planet Drupal - Fri, 22/04/2016 - 20:06

Today is the end of an era. After just over ten and a half years, this is my last day with Palantir.net.

The past decade has seen Palantir grow from a company of 5 to a company of over 30. From a company that wouldn't touch the GPL with a ten foot pole to a strong advocate for Open Source, Free Software, and Drupal in particular. From a company that did mostly subcontracting work for design firms to an end-to-end soup-to-nuts agency. From having two desktop screen sizes anyone cared about to an infinite scale of screens from 3"-30". From a world where IE 5 for Mac was considered a good browser to one where once again, the latest Microsoft browser is actually good. (Everything old is new again, I suppose.)

After ten years with the same company (which in Internet years is about a millennium) I certainly have stories. There's plenty I could say about Palantir, most of it good. :-) In the end, though, there's one thing in particular that has kept me here for so long.

Palantir.net is the kind of place that has your back.

read more

Categories: Elsewhere

Acquia Developer Center Blog: Talking Drupal 8: Lightning Distribution and Module Acceleration Program

Planet Drupal - Fri, 22/04/2016 - 18:47

John Kennedy and I spoke about two exciting Drupal 8 projects he's running at Acquia in 2016. He's the Program Manager of the $500,000 US dollars Acquia is investing to upgrade important modules from Drupal 7 to 8 as part of the Drupal 8 Module Acceleration Program. He's also the Product Manager of Acquia's Enterprise Authoring Drupal 8 distribution, Lightning.

"I think Drupal is great at a lot of things ... and if we want to create a world where regular people can create great experiences, not just developers, Drupal is a fantastic application for that." - John Kennedy

Interview video - 25 min. - Transcript Below

Guest dossier
How did you discover Drupal?

John Kennedy: Well, I was doing a little bit of work for a nonprofit organization called Vibewire maybe back in 2006 and they said to me, “We’ve got this website, it keeps going down and we really need to have you look at it for us.” I looked at it, it was on Drupal 4.7, loaded up to the brim with modules and I said “This is awful” and promptly migrated them to Plone.

jam: Thank you, have a nice day.

John Kennedy: Since then, I’ve had some better experiences with Drupal. I ended up running my own Drupal shop for a while and I then came out to the UK to actually start the UK operation of the Commerce Guys and I did that for a little while, and then Acquia brought me on to be head of solutions architecture for Europe and now they’ve brought me over here.

jam: Fill in the blank here between 2006 and 2016, from being a big Plone fan to actually sticking with Drupal all these years. What changed for you?

John Kennedy: I don’t know that I was a big Plone fan. I was a big open source fan. I’d been a systems administrator and I’d been using the range of tools on top of Linux for a long time. Plone at the time seemed more mature. I had some developers who I could use for Plone, but what happened was that I found a couple of projects that were really suitable for Drupal and I worked out how to use it, nontrivial at the time, at least ... still ... and then once I was dug in, I found it more and more useful and I really got in touch with the community. I started coming to DrupalCons. The first DrupalCon I came to was Chicago and I hadn’t missed any since until I had my son 17 months ago and then I’ve missed a couple.

The power of the Drupal Site-Builder

John Kennedy: Absolutely. Drupal creates this role that exists in other ecosystems, but it’s really clear in Drupal of site-builder, and it’s someone who can be, but is not necessarily a developer, and can be, but is not necessarily an author, and they actually create experiences by assembling modules, assembling functionality, and that could be layouts with Panels or it could be business logic with Rules or it could be a range of other functionality bringing it in through the module ecosystem. I think that role is incredibly powerful because it allows little organizations and large organizations to much better leverage their expertise to build great experiences, to build complicated functionality.

It also facilitates this amazing ecosystem of people who scratch their own itch, but also contribute to a wider modular functionality and it’s a lot more, I would say, sophisticated than the module ecosystems you see in things like with Ruby Gems or necessarily just the wider Composer or PHP ecosystem because it actually takes into account that there’s an end user that needs an administration interface and needs guidance on how to implement this. It’s not just a piece of code that you plug in. It’s also, by default, an administration interface and general principles that allow it to slot into Drupal really easily.

jam: I’m going to try and boil that down. What I tell people often in this context is Drupal has taken the incredible power and flexibility of a lot of great code built by a lot of great developers and made a fundamental design decision along the way. “We are going to put the power of that code in the hands of less technical end users and make it available to anyone who wants to build community, build a business and so on.” So the fundamental design decision is empower the user-interface-user and not just the developer, is that fair?

John Kennedy: Yes, I think so. I think when we think about WordPress, they’re definitely empowering a user. They’re empowering an author, but it’s really just an author. It’s someone who just wants to publish simple content or who wants to write words or add media. Drupal enables an expert user - it’s not necessarily a coder, but it’s someone who has a little bit more knowledge and then can create something really sophisticated.

What is Lightning for?

John Kennedy: So the way I like to talk about lightning is that it’s not an out-of-the-box distribution. It’s a framework. It’s a way to cut 20% off any large project that wants to achieve a great authoring experience. Our tagline for it is "enabling developers to create great authoring experiences and empowering editorial teams". It’s not meant to be a beautiful instant experience like Atrium. It’s really meant to be a set of principles, frameworks, code, best practice, documentation that developers can take to leverage their time, to not have to think about that core set of functionality around authoring which, as we defined it, is layout, preview, media integration and workflow. Within those categories, we enable use cases like putting groups of content through a work flow and being able to preview them.

So you can enable scenarios like the election night scenario or the Super Bowl scenario where I might have two or three groups of content that I write and I want to be able to preview, but only one of them is ever going to get published. That was really hard previously, but we brought together in Lightning a few different modules to enable that, bringing together work spaces and workbench moderation and a couple of other things to allow for that. You can do so much more than we’ve done, but by giving you that little piece, I think we’ve enabled some really interesting use cases.

So there are a few of those different things that we’d brought together. It’s really about the fact that we think those four functionalities should be tightly coupled for enterprise authoring, not all the time, but specifically if you’re a large organization with many authors and you’ve got a sophisticated authoring process, then those functionalities should be tightly coupled because they should integrate with each other for that use case.

jam: So it’s a time saver for developers and they also believe it’s an opinionated way of integrating functionality within Drupal, and I imagine - am I right in saying that if people apply it, it will also save a lot of time on maintenance and handing off projects between different dev shops because a set of universal and good choices has been made along the way?

John Kennedy: Absolutely. Our internal PS team now, when they launch a project, they use Lightning by default.

jam: Even if it’s not an authoring heavy site, is that what they’ll start with anyway?

John Kennedy: I would say that Acquia clients tend to have authoring needs, so I don’t think Lightning should be necessarily the 80% use case for all Drupal shops out there, but it is for Acquia because that’s the kind of client we have. I think if you’re thinking about enterprise authoring, not just to post a blog, in fact not just multiple content types and interesting views, I think I’m really talking about if you have multiple authors and work flows and you need to create lots of different layouts and landing pages and all these kinds of slightly more difficult use cases, then yes, you should be thinking about Lightning.

jam: This is fully open source. When can I get it and how can I make it better?

John Kennedy: Drupal.org. In fact, we are being as transparent as we can possibly be. We publish all of our release notes, but also our forward releases have their stories on Drupal.org, so you can go see what we’re targeting, if we’ve already covered that, the issues. If they’re closed, they’re going to have the little line through them like they do on Drupal.org and we’re publishing as much as we can. So really, people aren’t just helping us fix problems, but influencing our forward roadmap as well. We want to hear what people want.

jam: That’s great, okay. So you’re combining deep technical knowledge and intuition with actual reports from people who do this every day.

John Kennedy: That’s it.

The Lightning Top 3

jam: What would you say are the top three things about Lightning that makes it really ideal for your targets with its use cases?

John Kennedy: So if developers are talking to their managers about why they should use Lightning, the obvious ones are the feature sets. I talked about that before, work flow preview, layout, media, but actually what makes this brilliant for developers is a set of principles that we’ve come up with to build Lightning.

  1. One of those is that you never have to undo anything. So a lot of distributions, you’ve got to go in and you’ve got to undo configuration or things that they’ve decided upon earlier and that makes it less useful for you. We’ve really taken an unopinionated approach so that you can take Lightning and build forward.
  2. The next one is automated testing. We’ve built Behat tests into all of our major functionality and that means that as you build on top of Lightning, you can actually test whether you’re breaking any of our stuff which is really useful when you’re building an enterprise authoring system.
  3. The final one is upgradability and this is controversial because a lot of distributions aim at this and don’t quite get there, but we think by keeping a small-ish core of Lightning, we can actually maintain an upgrade path going forward. That means that if you build on Lightning, you can actually get free features as we upgrade Lightning. Those won’t necessarily be turned on automatically, but as a developer, as you upgrade Lightning, you have the ability to incorporate more of this functionality into the experience that you’re giving your users.

jam: So the first part of those really react to problems that we’ve all faced in one situation or another on the web in Drupal consulting and this idea of the build-it-forward and upgradability built into the distro really hits - if you can nail that, that really hits some pain points that I’ve certainly experienced along the way. Cool, great. So build-it-forward sounds like a good way to sum that up.

John Kennedy: Yes. It’s hard. What we’re doing is hard and we recognize that and there’ll be a lot of time spent maintaining upgradability and those concepts, but we think they’re key to the success of the distribution, so we’re putting the effort in.

jam: Now, in real time it is early March 2016. We’ve had Drupal 8 for a few months now and Drupal 8.1 is coming up. Is the Lightning Drupal 8 version already out and ready?

John Kennedy: So we’re in beta. I think we’re in beta four right now and as I said, our professional services department is already using our beta for building real sites, but we’re not going to release our GA version of Lightning until the 31st of March [this has slipped a bit since we recorded this conversation]. There’re a couple more features we want to put in there, things we want to tighten up, and actually we’re now thinking about what that looks like in 8.1 and how we bring 8.1 into our platform as well.

The Drupal 8 Module Acceleration Program

jam: So I’ve been doing Drupal, I noticed, for 11 years and I’ve figured out recently that a huge percentage of our community has never experienced a new major version release. Drupal 7 was our major version for more than five years and while we did this enormous rebuild, re-architecture, that has produced something really wonderful - I think Drupal 8 is fantastic. I’m enjoying every moment I use it.

Those of us who’ve been in since 4.6 which is actually - so we’ve been doing Drupal about the same amount of time. We’ve seen a lot more releases. For example, the release of Drupal 6, when it came out, was completely unusable. Every Drupal 5 site worth talking about used panel views CCK, and at the time, the views maintainer did not want to port Views One to Drupal 6 and took another six or eight months to finish Views Two for Drupal 6, and Drupal 6 was kind of dead in the water for a long time.

Drupal 7 had really good uptake, it was a solid release, but still we had this situation where it took a year for the contributed module space to really, really catch up with Drupal 7. So I want to point out a couple things about Drupal 8 that make it a much more usable release than we’ve ever seen before. Drupal 8 was completely and thoroughly tested from the first cutting of the branch, every single patch that was applied, so it’s really functionally solid. You can do a lot more with Core. Views is in Core, multilingual is in Core, and it’s very compact and like a ton of boilerplate has been taken out, you can make your own admin interface because it’s all Views. I mean it’s really very powerful and flexible and you can do great sites already now

But there’s also a lot more economic value hanging on the Drupal ecosystem for a major release than has ever happened before, and a lot of us--Acquia, community, shops, clients all around the world--don’t want to risk Drupal 8 failing as a release. We want this uptake to happen a lot faster. So I think the Lightning distribution coming from Acquia and being used in customer projects already being released on March 31st [and/or soon thereafter!] sends a signal, “Hey, this is ready to use.” One of my projects right now is writing the Drupal 8 Module of the Week series which is also - first of all, I want to celebrate the people who’ve done this work to bring this modules, to create these modules, to make them available for Drupal 8, but we also want to tell people, “Hey, use this thing. It’s awesome and you can do all these different things with it.”

Your other big project, you’re leading the Module Acceleration Program, Acquia’s Module Acceleration Program for Drupal 8. You’ve written some blog posts about it. You want to talk about what that is and how it addresses what I’ve just been going on and on and on about?

John Kennedy: Sure thing. So we did think a lot about Drupal 7’s adoption path and I was around and I made mistakes in 6 and I made mistakes in 7 and some of those mistakes were taking on modules early when they were not ready for release and I think lots of people being burnt by that process means they wait a little while before taking up a new major version.

What we wanted to do was take the great work of the community and bring modules to production readiness, giving people confidence to go out and implement them and use the functionality they’d expect in Drupal 7 in Drupal 8. So Views is in Core, so that’s less of an issue, but there are a whole range of modules that people use all the time and we have lots of experience and lots of channels to hear what people need through our clients, through our partners, through all of the community members we have in Acquia and we really ran a process where we looked at what were the top 50 modules that were going to make the biggest impact on Drupal 8’s usability?

We built that list; that was in conjunction with Angie and a range of other people at Acquia and we looked at how do we do that? How do we bring them to production? What we found was that all we needed to do was talk to people who already wanted to do them and give a little bit of funding so that they could take the time to do it. So that meant going to some of our partners like Palantir and like Lullabot and other shops who really wanted to give the time, and they gave us a really low community rate to go and do what they already wanted to do. We wanted them done, they wanted them done ...

jam: So you’re threading the needle somewhere between what a developer costs in a commercial setting, building a client project and the pure volunteerism which, for better or worse, most of our community wants to contribute, most of our community wants to make a difference, but when you’ve got paid work and volunteer work, the volunteer work happens whenever it can, right?

John Kennedy: Yes.

jam: So threading this needle, how did you figure out what a community development rate was that’s good enough to people to focus on helping the whole community by upgrading these functionalities?

John Kennedy: There was already a rate out there that we kind of went by as a rough approach, but there’re also people wanting to give their time and just said “Look, I can do it and this is what I can do it for.” A lot of that time, that was even better. So we brought that group of people together and it was made up of maybe 11 externals who were working on contract for us and maybe another five within Acquia that were doing work just as part of their jobs, and then maybe another 5 to 10 from the community who had parallel projects that had needs for these modules and actually just needed to get these done.

What we did then was we helped coordinate all those people. So we started running ... our internal scrum is daily, but then we had an external scrum which was weekly. Then we broke out and had a work flow scrum so that those people who are really interested in that could gather around that. In fact, we kicked a lot of this off at the summit that we had at BADCamp last year where we brought together one subgroup of the wider group which was around authoring. I was really interested in how Lightning was going to get done and a lot of other people were interested in how other parts of authoring were going to get done.

So we all got together at BADCamp and came up with the needs for this authoring experience and that fed into a lot of what we built as well, but it was really a lot of community engagement, a lot of going out and talking to the maintainers of modules and working out whether they had the time to actually do the ports themselves, or whether they could share maintainership, or whether they could support an effort, whether they could do patch reviews and things like this for our contractors and our contributors.

I think that was a lot of the goal in the project. It was great to get great rates from people and great to work with lots of the community, but that coordination effort meant we just steamed ahead in terms of getting modules done. I don’t want to take credit for ... I don’t think even the program should take credit for doing whole module ports. We took a lot of code that existed in porting, but what we did was we got it production-ready. We got it out there, we got it to the beta, we got it so that people use it in projects.

jam: One of the things that I’ve been really proud of over the years being part of Acquia is where the rubber really, really hits the road. Acquia has gotten open source right and especially on the contribution side, the first thing Dries did was hire Gábor to get Drupal 6 out the door in the best shape possible. We worked with really early versions of Drupal 7 when I was in Engineering building Drupal Gardens and we made some big mistakes around module upgrades at the time and we’ve learned from that and have apologized, I believe, along the way, but when the rubber hits the road, Acquia has done an awful lot of things that have helped the entire project and our community. I’m really, really proud of that as a Drupalist.

In this case, as you’ve written in the blog, Acquia’s invested US $500,000.00 in these upgrades, and frankly the fact that we get production-ready modules and our community gets some more rent paid, I think that’s a great outcome for everybody. How do you think this investment is going to - what’s the return on this investment going to be for us and for Drupal?

John Kennedy: We talked before about how a complete module ecosystem accelerates Drupal. I think the big return that we’ll see is people coming into Drupal 8 earlier, so existing Drupalists, but also people who are evaluating Drupal, seeing the functionality ready and getting onto Drupal, and we’ll see that curve. That exponential growth that we’ve seen in 7, we’re going to see that earlier. That’s the big return.

I think what keeps us all up at night is let’s see the big acceleration of Drupal 8. I think I’ve seen some early stats and there’re some really good news about what Drupal 8 is doing in terms of if we look at the path of Drupal 7, it looks like we’re actually double the amount of sites at the same stage. So that’s pretty good, but what we saw over a long period of time was this about 76% year-on-year growth of Drupal 7 and that brought us from a community that was already significant to one that ran 3% of the web. It was huge and the 35,000-odd active contributors now, a lot of them came onboard in that cycle and we really want to see that happen again. We’re going to bring back the excitement to Drupal.

I think Drupal is great at a lot of things and it’s still really relevant in this day and age where we are looking at more and more sophisticated use cases for authoring and for web applications, and if we want to create a world where regular people can create great experiences, not just developers, Drupal is a fantastic application for that.

jam: Well, thank you for coordinating all of this. Thank you for taking the time to talk with me today. Now get back to work and make Drupal 8 production-ready.

John Kennedy: Sure thing.

Podcast series: Drupal 8Skill Level: IntermediateAdvanced
Categories: Elsewhere

Metal Toad: Upgrading Drupal Media module to 7.x-2.x

Planet Drupal - Fri, 22/04/2016 - 18:41
Upgrading Drupal Media module to 7.x-2.x April 22nd, 2016 Ben Teegarden

I recently spent some time fighting against the Drupal Media and File Entity modules in order to upgrade them from version 7.x-1.x to 7.x-2.x. (To be specific, Media was upgraded from 7.x-1.4 to 7.x-2.0-beta1, and File Entity to 7.x-2.0-beta2). Through this post, I will share with you my trials and tribulations, with the hope that one day no one else will endure the pain and suffering that I have endured. This is one of those situations where ultimately there was not that much that needed to be done, but a lot of time was spent on trial and error.

Incompatibility with Media Crop module

Based on all the comments/documentation I've seen around this upgrade, it seems like everyone's experience differs slightly. I assume that is because everyone is updating from and to slightly different versions of the Media module. Complications can also arise from modules that are dependent on the Media module. The site I was working on uses the Media Crop module which, as it turns out, is not yet compatible with Media 2.x (at least at the time of writing this). Luckily our client was not actually using the functionality of Media Crop and didn't mind losing it. Unfortunately though, simply uninstalling Media Crop seemed to leave some traces of the module on any images that were added via a WYSIWYG editor (Image styles referencing Media Crop, CSS classes and strange markup). This seemed like a rabbit hole I did not want to go down so I was happy to find that applying this patch resolved the rendering issues I was having. For whatever reason, the actual crop functionality is no longer accessible from the WYSIWYG but at least the upgrade does not destroy the rendering of current images. If you're using the Media Crop module I would recommend applying the patch before updating Media.

To Media Colorbox or not to Media Colorbox?

This site was also using the Media Colorbox module. I heard rumors that the functionality provided by Media Colorbox comes with Media 2.x, making the Media Colorbox module obsolete. Personally I couldn't find a way to keep that functionality without using Media Colorbox so this is still a mystery to me. I kept Media Colorbox installed.

Bash script to update Media and File Entity modules

So, with encouragement/prodding from Keith Dechant, I decided to write a Bash script to carry out the tasks of the actual upgrade:

echo "------ Disabling Media sub modules and Features that depend on Media" drush dis media_crop, media_internet, media_youtube, media_colorbox, media_wysiwyg -y drush dis custom_feature, another_custom_feature -y   echo "------ Disabling Media and File Entity" drush dis media -y drush dis file_entity -y   echo "------ Downloading latest versions of Media and File Entity modules" drush dl file_entity, media -y   echo "------ Enabling File Entity and running cron" drush en file_entity -y drush cron   echo "------ Enabling Media" drush en media -y   echo "------ Running DB updates" drush updb -y   echo "------ Re-enabling Media sub modules and Features that depend on Media" drush en media_crop, media_internet, media_youtube, media_colorbox, media_wysiwyg -y drush en custom_feature, another_custom_feature -y   echo "------ Setting new permissions added by latest version of Media and File Entity modules" # Media permissions drush role-add-perm Programmer 'administer media browser' drush role-add-perm Administrator 'administer media browser'   drush role-add-perm Programmer 'access media browser' drush role-add-perm 'Content Editor' 'access media browser' drush role-add-perm Administrator 'access media browser'   drush role-add-perm Programmer 'use media wysiwyg' drush role-add-perm 'Content Editor' 'use media wysiwyg' drush role-add-perm Administrator 'use media wysiwyg'   drush role-add-perm Programmer 'administer media wysiwyg view mode' drush role-add-perm Administrator 'administer media wysiwyg view mode'   # File Entity permissions drush role-add-perm Programmer 'administer file types' drush role-add-perm Administrator 'administer file types'   drush role-add-perm Programmer 'create files' drush role-add-perm 'Content Editor' 'create files' drush role-add-perm Administrator 'create files'   drush role-add-perm Programmer 'view own files' drush role-add-perm 'Content Editor' 'view own files' drush role-add-perm Administrator 'view own files'   drush role-add-perm Programmer 'view own private files' drush role-add-perm 'Content Editor' 'view own private files' drush role-add-perm Administrator 'view own private files'   drush role-add-perm Programmer 'view private files' drush role-add-perm 'Content Editor' 'view private files' drush role-add-perm Administrator 'view private files'

The script is probably mostly self explanatory, but I went a little comment happy anyways. I ran this script on my local environment (many many many many times). You do not want to run it on a Production site because you will probably need to do some modifications to get it working for your situation. Once it is ready, you should export the Production database down to your local environment, get the site up and running, and then run the script. Next, export your local database and import it to Production. The first thing that the script does is disable modules that are dependent upon Media or File Entity. You might need to do a test disabling of Media and File Entity to note which other modules get disabled. Make sure that you add these modules to the reenable part of the script. Since we use Features, there were also some Features that listed Media or File Entity as a dependency and so I disabled them as well.

Media 2.x and File Entity 2.x also create a few new permissions that need to be set. If you use this script, be sure to replace our roles with roles that are relevant to your site. Also, some permissions provided by previous versions of the modules have been removed. If you save permission configuration in Features you might need to update your Features after upgrading.


After running the script I still found that images added via WYSIWYG were not rendering correctly. There was now extra markup around images that was causing styling issues, and links were being removed from around images. I struggled with this for a while until I happened upon an obscure comment somewhere deep within the bowels of Drupal bug tickets. For reasons unknown to me, Media 2.x has changed the markup around images. However, there is a simple resolution to this in the Media module config: Go to /admin/config/media/browser and check the box "Legacy rendering (using field attach)" and your markup will be as it was before upgrading.

While we're talking about obscure configuration, make sure that your text formats have the "Convert Media tags to markup" filter enabled.


Hopefully I didn’t forget to mention anything major and I hope that this is useful to someone out there. If you find yourself here because you are trying to perform this upgrade: good luck you brave poor soul.


I found comments 9, 10 and 11 very helpful here:

This was also a useful reference:

Categories: Elsewhere


Subscribe to jfhovinne aggregator