FLOSS Project Planets

Drupal Bits at Web-Dev: Drupal View with Nodequeue Priority

Planet Drupal - Tue, 2017-05-23 22:11

Sometimes you want a View that follows the internal logic of the filters you set up on the View, but also can have some items hand selected or cultivated to the top of the View. Or perhaps the other way to describe it is a Nodequeue View that is backfilled with some other View based logic  so that you end up with a full display regardless of how many items are actually in the Nodequeue.

To do this requires three adjustments to the View (assuming you have already built the normal View logic based on filters that are separate from Nodequeue.

  1. Make the Nodequeue a relationship to the View.
  2. Add the Nodequeu to the sort criteria.
  3. Restructure the filter settings to make it the Nodequeue logic OR the Filter logic.
Example: Nodequeue View with random Backfill

Let's say you have a 3 item View that gets used to display some promoted items on your home page.  You want the View to be populated by anything in the Nodequeue and then randomly backfilled with any other item(s) that match some filter criteria if the Nodequeue does not contain three items.

0) To start, create your View that has a maximum of 3 items and set the filter(s) to use your backfil critera (a status of published and limited to whatever entities you are using) and a sort of Global: Random to randomly pick from items that meet the filter criteria.

1) Add your Nodequeue as a relationship.

You want to limited to a specific Nodequeue. The relationship should not be required, or you will not have anything to backfill with.

2) Add the Nodequeue as sort criteria to the View.

Since we want the Nodequeue items to come first, and in order we have to set the sort order in front of the rest of the View sort criteria (which in this case is random).

3) Adjust the filter criteria and break it into logical sections.  The first section is the set of filters that must be applied to all items regardless of whether they are in the Nodequeue or not. (the purple region below)

Then you need to create another filter group AND in this group put the items that are either the default logic OR the Nodequeue.  The default logic in this case is that audience field matches some criteria.  The trick is to set the operator within this filter group to OR.

Now when you add, delete or rearrange items in the Nodequeue the VIew will match the order of the Nodequeue and if you don't have enough items in your que, it will backfill from other items that meet your criteria.


Caching Issues:  By default, updating a nodequeue will not cause the cache on the View to expire if the View is cached.  If you need the updates to be immediately seen by anonymous users, you can implement a hook_nodequeue_update() to clear the cache.on any changes to that nodequeue.

Categories: FLOSS Project Planets

Justin Mason: Links for 2017-05-23

Planet Apache - Tue, 2017-05-23 19:58
  • U.S. top court tightens patent suit rules in blow to ‘patent trolls’

    This is excellent news, and a death knell for the East Texas patent troll court (cf https://motherboard.vice.com/en_us/article/the-small-town-judge-who-sees-a-quarter-of-the-nations-patent-cases ):

    The U.S. Supreme Court on Monday tightened rules for where patent lawsuits can be filed in a decision that may make it harder for so-called patent “trolls” to launch sometimes dodgy patent cases in friendly courts, a major irritant for high-tech giants like Apple and Alphabet Inc’s Google. In a decision that upends 27 years of law governing patent infringement cases, the justices sided with beverage flavoring company TC Heartland LLC in its legal battle with food and beverage company Kraft Heinz Co (KHC.O). The justices ruled 8-0 that patent suits can be filed only in courts located in the jurisdiction where the targeted company is incorporated. via Brad Fitzgerald

    (tags: via:bradfitz patents swpats east-texas law trolls supreme-court infringement)

Categories: FLOSS Project Planets

Drupal @ Penn State: Streamlining Polymer one-page apps in Drupal

Planet Drupal - Tue, 2017-05-23 18:04

On the ELMS:LN team, we’ve been working a lot with polymer and webcomponent based development this year. It’s our new workflow for all front-end development and we want Drupal to be the best platform for this type of development. At first, we made little elements and they were good. We stacked them together, and started integrating them into our user interfaces and polyfills made life happy.

Categories: FLOSS Project Planets

Dirk Eddelbuettel: Rcpp 0.12.11: Loads of goodies

Planet Debian - Tue, 2017-05-23 15:59

The elevent update in the 0.12.* series of Rcpp landed on CRAN yesterday following the initial upload on the weekend, and the Debian package and Windows binaries should follow as usual. The 0.12.11 release follows the 0.12.0 release from late July, the 0.12.1 release in September, the 0.12.2 release in November, the 0.12.3 release in January, the 0.12.4 release in March, the 0.12.5 release in May, the 0.12.6 release in July, the 0.12.7 release in September, the 0.12.8 release in November, the 0.12.9 release in January, and the 0.12.10.release in March --- making it the fifteenth release at the steady and predictable bi-montly release frequency.

Rcpp has become the most popular way of enhancing GNU R with C or C++ code. As of today, 1026 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with another 91 in BioConductor.

This releases follows on the heels of R's 3.4.0 release and addresses on or two issues from the transition, along with a literal boatload of other fixes and enhancements. James "coatless" Balamuta was once restless in making the documentation better, Kirill Mueller addressed a number of more obscure compiler warnings (triggered under under -Wextra and the like), Jim Hester improved excecption handling, and much more mostly by the Rcpp Core team. All changes are listed below in some detail.

One big change that JJ made is that Rcpp Attributes also generate the now-almost-required package registration. (For background, I blogged about this one, two, three times.) We tested this, and do not expect it to throw curveballs. If you have an existing src/init.c, or if you do not have registration set in your NAMESPACE. It should cover most cases. But one never knows, and one first post-release buglet related to how devtools tests things has already been fixed in this PR by JJ.

Changes in Rcpp version 0.12.11 (2017-05-20)
  • Changes in Rcpp API:

    • Rcpp::exceptions can now be constructed without a call stack (Jim Hester in #663 addressing #664).

    • Somewhat spurious compiler messages under very verbose settings are now suppressed (Kirill Mueller in #670, #671, #672, #687, #688, #691).

    • Refreshed the included tinyformat template library (James Balamuta in #674 addressing #673).

    • Added printf-like syntax support for exception classes and variadic templating for Rcpp::stop and Rcpp::warning (James Balamuta in #676).

    • Exception messages have been rewritten to provide additional information. (James Balamuta in #676 and #677 addressing #184).

    • One more instance of Rf_mkString is protected from garbage collection (Dirk in #686 addressing #685).

    • Two exception specification that are no longer tolerated by g++-7.1 or later were removed (Dirk in #690 addressing #689)

  • Changes in Rcpp Documentation:

  • Changes in Rcpp Sugar:

    • Added sugar function trimws (Nathan Russell in #680 addressing #679).
  • Changes in Rcpp Attributes:

    • Automatically generate native routine registrations (JJ in #694)

    • The plugins for C++11, C++14, C++17 now set the values R 3.4.0 or later expects; a plugin for C++98 was added (Dirk in #684 addressing #683).

  • Changes in Rcpp support functions:

    • The Rcpp.package.skeleton() function now creates a package registration file provided R 3.4.0 or later is used (Dirk in #692)

Thanks to CRANberries, you can also look at a diff to the previous release. As always, even fuller details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads page, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

Categories: FLOSS Project Planets

Friday Free Software Directory IRC meetup: May 26th starting at 12:00 p.m. EDT/16:00 UTC

FSF Blogs - Tue, 2017-05-23 15:03

Participate in supporting the Directory by adding new entries and updating existing ones. We will be on IRC in the #fsf channel on irc.freenode.org.

Tens of thousands of people visit directory.fsf.org each month to discover free software. Each entry in the Directory contains a wealth of useful information, from basic category and descriptions, to providing detailed info about version control, IRC channels, documentation, and licensing info that has been carefully checked by FSF staff and trained volunteers.

While the Directory has been and continues to be a great resource to the world over the past decade, it has the potential of being a resource of even greater value. But it needs your help!

A lot of great work is being done keeping the Directory up to date. But it must keep growing if it is to be a useful resource. This week we'll be working on adding new entries to the Directory, and reviewing packages that haven't been reviewed yet. We'll also be looking to launch a new project that could greatly increase the number of works in the Directory.

If you are eager to help and you can't wait or are simply unable to make it onto IRC on Friday, our participation guide will provide you with all the information you need to get started on helping the Directory today! There are also weekly Directory Meeting pages that everyone is welcome to contribute to before, during, and after each meeting.

Categories: FLOSS Project Planets

Free Software Directory meeting recap for May 19th, 2017

FSF Blogs - Tue, 2017-05-23 15:01

Every week free software activists from around the world come together in #fsf on irc.freenode.org to help improve the Free Software Directory. This recaps the work we accomplished at the Friday, May 19th, 2017 meeting.

This week the Directory meeting looked at education software. During the meeting, we had numerous pieces of software being offered up for inclusion. In addition, new software was added to the Directory, as well as some older entries getting an update. The meeting also spent some time exploring the relationship between software and educational institutions. The dialogue centered on how these educational institutions indoctrinate dependence on nonfree software and ways to shift this paradigm. AlKamoD returned this week and was getting ready to run tests to automate certain tasks, the results of this are anticipated.

If you would like to help update the directory, meet with us every Friday in #fsf on irc.freenode.org from 12 p.m. to 3 p.m. EDT (16:00 to 19:00 UTC).

Categories: FLOSS Project Planets

Reproducible builds folks: Reproducible Builds: week 108 in Stretch cycle

Planet Debian - Tue, 2017-05-23 14:43

Here's what happened in the Reproducible Builds effort between Sunday May 14 and Saturday May 20 2017:

News and Media coverage
  • We've reached 94.0% reproducible packages on testing/amd64! (NB. without build path variation)
  • Maria Glukhova was interviewed on It's FOSS about her involvement with Reproducible Builds with respect to Outreachy.
IRC meeting

Our next IRC meeting has been scheduled for Thursday June 1 at 16:00 UTC.

Packages reviewed and fixed, bugs filed, etc.

Bernhard M. Wiedemann:

Chris Lamb:

Reviews of unreproducible packages

35 package reviews have been added, 28 have been updated and 12 have been removed in this week, adding to our knowledge about identified issues.

2 issue types have been added:

diffoscope development strip-nondeterminism development tests.reproducible-builds.org

Holger wrote a new systemd-based scheduling system replacing 162 constantly running Jenkins jobs which were slowing down job execution in general:

  • Nothing fancy really, just 370 lines of shell code in two scripts, out of these 370 lines 80 are comments and 162 are node defitions for those 162 "jobs".
  • Worker logs not yet as good as with Jenkins but usually we dont need realitime log viewing of specific builds. Or rather, its a waste of time to do it. (Actual package build logs remain unchanged.)
  • Builds are a lot faster for the fast archs, but not so much difference on armhf.
  • Since April 12 for i386 (and a week later for the rest), the images below are ordered with i386 on top, then amd64, armhf and arm64. Except for armhf it's pretty visible when the switch was made.


This week's edition was written by Chris Lamb, Holver Levsen, Bernhard M. Wiedemann, Vagrant Cascadian and Maria Glukhova & reviewed by a bunch of Reproducible Builds folks on IRC & the mailing lists.

Categories: FLOSS Project Planets

Chromatic: Chromatic's DrupalCon Baltimore Recap

Planet Drupal - Tue, 2017-05-23 14:00

As always, Chromatic had a great time at DrupalCon - we brought knowledge to share, and learned a lot!

Categories: FLOSS Project Planets

NumFOCUS: Welcome Nancy Nguyen, the new NumFOCUS Events Coordinator!

Planet Python - Tue, 2017-05-23 12:48
NumFOCUS is pleased to announce Nancy Nguyen has been hired as our new Events Coordinator. Nancy has over five years of event management experience in the non-profit and higher education sectors. She graduated from The University of Texas at Austin in 2011 with a BA in History. Prior to joining NumFOCUS, Nancy worked in development and fundraising […]
Categories: FLOSS Project Planets

PyCharm: PyCharm 2017.1.3 Out Now!

Planet Python - Tue, 2017-05-23 12:44

We’re happy to announce that PyCharm 2017.1.3 is now available. You can get it now from our website, or using the updater in PyCharm.

Improvements since PyCharm 2017.1.2:

  • Test runner issues: django-nose tests, stdout from tests, and various other fixes
  • Pyramid project creation with Chameleon templates
  • The issue which caused our community edition installer for macOS to be unsigned has been fixed
  • An issue that caused PyCharm to freeze on startup has been resolved
  • Several bugs related to React support have been fixed
  • macOS terminal locale detection
  • As always, you can read the further details in the release notes

We’d like to thank the users who tried the EAP versions of this release for helping us make sure that this version of PyCharm is of the quality you expect from a JetBrains IDE.

If you’d like to see new PyCharm features before we release them, try out the EAP version of our next release.

PyCharm Team
-The Drive to Develop

Categories: FLOSS Project Planets

Dries Buytaert: Acquia's next phase

Planet Drupal - Tue, 2017-05-23 12:08

In 2007, Jay Batson and I wanted to build a software company based on open source and Drupal. I was 29 years old then, and eager to learn how to build a business that could change the world of software, strengthen the Drupal project and help drive the future of the web.

Tom Erickson joined Acquia's board of directors with an outstanding record of scaling and leading technology companies. About a year later, after a lot of convincing, Tom agreed to become our CEO. At the time, Acquia was 30 people strong and we were working out of a small office in Andover, Massachusetts. Nine years later, we can count 16 of the Fortune 100 among our customers, saw our staff grow from 30 to more than 750 employees, have more than $150MM in annual revenue, and have 14 offices across 7 countries. And, importantly, Acquia has also made an undeniable impact on Drupal, as we said we would.

I've been lucky to have had Tom as my business partner and I'm incredibly proud of what we have built together. He has been my friend, my business partner, and my professor. I learned first hand the complexities of growing an enterprise software company; from building a culture, to scaling a global team of employees, to making our customers successful.

Today is an important day in the evolution of Acquia:

  • Tom has decided it's time for him step down as CEO, allowing him flexibility with his personal time and act more as an advisor to companies, the role that brought him to Acquia in the first place.
  • We're going to search for a new CEO for Acquia. When we find that business partner, Tom will be stepping down as CEO. After the search is completed, Tom will remain on Acquia's Board of Directors, where he can continue to help advise and guide the company.
  • We are formalizing the working relationship I've had with Tom during the past 8 years by creating an Office of the CEO. I will focus on product strategy, product development, including product architecture and Acquia's roadmap; technology partnerships and acquisitions; and company-wide hiring and staffing allocations. Tom will focus on sales and marketing, customer success and G&A functions.

The time for these changes felt right to both of us. We spent the first decade of Acquia laying down the foundation of a solid business model for going out to the market and delivering customer success with Drupal – Tom's core strengths from his long career as a technology executive. Acquia's next phase will be focused on building confidently on this foundation with more product innovation, new technology acquisitions and more strategic partnerships – my core strengths as a technologist.

Tom is leaving Acquia in a great position. This past year, the top industry analysts published very positive reviews based on their dealings with our customers. I'm proud that Acquia made the most significant positive move of all vendors in last year's Gartner Magic Quadrant for Web Content Management and that Forrester recognized Acquia as the leader for strategy and vision. We increasingly find ourselves at the center of our customer's technology and digital strategies. At a time when digital experiences means more than just web content management, and data and content intelligence play an increasing role in defining success for our customers, we are well positioned for the next phase of our growth.

I continue to love the work I do at Acquia each day. We have a passionate team of builders and dreamers, doers and makers. To the Acquia team around the world: 2017 will be a year of changes, but you have my commitment, in every way, to lead Acquia with clarity and focus.

To read Tom's thoughts on the transition, please check out his blog. Michael Skok, Acquia's lead investor, also covered it on his blog.

Categories: FLOSS Project Planets

TimOnWeb.com: Default Search API Sorts Per View in Drupal 7

Planet Drupal - Tue, 2017-05-23 11:54

It's been a while since I've written a post here (especially, Drupal-related). But today I have something interesting to share.

There's a module called Search API sorts (https://drupal.org/project/search_api_sorts) that provides custom sorts and a global sort block for Search API. The module itself is ok, but ...

Read now

Categories: FLOSS Project Planets

codeboje: This Problem with PySide, Py2App and Brew drove me Nuts

Planet Python - Tue, 2017-05-23 11:33

I build several desktop applications using PySide. It works like a charm on Windows. However, I found a nasty bug in the Mac version which I could not reproduce on my local machine. This one drove me nuts. It was hard to analyze, I own just one Mac and do not have access to another machine. Luckily, with the help of some very long googling (guessing symptoms) and the help of a user of one of my applications, I could fix the issue. As a reminder for myself and help for you, I document it.


I build the application using PySide, Py2App and Python 3 on a Mac using a virtualenv. I used Brew for installing PySide and Python, and PySide was also installed inside my virutaenv.

The application builds and runs fine on my machine.

However, on a different Mac, the application crashed without any useful traces in the system logs.

My application also writes a separate log file, but this was empty. So it seemed like the application crashed before even reaching my code.

After some google and adjusting my log outputs, however, I found out that it started to execute my code and then crashed when initializing PySide.

First, I thought it was just a problem on this single users machine, but I got a similar bug report which gave me some hints it might be a general problem.

Now, better equipped I found the culprit after some additional googling.

The application could not load the QT binaries.

The problem is a combination of installing PySide and with Brew and using PySide inside a virtualenv. While building the application Py2App can't pick up the correct library path, and the generated application includes the libraries but with an incorrect path in the Mac specific descriptors.

otool -L <my-app>/Contents/Resources/lib/python3.4/lib-dynload/PySide/QtGui.so

It should list the file with @executable_path and not with an absolute path only valid for your machine.

In my case, the binaries were referenced by absolute paths which were of course not valid on someone else machine.


I do not know who exactly is causing this issue, but the following workaround did help me.

  • Deinstall Python and PySide
  • Deinstall Brew
  • Install Macport
  • Install Python and PySide with Macport
  • PySide is installed in the main python site-packages
  • Create a new virutalenv and let it use the main site-packages

And then continue building the application as before. This time the lib references were fine in the application.

Guess what?

It worked now. Yippie.

Categories: FLOSS Project Planets

Colm O hEigeartaigh: Configuring Kerberos for Kafka in Talend Open Studio for Big Data

Planet Apache - Tue, 2017-05-23 11:23
A recent blog post showed how to use Talend Open Studio for Big Data to access data stored in HDFS, where HDFS had been configured to authenticate users using Kerberos. In this post we will follow a similar setup, to see how to create a job in Talend Open Studio for Big Data to read data from an Apache Kafka topic using kerberos.

1) Kafka setup

Follow a recent tutorial to setup an Apache Kerby based KDC testcase and to configure Apache Kafka to require kerberos for authentication. Create a "test" topic and write some data to it, and verify with the command-line consumer that the data can be read correctly.

2) Download Talend Open Studio for Big Data and create a job

Now we will download Talend Open Studio for Big Data (6.4.0 was used for the purposes of this tutorial). Unzip the file when it is downloaded and then start the Studio using one of the platform-specific scripts. It will prompt you to download some additional dependencies and to accept the licenses. Click on "Create a new job" called "KafkaKerberosRead". 
In the search bar under "Palette" on the right hand side enter "kafka" and hit enter. Drag "tKafkaConnection" and "tKafkaInput" to the middle of the screen. Do the same for "tLogRow":
We now have all the components we need to read data from the Kafka topic. "tKafkaConnection" will be used to configure the connection to Kafka. "tKafkaInput" will be used to read the data from the "test" topic, and finally "tLogRow" will just log the data so that we can be sure that it was read correctly. The next step is to join the components up. Right click on "tKafkaConnection" and select "Trigger/On Subjob Ok" and drag the resulting line to "tKafkaInput". Right click on "tKafkaInput" and select "Row/Main" and drag the resulting line to "tLogRow":

3) Configure the components

Now let's configure the individual components. Double click on "tKafkaConnection". If a message appears that informs you that you need to install additional jars, then click on "Install". Select the version of Kafka that corresponds to the version you are using (if it doesn't match then select the most recent version). For the "Zookeeper quorum list" property enter "localhost:2181". For the "broker list" property enter "localhost:9092".

Now we will configure the kerberos related properties of "tKafkaConnection". Select the "Use kerberos authentication" checkbox and some additional configuration properties will appear. For "JAAS configuration path" you need to enter the path of the "client.jaas" file as described in the tutorial to set up the Kafka test-case. You can leave "Kafka brokers principal name" property as the default value ("kafka"). Finally, select the "Set kerberos configuration path" property and enter the path of the "krb5.conf" file supplied in the target directory of the Apache Kerby test-case.

Now click on "tKafkaInput". Select the checkbox for "Use an existing connection" + select the "tKafkaConnection" component in the resulting component list. For "topic name" specify "test". The "Consumer group id" can stay as the default "mygroup".

Now we are ready to run the job. Click on the "Run" tab and then hit the "Run" button. Send some data via the producer to the "test" topic and you should see the data appear in the Run Window in the Studio.
Categories: FLOSS Project Planets

Carlos Sanchez: Docker Registry with Let’s Encrypt Certificate

Planet Apache - Tue, 2017-05-23 11:20

A one-liner to run a SSL Docker registry generating a Let’s Encrypt certificate.

This command will create a registry proxying the Docker hub, caching the images in a registry volume.

LetsEncrypt certificate will be auto generated and stored in the host dir as letsencrypt.json. You could also use a Docker volume to store it.

In order for the certificate generation to work the registry needs to be accessible from the internet in port 443. After the certificate is generated that’s no longer needed.

docker run -d -p 443:5000 --name registry \ -v `pwd`:/etc/docker/registry/ \ -v registry:/var/lib/registry \ -e REGISTRY_HTTP_ADDR= \ -e REGISTRY_HTTP_HOST=https://docker.example.com \ -e REGISTRY_HTTP_TLS_LETSENCRYPT_CACHEFILE=/etc/docker/registry/letsencrypt.json \ -e REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL=admin@example.com \ -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ registry:2

You can also create a config.yml in this dir and run the registry using the file instead of environment variables

version: 0.1 storage: filesystem: http: addr: host: https://docker.example.com tls: letsencrypt: cachefile: /etc/docker/registry/letsencrypt.json email: admin@example.com proxy: remoteurl: https://registry-1.docker.io

Then run

docker run -d -p 443:5000 --name registry \ -v `pwd`:/etc/docker/registry/ \ -v registry:/var/lib/registry \ registry:2

If you want to use this as a remote repository and not just for proxying, remove the proxy entry in the configuration

Categories: FLOSS Project Planets

Vardot: Time to level up - Ditch Drupal 6 for the all new Drupal 8

Planet Drupal - Tue, 2017-05-23 11:10
News Read time: 4 minutes

Drupal 6 kicked off way back in 2008. For the time it was a major breakthrough in technology, and the platform supported many major websites including whitehouse.gov. Over its lifespan Drupal 6 had more than 700 contributed modules and 600 custom themes. It boasted a nicer menu structure and an easier installation process than its predecessors, as well as improved security and a handy drag and drop menu. Drupal 6 was well ahead of its time. Now it is unsupported, outdated and frankly, old. It’s time for you and your website to move on.

The complete history of Drupal


What’s new in Drupal?

Drupal 8 (released November 2015) comes with a whole set of new built-in gadgets, including mobile responsive themes, built in web services to make it an API-first CMS, improved editorial experience, accessibility, powerful multilingual tools (at last), improved performance, HTML5, and better SEO and analytics tools. With over 18 months since releasing, it has become reliably stable, secure, and ready for you to make the switch.

Check out our 7 Reasons why Now is the Right Time to Move to Drupal 8


Why Drupal 6 isn’t a safe bet anymore

Without support from the community, Drupal 6 is going to be opened to more and more security risks. It’s modules will become outdated and unwieldy, and users will struggle to be able to get the performance they’ve come to expect with modern websites. While upgrading may seem like a daunting task, the business risks of remaining with Drupal 6 are far higher.


Migrations - easier than you think?


Believe it or not, Drupal 8 is stacked full of migration modules and toolsets to help you move your content from one platform to another. While many of these focus simply on moving a site between completely different platform, there are some that are designed to assist with moving between versions of Drupal. Depending on how your website was developed these can be tricky to use, and can lead to many hours of rework ‘rebuilding’ your website at the other end. If your website is stacked full of custom features, you may find that stock migration modules don’t quite provide the service you need.


Partners in Migration

If you’re a tech-whizz with a small website and plenty of time, you might find migrating your site on your own an exciting and economically sound venture. However, Drupal has become such a user friendly platform that many of its users skillsets are in marketing, communications and social relations. If that’s you, perhaps the thought of trying to move all your web content to another platform is so daunting you’ve been carefully looking the other way while Drupal 8 was released and took the world by storm.

With our assistance, your migration can not only be smooth and painless, but an opportunity to resolve some of those niggling website issues, and take a step forward into greater customer engagement. A shift to Drupal 8 can help you improve your conversions whilst making site maintenance easier.


Vardot - Drupal experts since 2011

Here at Vardot we’ve been supporting people since 2011. With our specialist team of Drupal experts we’re prepared to help migrate anything from a small two-page website, to a large scale page with multiple custom modules and integrations. Working with our team you’ll be on first name basis with our staff, and there is no shuffling between departments.

We believe in empowering our customers and our community - by giving back to the open source community. We promote a vibrant culture that benefits everyone involved. Working with us goes hand in hand with giving back, and you can be sure we’ll equip you with the skills and knowledge you need for the day-to-day management of your website moving forward.

If you have a site that needs migrating, or just a refresh, get in touch with us, we can’t wait to hear from you.

Tags:  drupal 8 Drupal Planet Title:  Time to level up - Ditch Drupal 6 for the all new Drupal 8
Categories: FLOSS Project Planets

Drupal core announcements: Midwest Developer Summit 2017-08-11 -- 2017-08-13 -- Register Now!

Planet Drupal - Tue, 2017-05-23 10:35

Make your plans to join us for the Drupal Midwest Developer Summit, August 11-13, on the University of Michigan campus, in Ann Arbor MI.

Register here

The Event
Join us for 3 days this summer in Ann Arbor, Michigan, for the 2017 Midwest Drupal Summit.
For this year’s Summit, we’ll gather on the beautiful University of Michigan campus for three days of code sprints, working on issues such as porting modules and writing, updating documentation and informal presentations. We will start around 10AM and finish around 5PM each day.
Lunch, Coffee and Snacks will be provided each day.

What’s New This Year at MWDS?
This year, we’re adding lightning talks (more Drupal learnings!) and a social outing (more Drupal fun!)

What’s The Same?

Relaxed, low-key sprinting and socializing with Drupal core contributors and security team members.

What you can expect:

  • An opportunity to learn from Drupal core contributors and mentors, including Angie “webchick” Byron, Michael Hess, Peter Wolanin, Neil Drumm and xjm.
  • Code sprints. Let’s clear out some queues!
  • Help Porting modules to Drupal 8.
  • Lighting talks
  • Security issue sprints
  • Documentation writing
  • Good food and good community.


Ann Arbor is about 30 minutes by car from Detroit Metro Airport. Ann Arbor is also served by Amtrak.
Questions? Contact mlhess@drupal.org

Categories: FLOSS Project Planets

Bryan Pendleton: Updated list of my trips with Mike

Planet Apache - Tue, 2017-05-23 09:39

I'm going to try to use the Blogger "pages" facility to keep track of this, because it works better than having a new summary post every year: My Backpacking Trips with Mike.

Categories: FLOSS Project Planets

2bits: Antibot module for Comment Spam, Alternative to Mollom End Of Life

Planet Drupal - Tue, 2017-05-23 08:14

Acquia has announced the end of life for Mollom, the comment spam filtering service.

Mollom was created by Dries Buytaert and Benjamin Schrauwen, and launched to a few beta testers (including myself) in 2007. Mollom was acquired by Acquia in 2012.

The service worked generally well, with the occasional spam comment getting through. The stated reason for stopping the service is that spammers have gotten more sophisticated, and that perhaps means that Mollom needs to try harder to keep up with the ever changing tactics. Much like computer viruses and malware, spam (email or comments) is an arms race scenario.

The recommended alternative by Acquia is a combination of reCAPTCHA and Honeypot.

But there is a problem with this combinationa: reCAPTCHA, like all modules that depend on the CAPTCHA module, disable the page cache for any form that has CAPTCHA enabled.

This is due to this piece of code in captcha.module:

// Prevent caching of the page with CAPTCHA elements.
// This needs to be done even if the CAPTCHA will be ommitted later:
// other untrusted users should not get a cached page when
// the current untrusted user can skip the current CAPTCHA.

Another alternative that we have been using that does not disable the page cache is antibot module.

To install the antibot module, you can use your git repository, or the following drush commands:

drush dis mollom
drush dl antibot
drush en antibot

Visit the configuration page for antibot if you want to add more forms that use the module, or disable it from other forms. The default settings work for comments, user registrations, and use logins.

Because of the above mentioned arms race situation, expect spammers to come up with circumvention techniques at some point in the future, and there will be a need to use other measures, be they in antibot, or other alternatives.

Contents: Tags: 
Categories: FLOSS Project Planets

Chris Moffitt: How Accurately Can Prophet Project Website Traffic?

Planet Python - Tue, 2017-05-23 08:05

In early March, I published an article introducing prophet which is an open source library released by Facebook that is used to automate the time series forecasting process. As I promised in that article, I’m going to see how well those predictions held up to the real world after 2.5 months of traffic on this site.

Getting Started

Before going forward, please review the prior article on prophet. I also encourage you to review the matplotlib article which is a useful starting point for understanding how to plot these trends. Without further discussion, let’s dive into the code. If you wish to follow along, the notebook is posted on github.

First, let’s get our imports setup, plotting configured and the forecast data read into our DataFrame:

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline plt.style.use('ggplot') proj = pd.read_excel('https://github.com/chris1610/pbpython/blob/master/data/March-2017-forecast-article.xlsx?raw=True') proj[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()

The projected data is stored in the proj DataFrame. There are many columns but we only care about a couple of them:

ds yhat yhat_lower yhat_upper 0 2014-09-25 3.294797 2.770241 3.856544 1 2014-09-26 3.129766 2.564662 3.677923 2 2014-09-27 3.152004 2.577474 3.670529 3 2014-09-28 3.659615 3.112663 4.191708 4 2014-09-29 3.823493 3.279714 4.376206

All of the projections are based on the log scale so we need to convert them back and filter through May 20th:

proj["Projected_Sessions"] = np.exp(proj.yhat).round() proj["Projected_Sessions_lower"] = np.exp(proj.yhat_lower).round() proj["Projected_Sessions_upper"] = np.exp(proj.yhat_upper).round() final_proj = proj[(proj.ds > "3-5-2017") & (proj.ds < "5-20-2017")][["ds", "Projected_Sessions_lower", "Projected_Sessions", "Projected_Sessions_upper"]]

Next, I’ll read in the actual traffic from March 6th through May 20th and rename the columns for consistency sake:

actual = pd.read_excel('Traffic_20170306-20170519.xlsx') actual.columns = ["ds", "Actual_Sessions"] actual.head() ds Actual_Sessions 0 2017-03-06 2227 1 2017-03-07 2093 2 2017-03-08 2068 3 2017-03-09 2400 4 2017-03-10 1888

Pandas makes combining all of this into a single DataFrame simple:

df = pd.merge(actual, final_proj) df.head() ds Actual_Sessions Projected_Sessions_lower Projected_Sessions Projected_Sessions_upper 0 2017-03-06 2227 1427.0 2503.0 4289.0 1 2017-03-07 2093 1791.0 3194.0 5458.0 2 2017-03-08 2068 1162.0 1928.0 3273.0 3 2017-03-09 2400 1118.0 1886.0 3172.0 4 2017-03-10 1888 958.0 1642.0 2836.0 Evaluating the Results

With the predictions and actuals in a single DataFrame, let’s see how far our projections were off from actuals by calculating the difference and looking at the basic stats.

df["Session_Delta"] = df.Actual_Sessions - df.Projected_Sessions df.Session_Delta.describe() count 75.000000 mean 739.440000 std 711.001829 min -1101.000000 25% 377.500000 50% 619.000000 75% 927.000000 max 4584.000000

This gives us a basic idea of the errors but visualizing will be more useful. Let’s use the process described in the matplotlib article to plot the data.

# Need to convert to just a date in order to keep plot from throwing errors df['ds'] = df['ds'].dt.date fig, ax = plt.subplots(figsize=(9, 6)) df.plot("ds", "Session_Delta", ax=ax) fig.autofmt_xdate(bottom=0.2, rotation=30, ha='right');

This visualization is helpful for understanding the data and highlights a couple of things:

  • Most of the variance shows the actual traffic being higher than projected
  • There were two big spikes in April which correspond to publish dates for articles
  • The majority of the variance was less than 1000

On the surface this may seem a little disappointing. However, we should not look at the predicted value as much as the predicted range. Prophet gives us the range and we can use the fill_between function in matplotlib to display the range around the predicted values:

fig, ax = plt.subplots(figsize=(9, 6)) df.plot(kind='line', x='ds', y=['Actual_Sessions', 'Projected_Sessions'], ax=ax, style=['-','--']) ax.fill_between(df['ds'].values, df['Projected_Sessions_lower'], df['Projected_Sessions_upper'], alpha=0.2) ax.set(title='Pbpython Traffic Prediction Accuracy', xlabel='', ylabel='Sessions') fig.autofmt_xdate(bottom=0.2, rotation=30, ha='right'

This view restores some more confidence in our model. It looks like we had a big over prediction at the beginning of the time frame but did not predict the impact of the two articles published in the subsequent weeks. More interestingly, the majority of the traffic was right at the upper end of our projection and the weekly variability is captured reasonably well.

Final Thoughts

So, how good was the model? I think a lot depends on what we were hoping for. In my case, I was not making any multi-million dollar decisions based on the accuracy. Additionally, I did not have any other models in place so I have nothing to compare the prediction to. From that perspective, I am happy that I was able to develop a fairly robust model with only a little effort. Another way to think about this is that if I were trying to put this model together by hand, I am sure I would not have come up with a better approach. Additionally, the volume of the views with the April 25th article is nearly impossible to predict so I don’t worry about that miss and the subsequent uptick in volume.

Predictive models are rarely a one shot affair. It takes some time to understand what makes them tick and how to interpret their output. I plan to look at some of the tuning options to see which parameters I could tweak to improve the accuracy for my use case.

I hope this is useful and would definitely like to hear what others have found with prophet or other tools to predict this type of activity. For those of you with experience predicting website traffic, would this have been a “good” outcome?

Categories: FLOSS Project Planets
Syndicate content