Skip to content

Instantly share code, notes, and snippets.

@dceddia
dceddia / .zshrc
Created May 7, 2020 23:25
A custom zsh "widget" for inserting a duplicate of the last argument on the line. Good for renaming a file to a similar name.
# Press Alt-/ to insert the last argument from the same line
# ex:
# type "cp foo", press Alt-/, and it will insert " foo" so that your command will be
# cp foo foo
# Great when you want to rename a file to a similar name at the same path
# (This is different from Alt-. to insert the last arg from the previous command)
insertPreviousArg() {
echo $LBUFFER | read -A args
LAST_CHAR="${${:-$LBUFFER}[-1]}"
LAST_ARG="${args[$#args]}"
@dceddia
dceddia / open-graph.html
Created July 20, 2020 14:59
Open Graph tags (_includes/open-graph.html), included from _includes/head.html
<!-- Twitter Cards -->
<meta name="twitter:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
{% if page.excerpt %}<meta name="twitter:description" content="{{ page.excerpt | strip_html }}">{% endif %}
{% if site.owner.twitter %}<meta name="twitter:site" content="@{{ site.owner.twitter }}">{% endif %}
{% if author.twitter %}<meta name="twitter:creator" content="@{{ author.twitter }}">{% endif %}
{% if page.image.twitter %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="{{ site.url }}/images/{{ page.image.twitter }}">
{% elsif page.image.feature %}
<meta name="twitter:card" content="summary_large_image">
@dceddia
dceddia / svg-to-svelte.rb
Created July 29, 2020 16:35
Transform an SVG element into something ready to be animated with Svelte + animejs
#!/usr/bin/env ruby
require 'open3'
# Copy the SVG from Sketch, then run this
# It will clean up the SVG, insert bind:this={whatever} for any objects named `b:whatever` in the svg,
# and print out the variables to declare in Svelte
# To use:
# 1. copy the SVG from Sketch
@dceddia
dceddia / extractHighlightedLines.js
Last active August 26, 2020 22:54
Given a code block, use the first few lines to infer what to highlight when generating syntax-highlighted HTML via Shiki
/* If the block begins with the `highlightLines: []` directive, strip that off,
parse the array as JSON, and pass the lines to Shiki.
Replaces single quotes with doubles, because I know I'm gonna screw that up.
Valid formats include:
highlightLines:[]
highlightLines []
// highlightLines: []
@dceddia
dceddia / css.json
Created September 29, 2020 15:03
Put this in VSCode > Preferences > User Snippets > css.json. Then in a CSS file, type "cf" and hit Tab.
"Center things": {
"prefix": "cf",
"body": ["align-items: center;", "justify-content: center;"],
"description": "Center items in a flex container"
}
@dceddia
dceddia / Makefile
Created December 7, 2020 16:34
Build Tailwind
SHELL = /bin/bash
.PHONY: all clean
all: _site/style.css
clean:
rm -rf _site/style.css
_site/style.css: styles/tailwind.css tailwind.config.js | node_modules
@dceddia
dceddia / CGPath+svg.swift
Last active July 19, 2023 14:51
Convert a CGPath to an SVG element with this Swift extension to CGPath
//
// CGPath+svg.swift
//
// Create an SVG element from a CGPath.
//
// Created by Dave Ceddia.
// MIT Licensed
//
// Inspired by: https://github.com/mro/MROGeometry/blob/master/MROGeometry/CGPathWriter.c
@dceddia
dceddia / convertkit-top-level-tabs.js
Created April 15, 2021 16:15
A Greasemonkey script to add Sequences and Rules as top-level nav items in ConvertKit
// ==UserScript==
// @name CK - add page links to navbar
// @namespace Violentmonkey Scripts
// @match https://app.convertkit.com/*
// @grant none
// @version 1.0
// @author -
// @description Adds Rules and Sequences to top-level nav
// ==/UserScript==
@dceddia
dceddia / symbolicate.rb
Created June 26, 2021 18:58
Symbolicate a macOS crash report from Sentry
#!/usr/bin/env ruby
# colorization without needing a gem
class String
def colorize(color_code)
"\e[#{color_code}m#{self}\e[0m"
end
def red
colorize(31)
@dceddia
dceddia / double_tap_cmd_to_cmd_l.json
Created July 25, 2021 17:05
Karabiner Elements script to map [double tap left Cmd] to [Cmd+L] (to focus the address bar in Chrome)
{"title": "Rules for Karabiner-Elements",
"rules": [
{ "description": "Press left_command twice to send Cmd+L (Focus Address Bar in Chrome)",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "left_command",
"modifiers": {
"optional": [