Jul 18 2018
Jul 18

Selecting a CMS for a university can be a challenging decision. There are so many needs and nuances to consider - costs of implementation and maintenance, a wide-range of technical ability among site administrators, developers and content editors, a variety of end users looking for different information and the list goes on and on. While your answer likely isn’t as easy as, “let’s just do what everyone else is doing,” by better understanding why other universities made the choice they did can shed light into your decision-making process. 

Drupal is far and above the most used CMS in higher education - 26% of all .edu domain sites are in Drupal, including 71 of the top 100 universities. 

So why are universities like MIT, Georgia Tech, Louisiana State University, Butler, Stanford, Harvard and the rest of the Ivy League universities choosing Drupal? 

Simply put, Drupal makes good business sense, especially with the added benefits of Drupal 8. At Mediacurrent, we believe your website is your greatest digital asset and can be leveraged to accomplish organizational-wide goals. Drupal makes that possible. Here’s how:  

Communicate With All Students - Prospective, Current, and Alumni 

If you want to reach your full recruiting and fundraising potential, you need to communicate with your entire audience. There are a variety of Drupal features that ease the stress of common communication challenges. 

Language:  Not only are their multiple languages spoken within the U.S., but our country hosts over a million international students. Drupal makes creating a multilingual digital experience simpler. Native language handling is built directly into Drupal 8’s core APIs, giving you over 100 languages to choose from. With that functionality it is easier than ever to engage with prospective students across the globe in a meaningful way.

Accessibility: The CDC estimates that 20% of U.S. adults identify as having a disability. These disabilities often hinder people’s ability to interact with the average website. Drupal is an inclusive community and has committed to ensuring that all features of Drupal conform with w3C and WCAG 2.0. Pair that with a strong higher-education focused accessibility strategy and your potential audience could grow by 20%. 

Technology: According to the 2017 College Explorer Market Research Study, the average college student owns 5.6 devices and spends 137+ hours on them! This may seem like common sense now, but if you want to engage with students, you need to account for a variety of screen sizes. Thankfully, Drupal 8 is designed with a mobile-first mentality and includes out-of-the-box responsive functionality. 

Personalization: Universities face added complexity when it comes to digital strategy due to the broad audiences they appeal to. With so many unique people coming to the same pages, content strategy, conversion path mapping and optimization, and defining strong call to actions can be a struggle. By incorporating personalization into your content strategy, whether that is personalized based on user authentication or by integrating tools like Acquia Lift or Salesforce Marketing Cloud, you can speak to the masses but make them feel like you’re speaking specifically to them. 

Reduce Overhead Costs + Increase Operational Efficiencies with Drupal

Drupal can have a dramatic impact on reducing overhead costs and increasing operational efficiency. Universities have a big need for multiple websites: departments, colleges, libraries, and student organizations all want their own website. The direct cost of supporting this many sites along with resourcing the training and support is expensive and encourages unnecessary technology sprawl. As an open source technology (no licensing fees!) along with the multisite feature, creating sites for these different groups is exponentially easier, more cost effective, and ensures brand consistency. 

You can also increase efficiency, ensure content consistency and improve the user experience by creating a “source of truth”.

Write content once and publish it anywhere it’s relevant.

Having to update content such as curriculum or an academic calendar on multiple pages is inefficient and unnecessary. Write once, publish everywhere, save time. 

Improve Brand Equity + Amplify Digital Strategy

As a university, your brand is a powerful asset. You spend significant energy and resources on building loyalty to bolster several organizational goals from recruiting efforts, engaging current students on campus and fundraising among alumni.

With your website being the hub of your marketing strategy, it is critical for your CMS of choice to play nice with your marketing efforts.

Drupal happens to be very SEO friendly out of the box, but there are also advanced configuration options available to support a more sophisticated SEO strategy. You can amplify your digital strategy by integrating your marketing tools and communication platforms directly with Drupal. And the 26% percent of other .edu sites using Drupal make integrating your university-specific tools to your website easier. 

Reduce Risk

I’d be remiss without mentioning security and GDPR compliance. As a university, you hold sensitive information about the students who have attended your school and they are trusting you to keep that secure.

The Drupal community is passionate about security and has an industry leading global security team to ensure your site is protected.

Additionally, as the landscape of privacy rights changes around the world (most recently, GDPR), it’s in your best interest to stay on top of it and reduce the risk of being penalized for data collection practices. 

Have questions about how Drupal can benefit your university? Let us know. We’d be happy to chat. 

Jul 03 2018
Jul 03

What’s the greatest entrepreneurship lesson that Mediacurrent partner Dave Terry has learned?

In a recent guest spot on the Good People, Good Marketing podcast, Dave weighs in on the evolution of open source technology and shares his path to building a leading Drupal-based agency.

Interview Sound Bites 

Technology should be shared and free. 

Giving back to the Drupal community is embedded in Mediacurrent’s DNA. Dave explains why that’s so important.

Culture is about people and who we hire. I know a lot of companies say that, but it’s really about putting the processes behind how you identify the right people within the company.

A successful company culture attracts great talent while also managing accountability with a distributed team. Here, Dave shares the three tenets of culture at Mediacurrent.

Tune in

Listen to the complete podcast, Episode 47: Interview with Dave Terry, on the Sideways8 blog.

Related Content 
Why Should Companies Support Drupal? | Blog
Drupal Contrib: Why it's Important | Video
Creating a Culture of Giving in Your Organization | Blog
 

Jul 02 2018
Jul 02

Recorded June 21st, 2018

This episode we welcome Jess Snyder who is on the planning committee for GovCon, coming up real soon in August, to talk about… GovCon.. Which is coming up real soon in August. We’ll cover some Drupal News, it looks like Bob has the Pro Project Pick this episode and Ryan will bring it to a close with The Final Bell.

Episode 38 Audio Download Link

Updates:

Jess Snyder from WETA, DC talking about Govcon

  • What do you do at WETA?

  • What got you into Drupal

  • What got you involved in GovCon

  • Any notable keynotes / sessions you’re looking at?

  • ** Random questions **

Drupal News:

Pro Project Pick:

Events: (https://www.drupical.com/?type=drupalcon,regional)

The Final Bell: (Ryan)

Jun 26 2018
Jun 26

There were a lot of amazing sessions at DrupalCon Nashville 2018, but one of the few sessions that sparked my interest was “PDFs in Drupal” presented by Dan Hansen. In this session, Dan goes through the importance of PDFs, gave a short introduction to some of the more popular PDF rendering libraries, and gave a demo on some tips and tricks that I found very useful for my future projects.

Most, if not all of us, have opened a PDF recently. PDFs are popular because they are universal as a document format and can easily be sent to others without having to worry about whether their machine can open them. Despite this, Dan notes that it feels like PDFs are behind in support, and it would be nice to have better PDF handling in Drupal core - similar to images in media libraries.

PDF Rendering Libraries

This session introduced a handful of popular PDF rendering libraries:

  • Print-to-PDF
  • jsPDF
  • FPDF
  • mPDF
  • TCPDF
  • FPDI
  • DOMPDF
  • Wkhtmltopdf
  • PDFtk

PDFs in Drupal

In Drupal 7, the most popular module for generating PDFs is the Print module - but does not support Drupal 8. Fortunately, there are options available for Drupal 8:

  • Printable - based on the Print module to allow generation of PDFs. It relies on the PDF API, which is currently not stable.
  • Entity Print (recommended) - allows for printing any Drupal entity or View (D8 only) to PDF. This module provides flexibility with PDF rendering libraries and is more lightweight compared to the Print module and has a stable release for both D7 and D8.
  • FillPDF - allows for filling PDF with values. This module can be used with the PDFtk library or a paid third-party service, and can help in reducing overhead of rendering PDFs.
     

Tips and Tricks

I found Dan’s demos to be the most interesting - as he showed some code examples of various (and seemingly common tasks) related to PDFs. The following examples from Dan’s session shows how simple and straightforward it is to work with PDFs:

Making a PDF from HTML

A custom controller can simply return the following output:

$dompdf = new Dompdf();
// Pass the HTML markup.
$dompdf->loadHtml($markup);
// Render the HTML as PDF.
$dompdf->render();
// Stream the generated PDF back to user via browser.
$dompdf->stream();

Combining 2 PDFs

Using the PDFtk library:

$pdf = new Pdf([ 
  'A' => '/path/file1.pdf', // A is alias for file1.pdf 
  'B' => ['/path/file2.pdf','pass**word'], // B is alias for file2.pdf ]);
$pdf->send();

Notice that you can specify a password for the PDF file (if there is one). You can also extract specific pages from the PDF files as well:

$pdf->cat(1, 5, 'A') // pages 1-5 from A 
  ->cat(3, null, 'B') // page 3 from B 
  ->cat(7, 'end', 'B', null, 'east') // pages 7-end from B, rotated East 
  ->cat('end', 3,'A','even') // even pages 3-end in reverse order from A ->cat([2,3,7], 'C') // pages 2,3 and 7 from C    
  ->saveAs('/path/new.pdf');

More of these examples can be found at https://packagist.org/packages/mikehaertl/php-pdftk.

Fill in a PDF Template

Using the FillPDF module:

$pdf = new Pdf([‘PATH_TO_PDF’]);
$pdf->fillForm([
  ‘name_of_text_field’ => ‘Some value’
])
->needAppearances()
->send(‘filled.pdf’);

I really enjoyed and learned a lot of useful tips from Dan’s session, and I encourage anyone who is looking to work with PDFs in Drupal to check out the session.

Related Content:
Accessibility: Let's Talk PDFs | Blog
Top Drupal 8 Modules | Blog
Mediacurrent Top Drupal 8 Modules: Drupalcon 2018 Edition | Blog

Jun 22 2018
Jun 22

Happy Friday everyone! In this episode Front End Developer, Grayson Hicks, joins the show to answer some questions about Gatsby.js, an up and coming static site generator that you can use with Drupal or any other data source. Video and full transcription below. 

[embedded content]

May 25 2018
May 25

Mediacurrent team members will be heading to the mountains in North Carolina for a two day Drupal-filled event for all levels of Drupal skills. Asheville Drupal User Group is a small but dedicated community of Drupalers who will host their 8th annual Asheville Drupal Camp on July 13-15th at UNC Asheville. Mediacurrent will be sponsoring the event and will have 9 team members presenting 6 sessions. We even have Mediacurrent Lead Drupal Architect, April Sides as one of the organizers of the event. From technical Drupal developing to making friends in a remote work place, check out what Mediacurrent has in store for Asheville Drupal Camp 2018:  

Speakers: Mark Shropshire, Open Source Security Lead at Mediacurrent and Bayo Fodeke, Senior Drupal Developer at Mediacurrent

Contenta is an open source API-first Drupal distribution that makes out of the box decoupled Drupal accessible. This session will demonstrate installing Contenta, working with included features, using demo content and consumers, and working with the Contenta community.

Takeaways:

  • Install Contenta
  • Know how to contribute back to Contenta
  • Know how to connect a frontend application to a Contenta backend

Speakers: Brian Manning, Project Manager at Mediacurrent and Kelly Dassing, Senior Project Manager at Mediacurrent

Pivots come in a variety of shapes and sizes. They can be a minor change that’s quickly integrated into scope, or a major departure that alters the entire course of the project. When you encounter these shifts, it’s vital you strategize, communicate, and continue to capture the vision of the client so the final product is a solid foundation for your client’s goals and KPIs—not a point of resentment.

Key points:

  • Kicking off the project with an organized team and plan of attack
  • Communicating with your whole team and the client
  • Being ready to PIVOT
  • Keeping your team grounded in the delivery
  • Conducting a retrospective and additional planning—not a postmortem

Speaker: Grayson Hicks, Front End Developer at Mediacurrent

GatsbyJS is an exciting way of thinking about building sites for the modern web. Is it a framework? Is it a static site generator? This session will cover the benefits of using GatsbyJS and will include the best and not so best use cases.

Key points:

  • What Gatsby's GraphQL data layer is and how and why to embrace it
  • Gatsby's internal API for building a Gatsby starter to fit your team
  • Looking at Gatsby's plugin/source/transformer system for taking Gatsby from a a blog-generator to a site-generator

Speaker: Ben Robertson, Front End Developer at Mediacurrent

Accessible web design really boils down to a few basic principles and when you have these as your first principles when starting a project, you can save your self, your team, and your clients hours of headaches around accessibility testing. 

This presentation will describe a few basic principles to keep in mind when building accessible web experiences, provide explanations and examples of these principles in code, and identify common accessibility pitfalls and how to avoid them.

Topics covered:

  • Simple JavaScript techniques for ensuring accessible components
  • CSS properties that affect accessibility
  • How to use modern CSS (flexbox, grid) without compromising accessibility

Speaker: Zack Hawkins, Director of Front End Development at Mediacurrent

Gone are the days of having one massive JavaScript or CSS file. his session will explore the use of libraries to conditionally load assets and resolve dependencies.

Key topics:

  • Introduction to libraries in Drupal 8.
  • Library options and configuration.
  • What a component based workflow looks like with libraries.
  • Code splitting with Webpack and libraries.
  • Library gotchas and things to be aware of.

Speaker: Kelly Dassing, Senior Project Manager at Mediacurrent, Chris Manning, Director of QA at Mediacurrent, and Sam Seide, Drupal Developer at Mediacurrent

Hear the story of the real-life friendship that blossomed between these three Mediacurrent team members from different departments and how it helps them in their day-to-day work.

This session will be best appreciated by anyone who is a remote worker, whether employed by a small company or larger corporation.
 

Additional Resources

"Shrop" Talk at Drupal Camp Asheville 2016
Drupal Camp Asheville 2016
Mediacurrent to Present 7 Sessions at Drupalcon Nashville

May 08 2018
May 08

Jay Calicott DrupalCon Session

Welcome to the latest edition of the top modules for Drupal 8! Below I recap my newest list that I presented at Drupalcon, Nashville along with updated descriptions. I have also included labels to indicate which modules are best suited for intermediate users versus modules that are universally easy to install and configure.

As an added bonus I now have all of these modules and dependencies available through Github/Packagist for easy setup. 

Just run “composer create-project mediacurrent/mc_top_modules” to get started in minutes, enjoy!

ESSENTIALS LIST

  1. Admin Toolbar (Beginner) - The admin toolbar. It’s a module that you might think would just be in core. We use this on every project because navigating through menus in Drupal is a real pain without rollover menus.
  2. Component Libraries (Intermediate) - If you are doing any Twig theming this module is going to help you with your Twig file includes.
  3. Devel (Intermediate) - Devel can help you debug problems in Twig templates. Another feature that is handy is the ability to generate dummy content.
  4. Entity Browser / Media Entity Browser (Beginner) - The Media Entity Browser module gives you the ability to use a nice little library pop-up to upload, browse and search for different types of media.
  5. Field Group (Beginner) - This is a helpful module for cleaning up your content types. You can organize fields into tabs, accordions, etc. to give your content editors a better experience.
  6. Google Analytics (Beginner) - Google Analytics is a simple module that allows site admins the ability to easily add basic tracking.
  7. Linkit (Beginner) - This module gives you an autocomplete popup inside of Wysiwyg for adding links.
  8. Metatag (Beginner) - Maintained by Mediacurrent’s very own Damien McKenna, this module lets you configure all of your meta tags for SEO purpose.
  9. Panels / CTools / Page Manager (Intermediate) - Panels is a great site building tool for creating custom layouts with a drag and drop interface.
  10. Paragraphs / Entity Reference Revisions (Intermediate) - The paragraphs module is a Mediacurrent favorite for a couple of reasons. Paragraphs are like mini-content types that can handle a variety of use cases.
  11. Pathauto / Token (Beginner) - The pathauto module lets you set up clean alias patterns for all of your content. If you want all of your blogs to have the path /blog/[title of the blog with hyphens instead of spaces] - this will be the module that you use.
  12. Redirect (Beginner) - Almost every new site needs to incorporate 301 redirects for old page URLs. The redirect module gives site admins an easy interface for creating those redirects in Drupal.
  13. Search API (Intermediate) - The Search API suite of modules is a fantastic way to configure your site searches. By default this Search API DB is enabled but you can easily swap out for Apache Solr. The Search API Pages module is also handy for getting a site search up and running quickly.
  14. Simple Sitemap (Intermediate) - A pretty easy to configure module for creating XML sitemaps for search engines.
  15. Stage file proxy (Beginner) - A great module for downloading images to your local environment auto-magically rather than having to continually migrate those images manually.
  16. Webform (Beginner) - This module is awesome because it makes it easy to make any and all kinds of forms on your site. This is a must-have module if you plan on managing forms within Drupal.

NOTABLE MENTIONS

Below are a list of notable mentions that didn’t make the essentials list but are still worth checking out.

  1. CKEditor Media Embed (Beginner) - A lot of content out there on the web includes social media callouts. This module makes it a lot to easier to include that content inside of your Wysiwyg.
  2. Colorbox (Beginner) - The Colorbox module integrates is a popular lightbox library of the same name with Drupal Views and fields. You will need to download the Colorbox library to your libraries folder, otherwise this module is very easy to set up.
  3. Commerce (Intermediate) - If you have done any e-Commerce you have probably heard about the Commerce suite of modules for Drupal. This allows you to add products to your site and checkouts, payment options and more.
  4. DropzoneJS (Intermediate) - Pretty much everywhere you go on the web you see a drag and drop upload option. So why not have that in your Drupal project? This module makes it relatively easy to do so but there is some configuration required along with the need to download the DropzoneJS library.
  5. Entity embed / Embed (Intermediate) - This module lets you embed any Drupal entity anywhere. The most common use case for this is embedding media within Wysiwyg. When paired with the Media Entity Browser, for example this gives editors a powerful tool for embedding media from a library. Both the Lightning & Thunder distributions have good examples of this implementation.
  6. External Links (Beginner) - Over the years we have seen that most clients want the option to force external links to open up in a new window or tab. This module makes that feature request very easy. All you do is check one checkbox and essentially you are done.
  7. Focal point / Crop (Intermediate) - The problem we are trying to solve with these modules is supporting different kinds of crops from the same source image. This solution is probably the easiest I’ve found both on the developer and the content editor. This module tries to crop around the focus of the image rather than just arbitrarily cropping from the center.
  8. Geolocation (Beginner) - I like that the Geolocation module makes it simple to add a point on a map and have that map render in a field. Easy to input and easy to format, with plenty of options for configuration.
  9. Honeypot (Beginner) - Do you ever get spam? While there are a lot of options for anti-spam measures (including captches) this solution has an algorithm that does not burden the end user and is pretty effective.
  10. Lightning Install Profile (Beginner) - Lightning is a general purpose Drupal distribution that focuses on the media and editorial enhancements. Not only is it a good started distribution for Drupal development, it is also a good learning tool. It often is easier to learn how to configure and use a module by examining how it’s implemented on a pre-configured distribution like Lightning.
  11. Scheduler (Beginner) - The scheduler module lets you schedule the publishing and unpublishing of your content. Note that it is going to use cron to make this happen so you need to verify that your cron is configured correctly.
  12. Slick / Slick views / Slick media (Intermediate) - The Slick suite of modules adds functionality to allow site builders to create slideshows and carousels. There are several related modules that integrate with every aspect of Drupal. The hardest part is the initial setup of library dependencies. Once that is done these modules are very easy to configure within the Drupal admin.
  13. Taxonomy Access Fix (Beginner) - This project addresses the fact that core doesn’t have granular enough permissions. The Taxonomy Access Fix module therefore adds in additional permissions to fill in the gaps.
  14. Viewsreference (Beginner) - Last but not least the Viewsreference module gives editors the ability to select a View from a field. At Mediacurrent we combine this field with a Paragraph type to give editors an easy, flexible interface for embedding Views onto a page.

Did I miss any modules you think should have made this list? Let me know on Twitter at @drupalninja!

Additional Resources
Top Drupal 7 Modules: Final Edition | Blog
Top Drupal Marketing Automation Modules | Blog
Top Reasons to Choose Drupal | Blog

Apr 27 2018
Apr 27

Happy Friday everyone. This episode we are joined by Anthony Fournier to talk about his experience in taking the data from Drupal and making it available for component based themes.

Apr 16 2018
Apr 16

Drupalcon 2018 is officially done! Mediacurrent was well represented with 37 teammates converging to Nashville for learning, networking, camaraderie, and professional growth. 

Mediacurrent Team Picture

In the coming weeks, we will be providing a cross-section of feedback from people who perform different roles. Our goal is to give you some insight around "what you missed." 

Drupalcon Nashville 2018 (by the numbers):

  • Approximately 3000 attendees from around the globe and 150 sessions.
  • Hundreds of informal birds of feather (BoFs) meetings where like minded peers gathered, custom training sessions, Summits, and code sprints were held in conjunction with the conference.
  • Over 20,000 Drupal 8 sites are now being launched per month.
  • 81% more of Drupal 8's modules are now considered fully stable compared to this time last year.
  • Some of the biggest logos in the world that have adopted Drupal were well represented in Nashville.

Drupal Logos

The Surgence of Marketing & Strategy: 

There was a common theme throughout the conference around how Drupal can provide a more holistic digital experience. Lauren Vaccarello, VP of Marketing at Box captured many of these points.  While there are a myriad of marketing tools and campaign options available, executives must not lose sight of the obvious - your company's web presence is the singular most important digital asset in your organization. Marketers and editors are demanding more though. They want a content management platform and a best of class partner to:

1.  Really lean in and understand their role and where Drupal solves problems for them.
2.  Take the time to learn about goals, success factors, KPIs and the vision of not just the project or department, but company as a whole.
3.  Show a simpler and easier editorial experience workflow.
4.  Leverage data analytics to make more informed decisions.
5.  Execute at a consistent, predicable level, but also provide insight and exposure to how other organizations are utilizing Drupal in creative ways.

These items are resonating. Megan Saniki, Executive Director of the Drupal Association (DA), talked about how the DA will be working hard to serve the needs of everyone involved in a company's digital experience, especially those who would consider themselves "non-technical."  For example, there will now be a new content and editorial track at Drupalcon, more case studies, and a newly redesigned home page was announced for drupal.org.

Vision of Drupal:

Dries Buytaert, the founder of Drupal, gave a powerful keynote presentation. He mentioned what an exciting time and huge opportunity there is "to grab" for everyone who has been involved with Drupal the past 17 years. After listening to a cross-section of stakeholders, Dries articulated what Drupal's 4 most critical priorities will be to drive the community forward. They include:

1. Improving the evaluation process to help increase adoption - this includes the number of clicks and steps to download Drupal.
2. Improving the content creator experience (people want Drupal to act more like social media tools they already use on a daily basis).
3. Improving the site builder experience - this could include making the version update path easier (note: 8.5 is the newest release of Drupal).
4. Promote Drupal to non-technical decision makers.  In general, this should entail more collaboration for those who have a vested interest in marketing Drupal. This includes a "Promote Drupal Fund" drive that was announced to collect $100,000 to among other things hire an extra, full-time employee for the Drupal Association. 

Recommended Sessions:

Top Drupal 8 Modules: A tour through the best of Drupal in 2018
Advanced topics in Decoupled Drupal
Think Your Website GDPR Compliant? Think Again!

Next Steps:

If you have any questions about Drupalcon Nashville or your next digital project please do not hesitate to reach out to chat.  What did you think of Drupalcon 2018? Send your feedback here.

Apr 03 2018
Apr 03

While everyone has a busy week attending Drupalcon sessions and events (be sure to check out Mediacurrent’s afterparty) , if you find some extra time, Nashville has an eclectic mix of activities and places to go. Whether you're looking for great music in none-other than "Music City" or you're looking for a nice place to relax and grab a bite to eat, take advice from a Nashville native and check out my list of Nashville's must-see spots. When you're ready to take a break from drupalin', check out these suggestions and engulf yourself in the Nashville culture. 

Music

Downtown Nashville

Image source: Wikipedia 

Whether you enjoy country music or prefer other genres, Nashville offers something for every taste.  Some nights you might need to venture outside downtown for more rock and roll. If music is at the top of your Nashville bucket list, here are nine spots you won’t want to miss:  

Food 

Nashville Chicken

Source: Monell’s

There has been a huge number of new restaurants opening but here are a couple of classics and a newish one:

  • Rotier’s Restaurant, the original Cheeseburger in Paradise? A Nashville classic and award winner, just be sure to get the burger on French bread.
  • Family style southern food at Monell's.  Dinner and breakfast are served to the table and passed around like a family holiday.
  • Hip Pinewood Social attracts visitors any time of day, breakfast and Crema coffee, co-working spot during the day, and bowling on antique lanes in the evening.
  • Need Barbecue? Martin’s, Peg Leg Porker,  Edleys, or G’z BBQ are all good choices.
  • Restaurants of award winning chefs include Sean Brock's Husk from Charleston, Tandy Wilson's City House, and the Catbird Seat. This year's James Beard semifinalists include Henrietta Red, Bastion, Josephine, and longtime East Nashville restaurant Margot Café & Bar.
  • Nashville Hot Chicken is very popular with heat level choices for anyone. But pay heed if they warn you when ordering.

Don't forget about the famous Nashville Hot Chicken. A few favorites among many great spots:

  • Princes Hot Chicken Shack. The original.
  • The Tenders Royale from Pepperfire is a nice introduction along with a couple of local drafts on tap, and blues music in the background.
  • Tenn Sixteen Great East Nashville Five Points restaurant.  The hot chicken comes in one heat level, kind of a "Nashville medium".  That is, it's usually pretty hot, unlike other restaurants that don’t specialize in hot chicken.
  • Fannie Mae's, which conveniently just opened up a new restaurant location near the convention center.
  • Another list hot chicken can be found here


Museums

George Jones Museum

Source: George Jones Museum (Also known as the home of the Mediacurrent Afterparty!)

Nashville is rich with history and musical history is at no shortage. Most of these museums are an easy walk or bus ride downtown:

  • The Frist Center -  This art deco building was originally the post office. The current exhibition is the exclusive North American venue of Rome: City and Empire from the British Museum.
  • Country Music Hall of Fame and Museum - Across the street from the convention center, you can also check out Hatch Show Prints or tacos from Bajo Sexto.
  • Musicians Hall of Fame and Museum - This museum “honors the talented musicians who actually played on the greatest recordings of all time.” Additionally The Rolling Stones first ever major exhibition, Exhibitionism, is making its last U.S stop, taking on Music City at the Musicians Hall Of Fame and Museum.
  • Lane Motor Museum - An amazing variety of the largest European collection of cars in the U.S. located a few miles from the convention center.

Exercise

Warner Park

Source: Expedia

Jogging/Walking

  • The downtown Cumberland River Greenway connects to Bicentennial mall - This route can be varied for any distance. 
  • Another popular area for walking and jogging is to cross the Shelby Street Pedestrian Bridge to Cumberland Park and Nissan stadium. 

Hiking/Trail Running 

  • Warner Parks - Large wooded parks on the western boundary of Nashville has hills with a view of the city.
  • B Cycle has bikes for rent by the hour with many locations to pick up or leave a bicycle.   


Family and Kids Activities


Miscellaneous

  • There is a free bus downtown to the Gulch or Farmer's Market and Germantown that has stops around the convention center.  Look for the Green Circuit.  This would be a good way to get to the AAA Nashville Sounds Baseball game in the evening.  
  • A couple of hints on street pronunciations beyond just a southern accent might help too:

       Demonbreun Street - Pronounced da-mun’-bree-un.
       Lafayette Street - Pronounced luh-fay’-ett. ( I know, I know) 


Hopefully everyone has a great experience in Nashville and comes back for a more leisurely visit. 

Mar 16 2018
Mar 16

In our first post that announced the new Mediacurrent redesign, we looked at the evolution of Mediacurrent.com over the years and talked through the over goals of the relaunch. Now let’s take a look under the hood to see some of the cool stuff we did and discuss what our development team learned along the way.

Let’s talk architecture

Now for the fun part, the technical architecture of the new website. First, the backend was upgraded from Drupal 7 to Drupal 8 - that will probably not be a huge shock to anyone. The more interesting aspect of this build is that we have now implemented a fully decoupled frontend. We accomplished this using a static generator called Jekyll which has been integrated with the Drupal backend. More on that in a bit. First let’s answer the question, “Why decoupled?â€

Why decoupled?

A decoupled architecture provides flexibility for constant evolution, opening the door to a variety of potential programming languages and design philosophies to accomplish your website goals. There are any number of articles that discuss the benefits of moving to a decoupled approach. For this post, I want to focus specifically on the points that were deciding factors for our team.

Security

While we do have full confidence in the security features that Drupal offers, we have to acknowledge that a static public site does offer some advantages that make securing the application easier. First of all, we have the option to make the backend CMS completely walled off from the public site. It’s not a hard requirement that the Drupal admin is made publicly accessible. Second, there are simply fewer vulnerabilities that a static frontend will be susceptible to in comparison to a full PHP application. For example, it’s harder to DDOS a site serving only HTML/CSS/JS and there is no server side code running that could be hijacked by an SQL injection attack.

Performance

Decoupled sites often have a performance boost over a fully Drupal-rendered site because the frontend is more custom and lightweight. This is certainly true in our case. The static frontend requires no processing at the time of request so the page is served up immediately with no server-side execution required.

Hosting

One of the things we liked about this particular solution was that it made the hosting architecture pretty simple and inexpensive. With only editors logging into the CMS and the static site being served by Gitlab, we were able to have a fast, reliable stack up and running relatively easily. Up-time is great in that you aren’t as vulnerable to a production error or traffic spike bringing the site down. That being said, all platforms are subject to downtime each year.

Eating our own dog food

As many other agencies will attest to, when you work on your own website it’s a good chance to try something different! We looked at what some competitors had done and we wanted to try an approach that would be a good fit for our needs without overcomplicating the end solution. This endeavor was a way to take some risks and learn along the way.

Dividing the work

The great thing about decoupling is that you break apart the work that needs to get done. The frontend team can focus on the frontend stuff without being tied too much to the backend work (although there will always be some overlap). Our agency spends a lot of our day delivering solutions to our clients so being able to break apart some of the work streams was an advantage. We like that in the future we don’t necessarily need to do a big redesign and Drupal upgrade at the same time. With a decoupled approach, we have the flexibility to tackle each separately.

Technical Overview

Now that you have seen the “Why†behind this approach, let’s look at the “How.†We have kept our Drupal CMS in Bitbucket, which gets deployed to a Pantheon server. That piece is still the same as its been for many years. The new wrinkle is that the public frontend is served on GitLab Pages. If you haven’t heard of Github Pages (which run on Jekyll), Github, GitLab and many other services allow you host Jekyll source files which they can auto-compile into HTML pages and host for you for free or cheap. Pretty neat huh? We ended up going with GitLab Pages because GitLab allows you to add more build customizations than Github. We have also looked at potentially using Netlify in the future as the host for our Jekyll files.

The question you might be asking is how does Drupal content make its way to GitLab? Put simply, we translate node content to markdown and push to the GitLab API on every node save. For user files, we actually still use Drupal uploads and reference the path within Markdown files. If you are familiar with Markdown files, these are the “content†files that Jekyll compiles into pages. The diagram below illustrates the basic flow.

Illustration of how Drupal content makes its way to GitLab

The concept is pretty simple: have Drupal manage your content, write to Jekyll markdown files and deploy those files to a static host.

Why not [Insert favorite Node framework here]?

You might be saying, that's all well and good but why go with a static generator over a server-rendered JavaScript framework like Next.js or Nuxt.js?

The short answer is that we reviewed several options and concluded there wasn’t a framework we felt was a fit at the time we were planning development (around mid-late 2016). Going with a JavaScript-only framework was ruled out for SEO reasons and the options for Isomorphic (server + client side js) frameworks weren’t as stable as we would have liked. Jekyll was the most popular static framework (and still is) with a variety of plugins we could utilize. After doing some POC’s we opted for Jekyll in order to keep the page rendering lean, simple and speedy. The overall complexity of the integration was also a deciding factor in choosing Jekyll over other options.

Trade-offs

One of the fun challenges with a static only site is that you need to learn how to get around the lack of server side rendering. The files are of course static, thus if you want anything dynamic looking you are limited to mostly JavaScript-based solutions. A couple quick examples are forms and the site search. For forms, we were already using Pardot hosted forms for marketing automation, so that wasn’t a big tradeoff. For site search, we went with a pretty cool solution that leverages https://lunrjs.com/ to handle searching the site. Essentially we have Drupal push an index file that Lunr.js can search against using only Javascript in the browser. For RSS, we still generate the RSS feed from Drupal and push to GitLab.

Lessons learned and looking forward

Now that we have the shiny new website up and running, it’s time to look ahead. Would we recommend taking this exact approach in 2018? I would say not exactly. While we are still intrigued by the power of static generators serving as a front end we think something like Gatsby.js (Node/React-based) might have more upside than Jekyll. Further, we aren’t sold on this type of static-only being able to scale in comparison to Node-hosted solutions. The options for server-rendered JavaScript frameworks increase by the day and many have matured over the last few years. Mediacurrent.com will continue to be our place to try new approaches and share with you everything we’ve learned along the way. Thanks for joining us in this journey and enjoy the new site!

Additional Resources
The 3 C’s and 1 D of Drupal: Why Decoupled Matters | Mediacurrent Blog
Relearning Accessibility for a Decoupled Front End | Mediacurrent Blog
4 Benefits of Decoupled Architecture for Enterprise Marketers | Mediacurrent Blog

Mar 15 2018
Mar 15

Since joining Mediacurrent in 2009, I've seen firsthand how our company has grown and evolved, and how our website has mirrored those changes. Today, I am thrilled to announce the launch of our newly redesigned website, mediacurrent.com.

We’ve come a long way since 2007!

screenshots of the Mediacurrent.com homepage from 2007 to present

2017 marked the 10 year anniversary of Mediacurrent. It’s been an amazing journey from Drupal firm to a full-service digital agency. Along with this journey, we’ve expanded and redefined our services to meet the changing needs of our clients.

Explore the site to learn more about Mediacurrent’s development, design, and strategy services.

Built on Drupal 8 with a decoupled approach, the new site reflects a clear vision of our core focus:

Open source development, design, and strategy that grows your digital ROI

Celebrating Our Success

I am incredibly proud of the Mediacurrent team for the persistence and hard work that went into building our new website. It’s this teamwork that has fueled award-winning sites for weather.com, travelport.com, careaction.org, and many others. See how we do it.

group shot of the Mediacurrent team

Some of the MC team at a recent code sprint retreat in Los Angeles

Sharing Our Resources

In our very first company blog post circa 2009, we shared an ambitious goal — we hope the Mediacurrent staff can share pertinent content, and become a trusted advisor when it comes to your web related issues —and we got there! From blog posts and tutorials to videos and podcasts, our new site makes it easier to navigate a great depth of thought leadership content by the Mediacurrent team.

Expressing Our Culture

Mediacurrent is in an exciting period of growth, and we're evolving our team to keep pace with all of the work that lies ahead.

Our culture is at the core of everything we do and one of the biggest drivers behind our redesign was to tell that story. There are lots of ways to do this on the new Mediacurrent.com: meet our team, see how we give back to the Drupal community, and explore career opportunities

Enjoy the new Mediacurrent.com site, and we welcome your feedback!

Mar 14 2018
Mar 14

DrupalCon Nashville is coming up and that means another chance to create deeper connections with the Drupal community by attending or facilitating Birds of a Feather sessions (BOFs). The DrupalCon team has summarized what a BOF is on the DrupalCon website:

Birds of a Feather sessions (or BOFs) are informal gatherings of like-minded individuals who wish to discuss a certain topic without a pre-planned agenda. BOFs allow groups to meet and discuss issues and talk out ways to move the project forward. Have fun and learn! BOFs exist to provide attendees with an inclusive, informal environment in which to share ideas freely. BOFs can be serious, and a great way to gather the people you’ve been working remotely with on a project in a space to deep dive on a topic, but they can also be fun as well. Knitting BOF? Why not?!

At this point, you might think BOFs sound interesting, but why would you consider attending a BOF at DrupalCon?

Since regular DrupalCon sessions are recorded and BOFs are not, consider attending BOFs you find interesting in preference to a session - you can always watch the recording later! BOFs are great subjects for blog posts, so take notes and write about them.

  1. BOFs are not presented lecture style and allow for a high-level of interactivity between the facilitators and other participants. The facilitator generally kicks off the topic and framework for the discussion, allowing everyone to discuss the ideas.
     
  2. Due to the interactivity, there is a chance to meet and get to know others in a way that you might not be able to do in a DrupalCon session.
     
  3. Some BOFs are focused on discussions around and determining best practices. These are great ways to look into your processes and know what you are doing well and what you can do to improve. Organizations looking for the value in sending you to DrupalCon can’t ask for more than the opportunity for immediate process improvements post-DrupalCon.
     

Let’s shift gears to BOF planning and facilitation. Why would you want to host a BOF? One reason is that you may have been one of the 900+ session proposal submitters that were not selected - turn your lecture style idea into a BOF discussion! Another reason to host is that you can ensure that a topic you have a passion about has DrupalCon representation, drawing in participants with similar interests. A BOF is also a great way to practice public speaking and prepare for a future DrupalCon session opportunity!

If you are interested in facilitating a BOF, here are some tips to make sure you get the most out of it and ensure that participants have the opportunity for a positive experience.

  1. As a first step, check out the DrupalCon suggestions: How to Run a Successful BOF
     
  2. Plan your BOF with a clear and concise abstract on what you want to discuss. You are marketing your session against others sessions happening at the same time so make sure to attract participants.
     
  3. Submit your idea as soon as possible! The BOF schedule fills up quickly! There is nothing wrong with pulling together an informal BOF in a hallway or lunch table if spaces fill up.
     
  4. When the BOF begins, introduce yourself and clearly state the topic and format for the BOF so participants know how it will work.
     
  5. Have a brief topic discussion to kick off the BOF. This can be an example of your personal experience around the topic, including successes and challenges. This helps make participants comfortable and gives them time to think about questions and ideas to contribute. Keep it brief so you have time for others to participate.
     
  6. After the short introduction discussion, start by asking an icebreaker question to get participant involvement going. It is a good idea to have a list of related questions and discussion items ready in case you need to keep the conversation moving. Many times, the BOF will take off organically and there will be no need to rely on those techniques.
     
  7. Remember, you are the facilitator. It is your job to help give everyone a chance to be involved and to guide the BOF back to the topic if it gets off track a bit.
     
  8. End the BOF by thanking everyone for coming and consider offering some resources or related research to continue the conversation.
     

If you are interested in submitting a BOF idea at DrupalCon Nashville, BOF scheduling opens on March 14th, 2018. Visit https://events.drupal.org/nashville2018/birds-feather for submission details. Remember that the Code of Conduct is in effect at BOFs and throughout DrupalCon events. We hope to see you at a BOF at DrupalCon Nashville!

Additional Resources
Mediacurrent to Present 7 Sessions at Drupalcon Nashville | Mediacurrent Blog
Drupalcon: Not Just for Developers | Mediacurrent Blog 

Mar 13 2018
Mar 13

DrupalCon Nashville is coming up and that means another chance to create deeper connections with the Drupal community by attending or facilitating Birds of a Feather sessions (BOFs). The DrupalCon team has summarized what a BOF is on the DrupalCon website:
 

Birds of a Feather sessions (or BOFs) are informal gatherings of like-minded individuals who wish to discuss a certain topic without a pre-planned agenda. BOFs allow groups to meet and discuss issues and talk out ways to move the project forward.

Have fun and learn! BOFs exist to provide attendees with an inclusive, informal environment in which to share ideas freely. BOFs can be serious, and a great way to gather the people you’ve been working remotely with on a project in a space to deep dive on a topic, but they can also be fun as well. Knitting BOF? Why not?!

-Definition of a BOF 

At this point, you might think BOFs sound interesting, but why would you consider attending a BOF at DrupalCon?

Since regular DrupalCon sessions are recorded and BOFs are not, consider attending BOFs you find interesting in preference to a session - you can always watch the recording later! BOFs are great subjects for blog posts, so take notes and write about them.

  1. BOFs are not presented lecture style and allow for a high-level of interactivity between the facilitators and other participants. The facilitator generally kicks off the topic and framework for the discussion, allowing everyone to discuss the ideas.
  2. Due to the interactivity, there is a chance to meet and get to know others in a way that you might not be able to do in a DrupalCon session.
  3. Some BOFs are focused on discussions around and determining best practices. These are great ways to look into your processes and know what you are doing well and what you can do to improve. Organizations looking for the value in sending you to DrupalCon can’t ask for more than the opportunity for immediate process improvements post-DrupalCon.

Let’s shift gears to BOF planning and facilitation. Why would you want to host a BOF? One reason is that you may have been one of the 900+ session proposal submitters that were not selected - turn your lecture style idea into a BOF discussion! Another reason to host is that you can ensure that a topic you have a passion about has DrupalCon representation, drawing in participants with similar interests. A BOF is also a great way to practice public speaking and prepare for a future DrupalCon session opportunity!

If you are interested in facilitating a BOF, here are some tips to make sure you get the most out of it and ensure that participants have the opportunity for a positive experience.

  1. As a first step, check out the DrupalCon suggestions: How to Run a Successful BOF
  2. Plan your BOF with a clear and concise abstract on what you want to discuss. You are marketing your session against others sessions happening at the same time so make sure to attract participants.
  3. Submit your idea as soon as possible! The BOF schedule fills up quickly! There is nothing wrong with pulling together an informal BOF in a hallway or lunch table if spaces fill up.
  4. When the BOF begins, introduce yourself and clearly state the topic and format for the BOF so participants know how it will work.
  5. Have a brief topic discussion to kick off the BOF. This can be an example of your personal experience around the topic, including successes and challenges. This helps make participants comfortable and gives them time to think about questions and ideas to contribute. Keep it brief so you have time for others to participate.
  6. After the short introduction discussion, start by asking an icebreaker question to get participant involvement going. It is a good idea to have a list of related questions and discussion items ready in case you need to keep the conversation moving. Many times, the BOF will take off organically and there will be no need to rely on those techniques.
  7. Remember, you are the facilitator. It is your job to help give everyone a chance to be involved and to guide the BOF back to the topic if it gets off track a bit.
  8. End the BOF by thanking everyone for coming and consider offering some resources or related research to continue the conversation.

If you are interested in submitting a BOF idea at DrupalCon Nashville, BOF scheduling opens on March 14th, 2018. Keep an eye out at https://events.drupal.org/nashville2018 for submission details. Remember that the Code of Conduct is in effect at BOFs and throughout DrupalCon events. We hope to see you at a BOF at DrupalCon Nashville!

Additional Resources
Mediacurrent to Present 7 Sessions at Drupalcon Nashville|Mediacurrent Blog
Drupalcon: Not Just for Developers|Mediacurrent Blog 

Mar 02 2018
Mar 02

Happy Friday Everyone! On the eve of the Drupal Drive-in, happening tomorrow in Charlotte North Carolina, we welcome Mark Shropshire to the show to talk about his favorite topic, Drupal Security!

Feb 21 2018
Feb 21

Selected sessions for Drupalcon Nashville have just been announced! Mediacurrrent will be presenting five sessions and hosting a training workshop. 

From exploring new horizons in decoupled Drupal to fresh perspectives on improving editorial UX and achieving GDPR compliance, check out what the Mediacurrent team has in store for Drupalcon 2018:
 

Speakers: Matt Davis, Director of Emerging Technology at Mediacurrent and Jeremy Dickens, Senior Drupal Developer at The Weather Company / IBM
Session Track: Horizons

During the course of an ongoing decoupling project for weather.com, the team found that the lack of page configurability was a distinct pain point for site administrators and product owners. To meet this challenge, the weather.com team built Project Moonracer, a Drupal 8-based solution that allowed for the direct modification of page configuration on a completely decoupled front-end by developing a unique set of data models to move page configuration back into the hands of the site owners.  

Takeaways:

  • Gain a greater understanding of the decoupled UI problem space as a whole
  • See specific API and UI considerations and lessons learned from our experience
  • Catch a glimpse into some possible futures of editorial interfaces in an increasingly decoupled world

Speaker: Bob Kepford, Lead Drupal Architect at Mediacurrent
Session Track: Back End Development 

Wouldn’t it be nice if you could type one command that booted your vagrant box, started displaying watchdog logs, set up the correct Drush alias, and provided easy access to your remote servers? Or maybe you use tools like Grunt, Gulp, or Sass. What if you could launch all of your tools for a project with one command? In this session, attendees will see how to use the terminal every day to get work done efficiently and effectively

You’ll learn:

  • How to use free command line applications to get work done.
  • How to better use the command line tools you already know.
  • How to customize your command line to behave the way you want it to. I guarantee attendees will walk away with at least one new tip, trick, or tool.

Speaker: Jay Callicott, VP of Technical Operations at Mediacurrent 
Session Track: Site Building 

If you have ever googled to find “top Drupal modules” you probably have read Mediacurrent’s popular, long-running blog series on the top modules for Drupal, authored by our own Jay Callicott. In this session, follow him on a leisurely stroll through the best modules that Drupal 8 has to offer as Jay presents an updated list of his top picks. Like a guided tour of the Italian countryside, you can sit back and enjoy as your guide discusses the benefits of each module. By the end of this session, you will have been introduced to at least a few modules that will challenge the boundaries of your next project.

Speakers: Mediacurrent's Dawn Aly, VP of Digital Strategy and Mark Shropshire, Open Source Security Lead
Session Track: Business

Data security legislation like the GDPR (enforcement begins May 28th, 2018) allows users to control how and if their personal data is used by companies. This shift in control fundamentally changes how companies can collect, store, and use information about prospects and customers. While understanding and implementing privacy related regulation in web projects is a necessity, related knowledge and skill sets become a real business differentiator and a key part of a user’s privacy experience (PX).

Key Topics:

  • Practical interpretation of the GDPR 
  • How to determine if you are at risk for compliance 
  • Repeatable process for assessing security risks in Drupal websites 
  • Security by design
  • Impact to data, analytics, and personalization strategies 

Speakers: Kevin Basarab, Director of Development at Mediacurrent and Mike Priscella, Engineering Manager at Thrillist/ Group Nine Media. 
Session Track: Ambitious Digital Experiences 

In this session, we'll dive into how Group Nine Media (parent company of Thrillist.com, TheDodo.com, and others) are evolving the Drupal 8 editorial user experience and contributing that back to the community. We'll not only look into their use case but also explore what modules and options are out there for improving editorial UX without custom development work.

  • How is design/UX reversing to focus on the editorial experience?
  • What contrib modules currently enhance the editorial experience?
  • How can a better editorial experience be beneficial to your client? 

Training Presenters: Mediacurrent Senior Front End Developers Mario Hernandez and Eric Huffman

With the component-based approach becoming the standard for Drupal 8 theming, we’re beginning to see some slick front end environments show up in Drupal themes. The promise that talented front enders with little Drupal knowledge can jump right in is much closer to reality.  However, before diving into this new front end bliss there are still some gotchas, plus lots of baked in goodies Drupal provides that one will need to have a handle on before getting started.

This training will focus on the UI_Patterns module, which although still in Release Candidate state, it already solves many problems originated from the Drupal integration process.

Additional Resources
Drupalcon Baltimore 2017 - SEO, I18N, and I18N SEO| Blog 
Drupalcon: Not Just for Developers| Blog 
The Real Value of Drupalcon | Blog 

Feb 21 2018
Feb 21

Selected sessions for Drupalcon Nashville have just been announced! Mediacurrrent will be presenting seven sessions and hosting a training workshop. 

From exploring new horizons in decoupled Drupal to fresh perspectives on improving editorial UX and achieving GDPR compliance, check out what the Mediacurrent team has in store for Drupalcon 2018:
 

Speakers: Matt Davis, Director of Emerging Technology at Mediacurrent and Jeremy Dickens, Senior Drupal Developer at The Weather Company / IBM
Session Track: Horizons

During the course of an ongoing decoupling project for weather.com, the team found that the lack of page configurability was a distinct pain point for site administrators and product owners. To meet this challenge, the weather.com team built Project Moonracer, a Drupal 8-based solution that allowed for the direct modification of page configuration on a completely decoupled front-end by developing a unique set of data models to move page configuration back into the hands of the site owners.  

Takeaways:

  • Gain a greater understanding of the decoupled UI problem space as a whole
  • See specific API and UI considerations and lessons learned from our experience
  • Catch a glimpse into some possible futures of editorial interfaces in an increasingly decoupled world

Speaker: Bob Kepford, Lead Drupal Architect at Mediacurrent
Session Track: Back End Development 

Wouldn’t it be nice if you could type one command that booted your vagrant box, started displaying watchdog logs, set up the correct Drush alias, and provided easy access to your remote servers? Or maybe you use tools like Grunt, Gulp, or Sass. What if you could launch all of your tools for a project with one command? In this session, attendees will see how to use the terminal every day to get work done efficiently and effectively

You’ll learn:

  • How to use free command line applications to get work done.
  • How to better use the command line tools you already know.
  • How to customize your command line to behave the way you want it to. I guarantee attendees will walk away with at least one new tip, trick, or tool.

Speaker: Jay Callicott, VP of Technical Operations at Mediacurrent 
Session Track: Site Building 

If you have ever googled to find “top Drupal modules” you probably have read Mediacurrent’s popular, long-running blog series on the top modules for Drupal, authored by our own Jay Callicott. In this session, follow him on a leisurely stroll through the best modules that Drupal 8 has to offer as Jay presents an updated list of his top picks. Like a guided tour of the Italian countryside, you can sit back and enjoy as your guide discusses the benefits of each module. By the end of this session, you will have been introduced to at least a few modules that will challenge the boundaries of your next project.

Speakers: Mediacurrent's Dawn Aly, VP of Digital Strategy and Mark Shropshire, Open Source Security Lead
Session Track: Business

Data security legislation like the GDPR (enforcement begins May 28th, 2018) allows users to control how and if their personal data is used by companies. This shift in control fundamentally changes how companies can collect, store, and use information about prospects and customers. While understanding and implementing privacy related regulation in web projects is a necessity, related knowledge and skill sets become a real business differentiator and a key part of a user’s privacy experience (PX).

Key Topics:

  • Practical interpretation of the GDPR 
  • How to determine if you are at risk for compliance 
  • Repeatable process for assessing security risks in Drupal websites 
  • Security by design
  • Impact to data, analytics, and personalization strategies 

Speakers: Kevin Basarab, Director of Development at Mediacurrent and Mike Priscella, Engineering Manager at Thrillist/ Group Nine Media. 
Session Track: Ambitious Digital Experiences 

In this session, we'll dive into how Group Nine Media (parent company of Thrillist.com, TheDodo.com, and others) are evolving the Drupal 8 editorial user experience and contributing that back to the community. We'll not only look into their use case but also explore what modules and options are out there for improving editorial UX without custom development work.

  • How is design/UX reversing to focus on the editorial experience?
  • What contrib modules currently enhance the editorial experience?
  • How can a better editorial experience be beneficial to your client? 

Speakers: Mediacurrent Senior Front End Developer Mario Hernandez; Cristina Chumillas, Designer and Frontend Developer at Ymbra; Lauri Eskola, Drupal Developer at Druid Oy
Session Track: Core Conversations 

The Out-of-the-Box initiative team is working on improving the first-time user experience of Drupal. The team is creating a new installation profile with the main goal of demonstrating how powerful Drupal is for creating beautiful websites for real life use cases.

The alpha version for The Out of the Box initiative has been committed to Drupal 8.6.x. But, what is it and what will it bring to core?
 

Speakers: A panel of community organizers, including Mediacurrent Senior Developer April Sides 
Session Track: Building Community

This conversation is a space for camp organizers (and attendees) to discuss all things event planning, from venue selection and budgeting to session programming and swag. 

Training Presenters: Mediacurrent Senior Front End Developers Mario Hernandez and Eric Huffman

With the component-based approach becoming the standard for Drupal 8 theming, we’re beginning to see some slick front end environments show up in Drupal themes. The promise that talented front enders with little Drupal knowledge can jump right in is much closer to reality.  However, before diving into this new front end bliss there are still some gotchas, plus lots of baked in goodies Drupal provides that one will need to have a handle on before getting started.

This training will focus on the UI_Patterns module, which although still in Release Candidate state, it already solves many problems originated from the Drupal integration process.

Additional Resources
Drupalcon Baltimore 2017 - SEO, I18N, and I18N SEO| Blog 
Drupalcon: Not Just for Developers| Blog 
The Real Value of Drupalcon | Blog 

Feb 15 2018
Feb 15

Last fall at BADCamp it was exciting to see that a component-driven approach to building Drupal 8 themes is becoming the standard. Many people are doing great things to advance this approach, including reducing duplication and simplifying data structures. In the day-long front end summit, and in many sessions and BOFs during BADCamp, great tips were shared for making the most of helper modules, such as the UI Patterns module, as well as techniques that make the most of Pattern Lab, KSS, and other front end systems.

While Drupalers are rejoicing at these exciting advances allowing newfound front end freedoms, there are still a few hoops to be aware of in order to make the most of Drupal, especially for a newcomer who might be eager to shove aside a lot of what Drupal provides. Some of these things, like contextual links, are nice-to-haves that can make life easier for content administrators. However, other things that are easily dismissed in a component-driven approach, like letting Drupal fully render fields, can cause headaches further on if they’re ignored, and make life difficult when it comes to keeping your front end forward-compatible with Drupal.
 

A Quick Recap of the Component-Driven Approach

At its basic level, the component-driven approach to Drupal theming means:

  1. Breaking your site’s interface down into independent components.
  2. Organizing those components into a system of reusable parts (i.e., the Atomic Design philosophy).
  3. Build out those parts however you see fit in a standalone presentation platform that supports twig (i.e., a KSS, or Pattern Lab style guide), with the pieces of those components that can change set up as variables in the twig files.

These component twig files that you use to build your system of reusable parts essentially serve as replacements for the templates in your Drupal theme (field.html.twig, block.html.twig, node.html.twig, etc.) You’ll still need the Drupal templates -- for now, see the UI Patterns module note at the end -- but they only serve as the “presenter” that helps map values from Drupal to the appropriate variables in your component template. The biggest payoffs with this approach are:

  1. Build things how you like them! You’re in control of the markup, and don’t necessarily have to be a seasoned Drupal developer to dive in.
  2. Back end setup, and front end build out can happen at the same time.
  3. A more organized, and structured presentation layer that’s not strictly tied to Drupal, and could potentially be repurposed for other platforms.

For a deeper dive into the components-driven approach, be sure to check out Mario Hernandez’s blog post series on integrating components into Drupal: Part 1, Part 2, and Part 3.

So if you’re not following a component-driven approach already, I’m sure you can see why it’s becoming popular. However, before diving in, here are a few things to consider to help you keep your approach forward-compatible with Drupal, and hopefully avoid headaches.
 

When It Comes To Fields, Let Drupal Do Its Thing

As we know, the default field markup in Drupal 8 is abstracted to account for field labels, and multiple values. This means that by default in Drupal even a simple, single value text field is going to render with multiple layers of <div>s wrapping the value of the field. However, let’s say you have a callout component in your style guide that includes an optional subtitle field. You’d probably mark that up with just a single, semantic element, like this:
 

{% if subtitle %}
 <h3 class=”callout__subtitle”>{{ subtitle }}</h3>
{% endif %}


And let’s say on the Drupal side of things you’re going use a custom block type for adding callout components to your site. Therefore, in the block--callout.html.twig template that serves as the “presenter” for mapping Drupal values to the component template, you’d have something like this:
 

{% include ‘@custom_theme/callout/callout.twig’ with {
  ...
  ‘subtitle’: content.field_subtitle
  ...
} %}


Since we’re letting Drupal render the subtitle field in our block template, we’d end up with all the default field markup inside our <h3>, which isn’t what we want at all.

While the quickest solution may be to pull out the value of the subtitle field from the render array for the field, and pass that to the component template...
 

‘subtitle’: content.field_subtitle.0['#context].value 


...this can come back to bite you later because of the way Drupal 8 handles caching. One option that’s more cache-friendly is to use the Twig Field Value module. This module gives you custom filters that help you safely pluck the value you need from the render array for the field:
 

‘subtitle’: content.field_subtitle|field_value


This is better, but we’re still shoving aside how Drupal adds attributes to the field markup. We’d only have our custom class on the <h3> for the subtitle, with no way for modules in the Drupal ecosystem to inject their classes or other attributes. As some of the “Outside-In” initiatives in Drupal start to mature this will become increasingly important if you want to take advantage of them. What follows are some options for how you can make your components more “loyally” accommodate Drupal.
 

Follow Drupal’s Lead For Field Markup

First, you could markup your component templates with additional wrappers that include only your classes, which would apply styling to the semantic element included in the variable output of your component template. Understandably, this could lead to a bit more bloated styling and markup, plus require you to include markup in the sample data that your style guide uses. Example:

Component markup:

{% if subtitle %}
  <div class=”callout__subtitle-wrapper”>
    {{ subtitle }}
  </div>
{% endif %}

Component placeholder data in the style guide:

{
  “subtitle”: “<h3 class=\”callout__subtitle\”>Subtitle Text</h3>”
}

In this case, when the component is implemented on the Drupal side of things, you would create a custom field template for the subtitle field, where you would change the markup to use only a single <h3>, plus add the “callout__subtitle” class via the Drupal addClass() function.

Drupal field template for the subtitle field in our “callout” custom block type:
 

<h3{{ attributes.addClass(‘callout__subtitle’) }}>
  {%- for item in items -%}
    {{ item.content }}
  {%- endfor -%}
</h3>

But Wait, I Want Control Of My Markup!

The previous option somewhat defeats the purpose of the markup freedom you get with a component driven approach, so you may want to instead consider leaving the component markup nice and lean, and just use a <span> tag for the subtitle field where the Drupal-specific attributes can be applied.

Component markup:

{% if subtitle %}
  <h3 class=”callout__subtitle”>
    {{ subtitle }}
  </h3>
{% endif %}

Component placeholder data in the style guide:

{
  “subtitle”: “Subtitle Text”
}

Drupal field template for the subtitle field in our “callout” custom block type:

<span{{ attributes }}>
  {%- for item in items -%}
    {{ item.content }}
  {%- endfor -%}
</span>

This works pretty nicely, but you may find that those Drupal attributes really need to be output where they were intended: the main wrapper for the field.
 

Twig Embed To The Rescue

A good middle ground for keeping your markup lean, but still loyally accommodating Drupal attributes, is to use twig embed blocks in your component template. This means you could put whatever you want inside the embed block declaration for the subtitle field in the component template, and on the Drupal side when the callout component is integrated via a twig embed, we simply swap that subtitle block with something else. Example:

Component markup:

{% block callout_subtitle %}
{% if subtitle %}
  <h3 class=”callout__subtitle”>
    {{ subtitle }}
  </h3>
{% endif %}
{% endblock %}

Component placeholder data in the style guide:

{
  “subtitle”: “Subtitle Text”
}

Drupal block template for integrating a callout component:

{% embed ‘@custom_theme/callout/callout.twig’ with {
  ...
  ‘subtitle’: content.field_subtitle
  ...
} %}
  {% block callout_subtitle %}
    {{ subtitle }}
  {% endblock %}
{% endembed %}

Drupal field template for the subtitle field in our “callout” custom block type:

<h3{{ attributes.addClass(‘callout__subtitle’) }}>
  {%- for item in items -%}
    {{ item.content }}
  {%- endfor -%}
</h3>

Accommodate Attributes All The Way Up

Now that we’ve established some options for accommodating Drupal at the field level, let’s take a look at how to accommodate Drupal in the block template for our callout component example.

One key Drupal feature that’s extremely helpful for content administrators is contextual links. To make these work in our callout component example we’ll need to accommodate the Drupal attributes variable on the main wrapper of the component template, plus include the title_prefix/title_suffix variables. These are what Drupal needs to inject the contextual links into a template.

Since the attributes variable can include class, id, and data attributes in one variable, we need to make sure we only combine Drupal’s classes with ours, and let the other attributes render without Drupal classes. This can be accomplished on the main wrapper of our callout component template:

<div class=”callout {{ attributes ? attributes.class }}”{{ attributes ? attributes|without(‘class’) }}>

Note that the ‘without’ twig filter in this example is a Drupal-specific filter, so for your style guide you’ll want to make sure you’re using one that supports Drupal’s custom filters (both KSS node, and Pattern Lab have configuration options that support Drupal twig filters.)

The other thing you’ll want to include to make sure contextual links get injected are the title_prefix/title_suffix variables. You typically will want to include this around the markup for the main title of the component:

{{ title_prefix }}
<h3 class=”callout__title”>
  {{ title }}
</h3>
{{ title_suffix }}

Make Sure Empty Means Empty

You may recall when first discussing the subtitle for our callout component it was mentioned that it would be an optional field, and in our component template we include an ‘if’ statement to check for a populated subtitle before outputting its related markup. One thing to keep in mind when letting Drupal fully render fields is that even though no content may have been entered for the subtitle on the Drupal side, your component may still read the value of the rendered field as not being empty, and proceed with outputting the markup inside the if statement. This is especially problematic when you have twig debug turned on in your theme.

A reliable way to avoid false positives when checking for empty fields is to check the results of a field after applying the render and trim filters. Example:

‘subtitle’ = content.field_subtitle|render|trim is not empty ? content.field_subtitle


Leave No Content Unrendered

Finally, one last step we’ll want to take in our “presenter” template, is to make sure we allow Drupal to go ahead and do its render thing on the main content variable of the block, even though we’re only interested passing specific field values to our component template. This is again is to help avoid headaches with how caching is handled (read more about this here: https://www.drupal.org/docs/8/api/render-api/cacheability-of-render-arrays). We also need to make sure that we exclude the fields we passed over to our component template since we don’t want them to actually be output in the Drupal template. Example:

{{ content|without(‘field_title’, ‘field_subtitle’, ‘body’) }}


What The Future Holds

As mentioned in the beginning there is also UI Patterns module that many are embracing for a component-driven approach to Drupal site building. The benefit of this module is that it eliminates the need for the “presenter” template when integrating your components.

For now, though, if you find yourself in a position where your Drupal templates are having to serve as the presenter for your components, make sure to consider these ways of keeping things as forward-compatible as possible with Drupal, so that you can take advantage of new Drupal initiatives as their rolled out, and save yourself some headaches later on.

Additional Resources
5 Advantages of Component Driven Theming | Video
Building Components: Breaking it Down | Blog
5 Aspects of Component Driven Back End Development with Drupal 7 | VIdeo

Jan 22 2018
Jan 22

Hello and welcome to my first blog post for Mediacurrent! Today’s post will be all about Docksal and how it can help you get up and running developing on Drupal 8 quickly and easily. This post was inspired by the great session I saw at DrupalCon 2017 and will explain how using Docksal will save you time getting up and running for a new Drupal development project. I’ll also talk about some of the technologies behind Docksal such as Docker and Oracle VM VirtualBox.
 

How does it work?

Docksal works by using Docker (a software container platform) and VirtualBox ( a general-purpose full virtualizer for x86 hardware) to create projects with a few simple commands. Instead of having many VMs (virtual machines) for all of the projects or websites that you work on, Docker allows a person to use a single VM instance for many websites.
 

Why Docksal?

So, why Docksal? Why not just use Docker, download Drupal, and get started on development that way? If you’re already quite familiar with the Docker and VirtualBox installation process and you want to customize all of that yourself, you could do just that, but if you don’t the main advantage of Docksal is less set-up to get started on developing code with Drupal.
 

Installation

By following the instructions on Docksal’s documentation, you can see that when using one of its supported OSes, Docksal is installed in two to three steps.

The main step to pay attention to is usually the same for each OS: “fin vm start”. Fin is a handy command line tool that comes with installing Docksal. It allows you to manage all the services related to the docker machine and virtual machine with easy commands.
 

Saving Time with Docksal: How to customize your stack

To save you time on your projects, Docksal comes with a default set of configurations (or in their language, a “ stack ”) that controls what services your project will use. Within the default stack, you’ll find values for the typical services needed to run a website, such as configurations for PHP, a web server, and a database server. The current configuration being used for your project’s stack can be found by running “fin config show”.

It’s important to note that you should not change the configuration found in the yaml files for the default stack (under ~/.docksal/stacks). If you want to customize your stack, you should instead use the “.docksal” directory in your project. These are created after running “fin start” in your project directory. Customization will allow you to add support for more services, such as Apache Solr, Varnish, Memcache, Selenium, Behat, XDebug, and many more. Since Docksal uses Docker containers, almost any service that can be found on Docker can be made to work with it. A list of some typical services and how to configure them to work with your project can be found under the “Tools and Integrations” section on Docksal’s documentation page.

Docksal currently only comes with two stacks: default and Acquia. The Acquia stack is for quickly getting started on development for an Acquia environment.

I hope this post has served as a helpful guide to jumpstarting a Drupal 8 project with Docksal. For more information on Docksal stacks, please see the following documentation.

Additional Resources
Better Local Development with Vagrant | Blog
Debugging Javascript Live in Chrome | Blog
How to Think About Drupal 8 | Blog

Jan 10 2018
Jan 10

When you’re solely focused on Digital Strategy and Drupal as your open source website and web application development framework like Mediacurrent has been for the last 10 years, you’re deeply invested in all of the great challenges and rewards that come with delivering products and solutions that are essentially only limited to your creativity and what you can dream up. In my presentation at DrupalCon Baltimore last year, I described how leading digital agencies and large enterprise global brands are shaping the new Internet with Drupal and other open source technologies. As all of us in the Drupal community begin our 2018 quests in Digital (now coined, “Digital Transformation”) having a reliable, innovative and proven starting point is critical for success and getting solutions to market faster.

From the early days in website design and development, having the right starting point was paramount and thankfully, Drupal answered that bell.  Think about it. Before Dries created Drupal, all of us in the Web industry did our own thing coding in PHP, ASP and, yes, ColdFusion. Granted, those were fun and exciting times, but before Drupal:

  • It was difficult to monetize and scale the wonderful work we did.
  • We were challenged with replicating and maintaining features and functionality from client to client.
  • We could not respond to the client demand for robust and maintainable Enterprise Content Management Solution (ECMS).
  • Proactive Digital strategy and measurement suffered because we were all too busy focusing on publishing and maintaining content.

Taking this example one step further, Mediacurrent is able to save our clients hundreds of thousands of dollars each year by pairing our Digital Strategy and Drupal 8 development services with another great starting point that Dries and Acquia produced: Acquia’s Site Factory. From Universities to Large Enterprise, Site Factory allows Premier Implementation partners like Mediacurrent the ability to work with our clients to consolidate hundreds of individual web properties onto a single platform to strengthen our clients brand, adhere to best practices in governance and Web Accessibility and reduce maintenance costs.

What about when it comes to localizing a website in multiple languages to drive increased conversion using the user’s native tongue?  Do we build a new website for each language?  No, no, no! We look to our Network Translation partner, Lingotek, and all the great work they’ve already done is getting their platform ready for Drupal 8.

What about Project Management? Still working in Spreadsheets? Clients value transparency and Online tools such as Jira allow us to work in an agile way while capturing all of the project’s detail in one data repository.

Now, fast forward to today at this in this era of personalization. Our mission on this quest: Deliver the right content to the right person at the right time and on the right device.

  • As a marketer? Are you doing this?  
  • Are you a digital strategist charged with the task - are you accomplishing it?  
  • Are you the technical lead and in charge of delivering personalization programmatically - how is that going for you?

In many cases, it’s how to get started that makes all the difference, and at Mediacurrent, we like another one of Acquia’s products for this, Journey,  in helping us deliver these solutions to our clients - especially those clients and prospects of ours who need to deliver relevant content at each step on their consumer’s purchasing path. How does Journey help specifically? Great question.

Imagine it’s a Saturday morning and you’re browsing a “Top Ten Burgers” list on your favorite website (for me our client, Thrillist, is always a good source for this type of content). Less than a week later, your business trip takes you to Atlanta. You get off the plane and BAM! You receive a push notification about the 3 best burgers in Atlanta.

This concept is incredibly valuable for those of you in the Media and Entertainment industry as a way to drive new Ad Revenue. Imagine receiving a push notification about a product you abandoned in a shopping cart experience that the same product is in stock at a store less than 3 miles from where you are eating lunch. Thank you Journey!

No matter where your Digital Marketing Journey takes you, here’s the guide to have ready as you enter into the conversations:

  • Have your data points ready. The questions to ask are:  
    • “What data do you currently capture about your prospects and customers?”
    • “How are you currently using that data to improve your KPIs?”  

I think our friends at the Executive Office of Technology Services and Security (EOTSS) with the Commonwealth of Massachusetts, did a great job of using data to better serve its constituents online with the new Mass.Gov!

  • Identify the list of technologies that are involved in capturing and understanding data. Obvious places to look are:
    • CRM applications such as Salesforce
    • eCommerce platforms, such as Magento
    • Marketing Automation technologies such as Eloqua, Pardot and Marketo
    • Good ole’ fashioned Google Analytics (Bots excluded of course!)
    • Acquia’s Products Journey and Lift
  • Put yourself in your buyer’s shoes. Let’s say you sell Drones. If you were a consumer, what obvious questions would come to your mind? I know if it were me, I would need help with the following:
    • Where can I fly my drone after I buy it?
    • What do I need to know before I arrive at that venue? Are there any regulations that I need to be aware of?
    • Where can I connect with other flying enthusiasts?

Acquia’s Journey Product, coupled with Drupal 8 and its support of Rest out of the box and the right Marketing Automation strategy would allow the company selling Drones to answer these questions at the right stage of the consumer journey.

  • Assemble the right team. At Mediacurrent, we’ve learned that organizations who are most successful in moving their digital strategy forward are those that have these characteristics:
    • Have a clear definition of how their digital strategy and assets will support their critical business objectives and drive ROI for the business
    • Understand how to get the most from their partner agency
    • Adopt a data-driven approach (vs trusting their “guts”) to identifying solutions

I’m really looking forward to what 2018 holds for us at Mediacurrent, as well as the Drupal Community. See you in Nashville!
 

Additional Resources
The 3 C's + 1 D of Drupal: Why Decoupled Matters | Blog
5 Things to Know About Digital Transformation | Blog
Digital Strategy Can Help Make Accessibility 'Just What We Do' | Blog

Jan 08 2018
Jan 08

As we begin a fresh, brand-spanking-new year, several UX design practices and technologies stand out as the most exciting and relevant. While they are not all necessarily bleeding edge or super trendy, these considerations are becoming more and more vital to our clients and will be at the forefront in the year to come and beyond. Here’s an overview of what we’re watching, how the UX landscape is shifting, its impact on marketing and consumer experience, and what it means to you!

Data-driven UX

What do you imagine when you think of a “designer”? Likely an artsy sort of person comes to mind, a wizard who can wave a wand and bring all the users to the yard. But I’m here to tell you - it’s not wizardry. It is, in fact, science!

Across the industry, much like scientists, designers are conducting controlled experiments and collecting data to determine the best approaches for presenting information and guiding users through interactions with digital systems. Following the latest user research is to designers what keeping up with medical journals is to doctors.

It gets even better. Professional digital strategists and data analysts can review your business and your website and make sense of all of this data for you. From competitor analyses to SEO audits, they collate numerical resources to produce a set of measurements for success, and a plan to get there. This is the mana that fuels the designer’s sorcery - and it’s really just numbers...and OK, maybe a little magic.
 

Evolving Navigation Patterns

Speaking of data-driven design, after extensive user testing, Spotify ditched its hamburger menu in favor of a strip of icons and titles along the bottom known as “tab bar navigation.” This is something that Facebook had already done a few years prior. Again, after extensive testing.

Spotify tested the tab bar navigation pattern to see how it impacted user engagement. They found that users with the tab bar ended up clicking 9% more in general and 30% more on actual menu items. The tests also revealed that reducing the number of options in the tab bar increased the reach of Spotify’s programmed content, the company says.

It’s certainly worth noting shifts in application design when choosing responsive website navigation patterns following a mobile-first approach. Regarding the hamburger menu, Nielsen Norman Group has found through testing that “Discoverability is cut almost in half by hiding a website’s main navigation. Also, task time is longer and perceived task difficulty increases.”

But by all means, let’s not declare hamburger menus dead and gone. Like the world’s most notorious font, Comic Sans, there are appropriate and inappropriate uses for the familiar 3-bar stack. The purpose of navigation, lest we forget, is to help a user navigate a website. It answers the questions “Where can I go?” and “What can I do?”

With data in hand and your company’s vision for the future in mind, information architecture and navigation can be crafted to prioritize key actions and content. This can still sometimes mean a hamburger menu because not all companies are Spotify. Would you like fries with that?
 

Persona-driven UX

Hand-in-hand with data-driven UX, goes persona-driven UX. What is a persona? A persona is a made-up character synthesized from patterns observed in data collected from large numbers of users. Identifying key personas allows project teams to focus on the primary user journeys.

There is also the notion of building atypical or “Rogue Personas” which act as edge cases to help establish boundaries (in the case of the Internet Troll or Phisher), fail safes (in the case of the Bumbling Noob), and highly accessible experiences for individuals with vision, hearing, or cognitive impairments.

The data used to build personas comes from a number of sources including surveys, interviews, and analytics reports. The data is not only used to create profiles but to establish a set of goals for each persona. These goals are the stops on the user journey for which designers will build guideposts.

Once a design has been prototyped, user testing can be done with individuals who match the demography of the personas, to validate or refute the assumptions, and to gather useful feedback. At this stage of a project, it can really start to feel like a fun science experiment!

Assessing a design as it develops against the wants and needs of these meaningful archetypes is a powerful tool. Personas help us ask the right questions as we work to create user experiences and to answer those questions from the perspective of the primary personas, rather than from our own.
 

VUI - Voice User Interface and Accessibility

“Alexa, will I need an umbrella today?”

How many seconds would you save asking a question out loud rather than picking up a device to click or tap to get answers? Especially considering the distractions you may encounter on your device - it’s all too easy to sometimes forget why you picked it up in the first place!

The screenless user experience is on the rise. It is often more convenient for users to interact with technology hands-free, with no visuals required. Driving, cooking, hosting a party - why stop what you’re doing when you can utter a voice command or ask a question?

From Apple’s Siri and Microsoft’s Cortana to Google’s Assistant and Amazon’s Alexa, VUI is on the rise. It’s not only the UI for Apple’s AirPods, Google Home, and Amazon’s Echo, but it’s even being built into devices like speakers, televisions, vacuum cleaners, and lightbulbs.

According to Gartner, by the end of 2017, room-based screenless devices will be a part of more than 10 million homes. By 2019, they predict, 20% of user interactions with smartphones will take place via Virtual Personal Assistants. By 2020, they predict, 30% of web browsing sessions will be done without a screen.

As UX designers, we are constantly challenged to develop experiences that are consistent across a great many channels and VUI is just another of those - and a very exciting one! Interacting with Alexa can feel like a science fiction film come to life!

The good news is that websites built with accessibility for the visually impaired and with Search Engine Optimization in mind are already well-placed to be highly functional when approached through VUI. And good UX is good organization, so well-designed websites will play well with Alexa and her ilk.
 

More Personalized Experiences

Users of Amazon or other online shopping venues have long been accustomed to product recommendations based on their shopping habits. And certainly marketers know how to target us online with advertisements based on our browsing history.

Users of Netflix and other streaming services are happy to scroll through lists of content related to what they’ve watched previously. But as a result of significant progress in AI and machine learning, a whole new level of personalization is here, creating more intimate experiences for users that build trust and secure brand loyalty.

Entire teams at Spotify focus on analyzing songs and listeners through collaborative filtering, machine learning, DSP and NLP approaches. They are constantly crawling the web for artist information, scanning each note in every one of their millions of songs for acoustic signals, and modelling their users' tastes with cluster analysis based on their historical and real-time listening patterns.

It is Spotify’s data-driven playlists that set it apart from its competitors. As of last year, they had millions more listeners than their closest competition. Of course, Pandora’s Music Genome Project has been categorizing tunes based on hundreds of unique characteristics since the early 2000’s. But Spotify wins because of how they leverage their data to generate customized playlists for each user. For example, “Your Top Songs of 2017,” which can be a very emotional (or cringe-worthy) walk down memory lane!

Personalization is going ever deeper. Netflix recently revealed that it is leveraging technology to assess not only what shows to recommend to their users, but what images to display along with those recommendations, customized to each specific user’s taste.

As personalization becomes smarter and more ubiquitous, UX professionals will be able to design websites not only with persona-based journey patterns, but websites that learn and adapt to each individual user. Algorithms will decide what content is displayed based on the unique interaction history and behavior on the site for any given visitor, allowing for a truly customized experience.

Of course, any potential privacy concerns should be anticipated and addressed at the outset in a way that is subtle but readily available. Personalization, when done well, can feel warm and “right” - it connects the user to the service on an emotional level. “They know me.” The user feels welcome and at home with the technology. Of course this is good for business, but putting that aside, creating these kind of deep, human connections is the greatest joy the UX field has to offer.

In conclusion, as a new year dawns, it’s wonderful to be a part of a world of technology that is making people’s lives better: more convenient, more connected, more accessible to all.

Additional Resources
6 Design Alternatives to Slide Shows | Blog
For the LOVE of User Experience Design | Blog
Why Your Website Project Needs a UX Designer | Blog

Dec 04 2017
Dec 04

Someone once said, “if you have to explain the joke, it takes the fun out of it.” Well, the same can be said for designing a website. Explaining the important and sometimes technical details can be a tedious process many designers would avoid if possible. But when it comes to communicating the form and function of the user experience through wireframes, explaining each element can make or break the project. It’s always a good idea to include annotations.
 

Types of Wireframes

First, let’s start at the beginning to avoid vague deliverables. Does every UX designer you’ve met create similar looking wireframes? There are about as many different styles of wireframes as there are websites on the world wide web, so chances are the term ‘wireframe’ by itself really isn’t saying much to your client.

Most folks understand a wireframe to be a basic layout for a web page, in shades of grey. But other than that, what else should they expect? Will it be a basic paper drawing or a functional computer drawn detailed webpage? Usually the type of wireframe provided is based on the budget and pace of the project, along with considerations for the type of site to be built, the scale of the overall project, and the depth of the sitemap. Sometimes more than one type of wireframe is used when user testing is needed. Once the most appropriate wireframe approach has been determined for the project, it’s a good idea to convey the definition in your deliverable documentation. Here is an example:
 

Low Fidelity Wireframe

  • Can be paper sketches or computer drawn.
  • Abstract lines and shapes that represent spatial elements on the page.
  • No actual copy is used, just lines to represent text.
  • Descriptions for content and functionality (as needed) are included directly on (or near) the elements.
     

Medium Fidelity Wireframe

  • Shows the content framework, layout structure, and hierarchy of key elements using basic lines, shapes, and boxes to represent images, icons, etc.
  • Copy inserted where available, otherwise lorem ipsum is used as a placeholder.
  • Presented in shades of grey with no styles or graphics applied.
  • Functions have labels.
  • Descriptions for content and functionality provided in annotations.
     

High Fidelity Wireframe

  • More details are included for each component along with additional views for features like modal windows or dropdown filters.
  • May include specific typeface choices to begin to show hierarchy.
  • Spacing between elements is further refined.
  • Determinations between image vs. illustrations may be eluded to.
  • Remains without color.
     

Why Annotations are Important

So you’ve just created a beautiful set of wireframes, had a great client presentation, and they’ve approved them. Great job! But that’s only part of it. Just because you’re ready to share the wireframes with the developers so they can begin their technical discovery, it doesn’t mean they have the same shared understanding about them as you and your client. Often times in an Agile development process, not everyone involved is present for every meeting during the discovery process due to the pace of the project and/or budget. Even when everyone is present, we don’t want to make them rely on sheer memory alone for how each component is going to be built or how it will function. That’s where the ever important Annotations come in. By providing fully annotated wireframes to both developers and your client will help to keep everyone on the same page for what to expect at launch.
 

The Art of Annotating

Once those medium or high fidelity wireframes have been created, it’s time to add the important information so we can ensure everyone has a clear understanding of the functionality that is expected for each component. The most important thing to remember when annotating your work is that it should speak for you when you’re not there.
 

Where Should The Annotations Go?

Typically, annotations are placed on the side or the bottom of a wireframe in a numbered list of descriptions with corresponding numbers next to the actual element on the wireframe. The language is kept brief in order to include as much information as possible within a limited physical space. It’s helpful to use color combinations that stand out from the wireframe to avoid confusion between elements. And when you have multiple audiences you need to address, it’s helpful to tailor your annotations by creating different sets for each.
 

Who Are The Annotations For?

Not that you need to include them all, but there are typically up to 5 different audiences who have different needs but may benefit from wireframe annotations:

The Client wants to understand how each element incorporates their business goals. When designing for Drupal, annotations are also the perfect place to highlight when certain components will be manually curated or fed automatically to ensure the expected maintenance after launch is clear.

The Front-End Developer wants to see where the images and icons are placed, what size and aspect ratio they are, defined page margins, amount of padding between elements, and the functionality for all interactive components.

The Back-End Developer can benefit from notes on image sizes, functionality for interactive components, manually curated elements vs. automatic feeds. They can also incorporate helpful tips for the content author with specific direction.

The Copywriter can write more freely if you’re able to provide recommended character counts for each section within the component: Title, subtitle, descriptive text areas, etc. Notes for optional elements will also improve the quality of the final copy. And when content will be auto-fed, note it so they can move on!

The Designer for those instances where wireframes and designs are handled by different people, it’s helpful to include design direction or live links to reference examples. You’ve been involved in conversations with the client during wireframe development and understand their vision. This is the opportunity to communicate that information.
 

What Information Should The Annotations Include?

Don’t think you’re being helpful if you annotate everything, without a cause. The last thing you want as an end result is a wireframe that’s so overloaded with annotations it looks like the plans for the next spaceship launch. It can actually be more confusing if too many notes are present. Smart wireframe design can alleviate the need for certain descriptive annotations when you include the descriptions within the titles of the element itself:

  • The title ‘Logo’ or ‘Icon’ sits inside of the circle.
  • The Button title reads ‘Optional, Editable Button’.
  • Required form fields have a red asterisk.
  • The opening ‘lorem ipsum’ descriptive copy instead starts with “This is an introductory paragraph that talks about scientific discoveries”.

What should you annotate?

  • Anything that is not obvious just by looking at the wireframe.
  • Conditional items: when and how to display them.
  • Cross-device differences. An example would be when an image may display on desktop but not on mobile. Or when an image may be replaced with one of a different aspect ratio on mobile, etc.
  • Logical or technical constraints: maximum image size, longest possible password field length, etc.
  • Any hidden details: content behind additional tabs, items in a drop-down menu, etc.
  • Functional items: links, buttons: expected behavior when the user clicks. This also includes how filters and form fields should respond.

Here are a few common areas of interaction states, feedback, and gestures that benefit from detailed annotations:

 
Dropdown Lists

Include the expanded states of the drop down menus on a separate page with annotations.

 
Dynamic Content

Explanations for things like search results listings, news content that will auto feed, image or video galleries, pagination.

 
File Uploads and Downloads

Provide interactions for the file upload. This may include things like file upload dialog, file upload progress bar, file upload completion notice.

 
Messages and Modals

Interactive feedback for form validation, confirmation, warnings, alerts, failed actions, errors, etc.

 
Numbers

Account for the longest number of digits that will be needed for any confined spaces. Example: Should it display as 100,000,000 or 100M ?

 
Titles and Labels

Account for the longest names potentially possible. Provide solutions for cases when the lines should not break: ie, within tables, accordions, filters, etc.

 
Tooltips

Provide visual reference and implied behavior for tooltips and try to account for the maximum characters that will be needed.

 
Gestures

Especially when annotating mobile wireframes, your intentions will not be lost if you add directional notes for specific gestures, such as:

  • Single-click (or tap)
  • Double-click (or tap)
  • Right-click (or tap)
  • Hover (provide mobile alternative)
  • Swipe
  • Pinch & spread
  • Drag & Drop
  • Default link for phone, email, map
  • External web links
     

Wrap it Up

Fully defining the wireframe process in the beginning of the project will clarify expectations for the client. Wrapping those completed wireframes in an annotated package will help to keep everyone involved working towards the same goals, and avoid disputes, disappointments, and costly reworks down the line.

Additional Resources
Designer to Developer: How to Go From Paper to Style Guide | Blog
Why Your Website Project Needs a UX Designer | Blog
For the LOVE of User Experience Design | Blog

Nov 29 2017
Nov 29

The issue of workforce diversity has been in the news a lot lately, and rightfully so. Diversity data is pretty dismal, particularly in the technology industry. Essentially, there is a long history of white males disproportionately holding leadership roles and minorities being immensely underrepresented. You already knew that though.

What I’ve been agonizing over is what do we plan to do about it at Mediacurrent? We began the process of recognizing that diversity was a problem we could improve. Essentially, this adversity can be used as a learning opportunity. This was also a personal struggle as well - after all, I am another white male in a leadership role. Who am I to be talking about diversity when I am not diverse myself?  

Mediacurrent has a long-standing track record of excellence within the open source software and Drupal communities. I’m incredibly proud and humbled by our amazing team. The people at Mediacurrent are some of the most collaborative, giving, positive, and supportive individuals I’ve ever met. This also means we have an opportunity to leverage our position in the technology sector as an example of what other digital agencies or companies can do to improve diversity. However, I want to be clear. We are not making the issue of diversity a top priority for purely altruistic reasons or social pressure. While benchmarking against other technology companies can be difficult, the anecdotal feeling is that we would probably be fairly average compared to companies our size (75+- employees) when it comes to diversity. The primary point is we can be doing better.
 

We are doing this because businesses that support a more diverse workforce attain greater productivity. We owe a commitment around improving diversity to our customers. We owe improving diversity to our team because it will help with their own professional growth and development.  The thought I’ve shared before is that if we had a company-wide retreat and everyone in the room looked and acted the same it would make for an incredibly uneventful outing. Different perspectives should be encouraged and welcomed.

In 2018 and beyond, here is what we are committed to changing:

1.  Collecting and tracking employee data. We are starting this effort by publicly posting our own employee data. What does this change?  It has been validated by renowned business books like “Good to Great” that profitable, sustainable companies improve by knowing their numbers. Diversity should be no different. To confirm, we are not mandating quotas v. sharing a belief that best-of-class companies tend to keep score.  For us, this will include items like the demographics of our employees, promotions or roles that involve more progressive responsibility, tracking those who are in a position of management or leadership, and striving for continuous salary equality for those who perform a similar role and have previous experiences that led them to Mediacurrent.  What is the end game? The goal is education, consistent improvement, and increasing awareness around these issues.

2.  First impressions about diversity are critical.  We will incorporate diversity training as part of our new hire orientation schedule. This will include sharing clear processes around how to get engaged with a cross-section of coworkers, sharing why diversity matters, and the protocol for how to provide feedback or concerns.

3. Re-thinking how we recruit and our overall interview process. If we continuously use the same sourcing methods to hire, how can we expect different results?  We have started to change hiring processes for those in leadership roles particularly. For instance, we want to ascertain feedback from those who may not have historically been involved with hiring. We are setting goals to ensure minority representation in interviews is happening since “likes tend to hire likes.” We also want be clear on the “why” around promotions, no matter the demographic.

4. Focus on more outreach. Our team at Mediacurrent speaks and writes a lot. This means we have a platform to make a difference. For example, I am committing to reaching out to historically black colleges and want the next generation to be aware of the opportunities that exist within open source technologies. This is such a huge opportunity for entrepreneurs and those in positions that have hiring responsibility. Open source software projects like Drupal must embrace ideas around scaling; becoming a shining beacon for engaging underrepresented groups could be a path to help achieve this. Recently, Mediacurrent sponsored five people (four co-workers and someone from our local community) to attend the Atlanta Women in Technology Awards ceremony.  We want to continue to amp up our involvement around initiatives that promote diversity in technology - if you have a suggestion or any first-hand experience with nonprofits that you would recommend please let me know in the comments below.

5.  We need to do a better job of listening. I am guilty of convincing myself that if I tell our team that “we have an open door policy” that they will pro-actively seek me out. The reality is upper leadership can often be seen as working in a bubble.  What we need to be doing is actually inviting people inside the door more often. We have also been adopting an open book management philosophy where collective problems and challenges are shared.  I am committing myself to more 1x1s with underrepresented groups at Mediacurrent to try and empathize with the challenges they are confronted with. Hopefully, this leads to a better understanding of issues in general and positive change moving forward.

Will any of this work? Can we keep improving diversity at Mediacurrent? I am not sure. In this type of situation though, I am a firm believer that trying and failing is always better than the alternative of doing nothing at all.

What ideas do you have around improving diversity in technology? I would welcome and be appreciative of your feedback.

Additional Resources
Technology is Not a Boys Club | Blog
DrupalCon: Not Just for Developers | Blog
Thoughts on Mediacurrent's Evolving Culture | Blog

Nov 15 2017
Nov 15

If there’s one thing I learned while attending DrupalCon Baltimore 2017 this past spring, it’s that those of us involved in building the web are only getting more and more specialized in how we help build it. It boggles the mind to witness the sheer amount of new session tracks, new technologies, new design patterns, and new discussions that come up each year at DrupalCon. However, amongst all the topics discussed this year, I was most intrigued by one of the oldest concepts in web development, which predates the web itself: content. Specifically, as sites and apps allow content to be distributed in more and more ways, we need to emphasize best practices around structured data from the start of any project and help clients view their own content in the same way.

As a developer mostly specializing in back-end technologies, I often find myself caught up in the never-ending race to discover and learn more about each and every corner of the expansive Drupal core and contributed ecosystem, along with all the constant discussions around the next big thing in this or that area of work. But, with so much discussion about the newest technologies and concepts, my focus is continually brought back to content as the center of the web-development universe. Specifically, structured content, which was was the topic of Dori Kelner’s excellent session on “Employing a Collaborative Model for Structured Content”.
 

The Importance of Structured Data

A website without meaningful content would be useless. But a website with compelling, yet poorly structured, content is not very usable either. For example, imagine a site where you can only enter content via singular WYSIWYG textareas. Granted, the WYSIWYG functionality may give you the sense that your content looks good and appears to be well formatted to the human eye. However, the data within that WYSIWYG textarea is effectively being saved as an amorphous blob of content, especially when viewed from the perspective of search engines, automated web services, and so on. Furthermore, it cannot be easily tagged or related to other content, with all the data being saved in an unstructured manner. As a result, this type of “blob content” ends up being significantly less shareable (in the eyes of search engines) and less reusable (by content authors on your site).

The problem is that we humans are often too good at understanding content, when compared to computers. People can almost always read and understand a site’s data, no matter how it's structured or formatted (within reason). And that is not to say that good UX design is not an extremely important task unto itself. However, sites should also be concerned about allowing other applications (in addition to humans) to come in and find, parse, and use their data. That is, the data on a site should not only be highly human-readable, but also highly machine-readable.

If a site’s data (and metadata) are easily parseable by machines, in the form of distinct, annotated fields, then that data can be gathered and shared efficiently by countless applications. This can even apply to a site internally, when considering a decoupled site that effectively contains multiple internal applications—the simplest example being a site with an independent front end and back end—where each of which needs to efficiently communicate with one another. Therefore, content is well structured when disparate pieces of data are saved in distinct fields and when metadata is available to describe the types of data in those fields. And metadata, in turns, helps to free your data by making it organized, logical, and classifiable. As Dori Kelner explained in her talk, when content is created as well-structured data, it becomes:

  • reusable,
  • scalable,
  • multi-channel,
  • device-agnostic,
  • and future-proof.
     

The (Non-Technical) Roadblocks to Well-Structured Content

Seeing how useful it is to have well-structured data, why do we still struggle in this domain, even when we know the right solutions?

As a developer, my job is most often focused on how and where content is being fetched, rendered, and served. But, if content is truly at the center of a site, then it touches everyone's job no matter what. And so, in theory, everyone should be involved in content modeling as soon as possible to ensure the most effective meeting of business needs. Unfortunately, this common-sense approach to collaborative content modeling can still run up against many roadblocks from the start. In fact, the biggest roadblocks to having well-structured content are often not technical in nature at all. Instead, content problems often reflect people problems.

For web agencies that are starting new web-based projects/engagements with clients, the client can often come to the table with many preconceived notions about how the content on their site or app should be structured. As experts in their particular business domain, a client will naturally believe that they have the best understanding of their industry and related content, compared to their partners at a web agency they’ve hired. However, this natural expertise about the content doesn’t always translate to how it ought to be structured, especially on the web. Many a project can spiral out of control, exceeding budgets and timelines, when a client insists on playing the role of information architect on top of being the content author. This approach forces the developers to adapt their practices to a potentially malformed conception of how a site’s content should be structured.

With that being said, web agencies can often be their own worst enemy as well in regards to how they approach content modeling with clients. For example, it can seem efficient to have a lone digital strategist sit down with the client to hash out their content needs. Afterwards, these requirements are passed down the chain and ultimately land in the laps of the developers. However, at that point, it’s already likely too late for the developers to make suggestions based on their particular knowledge of what might be the most efficient way to implement a content model with certain technologies.

Similarly, client and developers alike can get caught up in providing “easier” ways of authoring content, as a way of circumventing the hard work of content modeling altogether, via technologies like WYSIWYG and in-place editing capabilities. Rather than sitting down to accurately model how content will need to be presented and stored on the site for efficient future use, it can be very tempting for all parties involved to allow for content entry in the form of unstructured, WYSIWYG, in-place editors that permit users to enter data in practically any way they see fit. Then, only later do the client and agency come to regret their decision, when suddenly the data needs to be presented in a different channel or format, and it becomes prohibitive to manipulate the existing data in its amorphous, unstructured form.
 

The Case for Agile Content Modeling

As we’ve seen, it can be very easy to get things wrong when it comes to developing well-structured content for any project. But what if we were to take some of the lessons we’ve learned in modern software development, and apply those to modern content development as well?

In today’s software project management practices, the perils of the “waterfall” approach and the virtues of the “agile” approach have been touted for years now. When developing modern applications for any number of business needs, many of us take it for granted that it will be more efficient to build that application using an iterative, team-based approach, rather than a one-way, planning-first, building-later approach.

In fact, our very own Jen Slemp at Mediacurrent recently laid out the benefits of agile vs. waterfall, explaining why an agile approach has consistently been much more effective than a waterfall approach for our agency. And, as Mediacurrent’s Cheryl Little explains, , it should also go without saying that an agency’s designers and developers need to work hand-in-hand as a cohesive team throughout any project.. Of course, there are many other project management methods out there, but, to keep things simple, we can focus on a waterfall vs. agile approach and how we might apply that to the content development process.

While much has been said about agile processed within the software development world, these same insights often still appear to be missing from the content development world. As Dori Kelner mentions in her talk, the goal is “to get you to feel like you are part of the content creation team.” However, instead of having this feeling of being on the same team, our first inclination as clients and agencies is often to let a more classical waterfall approach take over all of the content creation processes.

As a method for content development, this waterfall approach can be laid out in four phases, as Dori Kelner cites in her talk based on Atherton and Hane’s paper “Designing Future-Friendly Content: Modeling Structure for Every User Interface”:

  • Phase 1 would involve domain and content modeling for the purpose of mapping out content types.
    • Here, domain modeling refers to the mapping of the entities that will exist on a site and how they relate to one another, while content modeling refers to the mapping of the attributes within each of those entities.
    • This phase would traditionally be handled by the content strategists on a team.
  • Phase 2 would involve content creation as well as the creation of wireframes/prototypes, traditionally overseen by content authors and UX designers.
  • Phase 3 would involve visual design comps created by graphic designers.
  • Phase 4 would involve the actual front- and back-end theming/coding carried out by developers.

If these phases are followed in a strictly linear path, as laid out above in a waterfall style, then the site’s content and its structure are often planned out by a small number of people—without much outside input. Consequently, it becomes very difficult to tackle any issues later on in the process as they arise, especially when it is often the developers who are the last ones to have any input in the content design.

For example, say we fast forward to the end of this process, where the developer is handed a visual comp and told to replicate it pixel-perfectly. If that developer runs into an issue where the Drupal API would have dictated a slightly different content model, there is not much the developer can change about the content model at that point. Instead, they would need to find some less-than-ideal workaround in order to match the visual comp they were handed while still trying to conform to Drupal best practices and its API requirements.

By contrast, how would this process appear under an agile approach? Assuming we maintain the same four basic phases, we can at least make each of them more flexible and responsive to our business needs. Furthermore, each phase of the content development process should be a truly collaborative effort across many disciplines, to guarantee efficient decision- and revision-making processes throughout.

For example, in the initial domain and content modeling being done, it would be ideal to involve developers from the start and let them play a much larger role in finishing the content model. This is preferable because content strategists might not be aware of what's possible/cost efficient when working within a specific technical framework like Drupal. Is this way, developers can bring their expertise to bear on the specifics of building content type, and should be able to preempt many common or less common issues with implementing certain content structures. Conversely, it is also up to the content strategists to still provide the developers with a solid, understandable base of requirements and models to work from.

Similarly, during a more agile version of the wireframing/prototyping phase, content authors would have already worked up a significant amount of real sample content, which they could use to validate the wireframes and prototypes being built by the UX and graphic designers. In this way, the wireframes and prototypes can be iteratively revised before anything is set in stone. By getting the content authors involved as soon as possible, we can ensure that their needs are anticipated during the design process, so that they can consistently maintain authoring standards later one, and not be forced to enter data in a convoluted way that may lead to bugs in the system or simply cannot be handled adequately.
 

The Bottom Line

The bottom line is that being proactive in the conversation about content with your client is essential, regardless of whether you're a freelance developer or team member at a large Drupal agency. And as technologies like decoupled site architectures become more and more prevalent, having good information architecture from the start will only become more and more crucial. With that in mind, content should never be the roadblock standing in the way of a successful launch. But the only way to systematically prevent that is by bring you agile software development practices into your content modeling and creation practices. If your team can achieve this, then you’ll be capable of:

  • Having fully updated content at launch;
  • Integrating real content during development phase;
  • Faster turnaround between development and launch;
  • Validating decisions (information architecture and menus) with the client during the discovery phase via user testing.

Just remember that, if content is at the center of a site, then it also touches everyone's job. Therefore, everyone should be involved in content modeling as soon as possible and as often as possible, in order to ensure the most effective meeting of business needs from day one.

Additional Resources
Scheduling Content Changes in Drupal 8 | Blog
Creating Content with YAML Content Module | Blog
Drupal 8 - The Entity CMS | Blog

Oct 30 2017
Oct 30

Keeping up with Drupal security updates is key to protecting your site, but assessing contrib module security before implementation is just as important. In a new guest post on the Pantheon blog, Mediacurrent Senior Drupal Developers David Younker and Joshua Boltz share a practical guide for sizing up the security of contrib modules.

Try this 7-Step Security Inspection 

To ensure a safe and solid foundation for your Drupal site, consider this 7-point assessment:

1. Has the module maintainer opted in to the security coverage?

2. Have you checked for the latest security advisories and release updates?

3. Is the module the recommended version?

4. Is the module deprecated or unsupported?

5. How many issues are in the issue queues?

6. Do you see any issues in the code?

7. Are you following best practices for patching? (Patch, don’t hack!)

Read More

Check out the Pantheon blog to read the full article. 

Additional Resources

Security by Design: An Intro to Drupal Security | Webinar
Gaurdr for Drupal 8: Meeting Enterprise Security Requirements | Blog

Oct 30 2017
Oct 30

This October, Mediacurrent was excited to participate in our 4th Acquia Engage conference in Boston. As returning sponsors we enjoyed connecting with friends, partners, customers and potential customers, all set to a backdrop of Boston Harbor. The sessions were interesting and the receptions boasted delicious local fare (hello lobster rolls!), but the real highlight was to listen in on the strategy behind Acquia’s latest product announcements.

If you were unable to attend, never fear because we have you covered with the biggest topics from this year’s event.

  1. New and Expanded Products - This was a big focus as Acquia is expanding to ensure they're a single source solution for enterprise needs, including Acquia Journey, Acquia DAM, and support for Node.js. As a partner, we are excited to see the product line develop and continue to iterate in the coming year.
     
  2. Journey and Transformation - The words of the week. We saw first hand how Acquia Journey integrates into Lift and, taking customer experience to the next level.  We are excited to see DAM (Digital Asset Manager) continue to iterate and eventually provide optional integrations to Journey/Lift and data warehouse. The CMS is only one part of what enterprises need to fuel their digital transformation. The website is only one small part of the ecosystem, a trend that Mediacurrent has seen become more prevalent.
     
  3. Session Highlights - A sampling of our favorite session from the weeks:

 4. Engage Awards - Approached with a customer and partner panel style this year, we were excited to be represented on the mains stage by our Director of Development, Kevin Basarab, as he discussed personalization.  It was inspiring to hear from nominees, customers, and partners elaborate on the successes they have seen by leveraging Acquia’s technologies to “transform the journey.” Although we didn’t take home the grand prize, Mediacurrent is proud to have been selected as finalists for the 2017 Acquia Engage Awards in the categories of Financial Services, Travel and Tourism, and Digital Experience.

5. Connect - Attending Acquia Engage provides lots of great connection opportunities with clients and other adapters. It is validation that we're heading down the right path of using Drupal as a baseline but ensuring connection to various other services.

If you’d like to discuss your experience or hear more about the products and topics discussed at Acquia Engage, we’d love to hear from you.  Connect with us on Twitter, Facebook, or send us a message.

Additional Resources
Mediacurrent Wins Acquia Site of the Year
Mediacurrent Partner Testimonial 

Oct 25 2017
Oct 25

It's official: the countdown to DrupalCamp Atlanta is on. In just two weeks (November 2 - November 4), Mediacurrent will proudly sponsor another great camp in Buckhead, the tech center of ATL. Known for being a top Drupal event in the southeast, DCATL isn't one to miss. It's not too late to register!

If you'll be attending this year, you can catch the Mediacurrent team presenting these sessions:

Survival Skills for Real-World Project Management

Time: Friday, 1:30 pm - 2:20 pm / Piedmont A

Bring your JIRA boards, your Scrum cards and, yes, even your waterfalls for COO Jeff Diecks session. He'll break down the daily survival skills Mediacurrent teaches to our project management team, such as:

  • How to stay organized through the power of the daily priority list
  • How to check in with a developer to evaluate true status
  • Ticket best practices to improve consistency
  • How to scan the code repository to identify and remove blockers
  • Speaking from data to calm nervous clients
  • Effective recap e-mails to manage scope and budget
  • Managing a product backlog to maintain clear priorities
  • Burn rate woes and how to fix them

Comparing CMS Platforms: A Cross-Functional View 

Time: Friday, 2:30-pm -3:20 om / Peachtree A

Clients need to sift through a lot of information when choosing an enterprise-level Content Management Systems (CMS) — features, functionality, cost, and more. Business Analyst Bill Shaouy will compare the three leading CMSs ( Acquia/Drupal, Adobe Experience Manager, and Sitecore) from the following five perspectives:

  • Content Authoring
  • Marketing
  • Business
  • Development
  • Community

No technical knowledge is required. Attendees will leave the session with a better understanding of the strengths of each of the three CMSs, and what the Drupal community is doing to shore up Drupal's relative weaknesses. 

Shifting UX to the Editorial Experience

Time: Saturday, 9:00 am -9:50 am / Peachtree C

With the rise in popularity of decoupled infrastructures, more clients are shifting their focus to improving the Drupal Administration UX. 

Kevin Basarab, Director of Development, joins with Group Nine Media to explore these questions:

  • How is design/UX reversing to focus on the editorial experience?
  • What contrib modules currently enhance the editorial experience?
  • How can a better editorial experience be beneficial to your client?
  • Where is the future of editorial experiences and Drupal heading?

Keynote Contrib Panel

Time: Saturday, 11:00 am - 12:00 pm / Peachtree A 

As some of the world's largest applications are developed as open-source, the need for project maintainers has become vital to the success and longevity of these programs. Damien McKenna, a top Drupal contributor, and Mediacurrent's own Community Lead will share tips for becoming a better maintainer. 

  • So what does it take to become a maintainer?
  • Why would someone volunteer so much time?
  • What are some tips to avoid burnout?
  • How do you split your time between client and contrib work?
  • How can someone become a (co-) maintainer?

Connect with Mediacurrent 

We know how difficult it is to get your questions answered and get one-on-one time with top Drupal experts. Here's your chance! Reserve a time to talk with one of Mediacurrent’s experts about your Drupal project. Reserve a time slot here. 

Stop by our table in the exhibition area to say hi, learn about our open positions and grab some swag. 

Additional Resources

Drupalcamp Atlanta 2016 Recap | Blog Post

Oct 19 2017
Oct 19

Mediacurrent’s commitment to innovation has been clear since our founding ten years ago. From helping spearhead the Atlanta Drupal community in our early days, to architecting the world’s highest-trafficked Drupal site, to building and open sourcing a Drupal 8 theme generator, Mediacurrent has lived up to its pledge to give team members internal time to work on their own initiatives, and to give back to the wider open source community in diverse and innovative ways. The choice to create a new Labs department and a Director of Emerging Technology role flows from that commitment, but also aims to go further. So what will these changes entail, and how will they help ensure the success of our clients and of Drupal?

More and more, we are finding that staying on the cutting edge of building with Drupal means also keeping up with where non-Drupal technologies are heading. Our clients are increasingly moving from traditional websites, through mobile-first thinking, and towards truly multi-channel technology experiences. Our ability to serve their needs as an agency, and Drupal’s ability to serve their needs as a piece of software, requires new ways of thinking and growing. Mediacurrent Labs is a formalization of our commitment to doing just that.

What does all this mean in practice? First and foremost, it means encouraging experimentation with new technologies within Mediacurrent, and contributing the lessons learned (and hopefully some useful tools as well) back to the open source community. The work I’ve been doing on Contenta Angular falls nicely into this category, as does our recently featured work on blockchains, Alexa skills and TypeScript integrations with Drupal behaviors. When these things are driven by a client’s needs, we also explore how we can generalize what we’ve learned and apply it elsewhere; perhaps by building tools to make the process simpler next time, or by documenting publicly our best practices. And when we’re excited about a new technology’s possibilities but don’t have a specific client asking for integration (yet), we can use internal proof-of-concepts to educate ourselves, then share what we learn with the world.

Speaking of sharing, our commitment isn’t just to fostering Mediacurrent’s thought leadership within the Drupal world; we are also committed to elevating outside voices of innovation. Being co-lead organizer of the new conference that debuted in New York City this August, Decoupled Dev Days, is a great example of how we help foster the momentum around rethinking Drupal’s future over the next decade. The conference, which was dreamt up less than four months ago at DrupalCon Baltimore, brought together speakers from seven Drupal agencies, as well as core members of two major javascript frameworks!

This is just a taste of what we are setting out to achieve. As we consider Labs projects in the coming months we want to hear about the emerging technologies you are interested in. Should we be exploring virtual reality or augmented reality integrations with Drupal? Maybe Drupal-backed IoT beacons are the next big thing? Or is there a good chance that blockchain technology will completely upend the way we think about Drupal today? We don’t have all those answers, but we are committed to exploring the questions collaboratively with our clients and community.
 

Additional Resources
5 Thoughts About Blockchain Technology | Video
Integrating Amazon Alexa with a Drupal 8 Site | Blog
Rinnai | Case Study

Oct 12 2017
Oct 12

With cybercrime on the rise, securing data in Drupal has become a hot topic for developers and project stakeholders alike.

In our latest webinar, we were joined by three Drupal security experts from Townsend Security, Lockr and Mediacurrent who shared their approach for building a secure groundwork to protect site data in Drupal.

Top 4 Takeaways 

1. An introduction to  "security by design" and how businesses should be thinking about security.  

2. The right tools to conduct a site security audit. 

3. A deep dive into data encryption and key management.

4. Resources to improve security -  and how modules like Guardr can help protect private data in Drupal.
 

View the Webinar 

 To learn more about this topic, check out their presentation slides below or watch the webinar recording.

About the Speakers

Mark Shropshire, Open Source Security Lead at Mediacurrent
Mark brings 20 years of experience leading technical teams to his role. He is also the maintainer of the Guardr Drupal security module suite.

Chris Teitzel, Founder/CEO at Lockr 
Chris has been working in Drupal for almost 8 years. During that time he has worked on projects spanning the globe in front-end design, e-commerce and security. His passion is for making technology accessible to all skill sets. 

Luke Probasco, Drupal GM at Townsend Security 
Luke manages Drupal business for Townsend Security. He's a DrupalCon, Camp, and Summit speaker, security professional and music enthusiast.

Additional Resources
Mediacurrent Dropcast Episode 34: Security! 
Security Dropcast Transcript | Townsend Security Blog 
Raising the Security Bar with Drupal | Drupalcon Presentation Recording 
Guardr for Drupal 8: Meeting Enterprise Security Requirements | Mediacurrent Blog

Oct 11 2017
Oct 11

Mediacurrent has been selected as finalists for the 2017 Acquia Engage Awards in the categories of Financial Services, Travel and Tourism, and Digital Experience. These awards recognize the amazing sites and digital experiences that leading digital agencies are building with the Acquia Platform.

Check out our three finalists!
 

Category: Travel and Tourism

Finalist: Brand USA
URL: visittheusa.com

Leveraging the powerful personalization features of Acquia Lift, Mediacurrent partnered the organization behind the official travel site of the USA to launch a new multilingual site on Drupal 8. Read more about the project in our case study.

 

Category: Financial Services

Finalist: MagMutual Insurance
URL: magmutual.com

After a complete transformation of their digital experience, MagMutual saw an increase in acquisition, engagement, and conversions. "I really like that Mediacurrent has a broad skill set - including SEO, UX/UI and Strategy,” said MagMutual CIO Sallie Graves. Read more about the project in our case study.

 

Category: Best Digital Experience

Finalist: The Commonwealth of Massachusetts
URL: mass.gov

Mediacurrent is among the four leading digital agencies that are working to transform Mass.gov, improving the user experience for residents of the Commonwealth of Massachusetts to interact with state government online.

“Building ambitious digital experiences has been a central focus in the Drupal community this year — a vision that we at Mediacurrent have fully embraced.These industry awards are a great validation of our team’s creativity, strategy, and technical strengths that drive some of the world’s most notable Drupal sites.”

- Dave Terry,  Mediacurrent co-founder
 

Acquia Awards History

In 2015, Weather.com won for best partner site of the year and in 2016, our work on Curtiss-Wright earned a finalist nod in the High Technology category.

For more on the 2017 finalists, see our press release.
 

Meet us at Engage

Winners will be announced next week at the Acquia Engage conference on October 17,  from 5:30 pm to 6:30 pm at the Intercontinental Hotel Boston.  During this time, Mediacurrent will participate in a panel discussion on the topic of personalization. In addition to sponsoring the event, several Mediacurrent team members - Dave Terry, Josh Linard, Megan Hofmeyer and Kevin Basarab - will be in attendance.

We’re looking forward to learning about the challenges and opportunities that Drupal users will face in the coming year, and anticipate some lively discussion around decoupling, personalization, user experience, and more. Will you be at Engage? Contact us to set up a time to network.

See you in Boston!

Oct 04 2017
Oct 04

Recently I was lucky enough to catch a workshop by Brian Sinclair entitled 'Accessibility: The Basics and Beyond'.  The workshop was part of the DinosaurJS conference in Denver CO.

As part of the accessibility group at Mediacurrent, I was excited to see the issue being addressed at a javascript conference.

Since the launch of Drupal 8,  front-end developers have had to pay a little more attention to either including or not excluding the accessibility features of Drupal. As decoupling the front end from Drupal is becoming more common and we use frameworks like Vue or React to provide the user interface, we need to make sure that we understand what we need to do accessibility wise to make sure that our sites and applications are available to all. If we are writing the markup, we need to make sure that we are aware of the HTML accessibility requirements without relying on the work of  Drupal’s accessibility team.

What a good time to get a refresher on basic accessibility - why we do this, and how to use the docs.

So one of the main takeaways from the ‘Why we do this?’ section was that improved accessibility means an improved user experience for everyone. When we are focussed on how things work for people who are accessing content in different ways, we are more conscious of how our site works. This mindset has the benefit of improving the experience for all users. In other words, ‘solve for one, extend to many.’

The ’Tools’ section of the presentation was extremely insightful. This centered around the WCAG 2.0 guidelines. Despite having been on the accessibility team for a year and reading this site many times I had not noticed how the guidelines were grouped. The sections are an acronym, POUR. Which stands for:

Perceivable - can everyone consume this content?

Operable - can you use it, can everyone use it, tab, enter etc.

Understandable - Does the content even make sense? Can someone use the site without explanation?

Robust - Can it be used in a broad variety of environments?

This is likely obvious, however, I had not made the connection and this really changed my perception of the guidelines. By understanding what each section was targeting, and relating each section to each other it really helps approach projects and issues with greater confidence.

When discussing the levels for WCAG 2.0, which range from A through AAA, AA is the target that most accessibility teams aim for. However knowing your audience is as important as adhering to standards. In Brian’s example he pointed out if your website or app is only available for Apple users, then there is little benefit to supporting internet explorer. The same is true for accessibility. You might not need to provide an extremely robust screen reader support if all users are using the built-in Apple voiceover. Sometimes it is not useful to say ‘we have to meet every AAA standard, or even AA’ if the site content doesn’t suit that need.

Another big takeaway from the tools sections was that the software tools we use when testing our sites to make sure that we are not overlooking any areas are not 100% foolproof. Things like aXe and Wave will catch some of the errors and oversights but are no real guarantee that you have hit everything. It is also worth noting that some items that are flagged may not be either desired or required. For example, sometimes providing alt tags for images that serve no useful information to a screen reader is better than bombarding the screen reader with information. The main takeaway for me was that we always need to be thinking about what we are presenting and how it is being viewed. If we can justify the decisions that we made then we will be in a better place for future iterations.

Overall I found this presentation to be very useful and would encourage you to check out the video here (from a different conference, but similar content). I try to attend all of the accessibility talks at the conferences I go to because I think it is important to support the work but also it is good to make sure that I am on the right track for current approaches. As we work on projects where we can’t fall back on provided HTML structure, it is important that we understand how to get the information we need and access the tools available to us.

Learn More:
http://brianyang.com/brian-sinclair-accessible-accessibility/
 

Additional Resources
Accessibility Best Practices for Content Editors | Blog
Dropcast Episode 15: International Front End | Podcast
5 Advantages of Component Driven Theming | Video

Sep 28 2017
Sep 28

Javascript has a reputation in developer circles as a terrible language. It’s classless, loosely typed, and plagued by cross browser issues. Douglas Crockford, author of JavaScript: The Good Parts, said “JavaScript contains some of the best ideas ever put into a programming language and it contains some of the worst ideas ever put into a programming language.” It was created in just 10 days in 1995, and not standardized by ECMA until almost 3 years later. Microsoft initially decided not to implement the new standards, almost putting an end to the language in its infancy.

The first JavaScript engine, codenamed SpiderMonkey, was built for Netscape Navigator and was simply an interpreter that read and executed source code. At the time, and for many years after, Javascript generally consisted of a few functions written into the head of a webpage or a handful of inline events. Interpreting the code as needed was satisfactory, if not fast.

We’ll skip the next 10 tumultuous years, to 2004, when Google introduced a new application; Google Maps. For Javascript and developers everywhere it was a game changer. A very, very slow game changer. Browsers bogged down as the JavaScript engine simply plowed away at all that code.  

There have been countless pages and bits dedicated to the explanation and description of  JavaScript engines, see the 'Learn More" section at the end of this post for examples. And it’s a topic that even most professional JS developers aren’t quite clear on. So I’d like to provide you with a very brief overview of engines, especially the shiniest toy in the box right now, V8.

Most Javascript engines process code in a few steps. First, lexical analysis breaks the code into tokens to identify their meaning. The tokens are then analyzed by a parser and built into a syntax tree in an intermediate language, like bytecode. Finally, the JIT compilers kick in and execute the code.
 

In 2008 Google introduced its souped-up version of the engine, V8.

The V8 engine uses several threads. The main thread does what you would expect: it fetches your code, compiles it, and executes it. There's also a separate thread for compiling, so that the main thread can keep executing while this one is optimizing the code, and a profiler thread that will tell the runtime in which methods we spend a lot of time, so that the compilers can optimize them. There are also a few threads to handle garbage collection and dead code elimination.

V8 has 2 compilers, Full-Codegen and Crankshaft. Full-Codegen parses JavaScript directly to machine code, without an intermediary language, allowing it to begin execution sooner. A JIT compiler called Crankshaft produces optimized code for hot methods. This means that in the same V8 program, different levels of optimized code coexist at the same time.

Crankshaft is where the speed really comes from. While Full-Codgen is running, a runtime profiler identifies “hot code,” code that’s executed many times. At this point, the current thread stops executing your code and passes it to Crankshaft. The base here for all optimizations is inline-caching, a technique pioneered by Smaltalk. It consists of patching the code with better code instantly.

The parsed JS is first compiled to a high-level representation called Hydrogen, where most optimizations are done. This is where type-specialization happens. The type-specialization removes what JavaScript calls boxing and unboxing operations. So, for example, if your script often runs a function on a set of integers, it avoids sorting through all the necessary steps to parse strings and floats, and saves the needed steps to parse your integers so it doesn’t have to run them again.

Because JS is non-typed, there is no guarantee that the specialized generated code will continue to work. Your function could be called on to work with strings, or doubles. This code now has to be de-optimized, pulled out of the running thread and replaced with the original runtime code. This is accomplished with a technique called on-stack replacement (OSR). OSR is the mechanism that preserves the semantics of the current stack frame while switching between optimized and unoptimized code. Using OSR, when your function arguments switch types, the optimized code is pulled and your thread is dumped back into the original Hydrogen generated thread to be recompiled.

Crankshafts final job is to lower the representation to a level called Lithium, which is architecture specific. Lithium is the representation that is finally translated into machine code. Here, we see OSR again. The code has been running in your browser or application while all these steps were going on, and now that we have a fully compiled and optimized version we can switch to the optimized version in the middle of the execution.

Simply running the two compilers concurrently boosts performance by 27%. And it’s not done. Every six weeks the V8 team releases a new branch. On September 11th, the team announced version 6.2, which will be released with Chrome 62 in a few weeks. This next version includes what the team calls “all sorts of developer-facing goodies” and performance optimizations. You can read about the next release HERE.

Learn more:

Chrome V8 developer channel: https://developers.google.com/v8/

Red Hat Developer Program: Javascript Engine & Performance Comparison (V8, Chakra, Chakra Core): https://developers.redhat.com/blog/2016/05/31/javascript-engine-performance-comparison-v8-charkra-chakra-core-2/

Lars Bak: V8: an open source JavaScript engine: https://www.youtube.com/watch?v=hWhMKalEicY

Daniel  Clifford: Google I/O 2012 - Breaking the JavaScript Speed Limit with V8: https://www.youtube.com/watch?v=UJPdhx5zTaw&t=48s
 

Additional Resources
AMP'lify Your Website: Google AMP 101 | Blog
Next-Level Drupal: Applied Progressive Decoupling with Javascript | Video
Decoupled Blocks with Drupal 8 and Javascript | Blog

Sep 25 2017
Sep 25

Although the most likely cause of the massive Equifax data breach was the firm’s own failure to patch a two-month-old bug, the inherent security of open source software has become a trending topic in tech news.

Mediacurrent’s resident expert, Open Source Security Lead Mark Shropshire, is well-informed to join the conversation. We asked him a few questions to get his take on recent events.
 

1.) Hi, Mark! What can you tell us about your background with open source security?

I have over twenty years of experience as an open source developer and I’m passionate about contributing back to the Drupal community. When I’m not blogging and podcasting at Mediacurrent, you can find me organizing local Drupal events in the Charlotte, NC metropolitan area and speaking at Drupal events.

In my role as Open Source Security Lead, I work with Mediacurrent clients to build and maintain highly secure websites. Day to day, I help to keep our team informed on Drupal security best practices, standards, and trends. Even though I am focused on Drupal, I find it important to understand security through a wide-angle lens by being a critical consumer of news.

Author’s note: Check out Mark’s presentation from Drupalcon Baltimore Raising the Security Bar with Guardr, and his latest podcast appearance on Mediacurrent Dropcast Episode 34: Security!
 

2.) The Equifax cyberattack is one of the largest data breaches in U.S. history and it has received a lot of media attention. In the initial aftermath, some were quick to blame open source software for being inherently less safe than proprietary software. What’s your take?

All software, including open source and proprietary, can include bugs and security vulnerabilities. With proper planning, maintenance, and updating, open source software can meet and even exceed the security standards of closed source.

An active open source project with defined processes around reporting and resolving security issues provides a community with confidence and transparency. Having many “eyes” on the source code can allow more issues to be discovered and resolved. The Drupal Security Team is an example of an open source project with a mature process for maintaining security of the Drupal project and drupal.org. In addition, community projects such as the Guardr security distribution help educate the community on best practices around Drupal security.
 

3.) Was it fair for Equifax to place the blame on open source software?

Not if Equifax neglected patching known vulnerabilities. They are in the middle of PR damage control and they are under immense pressure to explain what happened. Security issues at Equifax are probably more complex than one piece of software having a vulnerability. Processes may have failed or not existed.To the public eye, factors such as how well  systems and networks are monitored and what other softwares remain unpatched are critical unknowns.

Dries Buytaert, the founder and project lead for Drupal, wrote a great related blog post on this subject: Don't blame open-source software for poor security practices.
 

4.) From a security standpoint, how can enterprises be sure that open source software measures up to other software?   

In addition to a dedicated security team, tens of thousands of Drupal developers lend “extra eyes” to monitor security, ensuring timely resolution for critical bug fixes. Open source is widely adopted by industries who place a huge emphasis on security. For example, US government sites favor Drupal. Careful selection and implementation of all software, open source and proprietary, is critical to create a secure platform.
 

5) What can we, the tech community, learn from this breach?

As we learn more, this may be a good case study to back security by design, a ground-up approach to developing secure software. I’m looking forward to continuing the conversation and exploring these themes in an upcoming webinar Security by Design - An Intro to Drupal Security on Thursday, October 12th. Hope you can join!
 

Additional Resources
Guardr for Drupal 8: Meeting Enterprise Securite Requirements | Blog
10 Great Security Podcasts, Blogs, and Resources | Blog
Evaluating the Security of Drupal Contrib Modules | Blog

Sep 21 2017
Sep 21

Infographic: Drupal vs Adobe vs Sitecore

Infographic: Drupal vs Adobe vs Sitecore

There’s a lot of information to sift through when comparing enterprise-level Content Management Systems (CMS) — features, functionality, cost, and more. In our recent whitepaper, we give you the pros and cons of Adobe, Drupal, and Sitecore through the lens of five different stakeholder perspectives.

To help give you an overview, we put together an at-a-glance view of how these three CMS's compare. 

Additional Resources
Comparing Drupal vs Adobe Experience Manager, Part 1 | Blog
Comparing Drupal vs Adobe Experience Manager, Part 2 | Blog
Comparing Drupal vs Sitecore, Part 1 | Blog
Comparing Drupal vs Sitecore, Part 2 | Blog

Sep 20 2017
Sep 20

If you haven’t heard, Facebook’s often-criticized Instant Articles service recently received an update to support publishing to Accelerated Mobile Pages (AMP for brevity) and Apple News (still not supported as of the publishing of this article) all at once. At first glance this seems like big news—Facebook is one of the big three mobile content delivery platforms—this will obviously push some traffic to its competitors’ services. So when a colleague sent Facebook’s announcement my way, it prompted me to consider why Facebook would do this. After some research, I’ve come up with some thoughts on the topic.
 

A Brief History of the Mobile Web

For the unacquainted, let’s start with some background on the mobile content space and how we got where we are. Back in the day (think ‘90s-early 2000s), websites had one size. Fixed-widths ruled all and since the smallest devices were laptops, web developers didn’t have to worry about device width. But then the iPhone was introduced, and it became evident that the times they are a changin’. [Steve Jobs Deal With it Gif] It’s difficult to overemphasize just how much mobile devices flipped the web upside-down despite huge hurdles. Users relied on devices that ran on EDGE network speeds, downloading Flash-heavy content on 3.5” screens, which the user then pinch-zoomed to navigate a page that may or may not work enough to perform tasks. Yet mobile traffic continued to explode, and within ten years it would overtake desktop web traffic worldwide. Throughout that ten-year period, advancements in both hardware and web technologies have brought a snappy, more natural experience to the mobile web. Sites that once took ten seconds or more to load, now did so in less than a second—even with increased video, image, and dynamic content. Perhaps unsurprisingly, with every advancement in speed, users were less willing to wait for the same page load times they once had considered blazingly-fast.
 

M.Website.Com vs Technology (HD DVD vs. Blu-ray)

It’s easy to become defensive of a technology with little more reason than “it’s what we’ve always used.” History has taught us that refusing to give new technologies a chance because they’re unfamiliar just won’t do. The advancement of technology continues at a steady march, and it does so without regard to our comfort—it’s up to us to keep pace.

If you’re old enough to remember, you’ll recall watching movies on VHS tape and never really thinking that we needed a change in video formats. My family had a not-so-small library of VHS tapes and I loved looking through them on Saturday mornings, as if I hadn’t already seen each of them at least five times. When DVDs became popular in 1996, I couldn’t fathom why people would shell out hundreds of dollars for a new DVD player and rebuild their movie library shelf by shelf—especially when VHS did the *exact same thing* as DVD. Sure, every now and then you’d have to adjust the tracking on the VCR to get those lines off the screen, but auto-tracking solved that. Blockbuster also reminded us constantly to rewind our movies (were you kind?), but that wasn’t an issue after my dad came home with a fast tape rewinder shaped like a race car which cut our rewind time down to mere seconds. Like me, you may remember your first experience watching a DVD and experiencing the difference in person. In my case, I was at a friend’s house, and the movie was The Matrix. I had watched it several times on VHS during my five-day Blockbuster rental. When my friend put in the DVD and we waited for the disc to load, I made a few comments about the technology being a fad that would pass. Then the menu loaded, Keanu Reeves started doing wall flips across the screen, and I immediately realized my folly. The difference was night and day—my local thrift store soon received a large donation of VHS tapes.
 

The Responsive Revolution

Back to the web. If you were to guess, you’d probably credit responsive design as the most notable evolution in the mobile web—and I’d agree with you. Giving credit to the generic term “responsive” is overly simplistic, when the reality is that it took the combined advancements in HTML, CSS, Javascript, and browser technology (to name just a handful) to make the responsive web possible. Responsive or “mobile first” design helped solve a problem from which mobile sites had suffered—unification of content and user experience on a mobile and desktop device. A contemporary of early responsive design, the mobile-specific site (m.* subdomain), utilized a separate theme and sometimes even an entirely separate codebase to limit what was being served to mobile devices. While it was sometimes necessary for developers that couldn’t offer a certain feature for mobile devices (such as Flash), it was a regular frustration to find a page from a Google search, tap on it, and then be redirected to the mobile site’s homepage because the page didn’t exist on the mobile site. I regularly found myself setting the browser user agent to desktop to try to avoid getting mobile sites. As is the case with technology in general, when an issue is encountered, a corresponding solution is introduced; in this case, the solution was responsive design. Within a couple of years, sites were being built from the ground up with the mobile user in mind, effectively making mobile-specific sites a thing of the past.
 

Enter the Competition

So now, after only being widely adopted for a couple years, the responsive web is facing its first big test: content delivery that is both mobile- and platform-specific. Within a short time, Google, Apple, and Facebook have introduced competing options for users to consume content on mobile devices. Aside from Apple News (which is a dedicated News app), users won’t be able to opt out from these new technologies. When available, Facebook Instant Articles are served automatically within the Facebook App. Google’s AMP content, which is an open source technology, is prominently displayed in search results and is also a default for mobile users regardless of browser (there is currently a link to allow users to leave the AMP page and use the canonical page instead, but I wouldn’t be surprised if AMP hides this by default in the near future). As these platforms are able to drive adoption, it’s likely that they will become less optional. The incentive for consumers is simple and often accurate: accessing content via one of these technologies can be faster. The incentive for publishers, which hasn’t been so cut and dry, is a higher rate of engagement, higher advertising revenue, and ease of implementation compared to a complete mobile performance overhaul.

As mentioned, Google already provides a separate slider for AMP pages in search results. Facebook has also just announced that site load speed will be included in its news feed ranking. What better way for Facebook to drive adoption and show publishers that their investment is worthwhile than to ensure that Instant Articles are among the top ranked? If I’m coming across as being a bit paranoid, it’s because I am (whether warranted or not). It’s not that page speed is a factor in search rankings, that was inevitable. It’s that the company providing the rank and results (Facebook) is ensuring that content which utilizes its platform (Instant Articles) benefits the most from this ranking change. Facebook can drive higher user adoption, which will encourage publishers to adopt Instant Articles, providing more ad revenue to Facebook, and (more importantly) keep users within Facebook’s ecosystem.
 

The Test for Responsive Sites

This brings me back to the Instant Articles announcement. Facebook is introducing a feature into its proprietary content delivery tool which allows developers and publishers to publish to its competition, and I don’t think Facebook is concerned about it. I doubt it’s because Facebook is confident that Instant Articles can provide a better experience or more features than responsive sites, AMP, or Apple News, because it doesn’t. As an example, AMP offers site menu navigation, ecommerce integration, and form support (in fact, AMP is becoming a full mobile site replacement—an article for another day). In contrast, Facebook doesn’t really want a user to stay on a publisher’s site indefinitely. It would rather users read an article within Instant Articles, visit the publisher’s Facebook Page, and share and interact with it directly on the user’s activity feed. Facebook is the master of making sure that a user doesn’t focus on any particular thing for too long—its news feed is designed to hold attention by dropping in content, not necessarily because it’s relevant, but because it’s overwhelmingly engaging. So it’s my opinion that Facebook doesn’t plan to compete based on features, but like many of its other tools, by preventing competition. Much like a windowless, clockless, maze-laden casino, Facebook welcomes users and does as much as possible to keep them from leaving. So yes, I believe that Facebook will happily increase its list of publishers by allowing them to create AMP and Apple News articles, as long as Facebook’s 2 billion and growing users never actually see them for the massive amounts of time that they spend on Facebook each day.

When these technologies were introduced, my original thought was that instead of adopting platforms that strip out code, we should just write good code (I still think that, by the way). If a feature is worth building, then it’s worth building well and making it available to all traffic (mobile being the majority anyway), rather than stripping it out for mobile. The same goes for platform-specific content—if a platform offers something that a browser cannot, a native app for example, then I think it makes sense to build it. But I’m not yet persuaded that distributing content to platforms like Facebook makes sense unless there’s a clear business requirement that also accounts for losing traffic to another site.

The test for responsive sites goes beyond being as fast, feature-filled, and convenient as AMP, Instant Articles, and Apple News. In part, it involves whether traffic gets to the site in the first place. Services like Facebook will continue to test the limits of keeping users within their platform. And to the extent that those efforts are successful, publishers will integrate with their technologies to get a chunk of that user engagement. Finally, as users and publishers get on board, those platforms will be able to make it more difficult to view canonical content, effectively closing the loop (think of how difficult it is to share content from within Facebook outside of Facebook). I’m aware that this is a gloomy view of the web and I recognize that I’m in danger of not embracing change. Regardless of what it may look like on the other side, I’m confident that the open web, which has endured the app revolution and undergone several iterations already, will endure this new test, evolving to meet the needs of users and publishers alike.
 

Additional Resources
Beyond the .Com: Drupal’s New Role in Large Enterprise | Drupalcon Presentation
Ramping up the AMP Module in Drupal 8 | Mediacurrent Blog
AMP’lify your Website: Google AMP 101 | Mediacurrent Blog

Sep 14 2017
Sep 14

Building URL Aliases Based on Specific Conditions

Have you ever needed to generate URL aliases for an entity based on specific set of conditions? I was recently on a Drupal 8 project that needed the ability to generate custom URL aliases based on very specific criteria outlined by the client. Out of the box, Pathauto module was not flexible enough to handle the customization, but leveraging its API and providing my own hook implementation in a custom module allowed me to perform conditional checks on data and build the conditional URL structures.

In this blog post, I will walk you through getting set up with some starter code that can be used to provide your own complex logic to generate custom path aliases based on specific business logic.
 

Specs and logic

Desired URL structure:

Here is an example of the desired URL structure for Article nodes provided by the client:

For “Article” content type:
<tag> = <field_tags_reference> | <field_category_reference>
<slug> = <field_custom_path> | <title>
<url> = article/<tag>/<slug>

Note - The values in angle brackets signify a Drupal field on the node. The pipe ( | ) character is seen as an OR operator, for example for <tag>, only if <field_tags_reference> is not present will it consider using <field_category_reference>.

Example URLs:
article/general/example-node
article/general/example-node-custom
article/example-node-custom
 

Pseudo code:

The first step in deciding the programmatic logic for building proper URL aliases is writing out some pseudo code.

To complete the <url>, we need to determine <tag> and <slug>.

If (node has <field_tags_reference>) {
  <tag> = <field_tags_reference>
}
else if (node has <field_category_reference>) {
  <tag> = <field_category_reference>
}
else {
  <tag> = NULL
}

If (node has <field_custom_path>) {
  <slug> = <field_custom_path>
else {
  // Fallback to entity title.
  <slug> = <title>
}

Now we have <tag> and <slug> and have the final URL structure we need in <url> = article/<tag>/<slug>.

We will implement this logic into Drupal programmatically in the next steps.

Setup

Step 1:

To get started, you’ll need Pathauto module installed on your Drupal site.
https://www.drupal.org/project/pathauto

For Drupal 8, you can use `composer require drupal/pathauto`.

Note that Ctools and Token will also be installed, as they are dependencies.
 

Step 2:

Once Pathauto module is installed, we can edit the Pathauto patterns on an entity type-specific basis.

Configuration → Search and Metadata → URL aliases -> Patterns

  • Click the “+Add Pathauto pattern” button.
  • For this example, we are generating URL aliases for nodes, so choose “Content” as the Pattern type.
  • For the Path pattern, enter “article/[node:title]”.
  • For the Content type, choose “Article”.
  • Enter a Label of “Article”
  • Save

If we were to create a new Article node at this point, it would build a nice URL, but Pathauto module out-of-the-box does not allow for condition building of the URLs like we need.

Example: Create a new Article node with the title of “Test”. When the node gets saved, we get a URL of ‘article/test’.

Code

hook_pathauto_pattern_alter()

Remember that [node:title] token we added into the pattern above? We added that basically as a placeholder pattern, that we can override in a custom implementation of hook_pathauto_pattern_alter().

I won’t get into creating a custom module, but in your own custom module, implement hook_pathauto_pattern_alter().

The hook implementation looks like:

function my_module_pathauto_pattern_alter(PathautoPattern &$pattern, array $context) {

}

Your IDE may automatically add the required use statement in the .module file, but if it doesn’t, you can add:

use Drupal\pathauto\Entity\PathautoPattern;

From the alter function, we can figure out what type of data it’s trying to build the URL for, by looking at the $context parameter, which has a key for `module`. The module key of that array provides the entity type, such as node or taxonomy. For this example, we’re only dealing with nodes, but the same technique can be applied to taxonomies or any other entities that allow for pathauto patterns.

We also check the `op` key of the `$context` array to make sure the pathauto pattern generates when nodes are created and/or updated.

Here we can get the node:

if ($context['module'] == 'node' && ($context['op'] == 'insert' || $context['op'] == 'update')) {

 /** @var \Drupal\node\Entity\Node $node */
$node = $context['data']['node'];

Initialize an empty $replacements array, which will have tokens dynamically added to it based on the node-type specific criteria and used to replace the placeholder [node:title] at the end of the logic.

$replacements = [];

Now that we have the node object, we can easily access the bundle or node type and use it in a switch statement for per-node-type logic rules.

switch ($node->getType()) {
  case ‘article’:

Looking at the data we’re needing to extract from the node to build the URL from, we’re going to need to use a few parts of Drupal API. For entity reference fields, such as tag or category, we can get the referenced entities via:

if (!empty($node->get('field_tags_reference')->getValue())) {
      $tags = $node->get('field_tags_reference')
        ->first()
        ->get('entity')
        ->getTarget()
        ->getValue();
      if ($tags) {
        $replacements[] = '[node:field_tags_reference:entity:name]';
      }
    }
    elseif (!empty($node->get('field_category_reference')->getValue())) {
      $categories= $node->get('field_category_reference')
        ->first()
        ->get('entity')
        ->getTarget()
        ->getValue();
      if ($categories) {
        $replacements[] = '[node:field_category_reference:entity:name]';
      }
    }

At the end of the hook_pathauto_pattern_alter() function’s code, there is code to set the new pattern to use which replaces [node:title] with the slash-separated $replacements array.

if ($replacements) {

 // Split the replacements with slashes for URL.
 $replacements = implode('/', $replacements);

 // Replace default [node:title] with logic-derived tokens.
 $pattern->setPattern(preg_replace('/\[node:title(\:[^]]*)?\]/', $replacements . '$1', $pattern->getPattern()));
}

Now, if we edit our Test article node, enter a value into the field_custom_path field, such as ‘custom-path’ and save, our URL now looks like ‘article/custom-path’.

If we were to add Tags or Categories to the node, the logic will decide which to use in the URL.
For example, if we added a Tag, such as “Test Tag”, and added it to the node via the field_tags_reference term reference field, we end up with a URL such as ‘article/test-tag/custom-path’.

In summary, below is the full function used in this specific example. I hope this blog post helps you realize the flexibility this provides and understand a way to build conditional paths with Pathauto.

function my_module_pathauto_pattern_alter(PathautoPattern &$pattern, array $context) {
  // When nodes are created or updated, alter pattern with criteria logic.
  if ($context['module'] == 'node' && ($context['op'] == 'insert' || $context['op'] == 'update')) {

	/** @var \Drupal\node\Entity\Node $node */
	$node = $context['data']['node'];

	$replacements = [];

	switch ($node->getType()) {
  	// Article URL logic.
  	case 'article':
    	if (!empty($node->get('field_tags_reference')->getValue())) {
      	$tags = $node->get('field_tags_reference')
        	->first()
        	->get('entity')
        	->getTarget()
        	->getValue();
      	if ($tags) {
        	$replacements[] = '[node:field_tags_reference:entity:name]';
      	}
    	}
    	elseif (!empty($node->get('field_category_reference')->getValue())) {
      	$categories = $node->get('field_category_reference')
        	->first()
        	->get('entity')
        	->getTarget()
        	->getValue();
      	if ($categories) {
        	$replacements[] = '[node:field_category_reference:entity:name]';
      	}
    	}

    	$field_path = $node->get('field_custom_path')->value;
    	if ($field_path) {
      	$replacements[] = '[node:field_custom_path]';
    	}
    	else {
      	$replacements[] = '[node:title]';
    	}
    	break;

  	default:
    	break;
	}

	if ($replacements) {

  	// Split the replacements with slashes for URL.
  	$replacements = implode('/', $replacements);

  	// Replace default [node:title] with logic-derived tokens.
  	$pattern->setPattern(preg_replace('/\[node:title(\:[^]]*)?\]/', $replacements . '$1', $pattern->getPattern()));
	}
  }
}

Additional Resources
Autocomplete Deluxe Released for D8 | Blog
Building REST Endpoints With Drupal 8 | Blog
Typescript and Drupal.behaviors | Blog

Sep 08 2017
Sep 08

First thoughts...

It has always been said that “the book is better than the movie.” This blog post gives a behind-the-scenes look at the writing that inspired the Friday 5 video.

Why?

Due to the Mediacurrent Friday 5 being a series that lasts 5 minutes, and the unfortunate absence of a suitable ”Friday half hour to 45 minutes” show, the content would be again, reimagined.

This script stands as the predecessor to the current Friday 5 script.
 

What is the Blockchain?

Back when I was at Dinosaur JS in Denver this past June, I first heard mention of the Blockchain. During the talks, twice I think, there was mention of this [visible air quotes] “Blockchain”, and how it was secure. I did not pay it much attention at the time, aside from writing it down in my notes with a few question marks, but it seemed like a topic worthy of looking up later.

Fast forward a week or so later, when I finally got the opportunity to review my notes, I finally came to understand what the Blockchain was. I did not realize it was so … elegant.

Now I like code, in all it’s forms, nuances, and undertones. So when I say that it is elegant, it’s because it’s code, open-source code, and it has solved great problems in the digital world.

More than anything, it has solved ownership and identity in the digital landscape. No middle-men; just undeniable proof of ownership via the Blockchain.

By definition, the Blockchain is:
An incorruptible, distributed digital ledger of transactions; one that is “secure by design”.

A ledger that is broadcast openly to all, so that the network as a whole can validate.

Now even though the word transactions was used, this does not insinuate that the Blockchain is financial. Transactions can include any data, an individual’s identity, and pretty much anything that you would note in a ledger.

It is a cool concept once you understand how it all works.

Applications

Before we discuss how this all works, I wanted to take a moment and express that we are not diving into the different applications built using the Blockchain.

The majority of Blockchain topics center on Bitcoin, and there are a few things worth noting here: [count off on random inanimate object]

  1. Bitcoin is NOT the Blockchain.
  2. Bitcoin is a financial application built using Blockchain technology.
  3. This is not a discussion on BitCoin.
  4. This is a discussion on the technology that is the Blockchain.

The Block chain is a technology that could be the next innovation to shake the world up.

Applications can range from file storage to fully secure voting systems.

During all my research on the topic, I came across some content that really put this into perspective for me.

Throughout our history, there have been various innovations that changed the world as it was known.

  • The printing press powered the spread of knowledge across the globe.
  • The combustion engine, and its direct effect on manufacturing and travel.
  • Even the Internet stands as a technology that defined the landscape of life after its creation.

Each of those had an insurmountable impact on the world and everything in it. They touched every aspect of life.

There is a resource out there on the web, my apologies for not having the citation, that made an interesting point.

Each and every business, organization, and whatever else is officially at competition with a Blockchain version of themselves.

Now I can't speak to the validity of that statement; but if it is true, then you can start to understand the full scope of possibilities.

How does the Blockchain work?

So let’s get into this! Imagine if you will…

We start with a single ledger of data, or a block. This block exists as a listing of transactions and changes within the data model. We take this block, run some cool cryptology on it, then string it along with all the blocks that came before it in a “chain”. Hence the Blockchain; a chain of blocks!.

Righteously original name though.

Oh; and about that cryptology. See, using the normal private/public key methodology that we use in programming for encrypting data, a hash ID is created for each individual block. This hash is created from 4 things: [count off using feathers of a stuffed parrot]

  1. The owner’s private key
  2. The owner’s public key
  3. The data in the block.
  4. The hash id of the block in the chain before it.

Yeah ... #4 ..That is where it gets kinky. If each block’s hash id includes the hash id of the parent block before it, it creates a dependency. As such, you cannot alter a block higher up the chain without directly affecting each block that follows in the cascade.

You would be rewriting history.

This is the security aspect of the Blockchain start to appear. The older the block is in the chain, the more the chain’s hash IDs collectively meld together; the more secure it becomes.

This, of course, assumes that the entire chain could not be re-written/replaced with a different version. This is the “double-spending” paradigm. The ability to assign ownership of something to two individual parties; defrauding one. An issue that only the Blockchain has been able to solve in the digital world.

Normally, addressing the “double-spending” paradigm requires the use of 3rd party intermediaries; like banks or the DMV. They bridge the gap on validating various transactions.

Something that is only possible if the security of the chain was not an issue.

So how do we ensure that the chain is secure and unaltered?

Easy … Open source, baby!

Open source

Yeah man. Just like our beloved Drupal, everything you need to start, maintain, and whatever, is open source and available on the web. You could go get it right now.

Grab the software, power up and machine, and (typically) join a mining pool; a subsection of the entire network. A giant network of computers, “nodes”, sharing the weight of the required computational power to validate new blocks on a chain.

This is a great strength of Blockchain technology. Because the Blockchain is a decentralized network, there is no centralized point of weakness. Each node on the network, holds the same Blockchain, and the same tools to decrypting and validating new blocks for inclusion in the blockchain.

So we take that ledger, and all the blocks that lead up to it, and replicate it across a vast network. Each node, or computer, on the network would receive the broadcasted the blocks as they are generated.

Each node then begins the computational processing needed to validate the block. Valid blocks that pass all rules are added to the chain; invalid blocks are given da boot.

Therefore, in order for a block to make it into the chain, all of the nodes must agree that it is valid; not just one.

So going back to the “double-spending” paradigm. it does not matter if you can rewrite the entire Blockchain; you cannot rewrite the entire network. Especially not fast enough to thwart every other node in the network before it is noticed and kicked out as invalid.

All of these nodes are playing a critical role in the system. They are the “miners” that provide the computational power necessary to keep the chain flowing.

Remember that long chain of blocks, you can imagined the amount of electrical power that is required to validate a block. This requirement is then distributed across the network.

And the network works together to maintain the integrity of the Blockchain.

Secure by Design...

Final thoughts

The Blockchain provides a solution to many problems. Likely more than we even know exists.

Just think of where we are today vs when the Internet was created. There is no way to truly know the full scope.

Perhaps it leads to great success; perhaps to great pain. It is really in the hands of creative people at this point.

But the potential is there. Could you imagine a world where digital security was inherent? Or even imagine a world where voter fraud was just not possible. Regardless the context of the election, having the means to 100% legitimize each and every vote in the ballot box is huge. In the digital landscape, where you cannot trust the identity of the person on the other side, the Blockchain steps into the equation to provide a solution.

All from a pseudonym known as Satoshi Nakamoto. As an innovation, the Blockchain is powerful. And yet, the true identity of Satoshi Nakamoto remains unknown.

During my research, I saw mention that the the creator still maintains an amount of unspent Bitcoin valuing over $2 billion dollars. All with a technology that was given to the world freely.

Yes…

I dare say it again…

The Blockchain is elegant.

Additional Resources
Should a Site Use Apachle Solr for its Search? | Blog
Why Should Companies Support Drupal? | Blog

Sep 07 2017
Sep 07

I am excited to announce that the D8 port of the Autocomplete Deluxe module has been released in “beta”!
 

What does it do?

The Autocomplete Deluxe module provides a widget that enhances the default autocomplete field in Drupal. It uses jQuery UI autocomplete and provides a slick visual element for content editors to reference terms - displaying them inline, drag-n-drop reordering, and creation of new terms from the field itself. It works out-of-the-box and no 3rd party libraries are needed.
 

Installation and setup

Installing this module is straightforward - especially for Drupal 8. Simply run:

composer require drupal/autocomplete_deluxe;

To set up a field called “Tags" to use the Autocomplete Deluxe widget to set
values from the “Tags” taxonomy:

  • Navigate to “Administration” > “Modules” and enable the “Autocomplete Deluxe”
  •   module.
  • Navigate to “Administration”  > “Structure” > “Content types” and select “Manage
  •   fields” of the content type you wish to edit.
  • Add a new field of "Term reference" named "Tags".
  • Select the “Tags” vocabulary and save field settings.
  • Under the “Manage form display” tab, select the "Autocomplete Deluxe" widget type in the dropdown menu for your field and save.
  • Customize or keep the default Autocomplete Deluxe widget field settings.

And that’s pretty much it!

When you visit your node’s add or edit page, you will see the terms referenced displayed in the Autocomplete Deluxe widget:

Additional information can be found in the README.
 

Contributions and attributions

As of this blog post, there are 14,374 sites using the module (with 159,221 downloads) on D7 and I anticipate that number will continue to ascend as more D8 sites use it.

The D8 port of the module started with an issue created in June 2016 and has been made possible through contributions from several members of the community - notably @idtarzanych, Mediacurrent’s own @LNakamura, and myself. Working from the initial patch provided by @idtarzanych, we were able to make some minor updates to ensure D8 standards were followed and was rid of PHPCS errors.

Mediacurrent acquired maintainership status of the Autocomplete Deluxe module from the module creator, Epiqo, in July 2017 - and we’ve been committing to the effort of assuring the issue queue is groomed, up-to-date, and responding to issues in a timely manner. Lee Nakamura and I are excited to continue to keep this module up to its full potential.

We hope that you will be able to make use of this wonderful module on your D8 sites and look forward to working on making it better through community contributions and feedback.
 

Additional Resources
Typescript and Drupal.behaviors | Blog
Building Rest Endpoints with Drupal 8 | Blog
Creating Content with YAML Content Module | Blog

Sep 06 2017
Sep 06

No, this is not a joke.

Decoupled Developer Days took place in New York City on August 19th and 20th and was hosted by NBCUniversal at 30 Rock in the heart of Rockefeller Plaza.

This was a first time event. Mediacurrent was a Gold Sponsor and several colleagues were going to be in attendance including Co-Lead Organizer Matt Davis with whom I’m currently working with on a client project.

There has been a lot of talk about Headless Drupal, Decoupled Drupal and other iterations of how Drupal can be leveraged in ‘non-traditional’ ways, and this was a great opportunity to learn more. My fellow native Pennsylvanian and co-worker Josh Linard also wrote about this event and it is well worth the read, “The 3 C’s + 1 D of Drupal: And Why Decoupled Matters.”

Looking back I’m really glad I took the bus two hours each way, walked over roughly 40 blocks and spent my Saturday listening to nine presentations and enjoying happy hour with the other attendees.
 

Here is why:

1. Drupal isn’t a Stagnant Platform

Unlike a proprietary platform, individuals and companies are constantly evolving an open-source solution like Drupal and they aren’t bound by investors’ demands. This conference showed how people were using or experimenting with a range of integrations including Cardstack, Ember, Angular, Reservoir, Contenta, and more. There were also case studies, such as “How to Use JSON Web Tokens for REST Authentications” and “How to Host and Develop a Decoupled Site”.

For me, seeing how people are using and thinking about using the platform is extremely helpful when working for clients. If they are very technical, I have a high-level context, and if they are not as technical, but want to try something they’ve seen, I can ask more detailed questions of the development team.

When I was the client, I loved attending this type of event, because it demonstrated the possibilities of what could be done. I think the development team was almost afraid when I’d return from a conference, because I would immediately start hitting them with “I think we can do this” or “what if we did that” and internally, once tested and verified, people couldn’t believe what we could deliver. While the inaugural event was attended primarily by developers, I’m definitely encouraging a broader range of roles to participate in the future.
 

2. Building Relationships with Colleagues is Critical

Mediacurrent’s staff is primarily distributed with most people working from home. We leverage video extensively in communications and have both work and social related channels in Slack to communicate with one another, but the opportunity to spend a day or two with a colleague that blends professional and social is very important in both building a relationship as well as reinforcing the company culture.

A Mediacurrent team dinner during the event

What could possibly be better than seeing presentations by colleagues who work on the teams of projects you manage? Matt Davis was not only the Co-Lead with Preston So of Acquia, but he co-presented with Stephen Fluin of Google on “Angular and Drupal: A Compelling Combo.” In the afternoon Edward Chan, who also works on one of my current projects presented, “How to Use JSON Web Tokens for REST Authentications.” It is great to see them share what they’ve done and learned, but also I am able to affirm with clients the expertise they possess using first hand knowledge.

Mediacurrent listens in to fellow team member Ed Chan’s presentation

In addition to those presenters, Mediacurrent’s, Bob Kepford and Mark Casias also volunteered in both planning and onsite activities, which leads to my next point.
 

3. Interaction with the Drupal Community is Important

If you work primarily with Drupal building and maintaining sites, as Mediacurrent does, you owe the community a debt of gratitude. You should also want the platform to continue to be developed and on the leading edge to both serve your clients and build your business. This is why Mediacurrent was such a strong supporter of this (and many other) events as well as giving time for employees to contribute and maintain core and contrib modules.

If your site is run by Drupal, you can also engage with and support the community. I once calculated that using Drupal over two years saved my previous company between $0.5 and $1.5 million compared to proprietary bids that were received. Engaging in the community in my previous role working for a global enterprise company using Drupal resulted in meeting a lot of people from leading Drupal development companies and having them want to work with me. I previously wrote about how you can contribute as a client and non-developer on the Drupal Association blog (talk about a small world, I had not met Mediacurrent’s co-founder, Dave Terry, when I wrote this post, but I noticed he was the first to comment, and I did have many conversations after that post with our other co-founder Paul Chason - and look where I am now).

Drupal is a community. It is people working together. As noted earlier, meeting people in person and mixing professional and social is critical to developing good relationships and those lead to success and support for one another. Conferences like Decoupled Dev Days, Camps, and Cons are a great way to meet people you’ve communicated with online, new people you haven’t, as well as people who are simply curious about Drupal - and in that case, you have a great opportunity to give back as an ambassador for the community.
 

Decoupled Dev Days: Time Well Spent

My Saturday may have been a long one, but it certainly was valuable. Many people put a lot of volunteer effort into the event and it showed the passion they have for pushing what can be done with Drupal. I was also able to build new relationships and foster existing ones, which will lead to greater efficiency, productivity and success in the future. Finally, by attending, learning, and engaging I was an active part of the community that is essential for the health and well-being of the Drupal platform.
 

Additional Resources
Decoupled Developer Days on YouTube | Session Videos
Why Should Companies Support Drupal? | Blog
Introducing Drupal Through its Community | Blog

Aug 29 2017
Aug 29

I’ve been involved with open source software (mainly Drupal) for the last 10+ years. There has been unquestionable growth when it comes to Drupal adoption. I’ll spare you the war stories, but the decision paradigm has shifted from executives asking, “why should we consider Drupal?” to “why would we want to look at a proprietary, licensed based option and pay seven-figures in just licensing fees alone for ‘closed-code’?”

The global brands and blue-chip organizations adopting a more open source based web strategy within their organization offer convincing validation that content management frameworks like Drupal are continuing to gain market share and momentum. The following is a random, cross-section of organizations that have adopted Drupal in some capacity in a variety of different verticals:  

In short, those are some impressive organizations entrusting their digital and web strategy to Drupal in some manner. Yet, there continues to be confusion amongst adopters around “why” supporting an open source project like Drupal is important. Essentially, the amount of organizations who contribute and support the Drupal project are professional service companies. There is overwhelming quantifiable evidence that supports this.

According to 2016 research conducted by the founder of Drupal, the vast majority of the contributing organizations (Mediacurrent among them) are professional service companies.

The breakdown is as follows:

  • Traditional Drupal businesses (82%)
  • Infrastructure and technology companies (13%)
  • End-users (4%)
  • Digital marketing agencies (1%)
  • Systems integrators (.04%)

Even more eye-opening is that of the approximately 100 sponsors for Drupalcon Baltimore, none were actual adopters/end-users/companies (this assumes the agency or professional services side of Accenture and E&Y sponsored). What’s interesting is the void amongst higher ed institutions. The participation statistics suggest they are often one of the verticals with the highest percentage of attendees, yet there seems to be a huge challenge within those organizations to sponsor a Drupal event.

For most organizations, becoming best-of-class in “digital” is part of their strategic vision in some capacity. The data clearly supports this assertion. Last year, IDC conducted a poll of Global 2000 companies and found that by the end of 2017, two-thirds of CEOs will make digital transformation the #1 priority within their company.

If this is true, then what is causing the reluctance among those who adopt Drupal to get more involved, since Drupal adoption aligns so well with their overall vision?  I would theorize that the primary reason is a simple lack of awareness and recognition. There is not enough knowledge of a correlation around the benefits and value an organization will receive to their bottom line if they were to subsidize an open source project like Drupal. The core problem to solve is educating organizations around how their involvement in Drupal aligns with their already existing mission, vision, and values.

The following are some of the immense benefits organizations can receive by contributing back to Drupal.

1.  Purpose: people will get fulfillment out of knowing their work and code is helping support a company’s mission, especially if that mission aligns with their own. This is particularly true of non-profits or higher education institutions, which are two sectors that have seen tremendous Drupal growth.

2.  Recruiting in-house talent: top Drupal and open source software professionals want to work with organizations that value contributing and sharing back.

3.  Free training for your employees: other developers will do code reviews and quality control and test the modules you are using for bugs.

4.  Brand equity within the open source software community: something like a case study appearing on drupal.org draws traffic → potential conversions → sales.

5.  Technology awareness: most companies inevitably rely on a key subset of modules or functionality that are imperative to their use case (i.e. media companies may need contributory modules associated to video to be ported to the latest version of Drupal). By allowing your team to work “on Drupal” the wider community is able to recognize and appreciate this.

Next, I do want to point out that there are certainly outliers and by no means do I want to imply that every company is not supporting Drupal. Of course, the mere adoption of Drupal creates jobs and helps the ecosystem in a variety of ways. In preparation for a 2016 presentation, I had the pleasure of talking to Mike Lamb from Pfizer. The organization model he is building is inspirational as he describes at Drupalcon Dublin. Companies like Time, Inc. are donating much-needed funding to support Drupal’s infrastructure.  Organizations like NBC are sponsoring venues for Drupal meet-ups and conferences in New York City, like the recent Decoupled Developer Days.

This is not just happening in Drupal. Companies are realizing the huge value of crowdsourcing like code sprints, hack-a-thons, and open-sourcing their code. United Airlines runs bounty programs and gives away millions of skymiles for “friendly hackers” to identify security breaches or bugs in a controlled environment.  

Finally, gaining more traction from adopters of Drupal will be critical to continuing to scale the community beyond where it is now. In my opinion, getting these end-users engaged should be one of the highest priorities within the Drupal Association.  There is a huge opportunity for executives within organizations to create a culture of giving back. This could be in the form of simply approving a case study (i.e. sharing knowledge), sponsoring a camp, approving a patch or contributory module, or allowing your in-house team formal time to work on Drupal.

I’d love to hear your thoughts on this topic.  What are your views on why companies should support Drupal?  What other examples would you like to share?
 

Additional Resources
Drupal Contrib: Why It's Important | Video
Creating a Culture of Giving in Your Organization | Blog
Mediacurrent's Contrib Committee | Monthly Updates

Pages

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web