Drupal

Reserve

New Drupal Modules - 16 February 2018 - 3:05pm

Reserve is the D8 port of Room Reservations. Whereas that module was specifically for reservations for Rooms (it included a node bundle called "Rooms"), Reserve intends to allow booking of any fieldable Content Type (node, user, term, etc). Rather than provide a room bundle, it has a custom field (Reserve Category) which can be added to any bundle to allow it to be reservable. It also provides a booking calendar for each reservable bundle. Examples: rooms, cameras, tutors.

Categories: Drupal

Drop Guard: Feature-February: What changed in Drop Guard?

Planet Drupal - 16 February 2018 - 3:00am
Feature-February: What changed in Drop Guard?

Hello everybody! You might've experienced some changes of the project settings interface already - here’s the broad summary of what makes Drop Guard more efficient and more powerful now: composer package manager mode, speeding up the setup of update type behaviors (with a short mode option) and live site monitoring.

 

Drupal 8 Composer Drupal Planet Drupal features Drop Guard announcements
Categories: Drupal

Dries Buytaert: My POSSE plan for evolving my site

Planet Drupal - 16 February 2018 - 1:23am

In an effort to reclaim my blog as my thought space and take back control over my data, I want to share how I plan to evolve my website. Given the incredible feedback on my previous blog posts, I want to continue to conversation and ask for feedback.

First, I need to find a way to combine longer blog posts and status updates on one site:

  1. Update my site navigation menu to include sections for "Blog" and "Notes". The "Notes" section would resemble a Twitter or Facebook livestream that catalogs short status updates, replies, interesting links, photos and more. Instead of posting these on third-party social media sites, I want to post them on my site first (POSSE). The "Blog" section would continue to feature longer, more in-depth blog posts. The front page of my website will combine both blog posts and notes in one stream.
  2. Add support for Webmention, a web standard for tracking comments, likes, reposts and other rich interactions across the web. This way, when users retweet a post on Twitter or cite a blog post, mentions are tracked on my own website.
  3. Automatically syndicate to 3rd party services, such as syndicating photo posts to Facebook and Instagram or syndicating quick Drupal updates to Twitter. To start, I can do this manually, but it would be nice to automate this process over time.
  4. Streamline the ability to post updates from my phone. Sharing photos or updates in real-time only becomes a habit if you can publish something in 30 seconds or less. It's why I use Facebook and Twitter often. I'd like to explore building a simple iOS application to remove any friction from posting updates on the go.
  5. Streamline the ability to share other people's content. I'd like to create a browser extension to share interesting links along with some commentary. I'm a small investor in Buffer, a social media management platform, and I use their tool often. Buffer makes it incredibly easy to share interesting articles on social media, without having to actually open any social media sites. I'd like to be able to share articles on my blog that way.

Second, as I begin to introduce a larger variety of content to my site, I'd like to find a way for readers to filter content:

  1. Expand the site navigation so readers can filter by topic. If you want to read about Drupal, click "Drupal". If you just want to see some of my photos, click "Photos".
  2. Allow people to subscribe by interests. Drupal 8 make it easy to offer an RSS feed by topic. However, it doesn't look nearly as easy to allow email subscribers to receive updates by interest. Mailchimp's RSS-to-email feature, my current mailing list solution, doesn't seem to support this and neither do the obvious alternatives.

Implementing this plan is going to take me some time, especially because it's hard to prioritize this over other things. Some of the steps I've outlined are easy to implement thanks to the fact that I use Drupal. For example, creating new content types for the "Notes" section, adding new RSS feeds and integrating "Blogs" and "Notes" into one stream on my homepage are all easy – I should be able to get those done my next free evening. Other steps, like building an iPhone application, building a browser extension, or figuring out how to filter email subscriptions by topics are going to take more time. Setting up my POSSE system is a nice personal challenge for 2018. I'll keep you posted on my progress – much of that might happen via short status updates, rather than on the main blog. ;)

Categories: Drupal

My POSSE plan for evolving my site

Dries Buytaert - 16 February 2018 - 1:23am

In an effort to reclaim my blog as my thought space and take back control over my data, I want to share how I plan to evolve my website. Given the incredible feedback on my previous blog posts, I want to continue the conversation and ask for feedback.

First, I need to find a way to combine longer blog posts and status updates on one site:

  1. Update my site navigation menu to include sections for "Blog" and "Notes". The "Notes" section would resemble a Twitter or Facebook livestream that catalogs short status updates, replies, interesting links, photos and more. Instead of posting these on third-party social media sites, I want to post them on my site first (POSSE). The "Blog" section would continue to feature longer, more in-depth blog posts. The front page of my website will combine both blog posts and notes in one stream.
  2. Add support for Webmention, a web standard for tracking comments, likes, reposts and other rich interactions across the web. This way, when users retweet a post on Twitter or cite a blog post, mentions are tracked on my own website.
  3. Automatically syndicate to 3rd party services, such as syndicating photo posts to Facebook and Instagram or syndicating quick Drupal updates to Twitter. To start, I can do this manually, but it would be nice to automate this process over time.
  4. Streamline the ability to post updates from my phone. Sharing photos or updates in real-time only becomes a habit if you can publish something in 30 seconds or less. It's why I use Facebook and Twitter often. I'd like to explore building a simple iOS application to remove any friction from posting updates on the go.
  5. Streamline the ability to share other people's content. I'd like to create a browser extension to share interesting links along with some commentary. I'm a small investor in Buffer, a social media management platform, and I use their tool often. Buffer makes it incredibly easy to share interesting articles on social media, without having to actually open any social media sites. I'd like to be able to share articles on my blog that way.

Second, as I begin to introduce a larger variety of content to my site, I'd like to find a way for readers to filter content:

  1. Expand the site navigation so readers can filter by topic. If you want to read about Drupal, click "Drupal". If you just want to see some of my photos, click "Photos".
  2. Allow people to subscribe by interests. Drupal 8 make it easy to offer an RSS feed by topic. However, it doesn't look nearly as easy to allow email subscribers to receive updates by interest. Mailchimp's RSS-to-email feature, my current mailing list solution, doesn't seem to support this and neither do the obvious alternatives.

Implementing this plan is going to take me some time, especially because it's hard to prioritize this over other things. Some of the steps I've outlined are easy to implement thanks to the fact that I use Drupal. For example, creating new content types for the "Notes" section, adding new RSS feeds and integrating "Blogs" and "Notes" into one stream on my homepage are all easy – I should be able to get those done my next free evening. Other steps, like building an iPhone application, building a browser extension, or figuring out how to filter email subscriptions by topics are going to take more time. Setting up my POSSE system is a nice personal challenge for 2018. I'll keep you posted on my progress – much of that might happen via short status updates, rather than on the main blog. ;)

Categories: Drupal

Gizra.com: Travis - The Need for Speed

Planet Drupal - 15 February 2018 - 10:00pm

Chances are that you already use Travis or another cool CI to execute your tests, and everyone politely waits for the CI checks before even thinking about merging, right? More likely, waiting your turn becomes a pain and you click on the merge: it’s a trivial change and you need it now. If this happens often, then it’s the responsibility of those who worked on those scripts that Travis crunches to make some changes. There are some trivial and not so trivial options to make the team always be willing to wait for the completion.

This blog post is for you if you have a project with Travis integration, and you’d like to maintain and optimize it, or just curious what’s possible. Users of other CI tools, keep reading, many areas may apply in your case too.

Unlike other performance optimization areas, doing before-after benchmarks is not so crucial, as Travis mostly collects the data, you just have to make sure to do the math and present the numbers proudly.

Caching

To start, if your .travis.yml lacks the cache: directive, then you might start in the easiest place: caching dependencies. For a Drupal-based project, it’s a good idea to think about caching all the modules and libraries that must be downloaded to build the project (it uses a buildsystem, doesn’t it?). So even a variant of:

cache: directories: - $HOME/.composer/cache/files

or for Drush

cache: directories: - $HOME/.drush/cache

It’s explained well in the verbose documentation at Travis-ci.com. Before your script is executed, Travis populates the cache directories automatically from a successful previous build. If your project has only a few packages, it won’t help much, and actually it can make things even slower. What’s critical is that we need to cache slow-to-generate, easy-to-download materials. Caching a large ZIP file would not make sense for example, caching many small ones from multiple origin servers would be more beneficial.

From this point, you could just read the standard documentation instead of this blog post, but we also have icing on the cake for you. A Drupal installation can take several minutes, initializing all the modules, executing the logic of the install profile and so on. Travis is kind enough to provide a bird’s-eye view on what eats up build time:

Execution speed measurements built in the log

Mind the bottleneck when making a decision on what to cache and how.

For us, it means cache of the installed, initialized Drupal database and the full document root. Cache invalidation is hard, we can’t change that, but it turned out to be a good compromise between complexity and execution speed gain, check our examples:

Do your homework and cache what’s the most resource-consuming to generate, SQL database, built source code or compiled binary, Travis is here to assist with that.

Software Versions

There are two reasons to pay attention to software versions.

Use Pre-installed Versions

Travis uses containers of different distributions, let’s say you use trusty, the default one these days, then if you choose PHP 7.0.7, it’s pre-installled, in case of 7.1, it’s needed to fetch separately and that takes time for every single build. When you have production constraints, that’s almost certainly more important to match, but in some cases, using the pre-installed version can speed things up.

And moreover, let’s say you prefer MariaDB over MySQL, then do not sudo and start to install it with the package manager, as there is the add-on system to make it available. The same goes for Google Chrome, and so on. Stick to what’s inside the image already if you can. Exploit that possibility of what Travis can fetch via the YML definition!

Use the Latest and (or) Greatest

If you ever read an article about the performance gain from migrating to PHP 7, you sense the importance of selecting the versions carefully. If your build is PHP-execution heavy, fetching PHP 7.2 (it’s another leap, but mind the backward incompatibilities) could totally make sense and it’s as easy as can be after making your code compatible:

language: php php: - '7.2'

Almost certainly, a similar thing could be written about Node.js, or relational databases, etc. If you know what’s the bottleneck in your build and find the best performing versions – newer or older – it will improve your speed. Does that conflict with the previous point about pre-installed versions? Not really, just measure which one helps your build the most!

Make it Parallel

When a Travis job is running, 2 cores and 4 GBytes of RAM is available – that’s something to rely on! Downloading packages should happen in parallel. drush make, gulp and other tools like that might use it out of the box: check your parameters and configfiles. However, on the higher level, let’s say you’d like to execute a unit test and a browser-based test, as well. You can ask Travis to spin up two (or more) containers concurrently. In the first, you can install the unit testing dependencies and execute it; then the second one can take care of only the functional test. We have a fine-grained example of this approach in our Drupal-Elm Starter, where 7 containers are used for various testing and linting. In addition to the great execution speed reduction, the benefit is that the result is also more fine-grained, instead of having a single boolean value, just by checking the build, you have an overview what can be broken.

All in all, it’s a warm fuzzy feeling that Travis is happy to create so many containers for your humble project:

If it's independent, no need to serialize the execution Utilize RAM

The available memory is currently between 4 and 7.5 GBytes , depending on the configuration, and it should be used as much as possible. One example could be to move the database main working directory to a memory-based filesystem. For many simpler projects, that’s absolutely doable and at least for Drupal, a solid speedup. Needless to say, we have an example and on client projects, we saw 15-30% improvement at SimpleTest execution. For traditional RMDBS, you can give it a try. If your DB cannot fit in memory, you can still ask InnoDB to fill memory.

Think about your use case – even moving the whole document root there could be legitimate. Also if you need to compile a source code, doing it there makes sense as well.

Build Your Own Docker Image

If your project is really exotic or a legacy one, it potentially makes sense to maintain your own Docker image and then download and execute it in Travis. We did it in the past and then converted. Maintaining your image means recurring effort, fighting with outdated versions, unavailable dependencies, that’s what to expect. Still, even it could be a type of performance optimization if you have lots of software dependencies that are hard to install on the current Travis container images.

+1 - Debug with Ease

To work on various improvements in the Travis integration for your projects, it’s a must to spot issues quickly. What worked on localhost, might or might not work on Travis – and you should know the root cause quickly.

In the past, we propagated video recording, now I’d recommend something else. You have a web application, for all the backend errors, there’s a tool to access the logs, at Drupal, you can use Drush. But what about the frontend? Headless Chrome is neat, it has built-in debugging capability, the best of which is that you can break out of the box using Ngrok. Without any X11 forwarding (which is not available) or a local hack to try to mimic Travis, you can play with your app running in the Travis environment. All you need to do is to execute a Debug build, execute the installation part (travis_run_before_install, travis_run_install, travis_run_before_script), start Headless Chrome (google-chrome --headless --remote-debugging-port=9222), download Ngrok, start a tunnel (ngrok http 9222), visit the exposed URL from your local Chrome and have fun with inspection, debugger console, and more.

Takeaway

Working on such improvements has benefits of many kinds. The entire development team can enjoy the shorter queues and faster merges, and you can go ahead and apply part of the enhancements to your local environment, especially if you dig deep into database performance optimization and make the things parallel. And even more, clients love to hear that you are going to speed up their sites, as this mindset should be also used at production.

Continue reading…

Categories: Drupal

REST Password Request

New Drupal Modules - 15 February 2018 - 6:26pm

New Rest Plugin to use REST for forgot Password Request.

We could not find a way that core Rest could send a password retrieval link via Rest resource.

This simply ads a resource to allow A New POST Request to
endpoint "/user/lost-password:"

with the key of "mail" (and optional "lang" for localization )

To Set up:

Please install Rest UI, then install the module in the normal way... then in rest ui -> find "Lost password" and enable.

Categories: Drupal

GrapesJS

New Drupal Modules - 15 February 2018 - 5:36pm
Categories: Drupal

Agiledrop.com Blog: AGILEDROP: Time to move forward?

Planet Drupal - 15 February 2018 - 4:10pm
When is the right time to let it go and move forward? Yes, we are talking about migrating to Drupal 8 version. Drupal 8 was released in November 2015, so it has been more than two years now. No matter what kind of website you have, whether you have an online shop, small brochure website or an extensive and complex website, if its build on Drupal 6, it's almost urgent you move forward and upgrade it to Drupal 8. Why? The Drupal community no longer (officially) supports Drupal 6 since three months after Drupal 8 came out. That means that bugs are no longer getting fixed. Drupal 6 is simply long… READ MORE
Categories: Drupal

Acro Media: Drupal Commerce 2: How to Add and Modify Product Content

Planet Drupal - 15 February 2018 - 1:13pm

In part one  and two of this Acro Media Tech Talk video series, we covered how you set up a new product attribute and used rendered fields, in Drupal Commerce 2. Parts three and four then to set up a product variation type and a product type, both with custom fields. This completes our new product configuration.

In part five, the last of this series, we'll finally get to try out the new product! We'll add a product to the store as if we are a store administrators (end user) who is creating content. We'll try out all of the fields and properties we've configured, make a product, and view it on the site. Afterwards, we'll cover how an administrator can then go in and edit the product to make content changes.

This entire video series, parts one through five, show you how to set up a new product in Drupal Commerce 2, from start to finish. The video is captured using our Urban Hipster Commerce 2 demo site.

Its important to note that this video was recorded before the official 2.0 release of Drupal Commerce and so you may see a few small differences between this video and the official release now available.

Urban Hipster Commerce 2 Demo site

This video was created using the Urban Hipster Commerce 2 demo site. We've built this site to show the adaptability of the Drupal 8, Commerce 2 platform. Most of what you see is out-of-the-box functionality combined with expert configuration and theming.

More from Acro Media Drupal modules used in this video

Categories: Drupal

Entity tracker

New Drupal Modules - 15 February 2018 - 10:51am
Categories: Drupal

Contrib Team for Drupal Diversity & Inclusion

New Drupal Modules - 15 February 2018 - 10:19am

Learn more about the Drupal Diversity & Inclusion their Drupal.org project. We have begun our initial migration from the Github repository. This will take some time and is considered a work-in-progress.

Categories: Drupal

Commerce ML Starter

New Drupal Modules - 15 February 2018 - 9:16am

Drupal Commerce + 1C Starter Kit

Categories: Drupal

Mediacurrent: Accommodating Drupal In Your Components

Planet Drupal - 15 February 2018 - 8:44am

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.

Categories: Drupal

Aten Design Group: Using Sub-profiles and Build Tools to Start Your Next Drupal 8 Project

Planet Drupal - 15 February 2018 - 8:37am

In the past I’ve struggled with the decision of whether or not to start a new Drupal project with a distribution. Since Drupal 8 has evolved I’ve noticed the decision has shifted from whether or not to use one, to which one is the right fit. Two things that are fairly new to distributions are sub-profiles and build tools, both of which have influenced the way I approach a new Drupal project.

Sub-profiles

Sub-profiles are a relatively new thing. While there is still some work to be done in how to manage dependencies and deal with more complex inheritance, inheriting a profile is now possible and in many cases recommended. One example is Acquia's Lightning distribution. Lightning does a good job highlighting the wheels you should not be re-inventing, while also serving as an example of a parent and sub-profile to the well known OpenEDU distribution.

Acquia's article about sub-profiles covers a helpful list of questions to start with such as: Does your new Drupal 8 site need media support? Does it need layout support? As the project develops and matures, are you ready to support the changes that will happen in Drupal core with media and layout, or anything else? As of version 8.3, things like media and layout were only stable enough in contrib, and in 8.4 were only partially moved into core. As of 8.5 and 8.6, workflow, media and layout are planned to be moved into core and stable and will considerably change your site's architecture and implementation. So, with a sub-profile, the specifications for which modules to use and how to use them are now inherited, and not the responsibility of the sub-profile.

Build tools

The next thing to consider is how, or who, is actually building your profile. If you're not thinking about SaaS, (if you are, see Dries's article about making distributions commercially interesting), then you're really targeting developers. Since Drupal 8 development is now entirely composer based, you might want to checkout what profiles are already doing with composer. Here are some examples of composer.json configurations as well as open source tools that you can integrate with composer:

  • Composer scripts - https://github.com/acquia/lightning/blob/8.x-3.x/composer.json - script hooks, (like post-install, pre-install), auto class loading, dependency management, etc.
  • Robo task runner - https://github.com/consolidation/Robo - defines tasks in an auto-loaded PHP class RoboFile
  • Phing build tool - https://www.phing.info - define tasks with a build.xml
  • Testing - PHPUnit test helper methods and classes, as well as addon Behat features and commands
  • Starter content - this currently is just a hook_install script that installs a view with a header, but worth trying out and building on
  • TravisCI integration - with only a few modifications to an existing .travis.yml file you can setup continuous integration for your profile. The existing configuration already handles setting up your server, installing composer and configuring PHP, installing a local browser for testing, headless browser for testing (see composer hooks), installing and re-installing Drupal (see robo), running tests (see behat, phpunit), and development tools for moving files around in your local development environment.

Using a combination of sub-profiles with these build tools have made starting my new Drupal projects more efficient. There is a lot of helpful material out there to learn from, contribute to, and build on. Hopefully this gives you a great start to focusing your new Drupal projects as well.

Categories: Drupal

Entity Reports

New Drupal Modules - 15 February 2018 - 7:02am

The entity reports module provide users with insights about the structure of their entity types by placing reports on these in /admin/reports menu. It currently features:

1. Report about the field structure of all node types (bundles): field name, field machine name, description, cardinality and target entities.
2. Report about the field structure of all taxonomies and the list of terms
3. Downloadable report of each type above in JSON

Categories: Drupal

Amazee Labs: Agile Agency Survey Roundup

Planet Drupal - 15 February 2018 - 6:15am
Agile Agency Survey Roundup

Thanks again to everyone who has participated in my survey about agile practices in our industry. In this final piece, I would like to share some of my key observations and provide an overview of what has been covered in the previous nine blog posts.

Josef Dabernig Thu, 02/15/2018 - 15:15

The 30 survey participants provided in-depth answers in 10 different sections with a set of multiple-choice questions and freeform answers. The survey aimed to get a better understanding of how agile practices are established and live in agencies related to the Drupal community.

Survey results overview
  • Part 1 - Initial Observations provides an overview of popular methodologies, project team sizes, iteration length, team integration, how teams stay connected, splitting up the work, client communication and delivery practices.

  • Part 2 - Process Insights gives a deeper understanding of how strictly teams follow the process and which adaptations they have applied.

  • Part 3 - Teams analyses the average team size, where teams work and how teams and projects are paired.

  • Part 4 - Discovery & Planning examines the balancing features and functionality against providing value when talking about work increments and when teams make the discovery.

  • Part 5 - Team Communication & Process is about how teams communicate, how much time they spend in meetings and how client work is balanced against internal or non-billable work.

  • Part 6 - Defining Work analyses the different phases in the ticket process and who is involved in defining work, as well as which tools are essential for organising the work.

  • Part 7 - Estimations provides insights into how teams estimate and by whom estimations are executed.

  • Part 8 - Client Interactions highlights how regularly teams meet with the client and how communication between the team and the client is handled.

  • Part 9 - Practices gives a rundown of how often teams deploy code and compares usage of the various agile practices teams apply to their work.

Key survey takeaways

Having spent some time looking at the data, and processing chunks of the results into the individual blog posts I have mentioned before, was a rewarding task. Even though the number of survey participants was not very high, I believe that the results are appropriate and representable. Apart from the quantitative analysis, I was happy to have asked for freeform answers which provided me with the diversity to allow the survey to be representative.

There is not a single truth to how agile works. In some cases, you'll be able to collaborate closely with the client on a daily basis, in other cases, you will be lucky if you can meet the client every second week. While some agencies have fewer long-term projects, the majority have a mix of smaller and bigger projects regarding size and duration.

Some teams prefer to work integrated across disciplines. Others prefer to have separate teams based on their expertise. From my point of view, active collaboration and communication between teams and clients are essential to create a better product. The way in which this is organised always depends on what works best for the participating individuals and organisations.

An example, where implementing a rigid process can make sense, would be, that we can help the team not to take on too much work. On the other hand, if the process starts getting in the way of everything, we need to remind ourselves of the principle «Individuals and interactions over processes and tools» of the agile manifesto. The process is there to help the team collaborate with the client to produce working software and responding to change as we move forward in the project. The process must be well understood by all role players so that it helps instead of limit our work.

Feel free to dig into the results raw data and please make sure to look at the freeform answers. I tried to summarise some highlights as parts of the series, but there is a lot more to be found from reading them yourself.

That’s it for the agile agency survey results. Thanks again to all the participants and let us know if you have any thoughts on the survey about agile practices.

Categories: Drupal

Czater - live chat i telefon

New Drupal Modules - 15 February 2018 - 6:06am

Czater.pl to darmowy live chat https://www.czater.pl, który możesz w prosty i szybki sposób zainstalować w swojej witrynie na Wordpress. Dzięki temu klienci będą mogli skontaktować się z Tobą w czasie rzeczywistym! Wystarczy, że skorzystasz z tego pluginu. Zaufało nam już 10 000 klientów. Dołącz do nich już teraz!

Categories: Drupal

myDropWizard.com: CiviCRM secrets for Drupalers: Screencast of Roundearth CiviCRM Profile Forms

Planet Drupal - 15 February 2018 - 5:01am

We're Drupalers who only recently started digging deep into CiviCRM and we're finding some really cool things! This series of videos is meant to share those secrets with other Drupalers, in case they come across a project that could use them. :-)

In the screencast below, I'll demonstrate how to create a publicly accessible CiviCRM "lead" form. This form will add a contact into your CRM database. In this example, I'll be creating a "Corporate Sponsor Lead" type of form. This is the sort of form you might put into a newsletter email or just have easily accessible by volunteers.

Watch the screencast to see if I run into any issues with the instructions:

Video of CiviCRM secrets for Drupalers: Screencast of Roundearth CiviCRM Profile Forms

Some highlights from the video:

  • Create a CiviCRM Profile with a "Corporate Sponsor Lead" Form
  • Create a ACL to allow this Profile Form to be public

Please leave a comment below!

Categories: Drupal

iterate.: Iterate Presents 5 Minutes - January

Planet Drupal - 15 February 2018 - 3:12am

To kick off 2018 we had our first round of these 5 minute presentations in January. We learned about Why Typography Matters, competing at SEO, Drupal 8 templates, Mental Fitness for Business, and When to Apologise.

Categories: Drupal

Vardot: Interview with Omar Alahmed, the First Acquia Certified Drupal 8 Backend / Developer in MENA

Planet Drupal - 15 February 2018 - 2:27am
Ahmed Jarrar February 15, 2018

 

Omar Alahmed is a Technical Team Lead at Vardot with more than 10 years experience in web development, specializing in PHP and Drupal. Omar has worked with Drupal since 2007 starting with Drupal 5 and has continued along mastering 6, 7, and Drupal 8.

 

Omar had multiple motivations to earn certifications, which serve to establish his credibility and expertise. He has achieved Zend Certified PHP Engineer in Sep 2013, Oracle Certified Professional (OCP) MySQL 5.6 Developer in May 2014, Acquia Certified Developer - Drupal 7 in Dec 2014, and most recently, Acquia Certified Developer - Drupal 8 in Jan 2018 and Acquia Certified Back End Specialist - Drupal 8 in Feb 2018.

 

More importantly, is the added benefit of the time spent reviewing and studying all of the relevant topics and materials that these qualifications are built upon. His deep study of computer science concepts allowed him to step beyond surface-level theory and apply his learnings directly in his application of the code.

We interview Omar about what excites him most working with enterprise Drupal implementations at Vardot.

 

What are the tasks you find most exciting?

I started as a full-stack developer and I always feel that it is the best role for a new web developer. This is because it will introduce you to the broadest view of the web development life-cycle process. Taking this approach will give you exposure and the opportunity to examine what is needed in each phase. However, after getting the needed experience, some tasks may distract you from the deeper technical items. Therefore, I currently prefer to work on more custom tasks, such as using APIs and custom module development.

 

At Vardot, we follow the Agile methodology in our project development life-cycle. This usually begins with a Work Breakdown Structure (WBS), dividing the project deliverables into small chunks, and then assigning them to project’s team members. I prefer to work on the more customized tasks, either on the backend or frontend and to guide and train other team members when needed. For our team, this helps us deliver the tasks in a formalized practice and ensures projects to follow the Drupal best-practices, thus contributing to the Drupal project more often in each project.

 

How did you prepare for the exams? What background knowledge does one need to get Acquia Drupal 8 Developer & Acquia Back End Specialist Certified?

When I received the Acquia Certified Developer - Drupal 7 certification, I realized that the exam truly validates a Drupal developer experience in mastering a Drupal website in a professional and standardized way. It is not a theoretical exam and cannot be passed simply by reading a study guide. Practical experience in developing web applications, like the work I do at Vardot, is required to succeed.

 

At Vardot we always strive to follow and endorse the best practices in development and apply it to different types of projects. Given this experience, I didn't find any difficulties during the preparation for the exam. I made sure to review the study guide links that were provided by Acquia and found ways to programmatically apply the topics that I had not worked with before. This allowed me to apply these topics in action instead of only reading about them.

 

Anyone pursuing this certification would probably agree that programming is an experimental science. In order to obtain the reusable knowledge at hand, you must write code and repeatedly practice. This method will help you expose problems that you may not be been introduced to before. I found that the published Acquia documentation is a good start for module development, as well as the Drupal API documentation.

 

Particularly:

Coding Standards: https://www.drupal.org/docs/develop/standards

Block API: https://www.drupal.org/docs/8/api/block-api

Form API: https://www.drupal.org/docs/8/api/form-api

Cache API: https://www.drupal.org/docs/8/api/cache-api/cache-api

Routing API: https://www.drupal.org/docs/8/api/routing-system

Theming API: https://www.drupal.org/docs/8/theming

 

Don't panic if you don't have an enjoyable experience in the Drupal API or module development resources. The key takeaway is to get an overview of the topics and then apply as much as you can.

 

Preparing using the above material is very important for both the Developer and Back End Specialist exams. The Developer exam covers advanced topics, but it also encompasses site building skills, such as working with content types, blocks, taxonomies, and views.

 

The Back End Specialist exam touches everything about Drupal API, performance, security, contributing to the community, and how to apply these techniques in real tasks by giving real scenarios or problems and asking to resolve them in the best way. So make sure to understand Drupal 8 core’s structure, and to do more hands-on practices before taking the exam, especially if you are not familiar with the latest PHP and OOP development techniques such as design patterns.

For further information about the content of the exams, you can check out the study guides for Acquia certification exams and an overview of Acquia Certification Program.

 

What are some tips you would give other developers working on Drupal 8?

As a Drupal 8 developer, you have probably observed that the Drupal community is the most important factor that places Drupal as the top web development platform. Therefore, I would say to try to interact with the community members; don’t work alone, don’t repeat yourself, and be cooperative as much as possible. If you find a bug or need a new feature, feel free to create a new issue in the project. You can also resolve, test and patch it to enable all Drupalers around the world to benefit along with you.

 

You’re probably aware that Drupal 8 is built on top of many Symfony2 components, like DependencyInjection, EventDispatcher, and Routing, with some customizations to be suitable for Drupal needs. With that in mind, it's a good idea for you to traverse how the core uses these components in order to facilitate and speed up your Drupal development. It’s important to always use the Drupal core code as an example if you need to write custom code because it will illustrate the best way to proceed and enlighten you what APIs are available for use. This helps you learn by example.

 

Summary

Omar Alahmed gives us a great example of what it takes to demonstrate success as a specialized developer in the Drupal community. Through his exhibited certifications, we can assume Omar's background required many dedicated hours of hard work and study. But we can also see that he was preparing for more than just certifications. Omar shows a passion for web development community at large, offering his advice as a team lead on what it takes to be a successful team player. His method of approaching problems and finding new ways to create solutions using industry best practices and established patterns makes Omar an invaluable member of our development team at Vardot.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal