Skip to content

Instantly share code, notes, and snippets.

@phenaproxima
phenaproxima / xb-internals.md
Last active April 27, 2025 14:41
phenaproxima's human-grokable notes about XB internals

My First Week With Experience Builder

I’m an experienced backend software engineer and Drupal core developer and until a few days ago, I knew basically nothing about Experience Builder (“XB” to the cool kids) except that it’s really neat, and was all the rage at DrupalCon Atlanta. Its internals were a mystery to me, and for the most part, they still are.

But I’ve been partially assigned to actually work on XB this quarter, so I had to dive in and try to learn how it works. Deep breath...

First, I tried reading its documentation: no luck there. The docs are rich in detail, but they're also extremely pedantic, which makes for a soul-sucking read, and they don't explain the big picture that's needed for all those fiddly details to make sense.

XB is also a fast-moving target with an unbelievable amount of complexity. For my money, this is probably one of the most complicated Drupal modules in existence; it’s gotta be right up there with Views.

@pcambra
pcambra / gist:fefed7ebfa14c0a2602bc4cd7688928c
Created October 18, 2018 07:19
Reinstal module configuration for Drupal 8
drush php-eval "\Drupal::service('config.installer')->installDefaultConfig('module', 'module_name');"
@crittermike
crittermike / import.php
Last active June 6, 2025 11:21
Importing Drupal 8 config programmatically
<?php
// Import arbitrary config from a variable.
// Assumes $data has the data you want to import for this config.
$config = \Drupal::service('config.factory')->getEditable('filter.format.basic_html');
$config->setData($data)->save();
// Or, re-import the default config for a module or profile, etc.
\Drupal::service('config.installer')->installDefaultConfig('module', 'my_custom_module');
# Schema for the views plugins.
views.filter.project_size_range_select:
type: views_filter
label: 'Foobar numeric'
views.filter_value.project_size_range_select:
type: views.filter_value.numeric
label: 'Foobar Numeric'
@jonhattan
jonhattan / drupal-install.sh
Last active September 17, 2016 08:48
Helper script to set up a Drupal installation. It assumes a Debian-like OS with Apache 2.4 and Drush installed. Also requires a .my.cnf file in the current user's home directory with mysql root-alike credentials. Site is installed at /var/www/${SITE}/docroot. A database, a virtualhost and an entry at /etc/hosts named ${SITE} are created. The scr…
#!/bin/bash
# Check arguments and requirements.
if [ ${#@} -lt 1 ]; then
echo "This script expects one argument (site machine name)."
exit 1
fi
if [ -x ${HOME}/.my.cnf ]; then
echo "This script requires ${HOME}/.my.cnf."
@chrismccoy
chrismccoy / gitcheats.txt
Last active November 30, 2025 16:30
git cheats
# alias to edit commit messages without using rebase interactive
# example: git reword commithash message
reword = "!f() {\n GIT_SEQUENCE_EDITOR=\"sed -i 1s/^pick/reword/\" GIT_EDITOR=\"printf \\\"%s\\n\\\" \\\"$2\\\" >\" git rebase -i \"$1^\";\n git push -f;\n}; f"
# completely wipe git history
wipe-history = "!f() { git add . && git reset --soft $(git rev-list --max-parents=0 HEAD) && git commit --amend -m \"${1:-sup}\" && git push --force; }; f"
# squash the last N commits
squash = "!f(){ git reset --soft HEAD~${1} && git commit --edit -m\"$(git log --format=%B --reverse HEAD..HEAD@{1})\"; };f"
@tlberglund
tlberglund / git-loglive
Last active September 18, 2025 07:57
Log Live Git Command
#!/bin/bash
while :
do
clear
git --no-pager log --graph --pretty=oneline --abbrev-commit --decorate --all $*
sleep 1
done