This pretty much sums up my DrupalCon Nashville experience. Thanks to Chris Greatens for the goofy photo.
Very much looking forward to spending next week in Nashville attending my 4th DrupalCon. The spontaneous and unplanned stuff is half of the fun, but there are a few things that are locked on my schedule.
Monday: Decoupled Summit - I'm excited to hear more about what people are doing in the decoupled Drupal space. This will be my first time attending a summit at DrupalCon as well.
Tuesday 1 PM: Components and the Layout Initiative BOF - I'll be leading an open discussion on how the Layout Initiative might impact our component-based workflows. I've really enjoyed the BOFs I've led in the past and expect this to be no exception.
Wednesday 3:45 PM: Hot JAMS(tack): Building a Music Discovery App with Drupal and React - I'll be sharing my experience building a music discovery app with Drupal and React in my first ever talk at DrupalCon.
Thursday: Who knows!
Can't wait to say see friends old and new, learn a bunch of cool new stuff, and land a country music recording contract.
As always, I learned a few things this week upgrading projects to Drupal 8.5 and applying the most recent highly critical Drupal security update.
The first is yet another reminder to carefully read and consider the documentation. The highest priority projects that I needed to apply the security release to were on 8.4.5 at the time of the pre-announcement. I took this as a good opportunity to upgrade to 8.5 and then kind of got tunnel vision about getting these projects, and also my lower priority D8 projects up to 8.5 in preparation for the security release. Not having looked back at the security advisory since my initial read, I lost sight of the fact that I could easily apply the patch to their current D8 version and worry about 8.5 when the pressure was off a little bit. Thankfully I was reminded of this during a well timed check in meeting with the Drupal practice at HS2 - a few of my 8.5 upgrades were a little behind schedule. Having the flexibility to apply the security update to older versions of D8 really helped and most likely prevented us from rushing a few upgrade related regressions out into production.
Speaking of the 8.5 upgrade getting a bit behind schedule, minor Drupal updates (8.4, 8.5 and so on) are still more challenging than I'd expect them to be. Jeff Geerling's post Updating drupal/core with Composer - but Drupal core doesn't update proved invaluable as I ran into the same issue. I also had another pretty tricky dependency conflict that eventually required me to remove and work around a dependency (again, Jeff Geerling's post helped quite a bit here.) After successfully upgrading to 8.5 composer-wise, I found that a patch to Page Manager needed to be applied for the site to even run.
I'm getting better with managing Drupal projects via composer, but still have some room to grow. Lowest hanging fruit is that I need to start managing patches via composer. Once that clicked in my brain it was a little to late to experiment with it. Next time. I also still sometimes get tripped up with the difference between the ^ and ~ version constraints in composer.json which is embarrassing to admit.
I also ran updates on Drupal instances based on API-first distributions. Those were a bit of a different beast. In my case, most were single purpose enough that I was able to just run composer update and call it a day. That said, each distro had their quirks. The version of Reservoir I was using had a dependency conflict that prevented the upgrade until I manually locked Reservoir at Alpha 4. Contenta seems to have a patch that won't apply to 8.5
I'm all for learning, but also looking forward to this process becoming smoother sailing in the future.
A great listen that could serve as a solid introduction to the JAM Stack concept. Especially interesting was the focus on some common counter arguments to the JAM Stack (dynamic things like forms, comments and so on) and how those may be more achievable than one might originally assume. As I try to add a little more punch to the JAM Stack focused portion of my DrupalCon talk I see myself going back for another listen.
With a new critical Drupal security release on the horizon, static site builds are looking better and better. I'm glad I won't have to won't have to worry about this site (Drupal isn't accessible to the public) while I scramble to apply the security release elsewhere.
Another year, another great MidCamp!
I wasn’t able to attend for training and sprints on Thursday (1st grade play FTW!) but ended up talking to a former co-worker who attended the training 'What Am I Getting Myself Into? A Drupal Crash Course for Non-Developers.’ While it's easy to get wrapped up in the new and advanced at a camp like this, it is also really important to see newcomers, beginners, and people with Drupal-adjacent roles take steps into becoming more hands on with the CMS. She specifically mentioned that the training helped her have some revelations about a few Drupal-isms that us crazy developers have been talking about all this time.
After some really enjoyable traffic, Friday brought me to the first day of sessions. A couple of highlights:
Local Dev Environments for Dummies - the bulk of this presentation reviewed data from a 2018 Drupal Developer Survey, and the data alone was extremely fascinating. It also provided some interesting perspectives on Vagrant vs. Docker for local development (go Vagrant if matching your prod environment exactly is important, and Docker for pretty much everything else.) I also walked out of this one itching to learn more about Lando.
Component Based Drupal - Surprise! After a cancellation, Adam Bergstein and I stepped in without much of a safety net (I learned that I was co-presenting this session due to a mention on twitter) to talk about the current state of building and theming with components in Drupal. I’ve always enjoyed my conversations with Adam on this topic because while we primarily agree, we also have some differences of opinion and take some different approaches in our workflow. Continuing this conversation out in the open seemed to be useful to people, and I even got to joke around a little bit. I wouldn’t be surprised if Adam and I presented in a similar format in the future.
Saturday - less traffic, more sessions.
OOP - The Pokemon Journey / Bending Behat's Benefits: A live coding adventure - A journey followed by an adventure? Hell of a way to spend a groggy Saturday morning. I love hearing from both Fatima and Steve whenever I can. The OOP Pokemon Journey was a fun and easy to understand talk on a topic that I honestly don’t yet consider myself an expert on. And Bending Behat’s Benefits made me anxious to incorporate some more test driven development into my process after some time away.
Too many cooks! Supporting augmented teams without getting salty - I wasn’t able to attend in person, but heard great things. It’s next up in the YouTube queue.
American Medical Association: Topic Landing Pages (A D8 Case Study) - an excellent, and extremely relatable talk about the challenges of Drupal 8 landing page building integrated with a pattern library based approach to theming. I’ve felt so much similar pain/joy on recent projects. They also closed with the reminder that we all need to look into how Layout Builder in 8.5 and the Layout Initiative will impact this process going forward, which I think is extremely important.
Hot JAMS(tack): Lessons from Building a Music Discovery App with Drupal and React -This is my attempt to demystify the process of creating a decoupled app with Drupal and React by way of a fun side project. It was my first time giving a talk that I’ve had brewing for a while, and I was happy with how it went. Heard a lot of positive and helpful feedback and have a few things that I think I can tweak to make it more useful for people. Looking forward to presenting it again at DrupalCon Nashville.
Plus, this was pretty cool:
Funny slide! https://t.co/LLqwuVXFb3— Dries Buytaert (@Dries) March 11, 2018
Sunday was sprints, and unfortunately more traffic on the way home. I was dragging a little bit at this point, but still feel like I was able to get a few things done. I got back to the Foundation Patterns theme and responded to the first issue submitted against the project. I helped Tony Klose set up a Pattern Lab instance for a Drupal theme, and realized that I don’t have a clear personal process for including a pattern library as an external dependency of a theme. I also collaborated with Adam Bergstein a bit more looking at a possible React front-end for simplytest.me
A huge thanks goes out to the MidCamp organizers who overcame some pretty steep challenges to put on another great camp. I’ll see everyone next year at O’Midcamp!
Have been hedging my bets about learning Redux, but was getting close to taking the plunge. Now I'm wondering if React's upcoming Context API can meet my needs. Looking forward to more takes on advantages and disadvantages of the context API in comparison to things like Redux.
While Drupalers are rejoicing at these exciting advances allowing newfound front end freedoms, there are still a few hoops to be aware of in order to make the most of Drupal, especially for a newcomer who might be eager to shove aside a lot of what Drupal provides. ...things that are easily dismissed in a component-driven approach, like letting Drupal fully render fields, can cause headaches further on if they’re ignored, and make life difficult when it comes to keeping your front end forward-compatible with Drupal.
The UI Patterns module really does solve many of the problems outlined in this post, so my preference is to embrace that approach and leave these complicated presenter templates behind. But for those who haven’t embraced UI Patterns, this post really is essential.
When explaining some of the gotchas with this approach, I often use images as a simple example. Creating a component from scratch the instinct is often to pass in src and alt values as variables to get the cleanest markup possible. You can get that stuff out of Drupal, but it really is a pain. You’re better off just using the image markup Drupal renders, even if it isn't exactly as clean as you want it to be. Sometimes not fighting this battle at all is the right way to go. But if you want the perfect markup this post has everything you need to do it the right way.
Went down a bit of a CSS-Tricks rabbit hole over lunch today.
Started with Complexity. I've enjoyed all of the recent point / counterpoints about the increasing complexity of front end development. This is a nice summary.
That led me to The Future of Front End Web Development. Totally agree with everything in there, maybe with the exception of 'the line between native and web is blurring.' I'd probably just put that one in the future-future of front end web development category. Not quite there yet, but looking forward to when it is more of a reality.
And then that led me to When Does a Project Need React. The more comfortable I become with how state is managed in a framework like React, the more insane our old jQuery tricks to jam state into the DOM seem. That said, not all projects have complex state.
It's very hard to explain why, but I consider 'U Talkin' U2 2 Me?' to be the greatest podcast of all time. Possibly just one of my favorite things of all time. I don't like U2 all that much, yet somehow hearing Scott and Scott break down U2's entire discography over 24 episodes was something I saved for special occasions and often laughed to the point of tears while listening to. And boy, did they ever spend a lot of time talking about the band U2 (not really.) They even knew the names of every single member of the band. Truly encyclopedic knowledge.
And now Scott and Scott are back with 'R U Talkin' R.E.M. RE: ME?' in which they explore the output of the band R.E.M in what I'm sure will be painstaking detail. I like R.E.M. more than I like U2, but I can't say I would ever want to go through their entire back catalog. Yet somehow here we are again, and I'm excited to hear all about the album Monster. Listening today was just like old times. Can't wait to save for long road trips and laugh to the point of nearly driving off the road.
If you're looking for more info on what the hell this is all about, this Stereogum interview is as good a place as any. It might just confuse you more, which is par for the course.
I noticed last weekend that the build was broken for this site - post switching on the homepage wasn't working, and as you scrolled down, posts started to be wrapped in the container for the previous post. I tried a new Gatsby build and saw the same thing. Next, I zeroed in on the post where content started overlapping and eventually noticed that I had some malformed markup in my post in Drupal - a missing closing quote for a href attribute. After updating the post to add the missing quote and doing another build, everything was fine again.
You could chalk most of this up to me - if I was using a wysiwyg editor it would have added the correct link markup for me, and I should probably be taking a closer look at my build after it goes to GitHub Pages. But I think this hiccup was a nice reminder of the reality of these super sexy decoupled architectures. We lose a bit of the protection that Drupal provided us from something like malformed markup in a body field making a page explode. Builds will break in ways that they didn't with Drupal alone - the site worked fine in development mode but broke when the production bundle was built. And while testing is always important, we likely need to test in ways that are different from when we were testing Drupal by itself.
There are lessons to be learned even in the dumbest of problems. I'm sure I'll run into some more.
Learned the hard way recently that Drupal 8.4 upgrades jQuery to jQuery 3. This kills a few methods that were deprecated in previous versions of jQuery including .load(), .unload(), .error(), and .size(). The release notes cover this, but it didn't fully click until I actually ran into the issue.
Related: is a minor release really a minor release if it contains major release upgrades for a couple of your largest dependencies?
Theresa Nicholls was eager to get back home as she packed her bags at the Hyatt Regency Chicago on Friday.
Her weeklong conference of school psychologists had been rocked by the mass shooting at a Florida high school. A day earlier, a Chicago police officer had been shot and killed in the Loop, just blocks from where she and her colleagues were staying.
As she was getting ready to check out, a friend texted her: There had just been a shooting in the lobby of her hotel.
“What the hell is going on?" she thought. "What is happening? It’s like the world is falling apart around us.”
My wife was at this conference. There are a lot of reasons we need to do something about America's access to guns. Let's add this one to the list.
A great collection of resources on creating decoupled applications with Drupal and React from the Lullabot folks. Hope to contribute a link or two at some point.
I say that I'm a 'full stack' developer, even though it is a term I've never really liked all that much. The main reason that I don't like the term is because I feel like it doesn't mean that much to people. Full stack developer kind of feels like someone saying 'I'll do whatever'.
I'm not sure if it is directly related to being a full stack developer, but over the years I've seen a pattern in how I'm utilized. In my various roles as a developer, I often start out doing front end work, and then over time find myself doing predominantly back end work. This could be because back end work has a higher value at the places I've worked. It also could be because I suck at front end and just don't know it (hopefully not that one.) It's almost as if what people take full stack to mean is that the developer is exaggerating about their skill level on either the front or back end of the stack. Or maybe that they just haven't figured out which end of the stack their real talent lies.
I've always considered myself someone who prefers front end, so that is a bit of a challenging pattern to be stuck in. But lately I've been wondering, am I not being honest with myself?
Maybe I'm just describing myself wrong. I often describe myself as is a full stack developer with a preference for front end. While that sounds kind of like a line from a personal ad, it does describe what I like to work on. I prefer front end work, can do back end work, and especially enjoy back end work when it is in service of making front end work possible or better.
Drilling down on that last part brings us to the section where perhaps I'm not being honest with myself.
I can do back end work, and especially enjoy it when it is in service of making front end work possible or better.
Maybe my real thing is what lies in the middle. The overlapping part of the venn diagram between front end and back end.
There is so much in the middle.
Maybe I've been a middle end developer all along.
iO West, the Los Angeles branch of Chicago’s iO Theater (formerly ImprovOlympic) founded by Del Close and Charna Halpern, is closing its doors for good next week.
At first it struck me as odd that many of my comedy friends on social media were talking about this like someone close to them had passed away, but I eventually realized that I've just been out of the comedy scene too long. If this happened to my home theater back in the ImprovBoston days, I probably would have reacted the exact same way. Running a theater is an inherently risky business and 25 years is quite an accomplishment. I hope everyone finds a new home to keep doing what they love.
Fatima Khalid (sugaroverflow), web developer with Digital Echidna, and DrupalCon Nashville track chair and sprint mentor joins Mike Anello to talk about how to be a first-time sprinter at a local Drupal event or a DrupalCon and how she came for the community and stayed for the code.
Thought this was a really fun and accessible overview of what a sprint is like. I found them very intimidating at first and I think hearing an overview like this in advance would have helped. Don't know how many first time sprinters are avid listeners of Drupal podcasts, but any little bit helps.
Each of these have trees of components which are made up of other components and elements (often named different things). Each element in the tree is independently styled. It's not built around cascading styles and the expectation is that you can copy any element and place it anywhere else and it will look identical.
Interesting way to think about this - the end result of CSS-in-JS might just be what our designers wanted all along.
I also really like the term "Component-Oriented Styles." Be it a methodology like BEM or a library like Styled Components, we're really just trying to make styles predictable within the scope of of a reusable component.
The IndieWeb movement has provided two clever names for these models:
- PESOS or Publish Elsewhere, Syndicate (to your) Own Site is a model where publishing begins on third party services, such as Facebook, and then copies can be syndicated to your own site.
- POSSE or Publish (on your) Own Site, Syndicate Elsewhere is a publishing model that begins with posting content on your own site first, then syndicating out copies to third party services.
I've been thinking about this as well as I build out this website. I fall into the POSSE camp, and right now it's completely manual and mostly just me posting links on Twitter. To some extent, I'm even fine with this website just being its own disconnected thing. It will always be a small subset of my social network that would make it here and actually read something, and that seems just about right.
When initially setting up gatsby-source-drupal for this site I started thinking about how I could adjust my GraphQL query to only include published posts. I eventually realized that the plugin was already doing that by default. That isn't always the case for stuff like this, so it was a nice time saver.
MidCamp is my home base Drupal camp and one that I've attended for years. This week the organizers apparently ran into a pretty major snag with some budgeting issues with the venue.
Clarification regarding #midcamp news: Since we just found out we won't qualify for our venue discount for this year, we are looking to raise an additional $15,000 in sponsorship before 2/15 before making drastic cuts.— Kevin Thull (@kevinjthull) February 8, 2018
For me, MidCamp is a really important part of staying connected with the Chicago-area Drupal community. It is also the first Drupal event I ever presented at, and I'm scheduled to speak again this year. I'd really hate to see MidCamp have to scale back and not be the MidCamp we all know it can be.
There are many ways you can help. If you have a company (or a rich uncle) that could sponsor, that could make a huge difference. If you have the means to become an individual sponsor, that would help too. Word is that they are also working on an option to accept smaller donations as well. And if none of that is possible, registering or volunteering helps.
Do what you can, and hopefully we can all make it happen. Looking forward to seeing everyone in Chicago in March.
Update: MidCamp is also accepting donations of any size
Really enjoying Celeste so far. pic.twitter.com/YAHpq2XdhJ— Brian Perry (@bricomedy) January 27, 2018
Can't recommend Celeste enough. Perfect for Switch.
The call for DrupalCon Nashville session proposals closed this past Wednesday and I was able to get my act together enough to submit two of them. The process of putting together a session submission is always an interesting one for me. For DrupalCon it is usually a wonderful mix of overanalyzing, combined with good old fashioned imposter syndrome. That said, I feel like I improve each time around, and I think these are my strongest proposals yet.
Submission one was 'Component Based Theming with UI Patterns.' I've given this talk before and was happy with how it turned out. I submitted this one very early, and also noticed that Mario Hernandez had submitted another talk on the topic as well. In hindsight, I should have reached out to him and seen if there was any way to collaborate as he ended up joining up with another speaker for his session. Lesson learned for next time.
Submission two was 'Hot JAMS(tack): Lessons from Building a Music Discovery App with Drupal and React.' Strong competition as well here with many Decoupled Drupal and React related topics, but Im hoping I have a slightly different angle that might garner some interest. True to my usual form, I also went with a goofy, high-concept approach with the submission. Almost got cold feet about going in that direction, but decided I'd rather have fun with it. Ironically, with a proposal that heavily references music, I didn't even make the Music City connection until writing this post. Would have been fun to play that angle up more.
This will be my third time submitting sessions to DrupalCon North America (which I guess is now just DrupalCon?) I've never been selected, but I have been asked to be on call as a back up speaker, which I had no idea was even a thing. Regardless of the outcome, I enjoyed the process putting these session proposals together and look forward to Nashville this year. I've never been!
Update: Was a little wrapped up in the DrupalCon deadline, but I also submitted both of these sessions to MidCamp in Chicago. In addition to being my home camp, MidCamp is always really, really great. You should go!
Today, the company revealed a new initiative dubbed Nintendo Labo, which involves DIY cardboard accessories that can transform the Switch’s Joy-Con controllers into everything from a fishing rod to a piano to a full-on robot suit. These accessories are then used to control a variety of mini-games, essentially turning the Switch tablet into a tiny arcade.
Paraphrasing, but when I told my wife about Labo she said, "Nintendo is going to get you to buy a cardboard box, aren't they?"
It wouldn't be a new year without the desire to relaunch my personal website. Happy 2018!
It could be another case of New Years delusion, but this year I think the timing might actually make sense. Over the past year I've been exploring React and the world of Decoupled Drupal. After working through Wes Bos' React For Beginners course and having some concepts finally click, I took another shot at creating a web app based on the Album of the Year Project. Having a project I could slowly chip away at over the year provided a great low pressure way to learn, and also prevented me from having to re-learn things as they vanished from my brain. I'd love to duplicate that situation in 2018.
Next up learning wise I'm planning on continuing my experimentation with the JAMstack by way of Gatsby.js. I like what I've seen of Gatsby thus far. It allows me to leverage all of the things I've enjoyed about React, while combining that with the features of a static site generator like Jekyll or Hexo. And it plays nice with Drupal 8 as well, which is a plus.
So welcome to my new Gatsby site. It will be nice to have an active personal website again, but perhaps even more exciting is the fact that this serves as another low pressure project I can chip away at throughout 2018 to learn more about React and decoupling Drupal. I'll start out with a site very close to nothing - little content, little styling - and slowly add new stuff as time and interest allows.
With any luck this site will look completely different by the time 2019 approaches. And hopefully I will have learned a thing or two along the way. If you're curious, the code is available on GitHub.