We're celebrating two hundred and fifty HOURS of video lessons on Drupalize.Me! And now you can help us celebrate by joining the Drupalize.Me family at a discounted rate. For the next three days individuals can save 25% on your new membership* by using the discount code 250HOURS.
This sale will only last three days. Sometimes we get all weak and cave to public pressure. But not this time because next week we'll have released new videos and there will be more than 250 hours of video. (You can only celebrate a milestone for so long...and we've decided that three days is it.)
We've got videos for site builders, module developers, and themers. We cover modules like Rules, Omega, Panels, Views, and Organic Groups. We cover topics such as Drush and Git. Every account has a personal playlist too so that you won't forget which videos you want to watch next.
If you've never been a member of the Drupalize.Me program, or if you let your membership lapse, now is the perfect time to save some money AND brush up on your Drupal skills.
* The 25% discount can be applied to any level of new individual membership (monthly, bi-annual, or yearly), and will only apply for the first payment. E.g. if you purchase a monthly membership, you will only receive the 25% discount on your first month.
The bulk of Drupal hosting for clients that we deal with is on virtual servers, whether they are marketed as "cloud" or not. Many eventually have to move to dedicated servers because increased traffic or continually adding features that increase complexity and bloat.
But, there are often common issues that we see repeatedly that have solutions which can prolong the life of your current site's infrastructure.
We assume that your staff, or your hosting provider, have full access to the virtual servers, as well as the physical servers that run on them.
Mentioned in this episode:
Git is often touted as among other things being extremely flexible. It's a big selling point for the software. You're not throwing all your eggs in one basket and assuming that there is one singular workflow to rule them all. This flexibility can also be a challenge though. In this podcast we'll talk about the various ways that we at Lullabot use Git when working with teams of people. Both small and large. And the organizational tricks we've learned along the way to help make sure our projects continue moving forward and don't get to messy.
Some of the things discussed include designating someone as a branch manager, working in feature/task branches to keep your code organized and easy to review, and using pull requests. Spoiler alert! We end up boiling it all down to this. There is no one perfect way, but whatever way you decided to organize your team make sure you document it and that everyone on the team knows what you decided.
Debugging Drupal modules and themes (or Drupal core itself) can be challenging without a good IDE. After using numerous IDE and text editors, PhpStorm has earned its place as my primary IDE for almost anything Drupal-related. By default, PhpStorm is as Drupal friendly as most other IDEs. However, some of its default syntax and formatting settings conflict with the Drupal Coding Standards. Here are a few tips to make PhpStorm play even better with Drupal.
Although not related to Drupal, the Keymap is the first thing I change. By default, PhpStorm comes with keyboard shortcuts I find very unnatural. Under Preferences, scroll down to select Keymap on the left, and select the keymap that suits your needs. Mac OS X 10.5+ feels the most intuitive to me. You can also further customize the keyboard shortcuts to each of the actions.
Syntax and Formatting
Next, let's fix the code style. Drupal recommends less than 80 characters per line, and PhpStorm lets us set that as its default.
First, a briefing of already committed patches: Image toolkits, aggregator processors and parsers are now plugins. The form storage is now in key-value instead of abusing the cache system. Twig is now available during install, unlocking much of the conversion -- this needs your help. Alex Pott has been named branch maintainer which will make the whole commit process much, much faster.
I converted service definitions from PHP to YAML. Strangely this is a pre-requisite to allow cache backends to handle their own bins because during uninstall we do not have any good ways to figure out which bins are getting uninstalling. With the service definition in YAML, service definitions are easy to read by the uninstall processs, find the services tagged cache and tell the cache backend about the bins being uninstalled.
As promised in the last post, I have used the settings override patch -- which is finally getting some serious traction and I expect to get it in within a week -- to write a test for the interactive installer. Previously this was absolutely impossible. First we needed the drupal_rewrite_settings refactor to allow for overriding parts of arrays in settings.php (this is in HEAD) then we needed to allow including such settings.php specific to the test being run (not yet in, but soon). Now there is a test and it passes, adds a mere 150 LoC and not particularly ugly -- there are not-so-pretty parts, of course, but what did you expect from an installer test? The joy and pride I feel over this is hard to put into words. Installer. test!
If you contribute patches to the Drupal issue queues, you often spend a lot of time and hard work getting that patch through the review process. Even though we do it for the good of the community, once it is all said and done, it's nice to get a little acknowledgement. While there is a page for module maintainers on how to properly attribute contributions to users, not all maintainers know about that, and it can often mean they have to spend a little extra time figuring out what your Drupal.org git email address is. But there is a quick way for us as patch contributors to make that easier for them.
Jeff Eaton and Jared Ponchot discuss the parallels between design systems and content models, the challenges of responsive design, and the importance of content hierarchy for designers.
Mentioned in this episode:
I'm pleased to share that Alex Pott (alexpott on drupal.org) has accepted my invitation to become another Drupal 8 co-maintainer, to help move along important issues as we gear up to head into code freeze and then release.
Alex has been working in Drupal for almost 6 years. While relatively new to the core development team, he has nevertheless been an instrumental force in the Drupal 8 Configuration Management Initiative (CMI). This development experience has given him a detailed understanding of various underlying Drupal 8 APIs, which makes him ideally suited to the task of reviewing and signing off on highly technical patches. Alex is furthermore thorough and patient in his technical reviews, and he has been a reliable leader and problem-solver during the Drupal 8 cycle. He is also currently taking time off from work, in order to have more time to dedicate to his family and to Drupal. It's a perfect fit.
When catch, webchick and myself were discussing who would be best to join the core maintainer team, Alex's name was enthusiastically +1ed from each of us. Please make him feel welcome!
Ubuntu Server 12.04 LTS finally provides a stable long term support server distro that has a recent version of Varnish in its repositories.
Trouble is, the repository provided package of Varnish has some issues. Specifically, the command line tools, such as varnishhist, varnishstat, ...etc. do not report anything. Therefore one cannot know the hit/miss rates, hits per second, or other useful information. Moreover, monitoring Varnish using Munin for such statistics does not work either.
There are two ways you can overcome this, both are described below.
Part II in a series of articles about an online web application I am working on. Read Part I
Using any of the frameworks requires more commitment from my code base than I want to give right now
Who are the frameworks a good choice for?
Don't worry: There's no April Fools joke in today's announcement! In the spirit of spring, Lullabot's growing, and we're proud to welcome a crowd of new Bots. May we present the class of 2013 (so far)!
Emma Jane Westby (née Hogbin) has been an active member of the Drupal community for more than twelve years. She's a prolific Drupal speaker and teacher, an accomplished beekeeper, and the author of Front End Drupal and Drupal: A User's Guide. She's built in-depth training curriculum for some of the tech industry's largest companies, and she'll be joining the Drupalize.Me team as education development coordinator.
As the leader of Drupal 8's Configuration Management Initative, Greg Dunlap spent two years building a unified, secure API to consolidate Drupal's scattered configuration data. Long before Drupal, he got his start in photojournalism and eventually made his way to the software side of the news industry at The Seattle Times. He's built pinball and slot machines, co-authored the Packt Publishing's Drupal 7 Module Development, moshed his face off at innumerable punk rock shows… and now, he's joining Lullabot as its newest senior drupal architect.
You may know Kris Bulman as the co-maintainer of the popular Zen theme -- he's been designing with Drupal since 2007, and he's Lullabot's newest front-end developer. When he's not wrangling SASS or dabbling in iOS design, he likes hiking and photography near his home: scenic Prince Edward Island.
A couple of weeks ago Acquia, the Red Hat of Drupal, reached out to fellow CMS founder, Matt Mullenweg of WordPress, to see if he would consider switching to Drupal. As luck would have it, this was enticing to Matt. He has long understood the value of the Drupal community and has been looking for ways to leverage our community to make WordPress even better. When Acquia suggested switching to Drupal, it dawned on Matt that this was certainly the easiest way to integrate with Drupal without irritating his webmaster.
"I have always wanted to be part of the Drupal community, where technical expertise is sought after to create some of the most advanced websites. This move demonstrates the synergy between WordPress and Drupal without the possibility of function name conflicts." - Matt Mullenweg
Several months ago I started working with some of our top developers to try to come up with a practical integration strategy between Drupal and WordPress. We had been struggling with this for some time when webchick said jokingly: "It would be a lot easier if they would just use Drupal instead".
To be honest, I felt a bit silly even talking to Matt about using Drupal, but I didn't know at the time that he had been struggling with exactly the same goal and the same problems. webchick's inadvertent idea has ushered in new possibilities for innovation and frankly this is such a fundamental change for us I can't even imagine the world as it was before.
I am very excited about this collaboration. WordPress and Drupal form a killer combination that can't be beat in today's CMS market. I can hardly wait for the WordPress developers to get their drupal.org accounts set up, so we can work together in ways that were never possible before. I also suggested xjm to setup extra "WordPress tables" at the DrupalCon Portland code sprint.
A new Drupal module has been created to ease the transition. The "WordPress_iframe" module will be available on drupal.org soon. It facilitates a rapid integration of existing WordPress sites into their Drupal counterparts. We are excited about the debut of this new module because it embodies the Drupal community's open acceptance of this partnership while it allows us to roll out literally millions of these new Drupal/WordPress sites over the coming weeks.
As part of the agreement, Matt didn't want to completely move away from the WordPress branding, so we have incorporated it into Acquia's logo. Phonetically Acquia is pronounced ah-kwee-uh, so we've swapped out our Q for the well-known WordPress "W". The name is still pronounced "ah-kwee-uh" but will now be spelled "Acwuia". This visually puts WordPress right in the center of our logo - exactly where it belongs. This is WordPress, powered by Drupal.
We are very proud of this partnership and look forward to serving many more customers as a result. You can expect many more great things from Acwuia coming soon.
Matt, your Red Press of Drupal t-shirt is on the way. Let's stand together as brothers, united in Drupal!
It really frustrates me that while github nicely automated forking, there's no "update fork" button. For me, it's tedious and difficult to juggle two remotes. Instead, I added a single line to .git/config:
url = email@example.com:symfony/symfony.git
pushUrl = firstname.lastname@example.org:chx/symfony.git
Now, I pull from the upstream and push to my own repo. Also, git config push.default current will make git push work on a newly opened branch instead of whining about the need to run git push -u origin branchname. I like it so much I have git config --global push.default current.
Edit: if you had a clone before this, do not forget to make sure that your branch in .git/config uses the "remote" origin:
remote = origin
merge = refs/heads/develop
Earlier today, I posted a brief tweet (isn't that redundant?) about return values in PHP (or really, any language). Originally it was about return values from functions (such an exciting topic, I know), but it ended up generating a fair bit of lively conversation, as well as a patch against Drupal 8. So lively, in fact, that I think it deserves more than 140 characters.
If your function returns a collection, its null value return must also be a collection.
As you may know, Lullabot is a completely distributed company. Most of our people work from their homes all across the U.S., Canada, and Europe. We have an office in Providence, RI near where I and Lullabot's other co-founder, Matt Westgate, live. However none of us work from that office as our primary location. We've found ourselves to be much more productive working from home or wherever we can get a connection for our laptop and mobile phone. Over the past 8 years we've had almost 75 employees and we've worked with many Fortune 500 companies. The walls of our office are covered with logos of companies like NBC Universal, The Grammys, Turner Broadcasting, MTV, Sony Music, Harvard University, and more. We use the space for meetings, meetups, and workshops, but we don't work there.
There's been a lot of talk recently about Marissa Mayer's memo requiring Yahoo's remote workers to relocate to company facilities. Now Best Buy, a company whose logo is also on our wall, has jumped on board and started reeling in its telecommuters. I've felt obligated to weigh in, and many of my friends and coworkers have been pushing for some defense of remote working. However, I've been struggling a bit to come to terms with my feelings about this. The truth is, I'm just not sure this is a bad thing for Yahoo or Best Buy.
Alienating Remote Employees
Today, Khalid gave a presentation on Drupal Performance and Scalability for members of the London (Ontario) Drupal Users Group.
The slides from the presentation are attached below.
Try as you might to stop it, sometimes it's inevitable. Content editors, RSS import scripts, and other tools result in a designer's nightmare: raw images unceremoniously dropped in node bodies. They clump over to the left, break up the flow of text, force editors to manually tweak the markup of the guilty nodes to keep things looking good. Thankfully, there's a solution for Drupal 7: AutoFloat.
Autofloat is a simple input filter that can be added to any Input Format on a Drupal site, like Full HTML or Filtered HTML. It scours the filtered markup for image tags, adding extra CSS classes that float them, alternating left and right to keep the layout from getting stale.
Autofloat can also be configured to do its processing but leave out the custom CSS rules, add extra classes to the images it detects, or ignore images that already have custom CSS classes assigned. The result is a handy tool that can prep manually-inserted images for your own custom CSS, without its own styles getting in the way.