May 15 2019
May 15

Drupalcamp Spain 2019 took place last week in the beautiful city of Conil, in the South of Spain. We had not only great weather, food, company… but also great sessions! This year’s schedule also included the Spanish Splash Awards, Business Day and even a side-event for those accompanying attendees, called Family in Drupal, where they did activities such as yoga, surfing, horse-riding, etc.

Drupalcamp Spain was a great gathering of people from not only Spain but many other countries. In fact, they offered two separate tracks, one in Spanish and one in English. As usual, it was difficult to choose which sessions to attend, but I think I got a really good mix and enjoyed them all thoroughly.

It’s also worth mentioning the registration bag that included a (very discreet) T-shirt, a bottle of wine (so my wife would be okay with me leaving her with the kids), a bottle of olive oil, some local tuna (Conil is a fishing town) and some other goodies.

Conil

I especially enjoyed the Friday afternoon English-track, which was “all about decoupled”. We saw an example of a project which started as a Drupal commerce site with some React components, which eventually became an app built in React native, integrating seamlessly with Drupal via GraphQL.

That was the perfect introduction to my talk, which was up next, about “GraphQL and Twig”, where I went through the whole process of installing, configuring and using GraphQL queries in your Twig templates, as a way of soft-decoupling some parts of your site. You can view the slides here: https://slides.com/fjgarlin/graphql-twig-drupalcamp-spain-2019.

Presentation

Fran

I was very glad to see that my session seemed interesting and useful to attendees and I enjoyed getting to answer some questions right after the session and the following day. People were surprised about how easy it is to get up and running and how powerful this combination can be as well. The closing session on Friday afternoon was about Drupal + GatsbyJS, showing how easy it is to connect those two technologies and doing a live demo about it.

Group photoGroup photo - Jorge Caspio

Saturday was also loaded with interesting content, and I ended up going to sessions on topics ranging from QA, SEO, UX, Migrations, Continuous Integration, Content architecture… that’s a good mix for a day, isn’t it? The speakers were really engaging and I must say that I learned a lot on that day. I also enjoyed learning how other agencies work, how we all face similar problems and solve them in different (or sometimes similar) ways. It’s always refreshing to listen to other people's experiences. I must say that most of these learnings happened in-between sessions, chatting and walking around Conil, etc.

I want to give a big, big thanks to all the people who made this event possible: organizers (Ruben Tejeiro, 1xInternet, Drupal association Spain), speakers, photographer (Jorge Carpio), volunteers and attendees from all over.

Looking forward to next year’s edition, ¡muchas gracias por todo!

May 06 2019
May 06

Using UI pattern libraries in Storybook allow us to build a collection of front end UI components that can be used to build bigger components, even full web pages. However, frontend/backend integrations can be fraught with difficulties. In this piece, I’ll explain our process to make these challenges easy, even when using GraphQL fragments inside Twig templates.

What Drupal and GraphQL do well

At Amazee Labs, we build decoupled web applications using GraphQL and Drupal. We’ll touch on the reasons that we use this approach in this article, but if you’d like to know more, check out these blogs:

Drupal is known for its complex and unwieldy theming and rendering system. Data to be rendered comes from across the system in the form of templates, overrides, preprocess functions and contributed modules such as Panels and Display Suite. Sometimes trying to track down where data is being generated or altered is like a murder mystery. 

Thankfully, GraphQL Twig simplifies the situation massively. Each template has an associated GraphQL query fragment that requests the necessary data. This “pull” model (as opposed to Drupal’s normal “push” model) means that finding where the data comes from and how it is structured is really easy. We don’t need to worry about preprocessing or alteration of data, and this method lets us keep the concerns separated.

Advantages of UI component libraries

The main advantage of using a UI component library (also known as a pattern library) is that it facilitates the reusability of components. This means that when a component is created it can be used by any developer on the project to build their parts of the front end and in turn can be used to make larger and more complex components.

There are multiple extra advantages to this, the most obvious being the speed of development. Since all components are simply made up of smaller components, building new ones is usually much quicker, since we don’t need to reinvent the wheel.

This also makes maintenance a breeze, since we’re only maintaining one version of any component. If we decide that all buttons on the frontend need to have an icon next to the text, we simply change the button component and this change will apply everywhere that the component is used.

Finally, the reusability of components in a pattern library means that the UI is consistent. Often, web projects face difficulties where there are multiple versions of various components, each with their own implementation. This is especially true of larger projects built by multiple people, or even multiple teams, where no single person knows the entirety of the project’s implementation details. Thanks to the reusability of our components, we only have one implementation per component.

Challenges of using Drupal, GraphQL, and Storybook together

If done poorly, using pattern libraries like Storybook can be difficult and cause problems during the integration phase(s) of development. The main issue is usually that the frontend and backend developers have different approaches and different goals when developing. 

The frontend developer wants to create the best UI they can in the most efficient way possible, using the paradigms and approaches that are standard or preferred. Unfortunately, at times the implementation doesn’t sync well with the data structure that the backend developers receive from Drupal, so the frontend needs to be refactored or the data structure needs to somehow be altered.

How to make it work

I won’t go into detail on our implementation of the Storybook library, but we keep Storybook in the same repo as our Drupal application, outside the root. We then define a base storybook theme and using the Components module (built by my talented colleague John Albin), we define our path to the Storybook Twig templates as a component library in our .info.yml file. This way, the Drupal theme has access to all of our templates.
 

component-libraries:
  storybook:
    paths:
      - ../../../../storybook/twig

We then create our project-specific theme, which extends the base Storybook theme, and start to work on our integration. A generic page.html.twig file might look like this:
 

{#graphql
query {
  ...Header
  ...Footer
}
#}
{% extends '@storybook/page/page.html.twig' %}

{% block header %}
  {% include '@storybook/navigation/header.html.twig' with graphql only %}
{% endblock %}

{% block content %}
  {{ page.content }}
{% endblock %}

{% block footer %}
  {% include '@storybook/footer/footer.html.twig' with graphql only %}
{% endblock %}


So, how does GraphQL tie in here? Well, this is the really clever part. Our developers can create the GraphQL snippets to get the data needed for a specific component, and Storybook allows us to use JavaScript to use this data as mock fixtures. This means that the frontend can be built with realistically structured data, so no refactoring of templates or data alteration on the backend is needed. And since we already have the GraphQL snippet, this automatically works when run in Drupal. 

Conclusion

At Amazee, we use a UI component library because it makes sense to build a maintainable, reusable and consistent set of components for our frontend that also encourages faster development. We also try our best to streamline our integration processes so that all of our developers are more closely aligned and developing solutions that make it easier for their colleagues to use, learn and extend easily. 

Storybook gives us the power to build a component library using mock data that is structured in the exact manner that our GraphQL queries deliver it. This means no refactoring, building both queries and templates only once and an overall smooth integration process. 

Want to know more about using GraphQL and Twig? Check out our webinar
 

Apr 16 2019
Apr 16

I was so excited about going to DrupalCon Seattle, I started packing one week in advance. Granted, I decided to travel light, so my carry-on suitcase quickly showed the task wouldn’t take long.

Every DrupalCon I have been lucky enough to attend has been special in their own way. This was my first time going back to the States after moving out almost two years ago, so after an airport hiccup (protip: make sure to apply for a new ESTA if you happen to renew your passport after you felt very accomplished getting it ready so much time in advance) I was happy to set my regular-sized foot onto its northwest corner.  

Looking up to Columbia Center, the tallest building in Seattle and the state of Washington.

The week started very nicely, with some time to explore the city and enjoy a selection of its fine food. As there weren’t any sessions on until Wednesday, Tuesday was mostly hanging out with teammates and other friendly faces in the contribution room.

Bathroom doors Anyone else noticed how in the US bathroom stall’s doors never quite make it to the edge?

After a delicious and fun dinner where all Amazees gathered, it was party time. One of the highlights of the week was getting to attend the Museum of Pop Culture at Pantheon’s party, which featured some awesome exhibits. My favourite part was a sound lab where one could learn how to play real instruments (Louie Louie anyone?).

Pantheon Party“Next DrupalCon we need a setlist."

Wednesday and Thursday were packed with brain-revving sessions. Gatsby, data-fetching strategies, and front-end performance were a few of the topics that got a lot of circulation on the printed schedule. But it was diversity and inclusion that rightfully took the main stage at the keynotes. Dries Buytaert began his speech acknowledging that Open Source is not a meritocracy, and Marcy Sutton and Nythia Ruff closed with essential insights on how to use our collective power to build inclusive communities and products.

All in all, there were many moments that made this past week remarkable. Many involved spending time with the team, others meeting new people. Some were expected, like the Women in Drupal luncheon. Others were not, like the Movement BoF that got me walking as if I was auditioning for the Ministry of Silly Walks.

Maria's Session

One remarkable moment was definitely getting to give my (first ever) presentation at a DrupalCon (I can confirm, the Speakers-only room has special catering!). All of these moments made me once more very grateful for being able to be a part of this. I’m looking forward next time I get to play suitcase Tetris and find out what will make the next DrupalCon a one-of-a-kind experience.

Apr 12 2019
Apr 12

DrupalCon been a very productive conference so far. The first two days of pre-conference sprinting resulted in fixing the testing pipeline of the webpack module, a prototype for using Drupal as a datasource for Gatsby using GraphQL instead of JSON:API and even solved an unexpected issue for the devel module to provide a way to load dump an entity with all its references embedded inside. You can read more about these solutions here.

After a good Wednesday afternoon, breathing in the calming air of Seattle, Thursday came and it started for me with a breakfast with Victor. He ordered his favourite meal - the Fresh French Croissant and after a short meal, we headed to the venue.

I decided to start the day with the Web components BoF led by Salem Ghoweri. Pega systems use web components a lot and it was interesting to learn about the advantages and pitfalls. IE 11 seems to be the biggest obstacle, especially when it comes to the shadow dom. Polyfilling it is very expensive computationally, so what they did is to actually ditch the shadow dow in browsers that don’t support it natively. In general, looks like web components are getting traction and IE is the main problem, so same as 5 years ago.

The next spot was the GraphQL 101: What, Why, How session by my friend Maria Comas. It started with a brief history of the query language followed by its definition.

Maria Comas

I learned that the reason to build the GraphQL spec at Facebook was because of the need to find a tool that is powerful enough to handle everything Facebook does while staying simple enough so that it’s easy to comprehend by the product developers. The thing Maria likes most about GraphQL is that it is a tool that changes human behaviour.

The session finished on time and there were hardly any questions so we had time to get the best seats for the next Amazee session:  CSS-in-JS and Drupal sitting in a tree... by John Albin Wilkins. On our way there Victor, grave as always decided to make use of his hipster camera and take this photo of me. No comment.

Blazej

John is a natural so his sessions are always entertaining and packed with great content. In this one, he compared 3 different ways of doing CSS-in-js which are:

John Albin

The session summarized the two years of our adventures with the topic while doing both fully and progressively decoupled projects. TLDR; John recommends CSS modules, mostly because it’s the only tool that makes it possible to share the styles between javascript and Drupal. If you’re interested in this topic I would encourage you to check out the recording for the reasoning and lots of interesting details.

After that, I headed to the Considerations of Federated Search and Drupal session by Adam Bergstein. The ability to find content that originates from many different websites is a hard topic which is required by the enterprise clients quite often, so I thought it might be interesting.

Nerdstein started with a high level, generic overview of the system. The structure is similar to what we have in Drupal migrations. He recommended using scrapy. It’s a tool from the python ecosystem which is great because there are many great data manipulation and natural language processing packages. Scrapy also has many destination plugins, e.g. for elastic search, so it’s easy to insert data directly into the search index.

Next, there was lunch and an unexpected booth on the way there - a box with cute, fluffy creatures.

Bunny

I’m not really sure how they ended up there but they definitely made lots of people happy. Here are some photos. Hopefully, they will make you happy as well.

Bunny

Apr 11 2019
Apr 11

When conversations began a few months back about DrupalCon Seattle, I was so thrilled about the prospect of heading west and being fully indoctrinated with all things Drupal for the first time! As a newcomer to the field, I have been eager to simply be surrounded by, and learn from, so many in this community. Additionally, DrupalCon is providing the perfect opportunity to hang out with some incredible colleagues.

The Day Begins: People

The feel of day three was noticeably more vibrant as the surge of conference attendees began to fill the halls of the Washington State Convention Center. It’s been great to see representation from all over the country and be surrounded by an association with such rich diversity.

I learned quickly that there is no lack of learning opportunities at DrupalCon. The number of sessions to choose from felt like a buffet for your mind -- where you could pick and choose, and tailor your experience to be as uniquely tailored to you as you want.

I chose sessions that I knew would provide helpful reminders to me on practices and processes I already have in place, as well as topics in which I simply want to increase my awareness or hear a different perspective.

IO Booth

Wednesday Learnings

Much of the late morning to the afternoon was spent in periodic spurts of catching up on work, popping into sessions and dropping by our booth. Here are a few of the sessions I went to, with three key learnings from each:

Getting an Angry Wet Cat to Purr: Turning an Unhealthy Client Relationship Into a Productive One (Donna Bungard, Project Strategist at Tandem)

  • Communication: Everything comes down to having an open, honest, direct conversation. This is the key manner in which you build trust with your team.

  • Hearing is good. Understanding is better.

  • There are always the next steps to be taken. You simply need to identify them.

Lead, Follow or Get out of the Way: Managing Global Teams Harmoniously (Yuriy Gerasimov, Organizer at Drupal Ukraine Community and Clyde Boyer)

  • Active Trust is foundational to team success.

  • A common mistake on distributed teams is not recognizing isolation in your team members. Take notice if the communication style of a team member changes (this may point to something not being well in their world).

  • You don’t talk your way to trust. You have to earn it, mostly with time.

Design Strategies: Our Process for Building User-centered Websites (Valerie Neumark Mickela, Board Member at Full Circle Funds and Andrew Goldsworthy, Co-Founder at Rootid)

(I actually sat down in this session by mistake, but by the time I realized, it was too late to leave without causing disruption . . . it wouldn’t be a full conference experience without a mishap along the way, right?!)

  • Design and development communications can be challenging: You absolutely cannot rely on assumptions.

  • In design, you are most often thinking through a psychological lens, versus a creative one.

  • When considering a feature, don’t ask “Is it possible?” (all things are possible with time and money!) Ask “Is it hard?” (this will provide a more realistic barometer for time and cost)

Finding Your Way: Practical Strategies for Navigating Your Career (Gus Childs, Senior Software Engineer at Mondo Robot)

  • Be selfish with your career - you should be doing work that’s fulfilling.

  • You should be excited about these three things when it comes to your career: People, Projects and Money.

  • Never burn bridges.

Seattle

The Day Ends: Splash Awards and Ping Pong Party

The awards ceremony was held at a beautiful location, inside a music venue called The Triple Door, just a couple blocks from the Pike Place Market. After being at the conference for a few days, meeting new friends and getting to know my colleagues better, Splash Awards was a perfect opportunity to catch up and talk about work and life with everyone who attended. While Amazee did not walk away with any awards, it was really fun to celebrate with others, and celebrate the incredible Amazee work that was nominated:

Splash Awards

From the Splash Awards, we walked over to Spin Seattle for one of the evening parties. Spin was packed from wall-to-wall with conference attendees and was a really fun way to end the day.

In closing, I will just say that I have been really encouraged by how warm the Drupal community is, and am so grateful for the opportunity to be at DrupalCon Seattle 2019.

Apr 10 2019
Apr 10

Normally I would invest my time in writing about attending sessions and/or how talks went from our speakers or BoFs and other social events. But since I spent the better half of Monday on a plane somewhere over the Atlantic, I will be taking this opportunity to compare this weeks experience to the one I had from four years ago. 

Besides the summits and the different ways you can buy the ticket nowadays, not much has really changed. DrupalCon remains the biggest Drupal event in the world, and you will meet an overabundance of incredibly friendly people there.

Part 1: The journey to Seattle

Like all DrupalCons for me, this one also began with an elongated trip through several airports, first a 1h 5min hop from Zurich to Amsterdam, followed by a roughly ten-hour flight to touch down at Seattle Tacoma International Airport.

Zurich to Seattle

Italy vs. France

The flights went smooth and apart from the occasional shakedown, I didn’t notice much uneasiness. That is until I was served lunch. There were several intriguing options, I had to make a comprehensive decision between Caesar salad, a vegetarian mozzarella pizza or a turkey and cheese croissant. Naturally given my never-ending love for Italian cuisine I opted for the pizza but it seemed that by the time the food cart reached my row, they were out.

"Fresh Croissant"

Instead, I received a box that read “Fresh Croissant“ in big, classy letters printed on a reasonably attractive shell showcasing a map of Paris. Trading Italy for France couldn't be that bad, surely. But upon opening my small box of doom I was treated to what must have been the remains of a gutter rat, shipped directly from the catacombs of Paris onto my food tray. It‘s hard to describe the shape, consistency, and scent of the box innards without using chemical compositions or comparison to what floats around in a sewer. The temperature also seemed to vary quite a bit from top to bottom, further confirming my theory of it being alive at one point.

Whatever this was, it wasn't a “Parmesan Cheese, Mature Cheddar Cheese & Turkey” croissant.

Order at the border

Once landed I was keen to leave the rat behind and make my way through the checkpoints. I last visited the US in 2015 and have an ESTA, so I was sure I would be able to get through quickly and effortlessly. 

There were only 2 lines, US/Canadian citizens and ESTA/VISA holders, the latter was full of the majority of the passengers from my flight. Because of my seating arrangements, I exited the air tube quite late. The wait was long enough that every so often a disgruntled passenger reached terminal annoyance and broke down before attempting to bargain with the officer who was making his rounds or one of the airport staff members. Results of these interactions varied between total denial and instant gratification. I didn't bother trying to negotiate, I wasn't in a particular hurry, but after thirty minutes of barely any movement, my knees were getting unhappy.

At some point, one of the staffers approached me and asked if I had visited the US since 2008. When I answered positively he immediately pointed me towards line 1. Now, I’m no UX expert but perhaps that information could have been included on the signs. When others within my vicinity heard about my redirection, they promptly followed suit. Soon I was racing most of line two as they migrated like a flock of seagulls to line 1. We waited again.

But that wasn't the end of it. After I checked through the automated migration ATM I had to stand in line again for the final stamp of approval. There were 6 border control officers working that day. Some faster than others and some nicer than others, one, in particular, was having a rough start to the week. To say the least, officer McNasty wasn't exactly welcoming, in contrary, in German there is a word for people like that, we call them “Arschloch”.

He must have smelled the gutter rat on me because he wasn't exactly thrilled when I approached. Our interaction went something like this:

Officer McNasty: “You here for business or pleasure?”
Me: “Both.”
Officer McNasty: “There is no both, there is either business or pleasure. Are you here for business or pleasure?”
Me: “One week business, one week holiday.”

He responded with a frown that would have put my math teacher to shame, but a few minor questions later I finally received the approving stamp as he silently pointed me towards the escalator down to the baggage claim. I was free. Sort of.

Baggage Claim

The first one to spot both me and my suitcase gets a drink at DC Seattle. 

At last, I made it to Seattle, riding into the city I was treated with tall, striking buildings and a glimpse of the Harbour.

Hello Seattle!

Part 2: The venue and playing “Guess who?”

The fortress of not so solitude

This year, DrupalCon is being held at the Washington State Convention Center. Built in 1988, this large 415’000 sqft complex is humongous compared to the European counterparts. It’s also located in what I would call “Downtown” Seattle. Take that with a grain of salt though as I base this on the six hours I’ve been in the city.

The building also sits on top of a freeway, which you can spot and overlook while you’re inside of it, neat!

Seattle

When I first arrived, it took me some time to find the entrance. The building, depending on where you approach it from, is rather defensive and resembles a fortress more than a convention centre (think of the freeway as the moat). Even after finding the entrance, if you come in from the west you’ll have to use 4-6 escalators before you see any rooms. 

After collecting my badge from the friendly volunteers I made my way through the halls and started to look for familiar faces. DrupalCons are always tricky, you end up meeting a lot of people who seem to know you (or not) and I often have trouble remembering if I’ve met them. 

During times like these, I’d like to play the good old “Guess who?” game. The goal is to keep the conversation going until you can figure out who you’re talking to before your cover gets blown. 

Game

Admittedly I've never successfully finished a session, but the strategy I’d recommend is starting the conversation with “Oh wow, it's been quite a while hasn’t it? What have you been up to since we last met?”. Hopefully make your opponent reveal some crucial information about their job, location, and where you met previously. If you're lucky one of these things will tip you off and trigger a spark to put that name on that face.

If you find yourself on the receiving end of my blank stare, I apologize. it's not you, it's me.

The booth, the booth, the booth is unattended

This is one of the first years Amazee Labs doesn't have a physical booth, but our sister company amazee.io does. I was giddy with my freedom to wander and check out the exhibition hall and while it was still under construction. 

If you’re around the exhibit hall you can find some Amazees, of both the io and Labs variety hanging out at the io booth. Come and say hello!

Giving back

While the booth was being constructed several of our peeps dug themselves into the contribution hall on the 6th floor.

John Albin Wilkins

Blazej

Maria

You can easily spot John from about 600 miles away as he overlooks the kingdom of room 6A with his standing desk contraption. It’s a great conversation starter really, for the time I sat there I witnessed several hundred people approaching him and asking about every little detail of his mobile turret unit. 

So if the makers of this product are reading this post I think they should consider making John the official global ambassador of this mobile standup desk unit solution that fits into a backpack and gets a pass from the TSA.

Part 3: Extracurricular activities and the endless consumption of beverages

Monday evening presented itself with several social offerings, amongst which was a pub crawl that was attended by a few of the fellowship.

Walking to dinner

– Image courtesy of Josef Dabernig (@dasjo)

Since I began to fall asleep while walking (I was still running on Zurich time so technically it was around 3 am) I decided to skip the crawl as that would have ended up in a different kind of pizza.

But before that, I realized that for the first time ever, I forgot to pack a toothbrush and some paste. So after taking a nap for about an hour, I was forced to venture out again, this time to find the holy brush.

City

It’s a restaurant

Tuesday evening also saw the Amazee dinner, were we collectively gathered and feasted on quality beverages in a place called “Outlier”. The food was indeed fantastic, some people even dropped phrases such as “this is the best _________ I ever had in a restaurant”. 

Everyone seemed equally amazed about the quality of the provided liquid but not the selection. Which is why several of us left afterwards in search of alternatives to quench one's thirst.

In the end, it was a great, cosy dinner, filled with friends and family alike.

Team Dinner

Part 4: Conclusion and final thoughts

Should you go or should you stay?

So, then you wonder, what's this all about, what is the meaning of this stretched out the first impression? To be honest, I’m not sure. You probably noticed that I didn't compare it all that much to L.A., the reason for it is very simple, there is not much comparing needed.

While the venue and sessions may change, and the outside activities like the pub crawls are fun and inviting, there’s not really a wrong way to do DrupalCon. You can find your own way, roam around freely in town and every now and then you might run into some Drupal people that couldn’t be more different but somehow share the same passion.

Apr 02 2019
Apr 02

Amazee Labs webinars allow us to share our knowledge and experience with the community. Last week we discussed the challenges in choosing the right CSS-in-JS solution and the advantages of using CSS modules.

After a couple of years of building decoupled sites, the Amazee Labs team has tried several different CSS-in-JS solutions and found this one to be best suited to the needs of our development team.

CSS Modules is a mature project with a syntax that is a superset of CSS, similar to Sass. It makes it easy for you to “think in components” without having to worry about BEM class naming. It automatically generates locally-scoped CSS class names, so you can use “.wrapper” in multiple files without conflict.

It also allows integration of “global” class names from other code (like JS libraries or 3rd party CSS). With CSS Modules you get automatic dead-code elimination as only the CSS used on the page is ever sent to the browsers. Best of all CSS Modules can be used with any JavaScript framework, including React, Angular and Vue.js.

Watch the webinar recording online to learn about:

  • Components without BEM

  • Locally-scoped class names

  • Dead-code elimination

  • Multi-platform support

  • Nested rulesets

  • Cross-component composition

  • Sharing variables between your JavaScript and your CSS


Catch up on our previous webinars here:

Sharing knowledge and learnings is a key value at Amazee Labs. Keep an eye out for future webinars here!

Mar 27 2019
Mar 27

We’re excited to attend and present at DrupalCon Seattle this year. Here’s a breakdown of what we’re looking forward to day by day, and information about where you can see Amazee sessions throughout the week.

Monday, 8 April

Monday and Tuesday will be a time for summits, sprints, and BoFs. Be sure to check out Michael Schmid as part of the Performance and Scaling Summit. In the evening you can join the DrupalCon Monday Night Pub-Crawl for community and drinks.

Tuesday, 9 April

In addition to the many summits and sprints be sure to check out the First-time Attendee Networking Breakfast if you're new to DrupalCon. After hours you can join a group run or one of several parties.

Wednesday, 10 April

In the morning, don’t miss the annual DriesNote where you can hear about the current state of Drupal as well as what the future holds. In the evening, the prestigious Splash Awards will showcase the best of Drupal from 2018 in the inaugural global international edition of these awards.

Thursday, 11 April

Thursday will be a day full of Amazee sessions. First up, Maria Comas will host her session GraphQL 101: What, Why, How from 09:45 - 10:15 in Room: 606. Be sure to check it out to get a basic overview of GraphQL and how to get started using it.

Catch John Albin Wilkins and his session CSS-in-JS and Drupal sitting in a tree… from 10:45 - 11:15 in Room: 6B. John will discuss the learnings from Amazee Labs trying several different CSS-in-JS solutions and why we finally decided on using CSS Modules.

In the afternoon, Michael Schmid will present Best Practices: How We Run Decoupled Websites with 110 Million Hits per Month at 13:00 in Room: 6C.

Finally, you can finish out Thursday with the popular social event Trivia Night where you can test out your Drupal knowledge with a chance to win prizes or earn the title of Drupal trivia champions, and win small prizes to boot!

Friday, 12 April

On the final day of DrupalCon, the community comes together to make contributions before saying goodbye until next year. We can’t wait to see all of you at DrupalCon 2019!

Mar 14 2019
Mar 14

Day one

The weather was snowy and cold and caused some transportation delays. Though I arrived later than planned, I was able to attend afternoon workshops and work on some Drupal Contribution projects. The day finished with an Apéro, where everyone gathered for good drinks and great conversations. To finish the night, the Amazee team left to have dinner together.

Apéro

Day two

The 2nd day of Drupal Mountain Camp began with a discussion by a panel made up of Nick Veenhof, Imre Gmelig Meijling, Yauhen Zenko and Vincent Maucorps, to discuss the future of Drupal communities. The panel was moderated by Rachel Lawson. They took questions from the audience members, which included:

  • How can we attract young talent?
    By targeting students, as they have the most time. Having a DrupalCamp in a university shows them what the community has and can to offer. This can also be achieved by getting Universities to add Drupal to the course curriculum. Another way is offering a training initiative or talking to agencies.
  • What can we do about International collaborations?
    Related to the previous question, maybe offer a base camp or training day. This allows those who wouldn’t be able to attend a larger event to learn. Live streaming is a good option for those not able to attend in person.
  • What are the benefits of sponsoring events, such as Drupal Mountain Camp?
    Sponsoring is a great way to find talent and increase brand recognition, particularly to companies that are new.

GraphQL 101: What, Why, How

This session was presented by fellow colleague Maria Comas, as a beginner’s guide to GraphQL. Throughout the presentation, it became clear why GraphQL is so powerful. I really liked the abbreviation WYGISWAF (What You Get Is What You Asked For), because that is essentially what GraphQL does. It will return only the data that you need. Maria showed us how this is achieved through demo code, before letting people know that this is already available in Drupal through the GraphQL module. As it was International Women’s Day, it was fitting that Maria ended the session with the following quote by computer scientist, Grace Hopper.

The most damaging phrase in the language is "We’ve always done it this way!"
- Grace Hopper
 

Maria Comas

Mob Programming: An interactive session

Next was Daniel Lemon, whose session was all about mob programming. Having already introduced a scrum team to mob programming, Daniel wanted to share the experience. This presentation gave a broad overview of mob programming. What impressed me most about this session was that Daniel didn't just want to explain to the audience what mob programming is, but got members of the audience to participate in a live mob session. This meant that those involved and those watching could see how mob programming works.

Participants were tasked with creating a gallery page and menu to the Drupal Mountain Camp site, within 15 minutes, taking turns of 2 minutes each, being the driver or navigator. After introducing the task, the 5 participants were able to create a basic implementation of the gallery page. The session ended with a quick retrospective, in which participants were truly motivated to try this within their own company. Many felt it was a nice switch from the ordinary single-developer experience, but some observed it could be difficult to keep up especially in the role of the driver.

On stage

Splash awards, fondue, sledding, and drinks!

The Splash Awards is about awarding the best Drupal projects of the year. Amazee Labs won an award for Zuerich.com in the category of Design/UX.

During the awards, Jeffrey McGuire treated us to sounds from the Alphorn, which I, personally, had never heard before. The sound produced was truly beautiful. After the awards, everyone made their way to the funicular station to collect their sleds and made their way up to the Belle Epoque restaurant. I was unable to go sledding as I didn’t have the right footwear, so I went to eat fondue with fellow colleagues Victor, Bastian, and Michael. There really is nothing better than ending the day with fondue.

Splash Awards

Day three

Day three started with a keynote, presented by Matthew Grill about the Drupal Admin UI & JavaScript Modernisation initiative, in which he informed us about the current progress of the administration. After the initial showing at DrupalEurope, it was clear that existing modules wouldn’t be compatible. This led to the team creating extension points, which would allow current modules to bundle and transpile the JavaScript to be used with the AdminUI, without having an extra build step.

It was clear that this was still a work in progress but nonetheless, it was nice to hear the latest update about the initiative. After the session, everyone was invited to the group photo. Say “Drupal”!

Group Photo

Current state of the Drupal Admin UI Redesign

The next session was again about the Drupal Admin UI, however, this time about the design. This was given by Sascha Eggenberger and Cristina Chumillas, they both explained and showcased the new design system, wireframes, and the current state of designs the initiative is proposing. It was clear that the design process was long and opinionated after they explained that designing a button wasn’t as straightforward as expected, due to many states and types. The team are hoping for a release in Drupal 8.7. but it was clear, after someone asked, that it seems to be a slow process, that this might not happen in time. It was noted that they also need help from contributors.

If you want to help or just know more about the above, head to the Admin UI & JavaScript Modernisation initiative.

Optimise your JavaScript

Saša Nikolić gave his session on optimising JavaScript. After a short history of the internet, in which I learned that Drupal came before Facebook. Saša also covered data loading. Loading lots of data, with lots of data manipulation is not a good idea for the user as this will slow down page loads.

The session also explained how to address various scenarios and the general rules that every JavaScript developer should be familiar with in order to boost your site’s performance. This includes using tools like Google Chrome dev tools, and Lighthouse. Tree shaking was another suggestion, by including only the functions that are needed. I also came to learn about prepack, a JavaScript bundle optimiser. Another useful piece of advice was to utilise CSS. Why use JavaScript for animations when CSS can take care of this? If unsupported browsers are the reason, leave it out, and make it look graceful as possible. I also enjoyed the joke about “eval() = bad”.

Network was the bottleneck, now it’s JavaScript.
- Saša Nikolić

Open source contribution

This was my favourite session of the day in which I learned about the opinions of Christina Chumillas, Miro Dietiker, Kevin Wenger, Michael Schmid, and Lukas Smith about everything to do with open source. This was an open forum, moderated by Josef Dabernig, in which an audience member was encouraged to ask a question they had about open source.

  • What motivates you to contribute to open source?
    It is concrete, you can see what you have done. People will code review, this will not only help make it better but will make oneself better. On a side note, people should just work together, join forces, this is the mindset of Drupal.
  • What is the advantage of open source software over proprietary software?
    Not only does it help with the maintenance of the code, but having different backgrounds, helps with the innovation of the code. Proprietary software means being on your own, which sometimes is not productive.
  • What is a good way to avoid maintainer burnout?
    Having a coach is a good way to let them, and other people, know of any problems and get help from them. Avoid those that don't have your best interest at heart. Share the knowledge, don't let one person do everything, and don’t let yourself be only one to complete someone just for the credit.

It was really nice to hear those answers and I couldn’t agree more. As someone who loves to contribute to open source, I think the biggest benefit is that your code will only become stronger if you share your code with others. After all, two heads are better than one.

Closing

Lukas Smith gave a very thought-provoking and inspiring closing session titled "Diversity & Inclusion: Why and How?". Lukas shared personal insights into becoming active in improving diversity and inclusiveness. He challenged the audience with some shocking statistics on the low amount of female to male programmers across Switzerland and the United States and then revealed that in open-source this percentage is even lower.

What can we do to better ourselves and improve Diversity? He also finished off the session with several tips to improve Diversity, some of which I find important to highlight:

  • Challenge your cognitive biases.
  • Consider following specifically people from marginalized communities in your chosen field.
  • Believe when members of marginalized communities point out issues with bias even if you have never encountered them.
  • Work on using inclusive language.

While talking about inclusion, I, along with everyone who attended, was happy to see that there were three sign language interpreters at the event. This meant that those who are deaf or with hearing difficulties were not excluded from the camp. This was another reason why this camp was exceptional.

If someone points out an offensive statement, make an effort to not become defensive. Listen, learn, move on.
- Lukas Kahwe Smith

After the closing everyone was invited for the ice hockey match between HC Davos and Rapperswil. This was my first time watching an ice hockey game, so it was wonderful to attend. It was a great match, with both a great atmosphere and great people. With that ended the great weekend that was Drupal Mountain Camp. I can honestly say that I had such a great time, especially spending time with my team and the Drupal community.

Finally, you hear it all the time, “thank you to all the sponsors”, but honestly, it cannot be expressed enough. Without them, great camps like Drupal Mountain Camp wouldn’t be possible.

The Game

Mar 11 2019
Mar 11

It’s hard to imagine life without mobile devices. While a developer controls the display of the site and its structure, editors are the ones adding content to a site on a regular basis. One tool that developers can use with editors in mind is Responsive Preview.

Difficulties during content creation can range from complex interfaces to performance problems. Each of these problems can be multiplied when you add in responsive design.  

Responsive Preview is a module that provides you with a quick way to preview how the website's pages will appear with various screen dimensions.

Benefits

Response Preview helps editors when they need to try out new layouts or add new content to preview the page. This means they can make sure everything works on the most commonly used devices before publishing on the live site. The module provides a quick approximation of how the page and the layout will look on any device.

How it works

From the development perspective, the module creates an iFrame with provided configs. This means it doesn't have to go through the trouble of getting all the frontend code and all the styles compiled and rendered in the backend to show a preview. Instead, we just load the iFrame which displays the frontend view.

The module provides a config entity “Preset” with the fields that describe “device” including  “width”, “height”, “rotation”, and more. On a node view page, there is a select with our options. Selecting an option opens an overlay with a preview of the current page.

iframe

.css({

width: width,

          height: height

     });

This way we get a preview of everything we need. Simply create a controller and put a link to the source attribute of the iFrame.

Responsive Preview Module Screenshot

Conclusion

When creating a site, developers should think not only about end users but about editors who will need to work on the site daily. Drupal is a great solution for content management, but sometimes it lacks ease of use.

It’s not enough to only have a mobile, tablet, and desktop design anymore, as many devices fall in between those dimensions. Phones can be the same size as small tablets and the new iPad Pros have a larger screen than some laptops. Responsive Preview provides the flexibility to configure the module as an admin. This makes it easy to add new presets when new devices are released.

Got a project that needs editor-friendly responsive design? Get in touch with us today!

Feb 26 2019
Feb 26

With the announcement of Drupal 9 we want to talk about how this affects our customers, what to expect when new versions come out and to let you know what we do at Amazee Labs to ensure the transition will be painless.

“The big deal about Drupal 9 is … that it should not be a big deal.”

- Dries Buytaert, Drupal Founder
 

Background

The changes to Drupal between versions 7 and 8 were, quite frankly, enormous. Drupal previously had a justified reputation for doing its own thing and ignoring burgeoning standards and practices utilised elsewhere in the PHP community. So, when Drupal 8 was announced, one of the main goals of the release was to get off the Drupal island and start to utilise some of the millions of lines of open source code and documentation available elsewhere.

There were many great sides to this upgrade. The code was being built on a more solid and tested foundation, principally being based on the Symfony framework and leveraging numerous other systems and libraries. This helped Drupal become more enterprise focussed whilst opening the development field to engineers of other systems who were already familiar with the standards and practices now utilised in Drupal.

Unfortunately, the major technical upgrade to Drupal also introduced some headaches. Migrating between Drupal 7 and Drupal 8 can be time consuming and expensive. As a result of this, businesses who undertook such a migration can be forgiven for worrying about Drupal 9 being released just 5 years after Drupal 8. Some clients have expressed concern about using Drupal 8 when another expensive upgrade seems to be just around the corner.

Why Drupal 9 is different

In short, if you keep your Drupal 8 website up-to-date, there will be no major upgrade worries. The core maintainers of Drupal want to make Drupal upgrades easy forever from now on. The Drupal team has a plan to ensure that Drupal 9 will essentially be a minor process. This is possible because Drupal 9 will be built in the same manner as Drupal 8, with the same practices and core libraries. Unlike Drupal 7 to Drupal 8, there will be no major architectural or structural changes to the codebase. 

The main changes, other than bug fixes, improvements and new features will be the upgrades to Drupal’s core libraries. For example, Symfony 3 (the library upon which Drupal is built) comes to its end-of-life in 2021, so it makes sense to have Drupal 9 running on Symfony 4 at that point.

End of support flow chart

How is this easy upgrade achievable? Well, the Drupal team will continue its 6-month release cycle until Drupal 9 is released. In these releases, the code will be deprecated and upgraded to bring it closer to the components and libraries that will be used by Drupal 9, ensuring that when the time does come to upgrade everything will be in place for an easy transition.

Maintenance is key 

Keeping up with new releases and updates ensures that your website stays relevant and secure, and also means that switching from Drupal 8 to 9 will be much more routine. By partnering with us even after your website is created, we can take proactive steps such as making sure there’s no deprecated code in your site before the newest release.

Feb 15 2019
Feb 15

The recent post on Dries’ blog about REST, JSON:API and GraphQL caused a bigger shockwave in the community than we anticipated. A lot of community members asked for our opinion, so we decided to join the conversation.

Apples and Oranges

Comparing GraphQL and JSON:API is very similar to the never-ending stream of blog posts that compare Drupal and Wordpress. They simply don’t aim to do the same thing.

While REST and JSON:API are built around the HTTP architecture, GraphQL is not concerned with its transportation layer. Sending a GraphQL query over HTTP is one way to use it, and unfortunately, one that got stuck in everybody’s minds, but by far not the only one. This is what we are trying to prove with the GraphQL Twig module. It allows you to separate your Twig templates from Drupal’s internal structures and therefore make them easier to maintain and reuse. No HTTP requests involved. If this sparks your interest, watch our two webinars and the Drupal Europe talk on that topic.

So GraphQL is a way to provide typed, implementation agnostic contracts between systems, and therefore achieve decoupling. REST and JSON:API are about decoupling too, are they not?

What does “decoupling” mean?

The term “decoupling” has been re-purposed for content management systems that don’t necessarily generate the user-facing output themselves (in a “coupled” way) but allow to get the stored information using an API exposed over HTTP.

So when building a website using Drupal with its REST, JSON:API or GraphQL 3.x extension and smash a React frontend on top, you would achieve decoupling in terms of technologies. You swap Drupal’s rendering layer with React. This might bring performance improvements - our friends at Lullabot showed that decoupling is not the only way to achieve that - and allows you to implement more interactive and engaging user interfaces. But it also comes at a cost.

What you don’t achieve, is decoupling, or loose-coupling in the sense of software architecture. Information in Drupal might be accessible to arbitrary clients, but they still have to maintain a deep knowledge about Drupal data structures and conventions (entities, bundles, fields, relations…). You might be able to attach multiple frontends, but you will never be able to replace the Drupal backend. So you reached the identical state of coupling as Drupal had for years by being able to run different themes at the same time.

The real purpose of GraphQL

Back when we finished the automatically generated GraphQL schema for Drupal and this huge relation graph would just pop up after you installed the module, we were very proud of ourselves. After all, anybody was able to query for any kind of entity, field, block, menu item or relation between them, and all that with autocompletion!

The harsh reality is that 99.5% of the world doesn’t care what entities, fields or blocks are. Or even worse, they have a completely different understanding of it. A content management system is just one puzzle piece in our client's business case - technology should not be the focus, it’s just there to help achieve the goal.

The real strength of GraphQL is that it allows us to adapt Drupal to the world around it, instead of having to teach everybody how it thinks of it.

Some of you already noticed that there is a 4.x branch of the GraphQL module lingering, and there have been a lot of questions what this is about. This new version has been developed in parallel over the last year (mainly sponsored by our friendly neighbourhood car manufacturer Daimler) with an emphasis on GraphQL schema definitions.

Instead of just exposing everything Drupal has to offer, it allows us to craft a tailored schema that becomes the single source of truth for all information, operations, and interactions that happen within the system. This contract is not imposed by Drupal, but by the business needs that have to be met.

A bright future

So, GraphQL is not a recommendation for Drupal Core. What does that mean? Not a lot, since there is not even an issue on drupal.org to pursue that. GraphQL is an advanced tool that requires a certain amount of professionalism (and budget) to reap its benefits. Drupal aims to be used by everyone, and Drupal Core should not burden itself with complexity, that is not to the benefit of everyone. That's what contrib space is there for.

The GraphQL module is not going anywhere. Usage statistics are still climbing up and the 3.x branch will remain maintained until we can provide the same out-of-the-box experience and an upgrade path for version 4. If you have questions or opinions you would like to share, please reach out in the #graphql channel on drupal.slack.com or contact us on Twitter.
 

Feb 12 2019
Feb 12

Amazee Labs is proud to sponsor Drupal Mountain Camp in Davos, Switzerland 7-10 March 2019.

Come by and see us in the exhibit area or at one of the social events, and be sure to check out these Amazee sessions: 

On Friday, from 14:40 till 15:00, join Maria Comas for GraphQL 101: What, Why, How. This session is aimed at anyone that might have heard or read about “GraphQL” and is curious to know more about it. The session will give a basic overview and try to answer questions like:

  • What is GraphQL?

  • Is GraphQL only for decoupled projects?

  • Advantages to using GraphQL with Drupal

  • Getting started with GraphQL

Follow this up on Friday from 15:00 till 16:00, with Daniel Lemon who will present Mob Programming: An interactive session. The basic concept of mob programming is simple: the entire team works as a team together on one task at the time. That is one team – one (active) keyboard – one screen (projector of course). It’s just like doing full-team pair programming. In this session you’ll learn:

  • What are the benefits to a team?

  • How could this be potentially integrated into your current workflow

  • The disadvantages to Mob Programming and why it might not work for certain types of companies (such as a web agency).

Additionally, don’t forget to check out this talk from Michael Schmid of amazee.io Best Practices: How We Run Decoupled Websites with 110 Million Hits per Month. This session will lift the curtain on the biggest Decoupled Websites run by amazee.io and will cover:

  • How the project is set up in terms of Infrastructure, Code, Platform and People

  • How it is hosted on AWS with Kubernetes, and what we specifically learned from hosting Decoupled within Docker & Kubernetes

  • Other things we learned running such a big website

Hope to see you in Davos soon! 

Jan 23 2019
Jan 23

What is “Open Source”? Is it really free?

Publishing software under an open source license means that you grant people the right to use, study, modify and distribute it freely. It does not imply that this process is free of charge. The legal framework just ensures that the operator - at least in theory - has full control over what the software is doing.


That being said, charging for open source isn’t common. The simple reason is that it's hard or in some cases even impossible to track where the software is used. Even if the maintainer added some kind of license check, the open source license grants the user the right to remove it, so any effort in that direction is futile.

Most open source developers generate revenue either by relying on donations or charging for support and maintenance. Since they don’t have to provide a warranty for each installation of their code, these strategies can often at least cover their expenses. In some cases, it’s even enough to make a living.

Should my code be open source?

Writing a piece of code that does something useful can lead down three different paths. These three options could be called lazy, crazy and safe. And that makes the decision a lot easier.

1. Lazy: Just keep that piece of code within the project

In the best case scenario, you will remember it if you stumble upon a similar problem four months down the road and copy it over to project B. You will probably find some bugs and do some improvements, but stakes are not high that they will make it back to project A.

In the worst case is that the lines of code are just left and forgotten and the problem will be solved once again, at the cost of the next project B, while keeping the full maintenance costs in project A.

2. Crazy: The solution is super-useful and so fleshed out that you decide to sell it under a propriety license model

Going down this road means serious marketing to achieve a critical mass, providing guarantees and warranty to customers, and paying a host of lawyers to make sure nobody steals the intellectual property or uses it in unintended ways.

This all boils down to starting a*high risk business endeavour*, and in most cases, it doesn’t make sense.

3. Safe: The solution is moved into a designated package

In the worst case, the code just stays in this package and is never re-used. More commonly, it can be picked up for project B, and all improvements immediately are available for project A. The maintenance costs for this part are shared from now on.


And in the best case, this package is made publicly available and somebody else picks it up and improves it in some way that directly feeds back into project A and B.

Advantages of Open Source in an agency

Client Value 

From our perspective as an agency, there is hardly ever a case where open source is not the best option. Our business model is to get the best possible value out of our clients' investment. We achieve that by contributing as much as we can since every line of code gets cheaper if it can be reused somewhere else. Some clients actively encourage us to share projects even in their name and some don’t care as long as we get the job done.

External Collaboration

Our core business value is our knowledge and experience in providing software-based solutions, not the software itself. And as long as our client agrees, we use our position to spark collaboration were it wouldn’t be without us. If we see requirements that pop up across different projects, we can align these and share the effort, which ultimately helps our customers saving money.

Internal Collaboration



Another reason for us investing into open source is our own setup. As a heavily distributed team, information flow and structure is even more important than for co-located companies.
I often see code not being published openly due to tightly coupled design, missing tests, or insufficient documentation.

The investment to increase quality is often billed against “contribution costs” and therefore the first thing to fall off the edge. But it actually is part of “doing your job properly”, since software should also work reliably and stay maintainable if its only used once.

Since proper architecture and documentation become vital as soon as different timezones need to cooperate on a single codebase, contributing has to become the standard process instead of the exception.

Apart from that, threatening developers with publishing their creations has proven to be a terrific instrument for improving code quality.

Open source products

If the produced software, or - more general - produced knowledge, itself is the product or would expose business critical information then it might not make sense to go open source. But even in such cases, interesting exceptions have happened.



Tesla’s heavily discussed move to release all its patents for electric cars to the public back in 2014 is not exactly the latest news. Some praised Elon Musks goodwill, while others called it a marketing stunt. The fact is, Toyota cancelled the partnership with Tesla around the same time and released its first hydrogen fuel cell car. A behemoth like Toyota focusing on hydrogen cells could have become a serious threat to the electric car industry in total. Releasing the patents was a way to strengthen the technology enough to overcome this obstacle. I wouldn’t dare to judge if the undertaking was successful, or if we would be better off with hydrogen cell cars. But this case illustrates how sharing knowledge can be as powerful as keeping it for oneself.



Another example is our sister company, amazee.io, who decided to open source their hosting platform “Lagoon” some time ago. Full transparency on how applications are hosted is a huge deal for technical decision makers, and it becomes a lot easier to gain their trust if they can see what’s going on. Sure, you *could* just grab the code, try to get your hands on some amazee.io-grade engineers, and strap them in front of their computers 24/7 to get the same level of reliability and support. But I doubt there is a legal way to do this with less money than just hiring the creators themselves.

Should everything be open source?

This might ignite some discussions, but I don’t think so. The open source community has suffered a lot from being associated with pure goodwill and altruism. And this has led to serious problems like developer burnout and subsequent oversights that shook platforms as a whole.

The “no license fee” bait did a lot more damage than it helped. There might be no fee, but that doesn’t mean work is for free. Compensation just works through other channels. And if this is not possible, it’s sometimes better to pay for a license than relying on an unsustainable open source solution. 


I personally see open source as a business model that embraces the fact that distribution of information is free. Instead of wasting resources on artificially locking down intellectual property, it focuses on creating actual value. And since I'm making a living of creating this value, I consider this a good thing.

Open Source as a model is one tool that gives us the ability to create innovative and ambitious projects for our clients. Get in touch with us today!

Jan 18 2019
Jan 18

March 2019 sees the return of Drupal Mountain Camp, in the picturesque town of Davos in Switzerland. The call for sessions closes at midnight CET on Monday, 21 January, so be sure to submit your talk today.

We’re proud to be part of the organising team as well as a Gold sponsor for this awesome community run event. We’ve submitted several talks and hope you do the same.

About Mountain Camp

The camp is designed to combine the beauty of the snow-covered Swiss Alps, with the warmth of the Drupal community. It's a perfect combination of fresh tracks for those who ski or snowboard, with inspirational talks by amazing people. This will, of course, be accompanied by some world famous Swiss cheese and chocolate.
 
The camp takes place from 7 - 10 March 2019, at the Davos Congress Centre.

Davos Congress Centre

Final call for sessions

Call for sessions close on Monday, 21 January, so don’t delay, be sure to submit yours today! 

Along with the great sessions, there will be 2 confirmed keynotes. The first on Friday, entitled "The Future Of Drupal Communities", by Drupal community leaders Nick Veenhofand and Imre Gmelig Meijling, and the second on Saturday by Matthew Grill, about the "Drupal Admin UI & Javascript Modernisation Initiative."

If that sounds interesting and you want to know more about the topic submission process, read on:

How can I submit a session?

  1. So you've got something you'd like to talk about, awesome, here's how you can submit a session:
  2. Head on over to the submit a session link.

  3. Think of a catchy title and fill in the Session Title.

  4. What is your talk about? Try to write 4-5 lines about what you'd like to talk about in the Description textbox.
    Note: you can add images if it helps to portray your talk.

  5. Select what kind of Session Type (how much time) you'd like.

  6. Input the appropriate Tracks - you may select multiple if your talk covers various topics.

  7. Select the Level of Expertise - is it more of a beginner talk or does it become quite advanced with technical terms?

  8. Don't forget to add your Speaker Name and Contact Email.


Session Talk

Why should I submit a session?

Preparing and then presenting helps to entrench your knowledge on the topic. You'll also learn from your peers who attend your talk, through feedback and questions.

Be sure to take note of the following, when considering your topic and submission:

  • Giving a talk will require a lot of work and preparation, but don't let that put you off. It will pay off in the end.

  • People who attend your talk are generally looking for help in your specific topic, so this will be a great time for networking.

  • You'll be noticed and people will tell you that you're cool.
 
  • Ok, maybe you don't want to be noticed, and maybe you're fine with not being called cool, but you'll definitely have fun talking.

  • You'll feel way more confident afterwards, which might be a good enough boost for you to jump on a snowboard and hit the slopes on the weekend.


Check out some of these great proposed sessions for inspiration:

I hope this has inspired you! Now go ahead and submit your talk and we'll see you in March in Davos, Switzerland. Till then, follow the Camp on Twitter.
 

Swiss Alps
 

Nov 28 2018
Nov 28

Once I got a task to fix a bug. While bug itself was easy to fix, I had to find the commit where it was introduced. To describe why I had to do it, I have to explain a bit our development process.

Our branching model

The exact branching and deployment workflow may differ from project to project, but we have two mainstream versions. One is for legacy amazee.io hosting and one is for Lagoon.

Here is the common part. The production instance always uses the latest prod branch. When we start to work on a new task, we create a new branch from prod. When the task is tested and demoed, we deploy it. Separately from other tasks.

We do this to speed up the delivery process, and to make our clients happy.

If a project lives on the legacy hosting system, it usually has PROD and DEV environments. For a task to be tested and demoed we have to deploy it to DEV first.

With Lagoon, we have a separate environment for each task, and this is awesome!

The bug I had to fix was on a project hosted on the legacy system. Also the bug was found on the DEV environment, and it was not present on PROD. So one of the active tasks introduced it (and at that time we had lots of active tasks). I had to find which one.

The bug

An element was appearing on a page, that it should not have appeared on.

The project

The backend is built with Drupal. The frontend is also Drupal, but we used progressive decoupling to embed dynamic Vue.js elements. In between - our beloved GraphQL. No test coverage (nooooooooooooooo.com) yet, but we have a plan to add it with some end-to-end testing framework. Most probably it will be Cypress.

Cypress

It's a modern e2e testing framework. It has lots of cool features, and some of them, like time traveling, help you not only to write tests but to develop in general. Just watch the 1-minute video on the Cypress website and you'll love it.

Git bisect

This is a very easy and very powerful Git tool. To make it work, you just need to give it three things:

  • a commit where things are good
  • a commit where things are bad
  • a command to test if things are good or bad

The result would be the first bad commit.

Docs: https://git-scm.com/docs/git-bisect

The search

Finally, I can share my experience in combining these two tools.

Since we don't yet use Cypress on the project, I installed it globally on my machine with npm i -g cypress and created cypress.json in project root with {} contents. That's all Cypress needed.

To run Git bisect, I used the following commands:

The my_test.sh was looking like this:

(I actually was lucky that for Drupal I only had to run cache clear after each Git jump. If, for example, there would be Drupal core updates in between bad and good commits, then running drush cr would not work. But in this case I could install Drupal every time from an existing configuration. It would have been a bit slower.)

And here is the Cypress test which I put into the path/to/vue/cypress/integration/test.js file:

It took a little time to set this all up. The result was good - I was able to identify the commit in which the bug was introduced.

Sum up

Modern e2e testing frameworks are easy to set up and use. They can do more than just automated testing. All it takes is some your imagination.

For example, once a colleague of mine had a task to do a content update on a project using an Excel file as a source. One way to do it was to do everything by hand, copy-pasting the data. The other way would be to write a one time importer. But instead, he turned the Excel file into JSON data and used TestCafe to do the click-and-paste job. This was faster than the first two options. And it was quite cool to see the visualization of the automated task - it's so nice when you can see the result of your work.
 

Nov 27 2018
Nov 27

Over 300 people attended this year, many of them backenders but also frontenders, designers, business strategists, and other stakeholders all coming together to share learnings, experience, and excellent local beers in the city of Ghent.

DrupalCamp Ghent was organised by the Drupal community, and we want to say  thanks to all the organisers for making all of this possible, with a special mention to Peter Decuyper who enlightened us with his sketch notes of the sessions.

It is the essence of camps to make the (difficult) choice between the sessions you will attend, so here are the highlights of the ones that we attended.

The organisers paid extra attention to the relationship between sessions, so many talks nicely complemented each other.

Decoupling and the future of Drupal: about UX, code, design and humans

The position of Drupal is constantly being re-evaluated. One of the values of the Drupal is paying attention to the people. The work of these last months brought one more time the proof of this value by covering a large variety of persona.

Authors and site builders

UX was covered in many ways, Clément Génin has been debunking the myths about user-centric design, and he explained the what by talking about a mindset and not a magic formula that can be applied on an existing project. I perceived his session as a way to build a love story between the designer and the end user.

Cristina Chumillas demonstrated the how by showing us the path that was followed for the Drupal Admin UI since 2017 and what we might expect for Drupal 8.7. If you want to help or just know more about this work, head to the Admin UI & JavaScript Modernisation strategic initiative.

Preston

Preston So gave us even more perspective, he started his keynote with the history of the Drupal frontend to continue with the emergence of wearables, digital signage, augmented reality, and conversational UI. Then, he introduced the concept of contexteless / universal editing with a multipolar Drupal that can reduce the custom work needed for decoupling. A good example of this trend is GraphQL. Content is like water: when the shape changes, it should adapt to its context rather than being context specific.

When it is about content, the editor is one of the most important stakeholders. Ruben Teijeiro provided a few answers to problems like page refresh, too much site building, or keeping the link between content editing and decoupling. Among other solutions, he mentioned modules like Elementor, Content Planner, Glazed Builder or Editable.

Designers

Dries Van Giel gave us an introduction to Sketch, a fully vector-based tool suited for web design, that leverages features like components (symbols), shared styles among documents and element export in multiple formats. This meets the current approach of component-based design (like Pattern Lab or Fractal does) and reusability.

Developers

GraphQL is all the rage nowadays, Peter Keppert talked about

  • When to use decoupling: multiple frontends for one CMS, Single Page Apps, …
  • The benefits of using GraphQL for that purpose: a self-documented schema, that is strongly typed and that allows to cache queries in the database.
  • The points that need attention compared to other solutions: possible information disclosure and the complexity that induces a change on the team.
  • The integration in the Drupal contrib ecosystem with Paragraphs and Box

GraphQL

Fabian Bircher explained how the Configuration Management (CMI) has evolved since Drupal 8.0. At the time, it was designed to cover the basic flow of deploying without modifications. Contributed modules have implemented several other use cases like configuration split or ignore, Drupal 8.6 added the installation of a site from a given configuration and Drupal 8.7 will introduce the new ConfigTransform service. Using Drupal as a product can also be implemented with the Config Distro module.

With his typical sense of humour, Branislav Bujisic gave us an introduction to Functional Programming. The foundation of his session was a comparison between Alan Turing states and Alonzo Church functions. He introduced concepts like immutability, static typing, and side effects elimination to improve testing and caching (memoization), with a control over complexity and more performant code. Even if PHP is not a functional language, a few of these principles can still be applied. Truly inspiring!

Testing and code quality

If you are looking for a way to contribute back to the Drupal, a lot of core and contributed projects needs manual testing. Just have a look at the 'Needs review' status on the Drupal issue queue. Automated testing is also welcomed, Brent Gees gave us all the keys to get started seamlessly with Unit, Kernel or Functional tests in his presentation How to get started with writing tests for contrib.

When it is about client work, the time that can be spent on tests may be more limited, and the approach is more about testing the assembly of components, so a pragmatic solution is to use fast Functional Testing with solutions like Behat. Tom Rogie showed how to configure Behat for several environments and browsers in a Continuous Integration workflow, but more importantly, what to test.

Improve easily the quality control tomorrow in your projects. Yauhen Zenko provided a nice way to run tools like PHP Linter, coding standards compliance and mess detection, wrapped in a Composer based solution.

Search

Joris Vercammen covered the best practices for Search API configuration, demonstrating in the meantime that most common use cases can be covered by a plain database server.

For a live demo, head to http://drupalsear.ch, that exposes most Search API features with the new Drupal Umami profile.

Advanced topics like machine learning and AI were illustrated by the maintainer of the Search API Solr Search module and the Solarium library, Markus Kalkbrenner with streaming expressions, graph queries and the inner workings of the Solr, sweet!

DevOps

Serverless is a buzzword that can lead to confusion. Robert Slootjes explained it with Functions as a Service (FaaS) and the action of removing the hassle of server provisioning and scaling.

Thijs Feryn, the author of a Varnish book, adopted the perspective of caching by diving deep into the http protocol. It was nice to get detailed explanations about the foundations of the web and the Symfony framework. The session was also demonstrating that Drupal already implements most of the best practices regarding caching.

It was awesome to see how many things can be learned in such a small amount of time, and we are already looking forward to the next edition!

Dinner closing

Nov 21 2018
Nov 21

For the past ten years, the Drupal community organises a yearly DrupalCamp held in various cities of Belgium. This time, it will take place in the lovely city of Ghent.

As usual, the organisers are broadening the audience of this event with content aimed at developers, designers, site builders, and business strategists. They also contribute to this goal by maintaining low ticket prices.

The sessions are raising the bar too, with hot topics such as search, accessibility, functional programming, chatbot, testing, GraphQL, and serverless.

I’m excited to take this opportunity to enjoy the community, expand upon my knowledge of the Drupal ecosystem, and prove once and for all to my fellow Amazees, Dan and Vijay, that there is no comparison between Belgian and Swiss chocolate.

View the full programme here.

Oct 31 2018
Oct 31

Join us on November 5th for the Zurich Drupal Meetup at the Amazee Labs Zürich office.

Agenda

  • The File Management Module for Drupal 8 - Lightning talk + Q&A by David Pacassi Torrico
  • Outlook Drupal Switzerland Activities 2019 - Discussion by Josef Dabernig (Amazee Labs)
  • Propose your topic in the comments!


General Information 

The Zurich Drupal Meetup is dedicated to people interested in the Content Management System & Framework Drupal.

We welcome everybody from beginners to Drupal ninjas and would be happy to see you present a recent project of yours or talk about any other Drupal-related topic.

Talk Formats

  • Lightning talk (max. 10 minutes)
  • Short talk (max. 25 minutes)
  • Full talk (max. 45 minutes)

If you would like to join us, sign-up here: https://www.meetup.com/Zurich-Drupal-Meetup/ 

Oct 23 2018
Oct 23

A full rebuild of a website can be a time consuming and expensive process. Upcycling is an incremental approach to relaunching existing websites. This blog will explain more about what upcycling is and why it might be the right choice for your website

Why upcycle?

Most websites will be rebuilt every three to six years to keep up with online trends, because of technical debt, or simply to refresh their appearance. At Amazee Labs, we have helped many clients transition from their legacy web systems onto Drupal 8 but not everyone is ready to do the move all at once. This is where upcycling can come into play.

As upcycling is intended to be an incremental approach it might not be suitable for every use case or every client. Upcycling de-prioritizes the “one-big-bang-launch-wow-effect” and allows us to partner with our clients to meet one primary goal: reduce time to market for big website improvements and maximising the value of time spent.

When to upcycle?

If you have a well-established web system that has been operational for several years, and you aren’t ready to spend the time and money to do a full rebuild, upcycling might be the answer.

Upcycling Process

As you can see, upcycling can be performed at any stage of an existing web project. Depending on the size of the upcycling project, we might transition from the maintenance and extension mode back to implementation. Alternatively you might do a smaller upcycling project within the maintenance & extension cycle. Large upcycling projects will often mean moving all the way back into a conceptual consulting & discovery mode before we start implementing new features or functionality.

What to upcycle?

We’ve designed an upcycling questionnaire to guide the conversation with the customer with regards to different aspects of the website. Although these are common areas for upcycling, we use this questionnaire as a starting point to discuss what will be the best fit for each project.  

Upcycling Areas

For each of these upcycling areas, we have a set of questions to validate the potential and need for upcycling. For example, when we talk about design we would ask if the look and feel of the website is perceived as outdated or if there are any inconsistencies within the current design implementation.

If we identify an area that could benefit from upcycling, we will provide a set of recommended steps for improvement. In this case that might be a design refresh, establishing a design system, or rebuilding the frontend.

We also provide upcycling case studies to show our clients what is possible with upcycling, and help build on their ideas to improve their website without starting from scratch.

How to upcycle?

Upcycling demands that we are in a position to split things up.

An example is Sonova.com. The main website has been running on Drupal 7 since 2014. Last year, we started relaunching individual country pages using Drupal 8. These new pages allow the content managers on the client’s side to benefit from the better editorial features of Drupal 8 early on without needing to wait for a relaunch of the entire website. Gradually we keep relaunching country page by country page on Drupal 8.

Upcycling Sonova Drupal 7

Sonova Country Page Version in Drupal 7

Upcycling Sonova Drupal 8

Sonova Country Page Version in Drupal 8

The next step in upcycling this site will be a relaunch of the main website on Drupal 8. When we are ready for that step we can build upon the incremental steps we started for the country pages.

As well as the additional editorial features, we also worked with the client to choose a different Drupal theme. . This means sites running on Drupal 7 feature a different design than the sites running on Drupal 8. So instead of merely optimizing for consistency across all country pages, together with the client, we chose to allow to innovate and bring newer design versions to the local markets without waiting for the relaunch of the whole site.

How does upcycling relate to decoupling?

If your site has some complex backend logic that you don’t want to rebuild but you are eager to relaunch the frontend, upcycling could be the solution. Usually, we would relaunch the frontend within Drupal’s theme layer. But in certain cases, it makes sense to relaunch the frontend as a decoupled site and then integrate the existing backend. We recently did this for a customer that wanted to get started with Drupal 8 but had some complex Drupal 7 Backend logic that needed to be maintained.

On the other hand, if the backend really needs an overhaul and you want to keep the existing frontend without rebuilding it, upcycling could work for that too, after decoupling the backend.

Decoupling your architecture will enable you to upcycle individual parts and bring value to the end user faster but it also comes at a price of added complexity. In the end, it’s important to compare the advantages and disadvantages

Pros of upcycling Cons of upcycling

Get the most out of your existing website infrastructure

Benefit from user experience, design or frontend performance improvements without the need to wait for a big relaunch

See your investments as quickly as possible

Potentially added complexity when maintaining two systems at once.

Potentially inconsistencies in the appearance if sections are upgraded separately.

Partly you need to invest into a legacy platform rather than spending everything on the new one

More details on upcycling can be found in this presentation.

What’s your experience & challenges when it comes to upcycling? Do you have an existing project that you would like to improve? Let us know in the comments or reach out via the contact form.

Oct 11 2018
Oct 11

The second Amazee Labs webinar took place last Friday, 28th September 2018. Philipp Melab gave a stunning presentation on “Atomic Design in Drupal with GraphQL & Twig”. Here's a short recap of what we learned together.

We kick-started the webinar with a summary of what we learned in the first webinar, in case you missed that you can read up on it here. This time our focus was to build a real-world example website for a fictional web agency called Amazing Apps.

Amazing Apps design

Philipp wanted to pack as much information as possible into the webinar, so he set up a Github repository with everything you need to get started. We were shown a brief design of the end goal then jumped straight into the meat of the presentation by dissecting the git history of each commit in the repository together.

Clean, concise, & a well-structured frontend.

Fractal is a tool to help you build and document web component libraries and then integrate them into your projects. We were led through the basics of what Fractal provides as a starting point. Then we jumped through the repository to a point where we had a couple of components built, along with colours defined using CSS variables along with demo text content.

As part of Atomic Design, we explored and learned the use of atoms, molecules, and organisms. Atoms demonstrate all your base styles at a glance, such as a logo or a button. Molecules are UI elements containing two or more atoms functioning together as a unit, such as a menu. Organisms are relatively complex UI components containing multiple molecules, atoms, or other organisms, such as the header or footer.


fragment Menu on Menu {
  links {
    label
    url {
      path
    }
  }
}

Once we got to the menu component, we were treated with the first GraphQL fragment, from here we could navigate up the templates from molecule to the header organism, and then to the page layout template which called the twig block named header. We can then override these blocks with the use of the twig tag extends to inject our Fractal based templates as necessary along with our GraphQL fragment.

GraphQL Twig should be used to decouple things where it makes sense, building a fully decoupled solution still costs a lot regarding development; therefore GraphQL Twig is the right solution to enhance and modernise a site in a feature based manner.

Learnings as a webinar host

It was our second webinar, so we had a few learnings from our first edition which we incorporated into the new session. We made sure to start earlier with the marketing campaign to ensure a good turn out, and ideally a larger audience; we ended up with over 40% increase in the total audience!

Check out the Github repository and accompanying videos:

Amazee Labs would like to thank everyone who attended the live session, we enjoyed being able to share this with you, and we look forward to hosting another Amazee Labs webinar in the future.

You can watch the entire webinar here:

[embedded content]

Sep 19 2018
Sep 19

So here we are, post-Drupal Europe 2018. Talks have been given, BOFs attended, way too much coffee and cake have been consumed, and now I’m tasked with summarizing the whole thing.

The problem faced by anyone attempting to wrap up the whole of an event as momentous as Drupal Europe is that you have two options. On the one hand, you can give a fairly anemic bullet-point summary of what happened and when. The advantage of approaching a summary like this is that everyone who was at Drupal Europe 2018 can look at the list and agree that, “yes, this is indeed what happened”.
Fair enough. Maybe that would be a better blog?

But that’s not quite what I’m going to be doing since (as you’ll find in the links below) my colleagues have done a stellar job of actually covering each day of Drupal Europe in their own blogs. What I’m going to do, rather, is tell you about my Drupal Europe. And my Drupal Europe was far less about talks and BOFs (and coffee and cake) than it was about the people in the Amazee Group and the Drupal community in general.

Reasons to get off the Island

For background, I live in a smallish town (we have a mall and everything) down here on the South of the North Island in New Zealand. Getting myself to Darmstadt involved nearly 30 hours in those metal torture tubes we commonly call “airplanes”. Under most circumstances I’d avoid this kind of travel, but Drupal Europe was an exception because it presented me with the one opportunity I had this year to spend time with and around my teammates in Amazee Labs Global Maintenance specifically, and the rest of the Amazees at the conference in general.

I came to Drupal Europe in order to have the kind of high-bandwidth conversations that (very) remote work almost never allows. It allowed me to meet some of my colleagues in person for the first time, in some cases people who I’ve been speaking and interacting with online for more than a year. Outside of the hours of strategic meetings we all had, it was a joy spending time sharing screens IRL and looking at code, eating kebab (so much kebab), and (wherever we could) doing a bit of real work in-between.

And while my reason to get off my island was really my colleagues at Amazee -- being present, alongside, and with them -- the importance of the wider Drupal community is not lost on me and attending Drupal Europe highlighted to me, once again, just how special that community is.

Beer hall at dusk

We’re hiring, by the way.

In her deeply moving talk about her journey from being a freelancer to being the Head of Operations for ALGM, Inky mentioned the principle of Ubuntu. This ethical and metaphysical principle is often rendered in English as “I am because we are”. In one interpretation, at least, it suggests that our existence as individuals is inextricably intertwined with the existence of others. I think that something like Ubuntu is true of both Amazee and the wider Drupal community.

What makes Amazee special is the remarkable individuals that comprise it, indeed, I doubt I would’ve been as enthusiastic as I was to travel so far if they weren’t remarkable individuals. But I have to wonder whether those individuals would shine quite as brightly in any other company? Amazee gives us the space to be the best we can be and whatever shine we have as individuals makes Amazee glow that much brighter.
Zooming out a little, Amazee, as an organization, would not exist as it does without the wider Drupal community. And the Drupal community would be poorer, at least in my opinion, without the work that Amazee does.

It’s circles within circles within circles, each strengthening the other.

Showing your work.

This was a theme in the Amazee talks at Drupal Europe. Stew and Fran, in their discussion of Handy modules for building and maintaining sites ended things off with a note encouraging everyone who manages to solve a Drupal problem to consider how they might contribute it to the wider community. Indeed, Basti made this the theme of his entire talk, discussing the benefits of open sourcing your work and the material advantages the IO team has experienced by open sourcing their platform, Lagoon. And in terms of open sourcing code, Stew’s talk on Paragraphs has already lead to the creation of a brand new Drupal.org module from an internal Amazee project. Is this an example of upcycling, hmm, Josef?

Stew and Inky, showing their work.Stew and Inky, showing their work.

We’re off the Island now, time to go farther.

Speaking of circles, in some respects the move in the Drupal community in the past few years has been to expand our circles even further into the wider programming communities. Drupal 8 adopted much “external” code from the supporting PHP communities. But to some extent, we’re moving even further away from the Drupal island than simply playing-nicely with the PHP community. Decoupling Drupal, a major research topic right now, is at least in part about getting Drupal to be less monolithic, for it to serve content to systems and in contexts that aren’t necessarily Drupal specific. It’s no exaggeration to say that Amazee is ahead on the curve on this, as was evidenced by Michael and Philipps' talks. Michael discussed the “implications, risks, and changes” that come from adopting a decoupled approach, while Philipp simply dazzled a packed room with his demonstration of staged decoupling with GraphQL integration into Twig.

Drupal Europe art installation

This was Drupal Europe.

This was Drupal Europe. Not just talks, or coffee, or BOFs, or the (delicious) lunches. Rather, it was the opportunity to really dive in, experience, and behold the interlocking circles of individuals, friends, companies, and community that holds this sprawling structure we call the Drupal ecosystem in place. To get a sense where we are and where we’re going.

Previous Drupal Europe Blogs

Sep 14 2018
Sep 14

Vijay tells us about the fourth day's highlights in Darmstadt, Germany.

Keynote

The 4th day of Drupal Europe began with a discussion by a panel made up of Dries Buytaert, Barb Palser, Heather Burns, Hurley Mautic, and Timothy Lehnen, about the future of the open web and open source. Some interesting points were made, especially how we have the responsibility of making open source better, and how we can better protect the four software freedoms principles.

First session

Decoupled Drupal: Implications, risks and changes from a business perspective

Next up was our very own Michael, who gave a presentation on Decoupled Drupal. Some interesting points were made in this presentation. As a developer I love the fact we can experiment with technology, however, I never really gave a second thought about how this can have an impact, both for the company and potential clients. Decoupling for sure has success and failures that we all are going to experience. For example, time to train the team to be up to date with the latest technology and with this come cost. In the end, however, it is an investment. One clear message from this presentation that I took was we should expect failure, and we should not get discouraged by it, but rather learn from it. We should also celebrate the success.

JavaScript Modernisation Initiative

The third presentation I went to was the JavaScript Modernisation Initiative, presented by Lauri Eskola, Matthew Grill, Cristina Chumillas, Daniel Wehner, and Sally Young. As a contributor to this initiative, it was great to hear how this idea came about as this was something I didn't really know. I came to learn that it all began at DrupalCon Vienna, where the idea of how to create a decoupled backend, with a redesigned, and modern administration experience in Drupal came up. As of now, the product is clearly in the prototype stage, with plans to remove the current implementation of Material UI and update using the design created by Christina, which is in the early stages of concept. If you would like to get involved in this initiative, you can find out more on the Drupal website.

Improving the Editor Experience: Paragraphs FTW

After lunch, it was time for Stew to give his second presentation of the week, this time on his own. His presentation was all about paragraphs, a beginners overview of using paragraphs to make the editors experience more fun. Stew went on to explain how to give more control over content layout, and the pros and cons of some of the contrib modules that support paragraphs. Even though this presentation was about Paragraphs, Stew did mention that there were other alternatives to this great module. Way to go Stew, two presentations in one week.

Stew's session

Decoupling Drupal with GraphQL & Twig

The final presentation I attended was by Philipp. He explained what GraphQL is and what it is not, and how much more it can do, such as Search API indexing, and feed Twig templates. One exciting part of this session was the reuse of fragments, meaning you can write one query and reuse it across many templates. It is clear to see why GraphQL is very popular, however, one interesting point that was brought up was that it isn't the same as injecting SQL into Twig. Phillip responded by saying a GraphQL query is not something that is executed, it is a definition of requirements, which you request from the implemented backend. Phillip also thanked Sebastian Siemssen, who happens to be both a core maintainer of the GraphQL module and an ex amazee.

Phillipp's session

Closing

After the conference, we headed back to the hostel to refresh and then headed out to eat for our final night in Darmstadt. After that we headed back to the venue for trivia night, this was my first time at trivia night, and it was full of fun, great people, atmosphere, food and drink, and great questions. After six rounds of questions, lots of laughter, and a small hiccup with their Google doc, the scores were tallied, and team 16 had won first prize, of which included Stew and Mostfa.

Winners

You could also say that Day 4 was pretty “Amazee-ing” with lots happening with our team. Congratulations to all from everyone at Amazee, both at the conference and those left behind.

I would also personally like to thank the Drupal Association for giving me a diversity ticket without which I would not have been able to attend this great conference and have a week of both excellent presentations and being able to continue to contribute to great initiatives.

Sep 13 2018
Sep 13

Mustapha tells us about the third day's highlights in Darmstadt, Germany, and some exciting announcements!

Drupal Europe 2018 - Wednesday 

The third day of Drupal Europe was a big day, we had the prenote and the Driesnote with some exciting announcements, the group photo, and a lot of interesting sessions.

The Prenote:

Our big day started at 8:15 with the prenote, which is very important because it shows you how awesome this community is. We were singing together and laughing very loudly about some "geek" jokes which would seem strange to others but not to us because we are living those jokes each day. The prenote is important because it makes you feel that you're not lonely, but you have all this family from around the world.

prenote

Driesnote:

At every Drupal conference, Dries Buytaert, the leader of the Drupal project, shares updates on the current state of Drupal and makes some announcements on the way forward.

Dries

He firstly spoke about the Drupal 8.6 release which has some great content management improvements, which can be discovered here. Then the announcement party started and here are some of the highlights: 

- The adoption of React and JSON API to build a new decoupled administration UI.

- Drupal 9 will be released in 2020.

- Drupal 7 will have an end of life by 2021.

- Drupal 8 will too have an end of life by 2021, but it will be an easy upgrade to Drupal 9.

- Drupal.org <3 Gitlab: drupal.org code will be moved to Gitlab.

- There will be a Drupalcon next year organized by the Drupal Association and it will be held in Amsterdam.

Amsterdam

After those exciting announcements, everybody went outside the Darmstadtium for the Group Photo which was taken by our own, Josef Dabernig.

Talking about Josef, he had a great a session entitled "Upgrading vs. Upcycling - How to stay ahead of the curve". It covered the life cycle of a Drupal project, how to audit your Drupal website, and which improvements you can propose to clients.

Josef

Last but not least, after such an exciting day, we went to do our Amazeeng "Team Dinner" and finished off our big day with lots of fun.

Team dinner

Thursday's Program: 

Thursday's speakers:

Sep 12 2018
Sep 12

Maita tells us about the second day's highlights in Darmstadt, Germany!

Tuesday, Day 2: Drupal Europe 2018.

From day one I was blown away by Darmstadt and seeing so many of the Drupal community all in one place. This is my first big Drupal event and I'm so glad to have this opportunity. 

One of the things I struggled with, was choosing which talks to attend. How do you know which one is most beneficial? I did my best to choose sessions I found interesting, and listening to Benjamin talking about Dynamic Virtual Reality apps with decoupled Drupal did not disappoint.

Drupal Europe

After the first session, we had a long lunch break and I can happily say that the food was amazing. We shared some Drupal stories over lunch and found that everybody has a different story. That's what makes the whole event and the Drupal community, so special.

Drupal Europe

After lunch, Tim and I attended Willy Wonka and The Secure Container Factor where Dave Hall gave us great tips on how to make our containers more secure and how to shorten our build steps. We also got to indulge in a small chocolate treat. We have recently started using Docker, so I felt attending this session would shed more light on it, especially when there's a lot of chocolate involved.

Drupal Europe

The next session, after lunch, was Fran and Stew's on choosing the right modules to install when building and maintaining Drupal websites. They gave a list of modules which were a must to install, as well as a detailed explanation of their benefits.

Handy modules when building and maintaining your site 

Drupal Europe

Another session that happened around the same time was Basti's. He talked about the benefits of open sourcing code. He mentioned how last year they (amazee.io) open-sourced all the code that runs in their production environment for everyone to see and contribute, and how it made a huge difference for their team and managed to speed up development. His main point was to encourage people to start getting open to the idea of open sourcing their code.

Basti

The last session of the day was from Inky. She gave a very intimate talk on her journey to becoming the Head of Operations for the Amazee Labs Global Maintenance team. She talked about the good, the bad and the ugly and how all that made her the most suitable person for the job.

Drupal Europe

There were a lot of other happenings throughout the day, that I, unfortunately, didn't manage to attend. Next time I am going to get myself a Time Machine so I can be in two places at the same time and I don't have to miss out on anything. Until then, I'm grateful that each session is recorded. See you tomorrow, Drupal Europe!

Wednesday's Program: 

Wednesday's speakers

Sep 11 2018
Sep 11

Stew gives an account of the first day's events in Darmstadt, Germany: team bonding, furniture assembling, and community.

Monday, Day 1: Drupal Europe 2018.

Picturesque buildings from history surrounded me, as I looked out the window of our hotel room at Hessenpark Open Air Museum, just north of Frankfurt. The Global Maintenance team workshop weekend was about to draw to a close and a week of Drupal Europe was about to begin. This would be my first international Drupal event, ever!
 

Hessenpark Museum


Our morning started with a delicious continental breakfast and strong coffee. The team went for a productive 'walk and talk', discussing ideas about our international and growing team, multiple projects, and how we will manage maintenance and new features.
 

Hessenpark Natural amphitheatre


From there, we all took off for Darmstadt, saying goodbye to Kathryn and Kristy (who were headed back to Austin, Texas) and Jason and Ltisch (heading to Zurich).

Walking into the enormous conference venue was a treat, seeing all the sponsors and companies putting up their stands and displays. I even got to see Dries walk by. I didn't think I'd be such a fanboy, but my smile was brimming. While Tuesday is the official starting day, there were several workshops already occurring when we arrived.
 

Darmstadt stadium

We constructed our Amazee lounge and it almost became a team building exercise. We got to use the trusty tools we brought all the way from South Africa to open boxes but found that well, everything was included. Of course, reading the IKEA manual helps...

The Amazee Global Maintenance team setting up the Lounge

After that, we got served a delicious lunch at the venue and then caught up with some work and conference preparations.

Amazee LoungeThe end result: The Amazee lounge couch.

We found our DJH Youth Hostel and got checked in, only to quickly go out again to share a Thai dinner which was very, very good.

As I complete this blog I am sitting next to Amazees from around the world: Mustapha (Tunisia), Michi (USA), and Basti (Switzerland). It's a great feeling when the team gets together from around the globe and I can't wait to see what tomorrow will bring. Check out some Amazee sessions and stop by our lounge to kick back and relax.

Tuesday's Program: 

Tuesday's Speakers:

Aug 31 2018
Aug 31

Agile Lean Europe is an unconference event that visits a different country each year and brings together people from across the continent. Agile practitioners and thought leaders come together for a 3-day event to share ideas around the topic of power transformation.

Being a regular DrupalCamp attendee, I was excited to visit a more Agile-focused conference. Agile Lean Europe uses Open Space Technology to facilitate an environment where ideas are created and shared in real-time and that allows everyone to contribute to the program. Steve Holyer, who is a familiar face at Amazee facilitated or “held” the open space.

The Kraftwerk Innovation Space that hosted the event served as an excellent environment for up to a dozen parallel sessions. In contrast to my usual conference experience, the unconference format was much more interactive in the way the sessions were presented. Let me walk you through a few of my highlights.

Agile Lean Europe Crowd

Manuel Küblböck from Gini did a session about “Decision-making when there are no bosses”. His view is that efficiency can be gained by focusing on consent over consensus. Rather than trying to have all parties agree on a proposed change, you emphasise working out strong objections and then test the idea. Decisions are always made by those who carry them out and people who are impacted can give input. Check Manuel’s tweet for further information.

Momchil Brashnayanov from FFV presented a session on agile for service agencies, which was a great opportunity to discuss common challenges such as, how best to integrate customers into our workflows, how to focus on value instead of features and what contract frameworks best support agile collaboration. Like a couple of other sessions, Momchil applied the lean coffee format where we all gathered topics, clustered them and then iteratively discussed them and decided when to move onto the next topic.

Agile Lean Europe 2018

Peter Stevens shared his insights and tools around personal agility. It was refreshing to see agile principles being applied to one’s personal life. Similar as in a project, life goals would get mapped to tasks, prioritized and moved along a kanban board. More information can be found on the related website.

Nicola-Marie O’Donovan discussed her experience working in a scaled agile environment and enabling teams to do a social plan roadmap together. Each team defines their vision and team projects upfront and then all gather to discuss the dependencies they have across teams. The teams then use the space to resolve all dependencies and get ready for implementation. She also has a medium article regarding that.

Agile Lean Europe 2018

I particularly enjoyed the Clean Language session by Olaf Lewitz. In a very interactive way, we experienced how different and difficult it can be to apply such a tool. Clean Language enables you to have a conversation while trying to inject as little of your own views into the question and focus fully on your conversation partner. In other words, instead of reflecting things, the focus is on getting a better understanding of the topic from the perspective of your interview partner. More information available.

In addition to the talks mentioned above, ALE18 had a lot more to offer. The keynote “Going where no one has gone before” on Yle’s agile transition by Mirette Kangas and Antti Kirjavainen from Finland, was full of inspiration and good advice, and so too was the [email protected] session by Paolo Sammicheli.

Agile Lean Europe Participant

I particularly appreciated the side program that was put together. Conference attendees partners and kids would organize a city program. Random attendees were able to connect in the evenings by signing up for “Dinner with a Stranger”.

The 3-day conference left me with tons of insights to the process. A few notables being tools like Powerful questions, or Minimum Viable Bureaucracy, models such as the Satir Change Curve or books such as The Preservation of the Agile Heart.

Agile Lean Europe 2018

Interested in more visuals from the conference? The ALE18 Official Album contains a good number of impressions. Also, check out the #agilekaleidoscope by Gaël Mareau and my album on Flickr.

Agile Lean Europe 2018 was all about power transformation. One key insight for me was that Agile is less about following a strict process, and more about you being able to adapt a variety of tools to your current challenges and requirements.

Thank you to everyone who participated and contributed and for making me feel transformed. Special thanks to the organizing team and sponsors who supported the event!

Curious about the next one? Follow Agile Lean Europe on Twitter.

Aug 30 2018
Aug 30

Drupal Europe is coming up in Darmstadt September 10-14. Let me walk you through my favorite aspects of the conference.

This large-scale conference is entirely community-organized by a very dedicated team of volunteers. Drupal Europe will feature 187 sessions within a wide variety of topics. Diversity was also a goal that the program team worked for and 30% of the sessions have a speaker that identifies being part of an underrepresented group.

The organizers decided to give an interesting twist to the program. In contrast to traditional categories like “Development”, “Design” or “Project Management”, industry tracks are in focus. Drupal Europe, therefore, should be much more appealing to the decision makers who want to evaluate or share their experience using Drupal.

Publishing + Media focuses all on the media industry and what Drupal can bring to the table there. Expect case studies around Burda’s Thunder distribution or Content editing related sessions. I’m looking forward to seeing Building high-performance Thunder sites by former colleague Wolfgang Ziegler.

From Amazee our colleagues Stew West and Fran Garcia will talk about Handy modules when building and maintaining your site as well as Improving the Editor Experience: Paragraphs FTW.

Drupal Europe 2018

Digital Transformation + Enterprise is all about large-scale clients & projects leveraging Drupal. Thursday’s keynote brings together Dries Buytaert, the original creator and project lead for Drupal, together with Barb Palers, Global Product Partnerships at Google and Leslie Hawthorn, Developer strategy at Red Hat talk about the Future of the open web and open source. Along with many other sessions in this track, I will share my approach on Upgrading vs. Upcycling - How Existing Web Sites Stay Ahead the Curve for those interested in Agile, Architecture and Web strategy.

Drupal + Technology is kind of the classic DrupalCon track focusing all on Drupal-technology related topics that don’t fit into one of the industry tracks. Amongst many others, I’m am looking forward to see Out of the Box is Out of the Box! to get an initiative update from Marc Conroy, Keith Jay and Elliot Ward. Join Amazee’s Philipp Melab for his session on Decoupling Drupal with GraphQL & Twig where he will dive into APIs, GraphQL, Theming and Atomic design.

Drupal Community discussed everything that keep our ecosystem running. I am particularly excited to join the 2 hours workshop by Shyamala Rajaram, Parth Gohil and Donna Benjamin on Building Local Communities - foster Drupal adoption. From Amazee make sure to see Ingrid Talbot in Learning to lead, after a life of going solo for some inspiring learnings on here transition in Being human & Leadership. As well as Bastian Widmer who will explain how to Opensource your daily work Docker Drupal Open Source.

Agency + Business touches on all the advice we need and want to share related to running a Drupal business. How to boost your team members performance by Marina Paych sounds like a very promising session exploring talent development and team culture. I’m humbled to host a panel discussion with Nick Veenhof, Ela Meier, Suzanne Dergacheva, Andre Baumeier, Steve Parks, Ashraf Abed. Together we’ll discuss Hiring Drupal Talent - A Recruiter's Dilemma Panel.

Drupal Europe 2018

Make sure to check out all the other industry tracks on the program page. The Open Web Lounge also serves as a great opportunity to connect with like-minded open source communities thanks to partners such as CMS Garden, Open Source Initiative, Wordpress, Joomla, Contenido, and Typo3. Got something to share?

Remember to schedule an Informal gathering (BoF) or sign up for Contribution, mostly focused on Monday and Friday where you can experience the real power of open source - being part of it.

We are looking forward to seeing you in Darmstadt. Enjoy the conference!

Aug 07 2018
Aug 07

With GDPR in full effect, sanitization of user data is a fairly hot topic. Here at Amazee we take our clients and our clients’ clients privacy seriously, so we have been investigating several possible approaches to anonymizing data.

In the Drupal world, and the PHP world more generally, there are several options available. Here, though, I’d like to discuss one we think is particularly cool.

At Amazee Labs’ Global Maintenance, we work with several different projects per day. We move data from our production to staging and dev servers, and from our servers to our local development environments. Especially on legacy systems, site-specific configuration details often exist only in the databases, and even if that weren’t the case, the issues we’re investigating routinely require that we dig into the database as it (more or less) is on the production servers. Anonymization is crucial for our day to day work.

So our considerations here are, how do we balance productivity while keeping things anonymous?

One way of achieving this is to make Anonymization transparent to the developer. Essentially, we want our developers to be able to pull down the live database as it exists at the moment that they pull it down, and have it be anonymized.

How can we achieve this?

Well, one way is to analyse the daily workflow to see if there are any points at which the data has to flow through before it reaches the developer?

It turns out that, if you’re working with mysql, this “final common path” that the data flows through is the mysqldump utility.

If you’re running backups, chances are you’re using mysqldump.

If you’re doing a drush sql-sync there’s a call to mysqldump right at the heart of that process.

Mysqldump is everywhere.

The question is, though, how do we anonymize data using myqldump?

The standard mysqldump binary doesn’t support anonymization of data, and short of writing some kind of plugin, this is a non-starter.

Fortunately for us, Axel Rutz came up with an elegant solution, namely, a drop in replacement for the mysqldump binary, which he called gdpr-dump. A few of us here at Amazee loved what he was doing, and started chipping in.

The central idea is to replace the standard mysqldump with gdpr-dump so that any time the former is called, the latter is called instead.

Once the mysqldump call has been hijacked, so to speak, the first order of business is to make sure that we are actually able to dump the database as expected.

This is where mysqldump-php comes in. It’s the library on which the entire gdpr-dump project is based. It provides a pure PHP implementation of mysqldump as a set of classes. On its own, it simply dumps the database, just as the native mysqldump cli tool does.

A great starting point, but it only gets us part of the way.

What we’ve added is the ability to describe which tables and columns in the database being dumped you would like to anonymize. If, for instance, you have a table describing user data with their names, email, telephone numbers, etc. You can describe the structure of this table to gdpr-dump and it will generate fake, but realistic looking, data using the Faker library.

This requires some upfront work, mapping the tables and columns, but once it is done you’re able to call mysqldump in virtually any context, and it will produce an anonymized version of your database.

There is still a lot of thinking and work to be done, but we think it’s worth investing time in this approach. The fact that it can be used transparently is its most compelling aspect - being able to simply swap out mysqldump with gdpr-dump and have the anonymization work without having to change any of the dependent processes.

If any of this piques your interest and you’re looking for more details about how you might be able to use gdpr-dump in your own workflow, feel free to check out the project (and submit PRs): https://github.com/machbarmacher/gdpr-dump.

Jul 24 2018
Jul 24

We're very excited to share some details with you about our next Amazee Webinar where we'll discuss atomic design in Drupal with GraphQL & Twig.

The notion of atomic design systems has made its way to Drupal quite some time ago. Tools like Patternlab and Fractal are part of our everyday workflow, but their integration with Drupal's theme system still offers challenges.

Our speaker, Philipp Melab, will take the lead and make sure that we take an in-depth look at this, and in this webinar, we will build upon the first chapter and leverage the power of GraphQL to build a clearly structured and really decoupled component library. 

Date: Friday, 24 August 2018

Time: 4-5pm CEST

Below is a screencast of our previous webinar to give you a good understanding of what to expect in our second edition end of August.

[embedded content]

Jul 24 2018
Jul 24

We're very excited to share some details with you about our next Amazee Webinar where we'll discuss Atomic Design in Drupal with GraphQL & Twig.

The notion of atomic design systems has made its way to Drupal quite some time ago. Tools like Patternlab and Fractal are part of our everyday workflow, but their integration with Drupal's theme system still offers challenges.

Our speaker, Philipp Melab, will take the lead and make sure that we take an in-depth look at this, and in this webinar, we will build upon the first chapter and leverage the power of GraphQL to build a clearly structured and really decoupled component library. 

Date: Friday, 28 September 2018

Time: 4-5pm CEST

Sign-up: You can register here and join us for the discussion.

Below is a screencast of our previous webinar to give you a good understanding of what to expect in our second edition at the end of September.

[embedded content]

Jul 19 2018
Jul 19

Day three

Today, my friends, we’re going to Change the World...

Rachel Lawson presented day three’s keynote. It was a really good session as it showed how everyone who attended, has contributed in some way to Drupal, as well as how “Drupal changes the world”. It started by “Meeting Sami”, a 10-year-old boy from Mosul, Iraq, who was captured (along with his brother) by ISIS. He was held captive for three and a half years, after which he was sent to a refugee camp. While in the camp, it was the Warchild charity that provided support, activities, education, and most importantly, ended up reuniting Sami and his brother with his family.

Now, you’re probably wondering what any of this has to do with Drupal? I know, I also did, but it became apparent that Warchild recently switched to using Drupal, making use of several modules. Rachel asked the audience to stand up, if they had made a contribution to modules used by Warchild, including paragraph and media. Almost half the room did, but I didn’t. She then went on to ask about other contributions that people in the audience had made. This time, it related to anything from documentation, to hosting meetups, and even attending camps.

By the end of the session, everyone in the room was standing, including me. It felt good to know that I had contributed in some way. During the question and answer session, the issue of becoming a member of the Drupal Association was raised, as well as the importance of doing so. Membership empowers the Drupal community to be able to do more things that are requested by users, which in turn makes a transformational difference.


Rachel Lawson presenting her session

“If you don’t push yourself and just go with things, then you’ll never get the amazing things.” - Rachel Lawson

Watch session

Drupal 9: Decoupled by design?

Both Preston So and Lauri Eskola gave a session on decoupling Drupal, as well as the direction in which it is going. Anyone who has been working with Drupal should know that the idea of decoupling Drupal has been around for some time. Among the reasons for doing this, is that developers are free to choose any technology they want for the frontend. It’s clear that Drupal 9 will continue to use Twig, but with support client-side rendering with an API first approach. Another point was that editors prefer the non-decoupled approach, which raises the questions, “Who is requesting this? Is it the clients or developers?”

Watch session

The future of Drupal in numbers

One of the most interesting and debatable sessions I attended was presented by Nemanja Drobnjak. Similar to the first keynote session, this session was about comparing Drupal from 18 months ago, with its current state. This presentation could have been perceived as very pessimistic, especially when seeing the numbers compared to other major CMS’s like WordPress. He also referred to the compare PHP frameworks blog.

All the data in the presentation had clearly been researched, so it was rather shocking to hear Nemanja predict that Drupal could go out of use within 15 years if the current trends continue. A few suggestions to prevent this were made. From improving documentation to Drupal directly targeting the education sector. This session drew a lot of questions. Firstly, “Why compare Drupal to Wordpress?”. I agree completely. It's about who is using it and benefiting from it. It reminded me of the blog post I read in which Vue.js passed React.js in the number of people who have 'starred' it on Github. Basically, it doesn’t mean that React is dying and Vue is now the norm. Both have different purposes and uses, just like, for example, Drupal and Wordpress.

Another question raised was, with Decoupled sites becoming more popular, “Can a crawler detect the backend?”. Maybe the data wasn't 100% correct.

Day four

An update on Drupal 8.6

The day four keynote session was presented by Gábor Hojtsy, who gave a short speech about the upcoming Drupal update. He then moved onto how we could help with several initiatives, both at Drupal Dev Days and in general, including helping with Admin UI and documentation.

Watch session

Contribute, contribute, contribute! Yes!!!

Having put my Windows issues on the back burner, it was time to get the admin UI demo to work. I went over to the Admin UI innovation table where I met Lauri Eskola, Daniel Wehner, and Volker Killesreiter, all of whom helped me try to get the site working. Turns out it was because of an outdated module, so I updated the module, created a pull request and boom, my first ever contribution to Drupal was made. I then spent the rest of the day looking at the code and getting to grips with how it worked.

I was then assigned my first issue, which took some time to complete as I was still getting used to the code base. But nonetheless, I was able to fix the issue and contribute some more to the initiative. I really like how everything is broken into small issues, meaning that a single person isn't completing a large issue by themselves. It is clear that Drupal can only be maintained if people contribute back to the project and/or community.

It is never too late to contribute! Even though Drupal has been around for almost 20 years, it still relies heavily on people to contribute and come up with innovative ideas. If you are looking to contribute, but don’t know how I can suggest you take a look at the Drupal development and strategic initiatives.

Having heard the word “contribute” several times, it would have been great to hear someone repeatedly say the word, as Steve Balmer did - "developers".

Day five

Quo Vadis, Free Software?

The final keynote session, by Rui Seabra, was about free software. He shared thoughts on how we should have the freedom to run software as we wish, make changes to the software to make it fit for your purpose, and distribute both the original and modified version. It was clear that as users of so-called “free software”, we have a misconception about what we think is free. Rui also went on to talk about how we can help protect the internet, especially from the EU’s copyright directive. I did find the joke about the “[fill in] sucks” reference to Windows, very amusing.

Rui Seabra presenting his session

Free software is everywhere, and people are forgetting that the freedom of sharing is a quintessential part of the evolution and moving forward together. “If we didn't share we wouldn't have knowledge, technology, and hardware we use today.” - Rui Seabra

Watch session

Progressive decoupling - the why and the how

The final session I attended was my colleague Blazej Owczarczyk’s talk, where he explained everything about progressive decoupling. One of his key points was that you should only decouple where it makes sense. Blazej showed some cool and interesting new features available in EcmaScript 6/7. We also learnt about the new await/async function in EcmaScript 8, which I found to very cool and cannot wait to start using. It was then time to move on and discuss how we could use these new features in our current Drupal sites.

By installing dependencies, defining a dynamic library and running a web server, you are able to create a decoupled environment for any technology of your choice. Two things I really liked about the session was 1) Blazej asking the audience to tweet a thanks to our very own Philipp Melab for the GraphQL module, and 2) the bonus question, which resulted in more questions from the audience. Way to go Blazej, we’re very proud of you here at Amazee Labs.

Blazej Owczarczyk presenting his session
 

Watch session

The rest of the day I spent contributing more to the Admin UI initiative.

Many thanks

I would like to take this opportunity to thank:

Ruben Teijeiro for being so helpful throughout the week and introducing me to several people.

Christophe Jossart for not only helping me with my installation issue but for being great company and showing me around Lisbon.

Lauri Eskola, Daniel Wehner, and Volker Killesreiter for the introduction to Admin UI, which helped me find the issue as to why I couldn’t set up the site on my machine and finally allowing me to help contribute to the great initiative.

Finally, to all the sponsors, speakers, organiser, and volunteers, a huge thank you for a spectacular week, great evening social events, and for making my first ever Dev Days an amazing one. I hope to see you all at the next one.

Links

Jul 13 2018
Jul 13

This year’s Drupal Dev Days took place in sunny (well, for the most part) Lisbon, Portugal. Over 400 people attended this year’s Dev Days, and I was one of them. I am fairly new to Drupal, and this was my first conference dedicated to Drupal. This was a week-long event, something that was unusual to me as I am used to attending one or two-day events.

Day one

Day one was all about Contribution at ISCTE. Let’s just say my first day didn’t get off to a great start. It took me over 30 minutes to find the entrance to the University, where the event was taking place, and I wasn’t the only one.

It also didn’t help that it was raining, but luckily I had my umbrella (being British I never leave the house without it). Once I found the place, I realised I’d left my adapter at home, so I headed out to get one. Luckily, there was a shop nearby. Along with my purchase, I headed back to help with contributing to some of the Drupal innanatives.

There, I met Ruben Teijeiro, who introduced me to several people and how to get started. I really wanted to contribute to the Frontend space, especially to the new admin UI. Setting up wasn’t the easiest (which I expected), as I use Windows for all my development. There I also met Christophe Jossart, a long time contributor to Drupal, who tried to help me with setting up the site on my machine, but to no avail.

By the end of the day with the help of installing WSL on my machine, I had managed to install the site, get it up and running, only then to be served with several errors, by which time I had called it a day. It might sound like all doom and gloom, but I made a lot of progress made throughout the day.

Day two

Friction

The first keynote session of the week was given by Bojan Zivanovic. He spoke about the evolution of Drupal (version 7 to 8) and how Drupal has made several changes to Core using modern practices, making it a much better framework.

One interesting part was the adaption of  Drupal 8, which was a plus (40%), and the loss of Drupal 7 sites (11%), however, by putting them together Drupal actually lost over 35,000 sites in the last year. There were several reasons as to why this could be the case, including time spent installing Drupal and setting up the development environment, especially for those on Windows (like me :sigh:). It all relies on the community to help and improve what is already there, to make it easier for both new and current users.
 

A boat sinking in the sea

“Sometimes our Drupal websites end up looking like this.” - Bojan Zivanovic (in reference to the above image).

Watch session

Overview of GDPR modules for Drupal

Another session I attended was a comparison of the top GDPR modules and how you can make your Drupal site GDPR compliant.

The talk covered many aspects - from rights of the user to form checking and security. It was apparent that there are several modules that help do this, so having a short list of the best ones made it easier. It also became apparent that to become compliant, you require more than one module.

One thing that came out of this session, which I totally agree with, was that site security was often neglected in the past but is now at the forefront of all sites.

Watch session

How to delight content editors with UX when building Drupal 8 websites

This session, given by Chandeep Khosa, was the last one I attended and was the highlight of the day for me. Adding features to the Drupal like Admin Toolbar, like a theme module to make it look nice, or even add help text, may sound rudimentary, but how many actually do so and make use of it? (No, really?) Most content editors are not used to the Drupal admin like developers are, so it was nice to hear what we can do to make it easier for them.

One specific module I found very interesting was the tour module, which provides guided tours of the site interface via tooltips, something available in core today. I didn’t even know this existed. One thing I took away from this was that if you don’t need it, hide it, why show something to users that don’t get used?

Watch session

Part 2 of my Drupal Dev Days Lisbon 2018 Recap will follow soon. Thanks for reading.

Jul 05 2018
Jul 05

We will host the next Durpal Meetup at our Amazee Labs offices in Zurich on 11 July.

We'll focus our discussions on progressive decoupling, GraphQL, and Drupal.

So, if these topics interest you make sure to join us for an evening of great talks and collaboration.

We hope to see you there!

Date: Wednesday, 11 July 2018

Time: 6:30 PM - 9:00 PM

Venue: Amazee Labs, Förrlibuckstrasse 30, Zürich

Jun 27 2018
Jun 27

Join us for Drupal Dev Days in Lisbon! 

If Drupal development is your thing, then the upcoming Drupal Developer Days in Lisbon is the place to be.

The programme promises to keep the conversations going with code sprints, workshops, sessions and BoFs.

Amazee Labs is proud to be a Gold Sponsor and we look forward to catching up with you during, in-between and after the event.

See you there!

Dates: 2-6 July 2018

Venue: ISCTE-IUL University

If you want to know more about what's happening when, you can view the full programme here.

Jun 21 2018
Jun 21

Drupal Europe will be taking place soon – different organization, different structure, same great community. There are a few things you need to know about this year’s edition of Europe’s largest Drupal conference, so let me tell you about them. But before I start, your case studies, as always, are more than welcome!

DrupalCon Europe or Drupal Europe?

The first thing you might have noticed is that the event is called Drupal Europe and not DrupalCon Europe as in previous events. In order to find a sustainable approach to the conference in Europe, DrupalCon decided to take a year off in 2018 in order to come back stronger than ever, so the community decided to weigh in and organize this year’s event - Drupal Europe. This is the best possible example of one of the Drupal community mottos, “Come for the code, stay for the community”.

DrupalEurope

Main changes

Did I just mention that the event is fully organised by the community? Ah, yes, so here are some other changes:

  • Industry verticals - The program and session selection process will focus on real-life scenarios and industries and how Drupal is linked to those. These might be familiar as they’re likely to be the projects you work on on a daily basis, so you’ll be able to share insights into how you or your company approached one of these projects. Here is a list of the verticals:
  • Expertise topics - Not familiar with the verticals? Not to worry, we still have an easy way for you to find out what your interests are (back-end, front-end, site building…). All sessions are tagged with both industry verticals and expertise topics.

Additional time for contribution - this will be a constant topic throughout the event. There will be mentors and self-organised contribution teams, so make sure you come prepared if you want to contribute and if you’d like to volunteer as a mentor then register here as well!

Date and place

The event will take place from 10 to 14 September in Darmstadt, Germany, which is just 20 minutes from the Frankfurt airport. It’ll be a fun week, so clear your calendar! There will be plenty of opportunities to attend talks, mentoring sessions, sprints, etc.

The week’s schedule is as follows:

  • Monday - Contribution with some mentors
  • Tuesday to Thursday - Sessions, panels, workshops, BoFs and contribution lounge
  • Friday - Traditional mentored contribution and self-organized contribution spaces

Get involved

Just attending the conference is a great experience, but there are more ways to get involved:

  • Volunteering - Help with the organization of the event, find out more here.
  • Submit a session - By submitting and preparing a session gives you a great way to give back to the community. Sharing your knowledge and experience with others is what makes these conferences so great. So, make sure to submit your sessions here.

Josef, our Agile Consultant, is part of the conference program committee, so if you see him during that week, make sure you give him kudos for putting his energy, as well as that of all the other volunteers, into the event.

A number of Amazees are already working hard on submitting sessions, ranging from client case studies to more technical talks. We love these gatherings and want to contribute as much as possible, so you’ll be sure to see a lot of us there in that week.

To-Do

So here is your to-do list:

  • Sign-up for Drupal Europe (if you haven’t already).
  • Submit your session/s, you have until the end of this month to do so.
  • Enjoy!
Jun 19 2018
Jun 19

Only a month has passed since DrupalCamp Transylvania, and already another Drupal Camp has come and gone in Romania. This time it was Drupal HackCamp, organised in the Romanian capital, Bucharest. It was a Drupal Camp with a very specific theme: Security.

 

Throughout the sessions presented at the Camp, one was able to find out what security issues Drupal had experienced in the past, how the Drupal Security team, as well as the Community in general, had dealt with them, what Drupal did to improve the security of the platforms that were developed using the CMS and what can (and should) be done to have a more secure application.

Since I first heard of it, a Camp focused on Drupal security sounded really interesting to me. This is the type of camp every Drupal developer should attend at least once in their career. Actually any web developer for that matter. As we know, security is a very important topic with regards to the web. Even for experienced developers, some things can be very tricky, as an application's security does not only depend on the code. It also depends on how the web server is configured or what kind of third-party libraries your code depends on. Additionally, it also depends on the libraries you are using in development, if they are used to pack or bundle your code, or if they end up touching your code in any other way.

One of the sessions which focused on how Drupal improved its security with each new version, was Peter Wolanin's - 10 Ways Drupal 8 Is More Secure.

10 Ways Drupal is More Secure

In this session, Peter Wolanin first gave a brief introduction to the OWASP Top 10, a list with the top 10 critical security risks that affect a web application. This is not only Drupal related, it applies to any kind of application that is accessible via the web. Next, he pointed out 10 things Drupal 8 implemented that help the developer to avoid those security risks. Among the points he mentioned were, the autoescaping feature implemented in twig (so now everything which gets outputted by twig, is by default, escaped), the automatic CSRF tokens in the route definitions (making it easier for the developer to create links which are valid only for the current user session), the removal of the PHP input filter (which was very dangerous if misused), and the enforcement of trusted host patterns for requests (so that your application will respond only if requested via a host which you actually trust).

As previously mentioned, having a secure app doesn't guarantee that your Drupal is secure. Nowadays, there is a growing interest in having decoupled apps. This means you have a backend which is usually used for content management only (that can be a Drupal site) and a frontend, which is a modern js application, that can be implemented optionally, using a framework like React, Vue.js, and so on. But then you also need to use npm for installing the additional js libraries you need, webpack for creating the javascript bundles for your app, and babel for transpiling your javascript code. So suddenly you start to introduce a ton of other dependencies, which each depend on a lot of other packages. Alexandru Badiu did a presentation called, “JS and Security”, which covered some of those aspects.

JS and security

So, you do the best you can to write secure code, try to evaluate the dependencies of your project, and make sure that they don't introduce critical security issues, but is that enough? There could still be several security issues which you’re unaware of, which will only be discovered while you are using the application. It would be awesome if we're able to do something to proactively protect us against common security risks.

Bastian Widmer (@dasrecht) presented a talk on this subject, entitled “How Open Source will help you to survive the next Drupalgeddon”, where he showed us a few tips that we can use in advance, in order to respond to potential security issues in future. Besides ensuring you do regular updates for all your app’s dependencies, you could also take some measures at the web server level. For example, only allow index.php to be executed, use a web application firewall or make sure that your operating system is configured properly.

How open source will help you to survive the next Drupalgeddon

Of course, there had to be a session about the last Drupalgeddon(s), at a Camp focusing on Security. The event’s keynote was by Jasper Mattsson, who actually discovered Drupalgeddon 2. He shared some tips with us on how to find security breaches. He said that there is no secret 'recipe' for that, but a good starting point, is to look for functions which output data, which can do multiple things, perhaps depending on how they are invoked (in which context or with which parameters) or which can trigger code execution.

Finding Drupalgeddon

There is one very important thing to keep in mind if you discover a security breach: do not post it on the regular Drupal issue queue. Instead, follow the instructions on how to report a security issue when you found one. The implications of reporting a security issue inside the regular Drupal issue queue can be very dangerous, as the attackers will then have plenty of time to create an attack until the issue is fixed.

Being in a city with such a rich history, we could certainly not miss the walking tour that the organisers had prepared for us on the Saturday afternoon. During the tour, we saw Bucharest’s most iconic buildings, which have survived all the great historical periods over the last 200 years - the monarchy, two world wars, communism and now democracy.

Atheneul roman

Old Church

Old Monastery

Drupal HackCamp Bucharest was a really great event, and I hope it takes place next year. It is of great value to all web developers, especially those at the beginning of their careers, as it prepares them for the dangers of the wild world wide web and equips them with the required knowledge to guard against any that may pop up along the way.

Jun 18 2018
Jun 18

I’ve been running events since college, for work and for fun, and for groups of 3 to 3,000. You’d think there’d be a difference, but the amount of energy it takes to run an event, surprisingly, is the same. It’s crazy how well these things scale.

Regardless of size, an event planner goes through a very predictable flow from event conception to event end.

We started planning Texas Camp in September of 2017. Knowing we were going to organize the event again for 2018, we scrambled to finalize the venue and update the sticker. By the time BADCamp rolled around, we had shiny new Texas Camp stickers to distribute at the nation’s largest gathering of Drupal people - all potential camp attendees.  

Because we knew when companies do their budget planning, we were ready with a brand new sponsor prospectus by December. By the second week, a cheerful call to sponsor was in many Drupal company inboxes.  

We worked to get the website launched in January, so attendees could plan ahead and to get everyone excited. Let me tell you this - when building a spankin’ new React + Drupal site, plan for extra time.

By the time we did launch in February, we had missed a few big camps, but still had plenty of time to get the word out on the call for sessions.

From February to April, we worked hard to get the word out about all the different ways people could get involved with camp. Sponsorship, speaking, volunteering, or simply just attending. Early-bird tickets were on sale and the sessions submissions were trickling in.

Texas Camp organizers attended DrupalCon Nashville and spread the good word of Texas Camp to anyone who would spare a few minutes. Those who promised to submit sessions were gifted a Texas Camp sticker, along with lavish promises of fame and glory.

Because we want Texas Camp to be known as an inclusive camp, we reached out to different groups, including the Drupal Diversity and Inclusion group, to help get the word out to a broader, and more diverse, audience. I’d like to think our efforts here helped us pick up more diverse speakers than we might have gotten through our usual channels.

At the end of April, the craziness began. Although I am a seasoned session selection overseer, this was my first time actively participating in the selection as a team. It’s not an easy task, not only considering the length of time it takes to read sessions!

We had a few mandates: no repeat speakers, diverse topics, variety in experience levels, and oh yeah, the selection was done fully blind to the presenter. All personally identifiable information (pronouns, speaker names, company names, etc) was all painstakingly struck from the submission pile.

At the end of the two-week selection process, the team gathered and made the final selection. Some speakers with multiple sessions had been ranked high enough to make the session cut, so the better of the two, or the session with most topical conflict with other highly ranked sessions, were made into backups.

After session selection, things started moving really fast. We had one week to confirm speakers and another week to make a schedule. Once that newsletter went out announcing the final schedule, the official countdown to Texas Camp had begun.

Week 4: Guess what you’ll need and order everything. This gives you enough time to re-order if anything goes wrong. It’s too early for real attendance numbers, so any amount you order is the best guess.

Week 3: Things will start to arrive. Your office will be filled with an insane number of soda flats and bizarre equipment. We had a silver 4-foot metal trough we had to explain on a few client calls. Speakers will begin canceling. New sponsors will appear out of the woodwork - which is a GREAT thing. Last minute sponsors allowed us to blow the budget on breakfast tacos!

Week 2: You’ve printed everything you can think to print and pray the sizes match and the colors turn out right. The final “Texas Camp is next week!” notice has gone out to attendees. Speakers are thoroughly annoyed at the number of reminders to RSVP we’ve sent.

Week 1: The blessed “eye of the storm”. The week before the event. It’s too late to do anything meaningful. All you can do is hope you’ve done enough ahead of time and remembered everything. Especially if the week of ends in a 3-day weekend for Memorial Day. An unexplained spike in registrations. It looks like we’ll hit 150!

The week of: It’s time for final inventory audits, calling and confirming with all the venues and updating catering counts with vendors. Always add more vegan meals than you have data for! Rally the organizing team and caravan the soda flats and registration supplies to the venue.

Make eye contact and remind each other that you can do it and that there will be coffee in the morning. Charge the iPads. Remember to print the special diet food tents for the morning.  

During camp: Have a stupid amount of fun. See people you haven’t seen in a year. Celebrate the CMS that drew us all together. So many people, at Texas Camp we nearly hit 200! Eat an inordinate amount of food. Watch some amazing talks. Sing karaoke.

After camp: Go home. Swear to never do it again. Take a vacation. Get a sunburn. Reconsider.

The week after camp: Begin researching venues for the next year.  

Jun 12 2018
Jun 12

Join us on Wednesday, at Gridonic, for the upcoming Zurich Drupal user group meetup.

The gathering is dedicated to all those interested in Drupal. Everyone, from beginners to experts, are more than welcome.

Hope to see you there!

Date and time: Wednesday, June 13, 2018, from 6:30 PM to 9:00 PM

Venue: Gridonic - Ernastrasse 22, Zürich

May 29 2018
May 29

Retrospectives are an essential part of our team’s workflow. After each iteration, we get together to collect insights and feedback. By doing so, our teams ensure they have time to celebrate achievements, learn from mistakes and steer their efforts along a process of continuous improvement.

What are the steps of a retrospective?

Retrospectives will often be made up of 3 simple steps: a) What went well? b) What could we have done better? c) Action items for further improvements. More in-depth retrospectives can use the following model for deeper analysis:

1) Set the stage

A brief check-in allows everyone to get ready for the retrospective, i.e. we gauge how everybody is feeling about the past iteration.

2) Gather data - What?

The data gathering stage is all about collecting different viewpoints based on the metrics of how the sprint went, external feedback the team has received or things they have observed during the iteration. For retrospectives of longer time periods, we use a timeline to collect major milestones from participants and discuss them in a group.

3) Generate insights - So What?

Here we go into problem solving mode. Using brainstorming activities we are able to determine the reasons why things went well or not. For example, the 5 Whys can be used to identify root causes or by imagining The Worst We Could Do, our teams find out what they need to improve on.

4) Decide what to do - Now What?

Now it’s time for the team to create actions that will help them to become even better in the next iteration. Practices like Circle of Influence helps to focus them on what they can accomplish as a team. We find Divide the Dollar to be useful as well as other dot-voting activities when determining what we want to focus on.

5) The closing perspective

Finally, in the closing, we want to make sure that everyone gives their final input on how the retrospective went.

Things to keep in mind when running retrospectives

Retrospectives done right are a powerful tool to help your team open up and have meaningful conversations. As with any meeting, it’s important to ensure everybody is on board with the working arrangements, such as being on time and a willingness to contribute. As the facilitator of the meeting, you can do a great job at providing a space where participants feel encouraged to share what’s really on their mind.

Looking for ways to make your retrospectives more engaging? Retromat is a tool that helps you think of different ways to facilitate a retrospective. In terms of online collaboration, we found meeting on zoom.us with Realtime Board and collaborating on our retrospective notes in a shared Google Slides presentation to be most effective.

Thanks for reading our take on retrospectives. If you'd like to learn more about running retrospectives effectively, don’t hesitate to reach out in the comments section or get in touch using our contact form.

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