Brian Perry

Web Developer


MidCamp 2018 Thoughts

March 14, 2018

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.

Decoupled Drupal Across The Stack - always enjoy seeing Preston speak about Decoupled Drupal, and being aware of his (and Acquia’s) perspective on the topic is important if I’m going to be speaking about adjacent topics as well. A good talk for someone looking to survey the current Decoupled Drupal landscape. Was interesting to see that all of the examples Preston provided included some server side universal JavaScript component to handle the initial page view. I’ve been working on learning more about the JAM Stack which specifically does not include JavaScript running on the server. Seeing examples of this alternative stack helped get me thinking more about the pros and cons of both.

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:

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

    Major Takeaways:
  • I’d like to experiment more with Lando for local dev.
  • I want to understand more about the advantages and disadvantages between a decoupled architecture using universal JavaScript vs a JAM Stack approach.
  • I need to make time to better understand how the ongoing efforts related to the Layout Initiative will impact my component driven process.

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!

Here's how React's New Context API Works - Wes Bos

March 13, 2018

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.


Accommodating Drupal In Your Components

February 24, 2018

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.


February 24, 2018

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.


R U Talkin' R.E.M. RE: ME?

February 21, 2018

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.

Good ep.


Decoupled Drupal Dumb Problems: Malformed Markup

February 20, 2018

Mateu has many of the Decoupled Drupal Hard Problems well covered, so I'll take care of one of the dumb ones.

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.

February 19, 2018

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?


No More Guns Please

February 19, 2018

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.


React For Drupal

February 19, 2018

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.


Middle End Developer

February 15, 2018

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.

Helping front and back end developers communicate. Developing and maintaining pattern libraries. Helping different developers or different systems integrate with pattern libraries. Everything that goes with decoupled architectures - the APIs supporting them, the fancy JavaScript frameworks that use those APIs. And of course, stepping out of the middle when the situation calls for it.

Maybe I've been a middle end developer all along.

iO West Is Shutting Down Next Week - Splitsider

February 14, 2018

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.


DrupalEasy Podcast 205 - Fatima Khalid - First time sprinter's guide

February 14, 2018

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.


Designer-Oriented Styles - James Kyle

February 12, 2018

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.

Note: I’m going refer to “CSS-in-JS” as “Component-Oriented Styles” from here on out, because JavaScript really doesn’t have much to do with it. “CSS” will refer to the traditional way of writing .css files with selectors and all.

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.


To PESOS or to POSSE - Dries Buytaert

February 11, 2018

The IndieWeb movement has provided two clever names for these models:

  1. 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.
  2. 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.


February 11, 2018

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.

I also found that gatsby-source-drupal seems to work best with Contenta for some reason. More on that soon - I'm hoping to have a longer post on Drupal and Gatsby at some point.


MidCamp Needs Your Help

February 9, 2018

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.

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

February 3, 2018

Can't recommend Celeste enough. Perfect for Switch.


DrupalCon Nashville Session Proposals

January 29, 2018

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!

Nintendo Labo

January 18, 2018

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?"


Building Something from Nothing

January 7, 2018

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.

  • All (20)
  • Posts (6)
  • Links (10)
  • Notes (4)