Skip to content

Instantly share code, notes, and snippets.

@solace
solace / categories.js
Last active September 23, 2023 08:23
Support categories and tags migrated from WordPress in Eleventy. See https://micheleong.com/2023/09/23/migrate-wordpress-eleventy-colocated-images
// File: lib/collections/categories.js
const slugify = require("slugify");
const getAllKeyValues = require("../utils/getAllKeyValues");
module.exports = (collection) => {
let allCategories = getAllKeyValues(
collection.getFilteredByGlob("src/posts/**/*.md"),
"categories"
@solace
solace / middleware.ts
Created September 10, 2023 13:08
Access pathname in NextJS generateMetadata
import type {NextRequest, NextResponse} from 'next/server'
export async function middleware(req: NextRequest) {
const requestHeaders = new Headers(req.headers)
requestHeaders.set('x-request-url', req.url);
const res = NextResponse.next({
request: {
headers: requestHeaders
}
@solace
solace / deepgram2descript.sh
Last active January 1, 2023 01:56
DeepGram JSON to Descript transcript
# Warning: This is not a complete script.
# You may also need to edit the transcript text to fix speaker names
# and make minor corrections before importing into Descript.
cat deepgram.json | jq -r '
.results.channels[0].alternatives[0].paragraphs.paragraphs[]
| ("SPEAKER_" + (.speaker|tostring)) + ": "
+ ([.sentences[].text] | join(" "))' > transcript.txt
@solace
solace / deepgram2autoedit.sh
Created November 3, 2022 15:32
Convert deepgram JSON to autoEdit transcript JSON
# WARNING: This is not a complete script.
# You could update the hardcoded values, but practically, it will need to
# be modified to programmatically process your source files and append the
# result to the autoEdit transcripts.json array.
# This is the internal autoEdit project ID.
# Once you've created the project in autoEdit you can get the ID from
# /path/to/digital-paper-edit-electron/db/projects.json
# on macOS this is /Users/username/Library/Application Support/digital-paper-edit-electron
project_id="1234567890"
@solace
solace / Component.stories.tsx
Created June 14, 2022 15:33
StorybookJS: Include line entry in Interactions tab that appears in Actions
// Don't do this. This is awful.
// Documenting it because it works, but stinks to hell.
Blah.play = async () => {
const actionListener = jest.fn();
// Listen for events that log to the Actions tab.
const channel = addons.getChannel();
channel.addListener("storybook/actions/action-event", actionListener);
@solace
solace / post.js
Created March 18, 2022 06:16
Rendering Contentful embedded assets and entries in GatsbyJS
import { documentToReactComponents } from '@contentful/rich-text-react-renderer';
import { graphql } from 'gatsby';
import React from 'react';
// Custom renderer for embedded content which accepts `body` / `references` from the graphql query.
// Search `references` for the embedded object ID for full access to nested content.
const rendererOptions = (references) => ({
renderNode: {
[BLOCKS.EMBEDDED_ASSET]: (node) => {
const imageID = node.data.target.sys.id;
@solace
solace / bakesrt.sh
Last active July 17, 2022 00:38
Bake-in captions into videos using srts and ffmpeg
#!/bin/bash
# Check out STEAM Powered (https://steampoweredshow.com/) where I have conversations
# with women in STEAM to learn a bit about what they do and who they are.
# https://steampoweredshow.com/learn-more/
# Usage
# =====
#
# Execute script in the directory containing the video and srts files, or modify to take
@solace
solace / plugins--gatsby-remark-cleaner--index.js
Last active October 20, 2021 12:43
gatsby remark transformer plugin that cleans up extraneous wrapper paragraph tags and table whitespace nodes that can raise errors/warnings.
const visit = require(`unist-util-visit`);
const remove = require(`unist-util-remove`);
const HTMLParser = require('node-html-parser');
const matches = (classes, value) => {
const fragment = HTMLParser.parse(value);
if (!fragment.firstChild.classList) {
return false;
}
@solace
solace / slurm.conf
Last active September 15, 2021 09:39
slurm.conf for 16.05.9-1+deb9u
###
# WARNING: This config is for development use only.
#
# It was created using https://slurm.schedmd.com/configurator.html and modified
# enough for use on Docker kaldiasr/kaldi with slurm 16.05.9-1+deb9u.
#
# slurm < 20.02.7 is no longer available due to a security vulnerability.
# See: https://www.schedmd.com/archives.php
# Get the latest version and use the configurator from there.
###
@solace
solace / admin.py
Created January 3, 2021 08:09
django-addanother with django-autocomplete-light and GenericForeignKeys
# Source: https://github.com/yourlabs/django-autocomplete-light/blob/master/test_project/select2_generic_foreign_key/admin.py
import json
from django.contrib import admin
from django.contrib.admin.options import IS_POPUP_VAR, TO_FIELD_VAR
from django.contrib.contenttypes.models import ContentType
from django.template.response import TemplateResponse
from .forms import TForm