Drupal

myDropWizard.com: How to QUICKLY and SAFELY deploy to the live site WITHOUT comprehensive testing!

Planet Drupal - 26 September 2016 - 4:41am

On the one hand, you want to deploy changes to the live site QUICKLY (for, say, a Highly Critical security update).

On the other hand, you want make changes SAFELY, ie. you don't want it to break the site.

Testing is good. Automated testing is great.

But what if you simply didn't have the resources to comprehensively test the change (either manually or automatically)?

Maybe the client isn't willing to fund a project to write automated tests. Maybe you don't have the extra time or extra people to do proper QA. Whatever reason, you just couldn't do it.

Is it possible to both quickly AND safely deploy to the live site WITHOUT comprehensive testing?

... besides just crossing your fingures and hoping it doesn't break?

We think there is a way. :-) Read more to found out!

Categories: Drupal

Annertech: At DrupalCon? Need Help? We'll Take Care of You.

Planet Drupal - 26 September 2016 - 3:59am
At DrupalCon? Need Help? We'll Take Care of You.

With over 2,000 people expected to be in Dublin for DrupalCon this week, it's likely that someone, somewhere is going to need some assistance. We're all very helpful people in the Drupal community and so help should easily be available. But sometimes you get caught out and can't find people nearby - you get lost, you lose your phone, you're in an area of town and haven't a clue how to get back to your home, you are locked out of your AirBnB, you've gone to kiss the Blarney Stone not realising it was 350km away!

Categories: Drupal

Freegeoip Views

New Drupal Modules - 26 September 2016 - 2:13am
Categories: Drupal

qed42.com: Lazy Builders in Drupal 8 - Caching FTW

Planet Drupal - 26 September 2016 - 1:36am
Lazy Builders in Drupal 8 - Caching FTW Body

Drupal caching layer has become more advanced with the advent of cache tags & contexts in Drupal 8. In Drupal 7, the core din't offer many options to cache content for authenticated users. Reverse proxies like Varnish, Nginx etc. could only benefit the anonymous users.  Good news is Drupal 8 handle many painful caching scenarios ground up and have given developers / site builders array of options, making Drupal 8 first class option for all sort of performance requirements.  

Lets look at the criteria for an un-cacheable content:

  • Content that would have a very high cardinality e.g, a block that needs to display user info
  • Blocks that need to display content with a very high invalidation rate. e.g, a block displaying current timestamp

In both of the cases above, we would have a mix of dynamic & static content. For simplicity consider a block rendering current timestamp like "The current timestamp is 1421318815". This rendered content consists of 2 parts:

  • static/cacheable: "The current timestamp is"
  • Dynamic: 1421318815

Drupal 8 rendering & caching system provides us with a way to cache static part of the block, leaving out the dynamic one to be uncached. It does so by using the concept of lazy builders. Lazy builders as the name suggests is very similar what a lazy loader does in Javascript. Lazy builders are replaced with unique placeholders to be processed later once the processing is complete for cached content. So, at any point in rendering, we can have n cached content + m placeholders. Once the processing for cached content is complete, Drupal 8 uses its render strategy(single flush) to process all the placeholders & replace them with actual content(fetching dynamic data). The placeholders can also be leveraged by the experimental module bigpipe to render the cached data & present it to the user, while keep processing placeholders in the background. These placeholders as processed, the result is injected into the HTML DOM via embedded AJAX requests.

Lets see how lazy builders actually work in Drupal 8. Taking the above example, I've create a simple module called as timestamp_generator. This module is responsible for providing a block that renders the text "The current timestamp is {{current_timestamp}}".

<?php /** * @file * Contains \Drupal\timestamp_generator\Plugin\Block\Timestamp. */ namespace Drupal\timestamp_generator\Plugin\Block; use Drupal\Core\Block\BlockBase; /** * Provides a 'Timestamp' block. * * @Block( * id = "timestamp", * admin_label = @Translation("Timestamp"), * ) */ class Timestamp extends BlockBase { /** * {@inheritdoc} */ public function build() { $build = []; $user = \Drupal::currentUser()->getAccount(); $build['timestamp'] = array( '#lazy_builder' => ['timestamp_generator.generator:generateUserTimestamp', array()], '#create_placeholder' => TRUE ); $build['#markup'] = $this->t('The current timestamp is'); $build['#cache']['contexts'][] = 'languages'; return $build; } }

In the block plugin above, lets focus on the build array:

$build['timestamp'] = array( '#lazy_builder' => ['timestamp_generator.generator:generateUserTimestamp', array()], '#create_placeholder' => TRUE ); $build['#markup'] = $this->t('The current timestamp is');

All we need to define a lazy builder is, add an index #lazy_builder to our render array.

#lazy_builder: The lazy builder argument must be an array of callback function & argument this callback function needs. In our case, we have created a service that can generate the current timestamp. Also, since it doesn't need any arguments, the second argument is an empty array.

#create_placeholder: This argument when set to TRUE, makes sure a placeholder is generated & placed while processing this render element.

#markup: This is the cacheable part of the block plugin. Since, the content is translatable, we have added a language cache context here. We can add any cache tag depending on the content being rendered here as well using $build['#cache']['tags'] = ['...'];

Lets take a quick look at our service implementation:

services: timestamp_generator.generator: class: Drupal\timestamp_generator\UserTimestampGenerator arguments: []

 

<?php /** * @file * Contains \Drupal\timestamp_generator\UserTimestampGenerator. */ namespace Drupal\timestamp_generator; /** * Class UserTimestampGenerator. * * @package Drupal\timestamp_generator */ class UserTimestampGenerator { /** * */ public function generateUserTimestamp() { return array( '#markup' => time() ); } }

As we can see above the data returned from the service callback function is just the timestamp, which is the dynamic part of block content.

Lets see how Drupal renders it with its default single flush strategy. So, the content of the block before placeholder processing would look like as follows:

<div id="block-timestamp" class="contextual-region block block-timestamp-generator block-timestamp"> <h2>Timestamp</h2> <div data-contextual-id="block:block=timestamp:langcode=en" class="contextual" role="form"> <button class="trigger focusable visually-hidden" type="button" aria-pressed="false">Open Timestamp configuration options</button> <ul class="contextual-links" hidden=""><li class="block-configure"><a href="/admin/structure/block/manage/timestamp?destination=node">Configure block</a></li></ul> </div> <div class="content">The current time stamp is <drupal-render-placeholder callback="timestamp_generator.generator:generateUserTimestamp" arguments="" token="d12233422"></drupal-render-placeholder> </div> </div>

Once the placeholders are processed, it would change to:

<div id="block-timestamp" class="contextual-region block block-timestamp-generator block-timestamp"> <h2>Timestamp</h2> <div data-contextual-id="block:block=timestamp:langcode=en" class="contextual" role="form"> <button class="trigger focusable visually-hidden" type="button" aria-pressed="false">Open Timestamp configuration options</button> <ul class="contextual-links" hidden=""><li class="block-configure"><a href="/admin/structure/block/manage/timestamp?destination=node">Configure block</a></li></ul> </div> <div class="content">The current time stamp is 1421319204 </div> </div>

The placeholder processing in Drupal 8 happens inside via Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy::processPlaceholders. Drupal 8 core also provides with an interface for defining any custom placeholder processing strategy as well Drupal\Core\Render\Placeholder\PlaceholderStrategyInterface. Bigpipe module implements this interface to provide its own placeholder processing strategy & is able to present users with cached content without waiting for the processing for dynamic ones.

With bigpipe enabled, the block would render something like the one shown in the gif below:

As you can see in this example, as soon as the cached part of the timestamp block "The current timestamp is" is ready, its presented to the end users without waiting for the timestamp value. Current timestamp loads when the lazy builders kick in. Lazy builders are not limited to blocks but can work with any render array element in Drupal 8, this means any piece of content being rendered can leverage lazy builders.

N.B. -- We use Bigpipe in the demo above to make the difference visble.

PIYUESH KUMAR Mon, 09/26/2016 - 14:06
Categories: Drupal

erdfisch: Arriving in Dublin

Planet Drupal - 26 September 2016 - 12:34am
Arriving in Dublin Single image:  Hydra in front of anti-racism poster in Dublin 26.09.2016 Michael Lenahan Body:  Arriving in Dublin

Drupalcon Dublin is starting this week. Particularly exciting one for me since
I went to university here about a million years ago (a.k.a. the early nineties).

This was another era entirely, before the internet. I think the arrival of the
internet changed Ireland even more than most other countries. It is mainly
rural, and stuck on the western edge of Europe on the Atlantic. "Surrounded by
water" as the song says. The water comes down from above as well. Very, very
frequently.

So Ireland remains geographically on the edge of Europe, but digitally it is
extremely connected. Companies from Silicon Valley discovered a country with a
young and educated workforce, so they set up their European operations here from
the late 1990s on.

This changed Ireland. For most of its recent history it had been a poor country
where people mostly emigrated to find work. The Catholic church had a lot of
power over society in general, the health and education systems in particular.

Now, there are many foreigners living here and you hear people from all over the
world who speak English with Irish accents. This is something that is still
quite amazing for me.

It's a privilege to be here. Thank you, erdfisch! More to come ...

Schlagworte/Tags:  planet Ihr Name Kommentar/Comment Kommentar hinzufügen/Add comment Leave this field blank
Categories: Drupal

Greg Boggs: Content Modeling in Drupal 8

Planet Drupal - 25 September 2016 - 12:43pm

In many modern frameworks, data modeling is done by building out database tables. In Drupal, we use a web-based interface to build our models. This interface makes building the database accessible for people with no database experience. However, this easy access can lead to overly complex content models because it’s so easy to build out advanced structures with a few hours of clicking. It’s surprising how often Drupal developers are expected to be content modeling experts. Here’s a well-written overview of content modeling for the rest of us who aren’t experts yet.

Data Modeling Goal

Our goal when modeling content in Drupal is build out the structure that will become our editor interface and HTML output. We also need to create a model that supports the functionality needed in the website. While accomplishing this, we want to reduce the complexity of our models as much as possible.

Getting Started

One of the first things to do when building a Drupal site is to build content types. So, before you start a site build, start with either a content model or a detail page wireframe. This spreadsheet from Palantir will help you. The home page design may look amazing, but it’s unhelpful for building out content types. Get the detail pages before you start building.

Why Reduce Complexity?

The more content types you create, the more effort it will take to produce a site. Further, the more types you have, the more time it will take to maintain the site in the future. If you have 15 content types and need to make a site-wide change, you need to edit 15 different pages.

The more pages you need to edit, the more mistakes you will make in choosing labels, settings, and formatters. Lastly, content can’t easily be copied from one type to another which makes moving content around your site harder when there are many content types. So, the first thing you’ll want to do with your content model is to collapse your types into as few types as feasible. How many is that?

5 Content Types is Enough

Drupal has many built in entities like files, taxonomy, users, nodes, comments, and config. So, the vast majority of sites don’t need any more than 5 content types. Instead of adding a new content type for every design, look for ways to reuse existing types by adding fields and applying layouts to those fields.

Break Up the Edit Form

Drupal 8 allows you to have different form displays for a single content type. With either Form Mode Control or Form Mode Manager, you can create different edit experiences for the same content type without overloading the admin interface.

Now that we’ve got the goal in mind and some tools to get us there, we’ll dive into the specifics of configuring field types such as hero images and drop down lists in my next post.

Categories: Drupal

DrupalCon News: Badge Pick-Up is Open

Planet Drupal - 25 September 2016 - 7:18am

DrupalCon is here! We have registration open here at the Dublin Convention Centre until 18:00 today. We will also be open bright and early at 7:00 on Monday to kick off the first day of DrupalCon Dublin! Come on by and pick your badge and tote and make sure to join us for the Opening Reception from 17:00-19:00 where everyone is welcome.

 

 

 

Categories: Drupal

Steve Purkiss: Drop Guard - Automatic Updates for Drupal - The Road Test!

Planet Drupal - 24 September 2016 - 9:27am
Drop Guard - Automatic Updates for Drupal - The Road Test! Steve Purkiss Sat, 09/24/2016 - 17:27

Automating updates for Drupal has been a hotly debated topic for many years with a number of strong views expressed from all sides and some recent encouraging progress but as of yet still no resolution.

Due to Drupal's complexity, automating updates is not a trivial task however the importance of such functionality came to a head a couple of years back in October 2014 with the 'Drupageddon' where an exploit had been discovered in which users were told if they did not patch their system within just a few hours then it was likely their sites were toast.

As Drupal adoption continues, the pressure to implement such functionality grows and a sprinkling of commercial offerings have appeared, most notably Drop Guard which grew from an internal tool built by German Drupal web & mobile app agency Bright Solutions. Bright created the ERPAL distribution of Drupal, an all-in-one e-business backroom platform, so they know their Drupal and I was eager to try out their service. It also looks like the Drop Guard site itself is built on top of ERPAL.

As usual with Drupal there are a million-and-one things on my try-out list with more exciting stuff appearing each day, so I was excited when I saw a tweet from Drop Guard offering a free ticket to DrupalCon Dublin in return for an impartial review of their service - I wasn't planning on going but this meant I could just about justify attending, and I would finally get round to setting up automated updates for my new purkiss.com which I'd just started to build in Drupal 8.

I replied within a few seconds and won the prize! Of course now I had to do the work, so for the past month and a half I've been road-testing their service and below is my report. I'm actually writing this in the extended sprints on the Saturday before DrupalCon - I had planned on writing it before but one thing led to another and I ended up having to do some client work, but as luck and Drupal small-world would have it, one of the first Drupalers I met this morning just happens to be working on building a new user interface for Drop Guard so not only did I manage to gain a little more info on the service and company, but also a sneak peek at what looks like a much more user-friendly interface to this important service offering.

I must admit, my review would have been quite different if I hadn't seen those mock-ups, so I'm very glad I did - everything happens for a reason, etc.!

What's the offering?

Billed as "The update management system for automation and quality assurance", Drop Guard provides continuous security for Drupal, targeted at hosting providers, Drupal agencies, freelancers and non-profits - the latter of which they have recently offered a free of cost tier for, which in my mind is a very Good Thing. For individual sites they currently have three pricing option - €9pcm plus tax for up to 30 contrib modules covered, €29 for up to 70, and €59 for up to 150, plus tailored offerings for agencies. 

All packages offer the same functionality underneath - fully controllable workflow for updates, automated patch detection and application - provided you set up everything as needed, which can be done through their integration into Continuous Integration ('CI') tools and options for Secure Shell ('SSH') deployments. 

Seamless integration with the major Drupal-specific hosting providers is also part of the offering, so all-in-all a good offer for the price, considering how much time is spent on these tasks plus the knowledge that if there's an urgent update and you're not around, or asleep, or without a connection, your site(s) are safe. I do wonder what will happen as more companies launch similar services, whether it will be a race to the lowest price until core decides to provide it for free? More on that later...

A note on our value as a community

I'm going to be particularly picky with my review because I believe there is a space for this kind of value-added service in the market but I think over the next couple of years the landscape will be very different with a number of offerings, so hopefully by providing detailed feedback I can provide more value than just a review saying "it's great".

As an offering that has grown from the community I would very much like to see Drop Guard succeed and not be overtaken by something which comes along with bigger financial backing but perhaps no 'soul', and as a community I believe it's in our hands to support these kinds of community-grown offerings - if we just watch from the sidelines but don't join in their growth by helping out, recommending and of course using their service then we are not in a position to complain if they disappear.

I also really appreciate the opportunity they have given me to attend DrupalCon as it means I can be around kindred folk enjoying the many DrupalCon goings-on and get to run my BoF sessions (shameless plug: Co-op BoF Tuesday 5pm, Freelancers & Contractors BoF Wednesday 5pm, both Wicklow Room 3). I believe this kind of value sharing between companies and community is the way forward - "growing the pie for everyone" as I've heard time and again at various Drupal events. So hopefully my review will provide value to you too, please do feel free to comment using the form at the bottom of this article, it would be great to hear what your experiences, thoughts and opinions on the subject - don't be shy!

Step 1: Creating an account

So, on to the system itself - I was particularly interested to see how this worked as many projects I've worked on utilise CI, however apart from playing around with Jenkins for a while some time ago, I'd not had a pressing reason to set anything up for myself - it had always been something someone else had done. I soon found out I was not going to be Drop Guard's 'usual' customer as for me when I read 'Automated patch detection and application' I naively had the impression I was just going to enter a few login details and Drop Guard was going to magically work everything out for me whilst I get on a plane to go lay on a beach somewhere. As usual though, there's a little more than that to do to set everything up, but once it is then yes, perhaps it's ok to go catch that plane!

The account creation screen to me has a few too many fields to fill out in this current day and age where quickly lose interest - not that it has too many questions, but really all you need is an email address - the rest can be added later. For mission-critical required information, sure, but other questions seem more relevant to what Drop Guard want in order to profile you as a customer type, which don't seem to have any immediate effect on what I'm presented with after login, so I would say leave them out and let users choose once in the system. There's also a 'Promo Code' field, which to me just makes me feel like there's a promo code lying around somewhere I should be searching the net for. As I also found out later, it defaults to the account creation screen, so when you come back to the website you have to click the 'I have an account' in order to log in, I would say switch that - it's how most other sites work and if I want to create an account I have no problem in clicking a tab but it does get slightly annoying having to click every time I log back in.

There's also a link underneath the registration form to their slack channel which slightly worried me as I'm not a user of slack due to its proprietary nature - as a developer of Free/Libre Open Source Software many of my answers come from searching the web for similar situations, and unless you pay slack a lot of money, that history is not available for search so although it's a nice user-friendly interface I would much prefer to see people adoption more open solutions such as Mattermost. I presume here there are other options for support so carry on my journey.

As previously mentioned I'm going to be picky, but it's what I felt, so it's what I'm going to type - also remember with a redesign on the cards things may have changed by the time you read this!

Step 2: Adding a project

Once you've registered and confirmed your email by clicking on the link that's sent to you, a screen is presented where you can set up your first project. There's only a few fields to fill out - a name for your project, the URL of your code repository (Git only, but I'm unsure of any value supporting other code versioning systems, if they still exist) and a field for tags. This tags field threw me a little as there was no description as to how the tags would be used, I'm presuming they're if you have a number of sites then tagging is useful but I wouldn't necessarily have the field here.

I was encouraged to see the link to the support chat, now I know I don't have to use slack to get in touch with Drop Guard if I need any help. Of course being me it's now a little annoying as I go from screen to screen as if these chat things auto-open I often think someone's there waiting for me to talk so I always end up clicking to minimise it!

I experienced problems with the system not accepting my Git URL which, after a few conversations with the Drop Guard team turned out to be browser caching issues which I believe perhaps came from the heavy in-development phase the system was at the time, and all worked well after clearing my cache so if you do by chance experience issues. Saying that though, I've just tried to add another project and it's come up with the same error - 'Git username can't contain ":" and "@" characters'. I cleared all my caches (which is a pain now I'm going to have to log in to everything again!), so no doubt I'll be approaching the Drop Guard at DrupalCon to see what the deal is - go see Drop Guard at booth #105 if you're attending!

Step 3: Site config

To enable access to your Drupal site, Drop Guard has its own module on drupal.org which you download and isntall on your site. This module provides you with a User ID and Access Token which you enter into this screen, along with the URL of your site. All very simple & has my specific details so no screen shot for this step.

Step 4: Update behaviours

You now get to choose what type of updates you want Drop Guard to do anything with and how to handle them. I found this a little overwhelming to begin with and although there is a 'Reload best practices', I believe there could be perhaps three options available in order to provide different levels of security based on best practices. You could then delve deeper into the individual settings. I was encouraged that you can apply changes to different branches, this system really does cover all potential update workflows.

Step 5: Events

Once you've selected your update behaviours you now get the opportunity to attach actions to these events - request a URL, send an email, execute an SSH command, merge a branch, and create a task in project management system. You can add any number of these to each event depending on your particular workflow - for me at this moment I'm happy just being sent an email, but I can see how easy it's going to be to hook into my CI once I've set it up(!).

Step 6: Integrations

The last setup screen is if you want to connect to your project management system, which I don't have so can't really comment on the functionality other than to say I'm sure it's useful for those who do - the options at the moment are for Jira and Redmine.

Step 7: Sit back and relax!

And that's it, now it's time to sit back, relax, and let Drop Guard do the hard work for you! Although I'm only using it on a very small site it's still very useful as the Drop Guard system emails are far more descriptive than the out-of-the-box Drupal site ones so I can judge better as to whether I need to do something or not. I look forward to setting up continuous integration for my site and configuring Drop Guard to do a lot more for me. I guess I could start by just setting up a few SSH commands to run on specific events, we'll see if I have some time once I get back after DrupalCon...

Conclusion

I've really enjoyed testing the system out and communicating back and forth with the team and as mentioned look forward to integrating my own site more into the update system than it is right now and feel very confident Drop Guard will be able to deal with a number of different scenarios in any which way I want it to. That's if I manage to get to the bottom of my original issue of not being able to add a site - in this day where more of these types of services are appearing on what seems a daily basis, if I find one that works for me out-of-the-box first time, that's probably going to be the one I end up using. I do feel that you're kind of dropped in the deep end straight away and this could perhaps be split up a little more depending on the audience. In a way I felt that if you had all that knowledge already then perhaps you have your own system set-up so it's going to be a choice whether you pay for a system like this or continue down your own path.

Currently I don't see the value differential between the various services, but then as said I'm not their typical client. If the aim is for hosting companies and agencies then they also have the added issue of eventually it being more cost effective in the long term to develop their own systems, but I don't really know enough about what's involved in running this service so can't comment any more than I know a site builder who's built a system that suits their needs, on their own, which manages hundreds of sites. Obviously not everyone's capable of doing that, but it's a case of hunting out that niche where this system hits a sweet spot and then developing your market from there. Or if the idea is to simply build the 'best' system then sell to some large hosting provider then I guess that's a way forward too.

As well as creating a few simple options to ease people into the service I did wonder why they don't market the system on the code security side too - as they have access to your system it would be easy to see whether the code has been changed since they last checked - to me as a user knowing if my code has changed is kinda important and could be a good 'value add' service to market - hacked protection!

It will be interesting to see this market develop, momentum is certainly gathering as I see a seemingly similar offering launched recently, plus more Drupal-specific agencies offering this service as part of their packages. With Drupal core also potentially offering at least some of this then companies in or thinking of entering this space will seriously need to think about what their USP is as there's nothing here which is 'secret sauce', it's all Free/Libre Open Source Software. Let's hope it doesn't become a race to the bottom in terms of price-point, and if it does then let's do it all in core because you can't beat Free.

Once again I'd like to thank Drop Guard for this opportunity and encourage you to try out Drop Guard for yourself, and if you're lucky enough to be in Dublin for DrupalCon then go see them at their booth!

Category Product & Service Reviews Tags Add new comment
Categories: Drupal

SDK API

New Drupal Modules - 24 September 2016 - 6:58am

An API to define configurations for specific Software Development Kit (SDK). API, as Drupal 8, based on Composer. This allows you to describe needed configuration for SDK by defining a form for particular kit and easily grab its sources via Composer. In addition there is a possibility to process result of OAuth callback.

API description can be found in api.php and inside of 4 implementations, provided out of the box:

Categories: Drupal

DrupalCon News: Extended Sprints Info

Planet Drupal - 24 September 2016 - 2:00am

We are up and running at the Extended Sprints location.  Join us at DoSpace for lots of natural light, coffe/tea, and wifi!  

When you arrive you will see the DrupalCon signs as well as an Aikido space and we are just up the stairs.  Come across the Harp Bridge by the Convention Center, keep straight on Macken Street, and look to your left for the DrupalCon Extended Sprints signs.  If you cross under the train bridge, you've gone too far.  

Come on in and sprint from 9:00-21:00 both Saturday and Sunday.

 

 

Categories: Drupal

Typed Widget

New Drupal Modules - 23 September 2016 - 6:08pm

Typed Widget provides a service to dynamically create form elements based on Typed Data data type plugin ids or Data Definitions. This is most useful for modules that implement custom data types, and less useful for entity types that implement form handlers.

Categories: Drupal

Wuinfo: A Drop of The Deep Water

Planet Drupal - 23 September 2016 - 2:32pm

"Someone is looking for Drupal developers. Are you interested?", I asked one of my friends. "I will never touch Drupal again.", That is the most negative statement I have heard so far. Yes, Drupal has an interesting learning curve. It is not easy to master quickly. When we talk about learning Drupal, There are some of us left Drupal after many years as a Drupal developer, disappointed, frustrated. It is a sad truth some of us have worked with Drupal for many years, and still not find the beauty of her. I want to discuss how we can avoid it and how to obtain the power of Drupal quickly in an exciting way.

Here is something interesting about Drupal. After seven years into it, I found myself is still learning new thing and gain a little bit deeper understanding of it. When looking into the code of the core and contributed modules, I can see what the other developers were thinking; I saw how they tackled the problem. I have a great sense of connection with them. It is not just merely the code itself. It is a collaborated among many developers in the past, present and future. So, keep learning is the key to getting deeper inside of it.

Drupal is a tool. We are learning the skill to use this tool. It can be boring if the purpose is just to learn and understand it. It is a tool. So, the best way is to use it. Use it in the best possible way we can find. Always, find multiple solutions and choose one of the best to implement it.

Most of the requests from our customers, managers are reasonable. A lot of time, they are looking for a better user experience. It is the critical element leading to the success of a product. Enhancement of user experiences is a big thing. Never push it back off quickly. There is nothing like Drupal can't do it. Yes, we can do it. We have a lot of contributed modules to do it. If we can not find one, we build one and contribute it back to the community. So, others do not need to invent the wheel again. We take on all kinds of the challenge and find the best possible way to face it. By doing that, we dive deep inside of the water.

When it comes to working on a ticket and solving a problem, we create a patch, and there is no error. That is not sufficient. We can ask ourselves couple more questions. Are there other ways to do it? Is the way what I just did will affect other functions and will this limit the future expansion? Are there any bad things introduced down the road? Is there anything that might sabotage the whole system because of this change? We are going to find the best possible way, a native way. Always looking for the best and willing to take on challenges. It helps us learn it and getting deeper. It is how we can learn stuff that others will not get it from tutorial videos.

If your manager is not a taker and wants to burn you out, always take the challenge. When facing a problem, do not find a way to avoid it. Find as many as possible ways to address the problem. Pick one of the best one; Find a natural way that might have come with the original system design.

Solving a problem, fix a bug is not a big deal. Solve it in a right way is a deal. There are always many methods to solve a single problem, choose the right one. Do not get satisfied by fixing something with a single shot. Ask ourselves to look for more ways to it, use the best one. It is like giving away your talent to solve the problem. It leads me to a commercial ad on a Canadian TV channel. "Greatness is not what you have; it is what you give." Give your greatness to Drupal. The more you give, at the same time, the more skill you get.

Categories: Drupal

Iztok Smolic: Is web development hard?

Planet Drupal - 23 September 2016 - 10:37am

Is creating website really so hard? This is a question I get from people not in the industry after I tell what we do at AGILEDROP. My reply is that web development is hard because it is just one form of programming. And programming is hard. Difficult to learn and even more difficult to master. Why […]

The post Is web development hard? appeared first on Iztok.

Categories: Drupal

Third & Grove: Asset aggregation in Drupal 8 core

Planet Drupal - 23 September 2016 - 7:33am
Asset aggregation in Drupal 8 core catch Fri, 09/23/2016 - 10:33
Categories: Drupal

User Personas

New Drupal Modules - 23 September 2016 - 7:33am

Personas is a simple module which promotes best practices when creating roles and permissions. With personas installed, configurable roles per user are replaced by a selection of personas. Personas describe a group of your users and personas can have many roles.

By breaking the direct tie of users to roles, developers and site builders are guided into following best practices when creating user roles. That is, roles should be capabilities, not job titles. This allows you to compose personas out of many roles.

Categories: Drupal

Acquia Developer Center Blog: Bug is Defect and Defect is Bug – Right or Wrong?

Planet Drupal - 23 September 2016 - 6:55am

The purpose of software testing is to reduce issues to a minimal level and to carve out optimal quality for a product. When it comes to bugs and defects, there are different schools of thought, but quality is always the main focus.

Tags: acquia drupal planet
Categories: Drupal

InternetDevels: Cache segments and caching in Drupal 7

Planet Drupal - 23 September 2016 - 6:48am

Today’s the day for our Drupal developer’s blog post again, which means a lot of attention to detail and practical tips — this time on caching in Drupal 7.

Read more
Categories: Drupal

DrupalEasy: DrupalEasy Podcast 186 - Please Don't Burnout (Mark Carver - Bootstrap)

Planet Drupal - 23 September 2016 - 6:00am

Direct .mp3 file download.

Mark Carver (markcarver), Senior Front End Performance Engineer with Tag 1 Consulting and maintainer of the Bootstrap base theme joins Mike Anello to discuss the past, present and future of Bootstrap, Dreditor, and render arrays.

Interview DrupalEasy News Three Stories
  1. We're saying goodbye ;-( - Implement User Enhancements on Drupal.org and port Dreditor features.
  2. Who sponsors Drupal development? - blog post by Dries Buytaert and Matthew Tift.
  3. What's new on Drupal.org - August 2016 - blog post by Tim Lehnen.
Sponsors Picks of the Week Upcoming Events Follow us on Twitter Five Questions (answers only)
  1. Travel (road trips)
  2. Plex
  3. Getting out from behind the keyboard more often.
  4. Buffalo
  5. When he created his drupal.org account, hired as a school district's web site developer.
Intro Music Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Categories: Drupal

Verbosity: Migrations on the road

Planet Drupal - 23 September 2016 - 5:33am

As many people in the Drupal community know, I travel a lot. Today I'm in Paris having just completed a migration in-flight during my trip from Montréal. At the end of August I was in San José, Costa Rica where I presented both of the migrate talks my colleague Novella and I have worked on over the past year (unfortunately she could not make it as she moved to Detroit that week). It was fun to present talks I've worked with for so long... familiar. Low-stress. All the notes are now safely stored in markdown format on GitHub. Bliss.

Since they are both in an accessible format I have posted them here for others to access. Of coruse, particularly with the project management talk, the real fun in the presentation is the examples we cite as we talk through each issue, so you'll have to live without that. Here they are:

Migration Shotgun Tour (Montréal 2016, Costa Rica 2016) - in markdown and as HTML/JS slides.

Project Planning a Migration Project (Montréal 2016, Costa Rica 2016, Ottawa 2015) - in markdown and as HTML/JS slides.

...unfortunately there are no recordings of these talks. I tried to capture audio of one of them and did not realize the disk was full. :-/

Prior to these two talks I have done many different variations of these presentations at other camps and summits going back as far as 2013 when I presented commerce_migrate_ubercart to the Toronto Drupal community. It was my first-ever Drupal talk. Since then I became a maintainer of that module and done many talks and countless migrations since! I'm hoping to get back into Commerce migrations when 2.x hits beta, which I hear will be coming soon.

My next upcoming migrate talk will be a full-day training at BadCamp 2016 in Berkeley, California. It is already sold out (sorry!).

See you at DrupalCon Dublin?

Before BadCamp 2016 I will be in Dublin for DrupalCon... sorta! Specifically I will be at the Business Summit on Monday and the Friday Sprints, but NOT at the conference itself (ie, Tuesday/Wednesday/Thursday). Obviously I don't have a talk at the conference this time around... but I will still be in Dublin for that time so I may still see some of you at the parties. If you want to get lunch outside the conference venue or join me for some sight seeing let me know!

I'm on twitter (and yes DMs will ding my phone, even when I travel, so long as I'm paying attention to it). If it is work related, you can also reach out to me through the contact form at kafei.ca.

Category: DrupalDrupal ArticlesDrupal Planet
Categories: Drupal

Commerce Authorize.net ARB

New Drupal Modules - 23 September 2016 - 2:29am
Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal