Skip to content

Instantly share code, notes, and snippets.

Did you try to clear cache?

Samuel Mortenson mortenson

Did you try to clear cache?
View GitHub Profile
mortenson /
Last active Sep 28, 2020
Watch mode for a game I'm working on
#! /bin/bash
function processSprite {
echo "Creating sprite sheet for $file..."
filename=$(basename $file .aseprite)
aseprite -b "$file" --sheet "assets/$filename-Sheet.png" > /dev/null
function processTilemap {
mortenson /
Last active Apr 25, 2021
What I currently use for local Drupal/Tome dev
#! /bin/bash
# This runs a new Docker container, mounts the current directory (Drupal root),
# and runs an arbitrary drush command, in case you don't want to run it in dsession.
sudo docker run --rm -it --init -v "$(pwd)":/var/www/tome mortenson/tome drush "$@"
mortenson / example_alpine_autocomplete.sfc
Created Jul 8, 2020
Drupal single file components livewire demo
View example_alpine_autocomplete.sfc
This is a complex but realistic example of how you might use frameworks like
Alpine.js and dom-diffing libraries like morphdom to create components that
are re-rendered server-side. This example is heavily influenced by Livewire.
In production, it might make more sense for just the dynamic part of the
component to be AJAX-ified, in this case that would probably mean making the
autocomplete results their own component. There are lots of ways to do this!
mortenson /
Last active Oct 1, 2020
Dell XPS 13 9300 Ubuntu setup notes

Random notes from woring with a new XPS 13 9300 with Ubuntu

Notes from when I was on the default Dell OEM Ubuntu

Disable trackpad middle click:

sudo vim /usr/share/X11/xorg.conf.d/40-libinput.conf

Add Option "ButtonMapping" "1 1 3 4 5" under

mortenson /
Created Oct 31, 2019
An example script that caches Tome Static builds by copying the static directory and database to /tmp between builds. Useful on CI.
# This directory should persist between builds.
set -e
composer install
mkdir -p "$CACHE_DIR"
mortenson / index.js
Last active Sep 11, 2020
A quick CSS audit script for finding overly long/specific selectors in CSS files
View index.js
#!/usr/bin/env node
// This is a quick CSS audit script I wrote for finding overly long/specific selectors in CSS files.
// Usage: Download this file, then run:
// $ npx <space separated list of CSS files to audit>
const listSelectors = require('list-selectors');
const { calculate, compare } = require('specificity');
// This is useful if you want to anonymize the results to avoid blaming.
mortenson / DiceRoll.php
Created Aug 29, 2019
Thinking about how Drupal 8 single file components could abstractly provide forms and derive other plugins like blocks
View DiceRoll.php
namespace Drupal\sfc_example\Plugin\SingleFileComponent;
use Drupal\Core\Form\FormStateInterface;
use Drupal\sfc\ComponentBase;
* Contains an example component that provides a block.
mortenson / DrupalComponents.php
Last active Aug 4, 2019
Thinking about single file Drupal frontend components... Edit: Now live at !
View DrupalComponents.php
class SayHello implements ComponentInterface {
const name = 'sayhello';
const template = <<<TWIG
{% embed "@components/bigtext" %}
{% block content Hello {{ name }}! %}
{% endembed %}
mortenson / EditorImageStyle.php
Last active Jun 26, 2019
A custom Drupal 8 filter plugin to use an image style for image embedss custom Drupal 8 filter plugin to use an image style for image embeds. A custom Drupal 8 filter plugin to use an image style for image embeds.
View EditorImageStyle.php
namespace Drupal\ppdx_editor\Plugin\Filter;
use Drupal\Component\Utility\Html;
use Drupal\Core\Entity\EntityRepositoryInterface;
use Drupal\Core\Image\ImageFactory;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\file\FileInterface;
use Drupal\filter\FilterProcessResult;
mortenson / Dockerfile
Created Jun 5, 2019
Example Dockerfile for Tome
View Dockerfile
FROM php:7.2-apache
RUN apt-get update && \
apt-get install -y --no-install-recommends git zip openssh-client sqlite3 libsqlite3-dev
# This is copied from the official Docker "drupal" image's Dockerfile.
# install the PHP extensions we need
RUN set -ex; \
if command -v a2enmod; then \