In this episode of Hacking Culture Matthew Tift talks to Ruth Suehle about her involvement with Red Hat, the Fedora Project, opensource.com, and her book, Raspberry Pi Hacks.
While this episode might end up sounding like a giant advertisement for AcquiaU, it’s really not intended to be. I wanted to have you on to talk about the concept of, how a company that hires Drupal developers, can and should go about training them before they are hired.
In order to set the backdrop for the rest of our conversation, I’d like to quote a bit from the AcquiaU website:
The challenge the community is facing is one of supply and demand. Simply put, there just aren’t enough people to fill the needs. At any given time in the past 6 months, job aggregator Indeed.com has over 2,500 open position across the US for Drupal talent.
How do we close the gap? Find the people with the right passion and grow their talent from the inside-out. We're not looking for people with years and years of Drupal experience. We're looking for people who are curious, motivated, determined, and who can inspire a little crazy in us all. At Acquia, culture and a person's POTENTIAL to contribute and grow with us matters. A lot. These are the underpinnings of a successful candidate.
What I love about that is that you’re not looking for senior level developers with 5+ years experience. Because you’re not going to find them. They all already have jobs.
Mike and I ranted about that in the last podcast, so I won’t rehash it here, but what we boiled it down to is that Drupal shops need to create a talent pipeline for recruitment, which, as I understand it, is essentially what AcquiaU is for Acquia.
Ok, with all that said, I’ll shut up now, and let you do the talking.
- Can you give us your description of what AcquiaU is?
The program is 14-weeks of hands-on training in Drupal, Acquia Products, related web technologies, and professional development skills like team building, leadership, and communication skills. We spend the first 6 weeks in a classroom environment, which is a combination of lecture, group projects, individual assignments, and self-paced learning. The most recent graduates’ project was to redesign the program’s website, u.acquia.com Each participant is assigned an Acquia Mentor who is there to not just be a buddy, but to help from a technical perspective. The next 8 weeks are spent with job rotations where they work with our customer facing Professional Services developers and customer support. Each person is assigned a client team and works side-by-side on real projects. You might think it is like any other tech bootcamp out there but we differentiate ourselves in a couple of key areas. First, we make sure we have an open job opportunity for each person who joins the program and second, we pay people to learn. Many other bootcamps have a high cost- on average up to $10,000 and while they help with job placement, I can’t say how many have jobs lined up for graduates BEFORE they join the program.
How do you select your candidates? Or can anyone join the class?
We have a rigorous screening process and look for people with 2-3 years of technology experience, but who might not be able to get a job with a development shop. A lot of times, this level of talent is overlooked because companies don’t have the internal mechanisms to train, mentor, and coach junior level talent. They are already stretched thin and want new hires to hit the ground running at a fairly high level of proficiency.
What types of skills do you teach?
We dive deep into Drupal and other web tech skills like Drush, GitHub, and Agile and a dive into our own products and services. Helping people become well rounded also means that we do workshops in team building, communication skills, and presentation skills. The next session will have an engineering focus so we will be digging into LAMP stack and web architecture.
Do the students have any obligation to Acquia at the end of the program? (Like they have to work for you for a given time period after the program?)
People are hired on as temp employees and we really hope they have had a great experience and want to stay on. The program’s goal is to hire them at Acquia or with one of our partners.
What percentage of students would you say you hire on average?
So far we have a 90% hire rate. The goal for 2016 is to expand the program and hire more people into other Drupal shops
Do you have information about those that you don’t hire? Do you know if they’re employed somewhere else? Or did they decide Drupal wasn’t for them?
Now that you have a few classes under your belt, is this something you think other shops should look into doing?
- People have asked me this and I think they should think about what the end goal is. Our program is not to just train more people for Acquia, but to give back to the Drupal community by creating a long-form drupal training program with learning paths and a structured hands-on curriculum.
We were talking before we started recording about this idea. Mike had mentioned that shops should create a talent pipeline. And while I agree with that in theory, what that means is that the shops first have to develop a training program, and one or more people who are skilled at both Drupal and teaching in a way that doesn’t alienate the trainee. From your perspective, how would you respond to that?
- Having a talent pipleline means that you have a people development strategy that aligns to your business strategy, and that you have launched that people plan long before you launch the business strategy. Most companies play catch-up and are more reactive than proactive. Being proactive means you’re looking ahead 2-4 years out and making plans for your people.
If there is a shop owner out there listening right now, what would your advice be on how to go about creating a program like this?
- I think you really have to be prepared to commit. Budgets need to allow for hiring junior talent, the business needs to be ready to bring in this level of need. It takes a lot of planning to launch a program like this. For companies that can’t support hiring 5-10 junior level talent, they should start out with a smaller number. A really strong learning program doesn’t just focus on the skills, but on different ways that people will need to learn and being able to translate really complex ideas into ways that different people will relate to. If you’ve ever heard about the adult learning cycle and experiential learning, we know that people tend to be most successful learning new skills when they can reach back into their own experience and apply them to the new content. Being a really strong developer doesn’t always mean that you can tap into other peoples’ experiences and make it relevant to them now. So when you look at creating that pipeline and having junior level talent come on board, you also have to figure out the most effective way to do it.
Preparing for the exam:
- Review this great guide: Five Steps to Get Ready for the Acquia Certified Developer Exam (pdf)
- As the guide says, review topics (in the pdf appendix) and identify your weaknesses, read up on your weaknesses.
DrupalEasy is so excited to announce that we are teaming up with Stetson University to present the first comprehensive, university-based Drupal career professional development program in Florida! The Drupal Career Certificate Program (DCCP), which is built on DrupalEasy’s Drupal Career Starter Program curriculum, marks an official entrance to the Drupal talent pipeline through the US higher education system. The DCCP, now part of the university’s Boundless Learning programs, will be officially announced at Florida DrupalCamp 2015! The first course will kick off this Fall at the Stetson Celebration Center located right in the middle of Florida's High Tech corridor on the outskirts of Orlando.-->
We don’t have a lot of feedback about how our patrons are using the current equipment booking system. There may be information that users could share with one another (and the library) if given a mechanism to do so. So as part of the new booking system implementation in Drupal, we set a task of including a commenting feature. Each reservable piece of equipment stands alone as a node so all we have to do is turn on commenting, right?
But there are a couple of things that are worth noting about that.
If you’re enabling comments on a content type, it’s probably a good idea to consider who can view (and post comments to) that content. That’s all in the permissions table.
In our scenario, we didn’t want unauthenticated comments and we didn’t want to restrict the individual equipment pages (e.g. the page for iPad copy 2) to any kind of login. The request to reserve equipment from that page would trigger the login.
The snippet from the permissions table below shows how we adjusted the comment access. Note that these will be permissions that will apply anywhere else on we’re using comments on our site … we’re not currently, but if we do in the future we’re fine with this access level.
Once authenticated, the comment form defaults to give users a text format selection option. There are advantages to users selecting a WYSIWYG format This too can be handled in the text format configurations or even the permissions table. An easier way is with the Simplify module.
Simplify gives you an interface to hide a bunch of stuff that may be noisy to users adding content — publishing options, path settings, etc.
And for comments it lets you hide text formats.
The finished product:
Anyone interested in helping with this?
This week on the show we will be discussing the new Configuration Management system in Drupal 8 based on an article by Victor Kane, and once again dive into RESTFUL Drupal, or Headless as the cool kids say, based on a blog post from Joris Snoek. We’ll go over some Drupal 8 news and once again Ryan will bring it home the Closing Bell.
The future of the web is inarguably mobile. Mobile use is clearly increasing as people spend more time on their phones, and the rate that people are using dedicated mobile apps rather than their mobile browser is also increasing. But with web services, mobile apps can integrate popular web-based content management systems and in the process save hundreds of development hours while providing enhanced user experience for both the end user and web editors. This also creates tremendous, largely untapped business opportunity for agencies.
Drupal and WordPress power 2.1% and 23.3% of the web, respectively. There are many contrasts you can make to decide “which is better,” but in the end it comes down to the question of “what is the right tool for the job?” Drupal runs a smaller percentage of the web so it is targeted less by hackers, thus making it less vulnerable. In Drupal all contributed code or “modules,” are peer reviewed at http://drupal.org, helping to ensure quality and stability. Conversely, because of the smaller community and the strict review process there are less modules that get released than WordPress “plugins.” This puts Drupal at a distant second in the volume of contributed plugins/modules that are available. Still, Drupal 8 (the next release of Drupal), shows foresight into the future direction of the web, taking into account “the web of things” or to many web developers the “elephant in the room” Mobile Apps.
Drupal has fully mature projects that turn it into a powerful backend or RESTful “web service” that can be used to provide data to mobile apps via API calls. Drupal 8 comes with the very powerful and stable “Services” module built into D8 core, meaning it will come bundled in every new site of Drupal 8.
To put it simply, your Drupal or WordPress website could be powering the next best mobile app. “The web of things” is another way to say web services, the things that make the apps we use every day “do” things or “talk to” things. Snapchat for example is a popular app, but the native code, the kind written by an iOS or Android developer in the languages Java or Objective C, is quite simple. The heavy lifting is done by a web server somewhere which exposes data through “REST endpoints”;” this web server could be a web app like Drupal or WordPress running the ubiquitous language PHP.
PHP runs on about 75% of websites today, it can be looked at as a big ship – it takes a while for it to turn around (incorporate latest innovations) but it eventually does. While newer languages innovate quicker, PHP has proved to have a dedicated community that eventually does evolve with the times. For these reasons PHP is here to stay.
There are a variety of methods to utilize Drupal or WordPress to create an app that can be purchased on the iOS and Android app stores. For larger budget projects or projects started from scratch, the best method is to code the entire front-end presentation layer of the app in a native language, then use a web service to pull data in from a Drupal/Wordpress web app on “the cloud.” Some people may be able understand this by thinking in the terms of “feeds,” though the technology is quite different. The benefits are clear — you could have a powerful website and also a mobile app for less effort than it would cost to develop each individually with completely unique data sources. It also allows editors to login to their familiar Drupal/Wordpress editors and push out content that will then go to the app and website simultaneously.
Another hybrid method I developed which is very useful for smaller budget projects and for websites that already exist, is to create an API only for the login interface. I created a very simple API and native front-end to handle the login and password reset functionality. The rest of the app is a web view or “wrapper,” meaning that after you login, you just see the website. What makes this so cool is that it does feel quite “appy.” The native feel is enhanced by native navigation and custom offline messaging. After the user enters their email and password into the native interface they never have to login again, thus giving an experience identical to an app in every way. They simply click the icon on their homescreen and they are in. What is happening behind the scenes is that the email and password are getting saved and the user is being logged into the website via the API every time they click the icon.
Through the growth of RESTful web services we can have it all. We can build both web and mobile apps with greater ease than ever before, by simply reusing the same backend infrastructure for multiple platforms.
Erik Baldwin (BLadwin) and Mike Herchel (mherchel), two of the featured speakers for Florida DrupalCamp join Ted Bowman and Mike Anello to talk about their sessions, the other featured speakers, and the wide-range of other activities going on around this weekend's camp. We also pay our respects to Aaron Winborn, discuss content types and other entities, D8 Accelerate, and a host of other Drupal-related topics from the past few weeks.
We at Zivtech care about accessible websites and strive to make our projects usable by the widest range of people possible. We aim to produce websites that adhere to Section 508 standards and WAI-ARIA guidelines.
Sometimes a client has specific needs for compliance, like a government or university website. In general though, accessibility should be a goal for any website, so that users of any ability can meaningfully interact with the Internet.
With that in mind, you may find yourself focussing on ensuring old browser support, like IE (Internet Explorer) 10 or earlier. You want the widest audience using your website. Yet worldwide browser statistics show IE 8 at around 3-4% usage over the last year. Since IE 9 and 10 auto update to IE 11, their usage is nearly non-existent at this point. (note: Some clients need old browser compliance, but that is less often the case.) At the same time, it's possible that more of your website visitors have low vision. Thus it's arguable you'll get a higher return on your development dollars if you prioritize accessibility rather than IE 8 support.
To provide accessible websites, Zivtech produces a contributed starter theme for Drupal called Bear Skin. It was recently updated to include more accessible markup, and is free for use.Accessibility in the Bear Skin theme
We made our Drupal theme more accessible by focussing on three major sets of updates: semantic markup, 508 compliance, and ARIA. The first two sets, markup and 508 compliance, are really the "low hanging fruits." They provide great enhancements, but require the least effort. Letting Drupal render accessible markup with ARIA is more time intensive, but ultimately provides the best experience for screen readers.Semantic Markup
Semantic markup comprises the intent and purposes of HTML5 standards. These standards introduced several new HTML elements and deprecated some others. Ensuring your theme markup uses semantic HTML is the easiest way to provide a minimal amount of accessibility for people with screen readers or other assistive technology.
My favorite resource for keeping up with HTML5 standards is the HTML5 Doctor website. They provide contextual documentation for standards, including sample markup. It's easy to compare your Drupal theme markup with compliant HTML5 markup, and suss out where you need improvements.
While it may seem like a big task, we found it pretty straightforward to update Bear Skin's markup. For example, the main content area of the page uses the main HTML element. Also, the previous Bear Skin revision used the hgroup element to group titles and subtitles on pages. Yet that element has been removed from the HTML5 spec, and was plucked out of Bear Skin as well.508 Compliance
Many of the requirements for 508 compliance are thought of as best practices for HTML, so it's likely your Drupal theme is nearly compliant already! For example, Section 508 stipulates that images need meaningful alt tags and each form element needs a meaningful label. These two examples are things you hopefully have in your theme already.
While updating Bear Skin, we also went over this 508 compliance checklist provided by WebAIM. Some additional features added to make Drupal 508 compliant were skip links to direct a user straight to the main page content, and ensuring the page is still usable without CSS.WAI-ARIA Integration
The Web Accessibility Initiative section of W3C created ARIA standards as a way to provide screen readers the ability to meaningfully interact with a web page. ARIA standards are very in depth and wide-reaching, and can be somewhat confusing at first glance.
If you're going to review your own Drupal theme for ARIA compatibility, take a look at this spec produced by the W3C, Using WAI-ARIA in HTML. It includes all the basics of ARIA, as well as a short table of commonly used elements.
Landmark roles and aria-* properties are sprinkled throughout Bear Skin, and can provide your own website with a great base-level of support for screen readers.Testing Tools
Before beginning your adventure in making your website more accessible, or after you've made updates for 508 & ARIA compliance, there are some tools available to help validate your work.
While it's not yet perfect, the regular XHTML validator is good about spotting errors in ARIA. Since a lot of Section 508 is also considered best practice for HTML, the validator is even better about spotting a lot of 508 compliance pitfalls.
WebAIM produces a tool for accessibility checking called WAVE. It can review your site for many things, like 508 compliance and ARIA. It also checks more general things like ensuring high enough contrast between text color and its background color.
If your website is in development or behind a firewall, you might not be able to provide a public link for the WAVE website. If that's the case, you can use a toolbar for Firefox or a plugin for Chrome.Accessible Development and Design at Zivtech
Zivtech is experienced with adhering to government standards for accessibility, and it's important to us that people of all abilities can use your website. If you need help making your current website more accessible, or if you want to start a fresh site with a focus on accessibility, contact us for help.Terms: DrupalDrupal PlanetaccessibilitySection 508 Compliancethemingbear skin
Frequently asked questions, or FAQ for short, are fairly common on websites these days. A good FAQ page can help in reducing the number of support requests for basic questions. Whenever I need help on a website, the first thing I look for is the FAQ page before I contact them.
In Drupal, a FAQ page can be created in a few ways. First, you could write the HTML and anchor tags by hand or you could use a module like FAQ Field.
The FAQ Field module comes with a custom field called "FAQ Field" which you can add to any type of entity. It also has a few handy formatters to display the FAQ.
I should also mention that you can use the FAQ module to create these pages. The biggest difference is that the FAQ module has its own content type, whereas, the FAQ Field is based around a field. This is useful for creating FAQs on a Product content type.
In this tutorial, you'll learn how to setup and use the FAQ Field module. We'll add the field to the "Basic page" content type that comes with the standard installation of Drupal.
To be able to render cache all things that can possibly be render cached, Drupal 8 code must:
- set the right cache max-age — to ensure only the cacheable parts of the page are cached
- set the right cache contexts — to ensure content is varied as expected (per language, per role, per timezone, per user …)
- set the right cache tags — to ensure rendered content is invalidated when the data it depends on is modified
Before Drupal 8, approximately zero attention was given to cacheability of the rendered content: everything seen on a Drupal 7 page is rendered dynamically, with only the occasional exception.
By flipping that around, we make developers more conscious about the output they’re generating, and how much time it takes to generate that output. This in turn allows Drupal 8 to automatically apply powerful performance optimizations, such as:
- enabling Drupal’s internal page cache (for anonymous users) by default: d.o/node/606840, which requires cache tags to be correct
- smartly caching partial pages for all users (including authenticated users): d.o/node/2429617, which requires cache contexts to be correct
- sending the dynamic, uncacheable parts of the page via a BigPipe-like mechanism: d.o/node/2429287
(The first of those three will likely happen this week. We’re working hard to make the last two a reality.)Visualization
Caching means better performance, but it also means that without the correct cacheability metadata, the wrong content may be served to end users: without the right cache contexts, the wrong variation may be sent to a user; without the right cache tags, stale content may be sent to a user. Therefore we should make it as easy as possible to analyze the cacheability of a rendered block, entity (node/user/taxonomy term/…), view, region, menu, and so on.
It should work not only for cacheability metadata, but for all bubbleable metadata3: it’d be very valuable to be able to see which part of the page caused an expensive cache context or tag 4, but it’d be at least equally valuable to see which part of the page attached a certain asset5.
Since bubbling happens across a tree, it’s important to visualize the hierarchy. The best hierarchy visualization I know in the web developer world is the Firefox Developer Tools 3D view.
I think a tool for visualizing, analyzing and understanding the bubbleable metadata (cache contexts, cache tags, cache max-age, assets) should work in a similar way. The developer should be able to:
- look at the document in 3D in different layers and/or queries (assets, cacheability as a whole, but also only cache contexts, only cache tags, or only max-age)
- zoom in a specific element, and look at all of its bubbleable metadata
- reposition the 3D view, to look from different angles — humans are very proficient at processing visual data
So, over the past weekend, I worked on a prototype. I read the CSS Transforms spec6 and read a CSS 3D transforms introduction. As somebody with little CSS knowledge and not having touched CSS nor 3D programming in years, it was fun to play with this ) The result:
And finally, a short screencast demonstrating it in action:
Give it a try yourself by applying the attached patch to Drupal 8 at commit daf9e2c509149441d4d9a4d1964895179a84a12c and installing the renderviz module.Want to help?
But it’s a lot of fun to work on, and it’s very different from what most of us tend to work on every day. If you’d like to be able to build sites in Drupal 8 with a developer tool like this, please contact me, or leave a comment :)
A cache tag is expensive if it’s invalidated relatively frequently (which causes all render cache items that have that tag to be invalidated). A cache context is expensive if it causes many variations (for example: per-user caching requires a variation of the render array to be created for every single authenticated user). ↩
The Chapter Three team is getting out and about this weekend to attend two Drupal camps on opposite sides of the country. These camps are great opportunities to learn new skills and connect with the Drupal community. Looking forward to seeing you there!
Casey and Drew are presenting on some advanced theming concepts: