I work for the machine three days a week, making money to provide for my family and playing the game. It is soul-sucking work, not because it is inherently bad or wrong, but because every fiber of my being knows that I am called to something much more aligned with Life. Most of us are living lives of quiet desperation, trapped in the matrix despite seeing our plight. Knowing is not enough. The structures that we need to support the new world still mostly exist in the minds and hearts of our future selves.
A poem for my beloved, with whom I will celebrate 23 years of marriage next July. As with all true loves stories, the winding path of our lives together has spanned breathtaking mountain vistas as well as excruciating dark valleys. Surprisingly, and completely unpredictably, we recently passed through one of these shadowy places. In the impenetrable darkness of that long and lonely night, we could barely imagine dawn's arrival. And yet, we are now standing together in the sun's resplendent light, blinking in wonder at our heart's capacity to forgive, to change, to heal, and to embrace the profound mystery of sovereignty.
There are moments in life when our hearts reawaken to the centrality of love. If you have children, perhaps you remember the moment when you first held your newborn. In that liminal time, your heart sang and called out its reminder for you to live from your greatness—your best self. If you don't have children, perhaps you remember the experience that unfolded after the death of a loved one. My first touch of death happened when I was 9, and my cousin, David, died after a tragic battle with leukemia. He was only 6, but the love and openness he shared during his short life touched many people. Even at that young age, I remember thinking about how my life would be different because of him. I deeply yearned grow into a person whose life would express the fullness of this gift we've been given. Death and birth are two experiences that can open the window of our hearts, and let the breezes flow through and enliven our spirits.
I used to dread going to work. My office space, originally built as a temporary partition, had become a long-term work "environment" that I experienced as dark, stale and lifeless. As a web developer, I yearned to spend less time in front of a computer and more time outdoors. I set up a part-time remote work arrangement, in part because I couldn't fathom spending 5 days a week there. Inspiration struck, however, and I found a way to not only transform my lifeless space, but also my experience of work and life itself. I now look forward to going to work most days, and smile every time I open the door to the sight and smell that awaits me upon arriving to my office.
This is part 2 in this series that explores how to use paragraph bundles to store configuration for dynamic content. The example I built in part 1 was a "read next" section, which could then be added as a component within the flow of the page. The strategy makes sense for component-based sites and landing pages, but probably less so for blogs or content heavy sites, since what we really want is for each article to include the read next section at the end of the page. For that, a view that displays as a block would perfectly suffice. In practice, however, it can be really useful to have a single custom block type, which I often call a "component block", that has an entity reference revisions field that we can leverage to create reusable components.
I'm not going to tell you who to vote for, or how important this election is. As the old parable goes, "who is to say what's bad or good?" Feeling angered by that statement? This article is for you, then, because the larger story is so much bigger than this election cycle. The world we've created, and in which almost all of participating, is a reflection of the inner state we cultivate each day. As Einstein said, "no problem can be solved by the same level of consciousness that created it."
Perhaps you've read the hype: each of us is born with a "genetic set point", which roughly determines our lifelong, baseline level of happiness. It's typically expressed as roughly 50% of what makes up our specific level of happiness, along with 10% life circumstances, and another 40% "personal outlook". Maybe you read The Happiness Advantage, watched some TED talks, started a gratitude practice, journaling or meditation. You found some temporary respite, but all evidence pointed to the sad reality that you drew the short straw around your happiness set point. Life, inevitably, returned to its baseline. Perhaps, like me, you even wished that some fatal illness or accident would take you from your misery. After all, who wants to endure a lifetime of suffering and then look back on your death bed at the wreck of a broken life?
"Pullquotes", as described here, differ from blockquotes because they duplicate a section of text within the page, and get styled in a way that draws the reader's attention to the quote. As such, one simple solution that I've been using is to allow content editors to select a section of text while editing and click a button in the interface to designate it as a pullquote.
This morning I stumbled upon a reflection I wrote back in 2010 but never published, and was struck by the relevance in terms of recent conversations. It felt like a letter I had written to my future self. In it, I discussed three key insights: 1) Be the change we wish to see in the world, 2) embrace my gifts and offer them to the world, and 3) simplify by consuming less and appreciating more. These insights feel more true for me today, and also more possible, than I ever could have imagined.
Many of us in the web development industry have been pushing pixels around screens for decades now. If you're like me, you find a lot of satisfaction in the creativity you are able to bring to your work. For me, though, nothing in my career truly prepared me for the insight that was hiding in plain sight all this time, just waiting to be embraced: how profoundly I could transform my experience—my YouX—simply by bringing my creativity and love of building off the screen and into the real world.
The paragraphs module has become a central ingredient for many component-based sites in recent years. However, our content strategy also often requires components that display dynamic content (think "Read Next", or "Also of Interest"). In this tutorial, I'll demonstrate how we've been solving this problem, by building paragraph bundles that serve as configuration entities that we can then use as arguments that we pass to a view via the Twig Tweak module. You can see a working version of the dynamic content component we'll be building in the "Up Next" card grid at the bottom of this tutorial.
A couple of months ago, team ThinkShout quietly introduced a feature to the MailChimp module that some of us have really wanted for a long time—the ability to support multiple MailChimp accounts from a single Drupal installation. This happened, in part, after I reached out to them on behalf of the stakeholders at Cornell University's ILR School, where I work. Email addresses can be coveted resources within organizations, and along with complex governance requirements, it's not uncommon for a single organization to have internal groups who use separate MailChimp accounts. I'm not going to comment on whether this is a good or wise practice, just to acknowledge that it's a reality.
Recent additions to Drupal 7’s MailChimp module and API library offer some powerful new ways for you to integrate Drupal and MailChimp. As of version 7.x-4.7, the Drupal MailChimp module now supports automations, which are incredibly powerful and flexible ways to trigger interactions with your users. Want to reach out to a customer with product recommendations based on their purchase history? Have you ever wished you could automatically send your newsletter to your subscribers when you publish it in Drupal? Or wouldn’t it be nice to be able to send a series of emails to participants leading up to an event without having to think about it? You can easily do all of those things and much more with MailChimp automations.
tl;dr If your D7 site uses features or has many entity types, some recent patches to the features module and the entity api module may deliver dramatic performance increases when you clear Drupal's cache. The magic: $ drush vset features_rebuild_on_flush FALSE $ drush vset entity_rebuild_on_flush FALSE
In part 1 of this tutorial, we covered how to configure and use Ansible for local Drupal development. If you didn't have a chance to read that article, you can download my fork of Jeff Geerling's Drupal Dev VM to see the final, working version from part 1. In this article, we'll be switching things up quite a bit as we take a closer look at the 2nd three requirements...
A couple of months ago, after a harrowing cascade of git merge conflicts involving compiled css, we decided it was time to subscribe to the philosophy that compiled CSS doesn't belong in a git repository. Sure, there are other technical solutions teams are tossing around that try to handle merging more gracefully, but I was more interested in simply keeping the CSS out of the repo in the first place. After removing the CSS from the repo, we suddenly faced two primary technical challenges...
As I mentioned in my hello world post, I've been learning Ansible via Jeff Geerling's great book Ansible for Devops. When learning new technologies, there is no substitute for diving in and playing with them on a real project. This blog is, in part, the byproduct of my efforts to learn and play with Ansible.
Welcome! This site has been a while in the making, but I'm really excited to share it with you. Back in Austin at DrupalCon, I was inspired by Jeff Geerling's "Devops for Humans" presentation and immediately decided that I needed to start using Ansible. Well, it's been a long road, but the site is now live and I'm really looking forward to sharing the ups and downs of the journey. Oh, and if you don't have it already, Jeff's book Ansible for Devops is well worth it. More soon...