New England Drupal Camp 2018: The first snow of the fall and Italian food was bountiful

New England Drupal Camp logo, silhouette of workers holding red objects

In all my travels, I have never been to the Beehive of Industry (whose motto is “What Cheer?” by the way) or even Little Rhody. Landing at T. F. Green Airport turned out to be a smarter move than flying into Boston Logan International Airport, as a winter storm was dropping a serious number of inches on New England all at once. As we circled the airport one final time before we were told we would need to divert to BOS due to the runway being too snowy in our intended destination. I had a bit of a panic, along with the rest of the plane, thinking of needing to drive all the way to Rhode Island in the wintry conditions. We did land in Providence finally and I got my first official welcome to the city right along with their first snow as we both arrived for New England Drupal Camp, better known as NEDCamp 2018.

Food and Fun

I got to Providence around midnight on Thursday and had Friday to check out a very cold city and co-work with the awesome JD. We had a pretty OK lunch at one of the vegan chains that has not found its way to my neck of the woods, by Cloe. Along the way we made a quick stop by HP Lovecraft square and saw the last place the weird old man made up his stories about indescribable cosmic horror. Walking around in the harsh early onset winter snow I could sort of see how the area inspired the tales.

Community Dinner

There was a day of trainings at NEDCamp but I did not attend those. The first time I saw the fine folks of the camp was at Cassarino’s Federal Hill, a three story Italian joint with a special Prix Fixe menu. They accommodated dietary restrictions but it was the kind of place that was baffled by the requests. They also seemed to be confused to how to serve Moscato, the dessert wine, as they brought me a giant goblet with at least a third of a bottle in it. Not complaining mind you, but the cloying sweetness was more than I could finish, even with a few other people sampling it.

DrupalKaraoke

People were anxious to go sing together in this last Drupal event of the year and JD did all the footwork to find us space at The Boombox Karaoke Lounge. We arrived to find a full front room but quickly learned there was a private room that had just opened up due to a cancellation. Boombox had a small but very imaginative tiki menu based on soju and sake and we all got the one that came in a ceramic cat statue with a hole in its head.

Saturday

In a discussion the previous day someone postulated the theory that the reason all the coffee we encountered tasted a bit burnt was because New Englanders admire Dunkin’ Donuts as the defacto standard for how coffee should be served. The coffee at the event wasn’t bad, but I still went with tea for the majority of the day. There was also fruit and a selection of bagels, muffins and the like. Lunchtime was soon enough upon us and we adjourned to the Student Union building to have a nice Italian spread of pasta, bread sticks and salads. It was great to be able to eat altogether in one room.

After Party

There is something nice about a networking party right after the event ends. Everyone can come and have an appetizer or three and talk about how the event went for them. For this party we also had drink tickets and a beer/wine only bar. It was fantastic to meet even more folks than I had a chance to meet earlier in the day and learn who was inspired by what ideas. I loved each and every conversationI had there. Thanks to the organizers for a great event!

Some of us sought out some pant based options and found a very funk art spot that had a fun bar and a greasy “vegan forward” menu that also met the needs of the omnivores in our midst. If you ever get to Providence, do make sure you too also find AS220. To round out the Italian theme one party member got the vegan Pasta Bolognese, while I went halfsies on a seitan reuben and a grilled ‘cheese’ and mushroom sandwich. The best thing was the blackened sweet potato wedges, which were better then anything I was expecting. After this, some of us found late night libations at a speakeasy I never did learn the name of where I found out that a ‘blackberry gimlet’ is possibly my favorite mixed drink ever.

Sessions

Opening Remarks

DevOps: Why, How, and What
Kelly Albrecht
Rob Bayliss

The general theme of the camp this year was DevOps. Kelly had given one of my favorite talks about the subject back at TexasCamp that helped shift my perspective on what DevOps is really all about, so I was glad that the first talk of the camp was going to be a furthering of that same conversation. Using real data he and Rob had collected they addressed the exact areas where people identified they had gaps in their process, making this a very practical and specific talk for this audience. Their penny flipping exercise might be the most practical example of continuous delivery vs batching ever devised as well. Make sure you check this one out!

Raw Notes:
Can we ship to customers at any time
how do I get closer to the customer to ship easier
how do we improve this trust and process?
Lot of teams trying to figure it out
firm phases are an issue
if doing dev work and done state is move to next team for functional testing
then to performance and onto operations
this is where devops comes from, trying to get these systems working better together
months long process sometimes though
as an individual, easy to think “I can get fast at doing all of it” independently
Batching strategy
20 pennies
customer wants pennies flipped 4 times
each team flips it 4 times
if you run it, all pennies delivered at same time
takes about 2 minutes
if 10 penny batches
faster overall process
1 penny at a time
the customer gets first penny in 5 seconds
then just keep getting pennies
all 20 pennies in 30 seconds
how can we apply this to our teams?
DevOps
everyone on the team to deliver that one penny
Performance oriented Generative Culture
Ron Westrum
high cooperation
Messengers trained
risk are shared
Bridging encouraged
Failure leads to inquiry
Novelty implemented
DevOps Research and Assessment group (DORA)
high performing orgs
multiple deploys a day
lead time for changed is less than an hour
mean time to recover less than an hour
change failure rate = 0 – 15%
“IT performance is predictive of the performance of the organization as a whole”
Getting it out faster in a more stable way
digging into research
Cost of Quality
72900% ROI if your CoQ is .001
.07 hours
but nobody knows how that number is derived
davidfrico.com
no true scientific consensus
the people who are deploying having no knowledge of how it was built
and the devs are not clear on production deploy side
old school, IT manages the servers, then WebDev gives code to ops team and IT slots into hardware
we need to move away from these silos
How do we start and what will we see?
They did a survey, in short amount of time
https://measure.team/results/2
not really state of NEDCamp DevOps, but some data
76% overall efficiency
and shows improvements
we will look at the areas people need the most help in
it would be great to have this test, but client won’t pay
need a shift to the left to include these concerns from the beginning
value in writing tests is getting testable code that does not need as mich rework
back to https://measure.team/results/2
lowest score –
63% – Branches live for less than a day before being merged
units of work need to be sized in a way they are individually reviewable in a short time
don’t want to review a million lines of new code at once
branches getting stuck in review state
prioritize work in review above everything else
break the work down and make more manageable
like with Feature Flags to turn a thing on and off
64% System heath is monitored proactively
you want to know in advance when errors will exist
metrics and trends over time
alerts for those systems
hosted on Pantheon – production issues
set up NewRelic, get that working,
see trend lines – but that is not proactive
set up alerts for thresholds when things are moving the wrong way
that is proactive
but watch out for alert fatigue
Historically the operations team is the team blamed for downtime
change brings risk
big changes are big risks
You don’t have to start at 100 miles an hour
set up small things first
pingdom if you don’t have it
little improvements over time
script checks for all your projects
67% The majority of prim biz value has test coverage and these tests are to be run whenever code is committed
mission critical stuff needs to be tested, focus there
should be fast if can make it fast
how to get started with this?
get a test system in place
Behat is the most beginner friendly one to start with
regression testing
that is entry point into testing
from there iterate into testing as part of feature development
67% Work-in-progress limits are used to monitor and improve flow and throughput
how to start?
Visual work on a Kanban board
surfaces bottlenecks
to do, in progress and done is a good simple system to start
can see what other states exists after that

Configuration Management: A True Life Story
John Picozzi
Nathan Dentzau

Configuration Management is one of those terms I encounter all the time and can talk about to a point. Every time I go to a session about this subject though I realize how far from managing customer sites at any real scale I really am. Hearing about real world scenarios taken from the day to day iterations on a mission critical property helps me better grasp not just the ‘what’ and ‘how’ but also the very real ‘why’ of this subject. If you are collaborating on a project that needs to move code forward without disturbing the content in the production database, this is a talk you need to see.

Raw Notes:
Collection of admin settings that determine the function without affecting content
Config vs content
content types vs nodes
Taxonomy vocab vs tax terms
Really only works if you do what Pantheon says
All config should go from live to dev
Code should flow dev to live
Other types of config
Fields
VIews
Display modes
image styles
language settings system settings
user roles module settings
a LOT of config with new code in Drupal
Where is config stored?
2 types
Active vs staged config
active is live in the site in your relational DB
changes when you change setting or UI immediately applied
benefits of performance and security
Staged:
Stored in YML
Changed applied by export or import
Benefits are portability are security
Config manager
Core CMI screenshot
What is new, what is removed
import and export
Drush to do this too
no single method for doing everything
config directory required or optional
required is auto installed
skips over previously loaded config if optional when installed
shows a changes as diff
Active vs Staged
Workflow for Config management in core
pretty linear
Common config | -> Local -> Dev -> Stage-> Prod
works great for simple and small sites
but
may want some differences between environments
Configuration Split
takes common config and splits it out per env or splits for certain features like caching or CDN
all can be handled through UI or through Drush
Config Split Module
need to clear cache before config import
blacklist and graylist is a learning curve
blacklist is complete split – like Devel split out entirely
graylist – conditional split – individual items in the ui to select
Common config applies to all env but can individually pick the split for the right Env
dev split or performance split or a local split
folder structure
basically just yml files in folder structure
core calls it ‘sync directory’ vs COnfig Split calls it ‘common directory’
Backup and Migrate example
Configuration Readonly
contrib module
prevents someone from editing active config through the UI
Module can be enabled per env with config split
Warning: Have a solid CI pipeline and testing procedures in place before enabling in prod
no cowboy coding is going to be allowed here in an emergency
unless you are Drush master
way to make config split change with this tool though
Config installer
contrib profile
went into core this year
works with Drush 9.4 and later and not documented
install a new instance of Drupal from an existing set of config
not compatible with Config Split, manually importing config after install works
Config and CI
What is CI?
Process of automating the build and testing of code in a shared code repo
devs can focus on code and confidently merge in changes to a project while working on a team of others doing the same
GitHub and Travis in this example
CI: Code
Devs can use the Config Manager module to export Drupal config to version control and easily share config changes with other team members
devs can use the Config Split module to test config changes
Code syntax validators can be executed with git hooks or manual invocation locally
make sure team members are fighting the machines and not each other
CI Repo
Devs push and pull code from a central code repo like Github
Pull requests are created by the developer making the change and reviewed by the other team members
Automated build and test are triggered
CI: Test and Build phase
CI like Travis can run code syntax validators, automated tests, and deployments in a CI pipeline
Config Installer profile can be used to install a new instance of Drupal testing the validity of config changed and to run automated functional tests
if a failure, halted
Last step in CI is the Website
import config changed DB updates and entity updates handled automatically during the deploy process
developers can enable the Config Readonly module in prod – prevents surprises
improved site reliability and uptime
we get scared making changes in production because most of the time we inherit sites and are not sure how changes will affect it.
Hard to say what is right or wrong globally on some of this stuff
unless everyone is following your ‘best practices’ that might not be well documented
for example
Entity Update for example – not super well documented in Core
run it even if you don’t write new entities, some module do

2018 Keynote
Jeff Geerling

There are certain speakers who stand out in the pack and Jeff is always a delight to hear. I was surprised to find this was the first time he popped up in my notes, which I stared in late 2016, so it had been a while since I sat in on one of his talks. His sense of humor and style engrossed us all while his wisdom filled our ears and settled into our hearts. There are too many quotable quotes for me to name any one as a standout, but the heart of his message was his definition of DevOps, which I really love: “Making people happier while making apps better.” I really hope this talk gets presented again at another event, like DrupalCon

Raw Notes:
Works at Acquia
Maintains DrupalVM..which is most used for now
hosted apacheslr
server check.in
writes books for Ansible
typical weeknight, 5:00 or 6:00 pm heading upstairs, meals and family time
weekends rare has extra work to do
every other night before bed some open source work of book
how?
joke answer slide
Real World DevOps
MS says you can buy DevOps with Azure.
Docker transforms devops they say
and you have to be in cloud they also say
GitLab example says there is a people component and doing thing quickly
Atlassians – devops about teams and people making things better
Gartner – and everywhere
rapid IT service delivery, agile, lean practices and system oriented approaches
Gartner sells tools, so not going to include people
Jeff – Making people happier while making apps better
it is primarily about people
if everyone burns out then you can’t have a project
reduced friction
Friction creates heat, heat causes burnout
stable teams
no heroes that have to save the day
Apps better
CI
always deployable
automatic testing
1 automatic test is infinitely better than 0 automated tests
Those teams fix problems when they happen
don’t put it off for months
improvement time is built into the process
project planning though is super important to make sure stay up to date
lot quicker feature delivery this way
DevOps Prerequisites:
Automation
CI/CD
monitoring
collaborations
Easy to make changes
easy and fast local dev
with automated testing there is layers
Backups
Have you ever tested your backups
easy rollback is goal
Make it easy to fix and prevent problems
Devs can deploy to prod
details monitoring and logging
Blameless postmortems
Matt from Lullabot talked about this team aspect
its a poor craftsman that blames his tools – an old saying
avoid having a golden hammer
it can sometimes work depending on what success means
need the skills on how to pick the right tools and how to use other tools
need to adopt some terms
– YAGNI
you aint gonna need it
– Andon Board
machine that changed the world
Toyota: every worker can see any problem in entire production line
policy of swarming a problem to fix that issue now
that solves a lot of longer term problems
– Time to Drupal
10 minutes for existing dev
1 hour for new dev
if you lose your machine and it takes longer than 10 minutes to replicate, that is an issue
– “Dev to Prod”
more than a day bad
more than an hour good
small batches of work
DevOps might be helped with tools, but the tools are not the important part
better communication and better relationships

Embedding a React app in a Drupal 8 site
Chris Wells

I am the kind of person who loves any reference to ‘turtles all the way down’, a reference to the Hindu mythological belief that the world is built on the back of a turtle and underneath that is another turtle and beneath that one is just more and more turtles forever. Ever since reading Gödel, Escher, Bach: an Eternal Golden Braid the idea has fascinated me. Equally as intriguing to me is the voodoo of ReactJS. I am traditionally not a front end person and manipulation of the DOM tickles a part of my brain in much the same way futzing with a Rubik’s Cube does. I am not good at solving those either. But unlike the puzzle cube I keep trying to learn React little by little and this talk was a great intro that solidified some of the concepts I have been thinking about.

Raw Notes:
a thing we did, not the be all / end all
What is react
JS library for UI
complex UI from components
Components all the way down
all components inside of components
mimics atomic design
DOM tree that react uses is a VirtualDOM
responsible for touching the actual DOM
game component, board component, squares components
all the way down
Props – data that your component takes into it
takes props in and does what needs to do
State – idea that data that lives inside of your component
locally scoped (though not entirely true, can pass down)
when props or state changes component re-renders
you should not be messing with the DOM directly
just say tis component color s whatever and it re-renders
start with a constructor
lifecycle methods
constructor()
render()
compenentDidMount()
componentDidUpdate()
componentDidUnmount()
sounds like Drupal Hooks but React Hooks are totally different
why do we care?
Dri.es Drupal looking for adopt react
The framework that Facebook developed to build and run FB
people working on brining React to core right now
Decoupling – how you manage that content is separate from presentation concern
levels of this
tightly, progressively, fully decoupled
Drupal 8 REST API drives this
What did they do?
customer makes home automation, lighting fixture partnership
lighting designer for a house or other building
several rooms
job has rooms
calls over rest API to make a new job
Add to cart very easily
small agreement with their API but this tool will expand ell past lighting fixtures
Everything you see is React, Drupal is totally behind the scenes and used with REST API
Any entity are ECK entities
All of these entity types are enabled in REST API
Used the REST UI module
Added REST Export views displays for Lists
used hal+json as format
Routing
routing is changing but it is not visibly changing
inside the app, using React Router
can reload and get back t where you left off
in Drupal registers the single path /savant-tools
Needed to also accept savant-tools/*
Libraries
React_libraries module (created their own)
import react and react-DOM from CDN
has prod and dev libs
each app we create depends on the libs
‘ejected’ from create-react-pp and removed those from build
Additions to React
note about Redux
it is open source JS lib for managing application state
you can use Redux with React or any other view library
Other thing, borrowed from Dan Murphy, Axios query Solr from the front end
lightning fast
Lessons learned
One thing at a time, take your time
ES6, babel, Webpack
React
learn webpack before really diving into React
Architect your state in advance
understand mapStateToProps() and connect()
Create-react-app
scaffolding tool for new project bootstrapping
hides implementation details from yo
they ended up ejecting
next time just start from scratch
how to learn?
Web Bos’s courses
Scott T’s courses
React for Drupal

My Sessions

Let’s learn Git. No more excuses!

I was more than flattered to be asked to do this talk. I was not originally going to do this one, but there was a last minute speaker cancellation and I am known to have a library of talks I can do at a drop of a hat. I always get nervous giving this in front of a Drupal Camp crowd, as so many talks here are deeply technical. I get general good feedback though and I think it an important topic to get us all on the same page with, so I am happy to give it.

Nobody wants a website. They want results!

I got to premiere this talk at Pacific Northwest Drupal, so it is very fitting that the very last time I give the full version of it in 2018 it was at a Drupal event. It might be the last time I submit it to any camp as well, as I shift to more technical conversations that I think need to be had around subjects like testing, Bash and Git and Markdown. The crowd was smaller but eager to engage in a dialog about their thoughts on business and process management best practices. I have learned oh so much from giving this talk and I hope that it will inspire others to have such discussions in the future.

Wrapping Up

The first snowfall I saw in 2018 was in Albuquerque and unless Nashville offers some unseasonal precipitation I think Providence is where I will see my last flakes of this calendar year. So too does Providence offered me a final chance in the year to hang out with my Drupal community. I found myself in talks about the future of the project that made me feel included in a way I hope everyone gets to feel about their work.

With Rhode Island checked off my list of states to visit, it reduces the count of US states I have not been to in my life to a paltry sum of five. I hope next year I can fill that gap even more. So get with it Montana, Idaho, North Dakota and Vermont. And for you Maine, maybe your WordCamp Portland next year. You all have a lot to live up to if you are going to compete with the quality of my first trip to Rhode Island. Makes me glad that they are going to be in the same location for, hopefully a warmer and less snow covered, NEDCamp 2019.

Leave a Reply

Your email address will not be published. Required fields are marked *