Skip to content

Instantly share code, notes, and snippets.

@pdxmph
pdxmph / tags.html
Created May 3, 2025 21:14
Mastodon tags shortcode for Hugo
{{ $tags_list := index .Params 0 }}
{{ $tags := split $tags_list " " }}
<i class="fa-brands fa-mastodon"></i> {{ range $tags }}<a href="https://social.lol/tags/{{ substr . 1 }}">{{ . }}</a>&nbsp;{{ end }}
{
"\u001b\u003c": "CursorStart",
"\u001b\u003e": "CursorEnd",
"\u003cCtrl-x\u003e\u003c0\u003e": "Unsplit",
"\u003cCtrl-x\u003e\u003c2\u003e": "HSplit",
"\u003cCtrl-x\u003e\u003c3\u003e": "VSplit",
"\u003cCtrl-x\u003e\u003cCtrl-c\u003e": "Quit",
"\u003cCtrl-x\u003e\u003cCtrl-f\u003e": "OpenFile",
"\u003cCtrl-x\u003e\u003cCtrl-s\u003e": "Save",
"\u003cCtrl-x\u003e\u003ch\u003e": "SelectAll",
@pdxmph
pdxmph / daily.nb-plugin
Created April 24, 2025 20:47
Daily #nb-plugin for making daily posts in nb. Modified from the original to title the initial file and make the filename more obviously a daily post.
#!/usr/bin/env bash
###############################################################################
# daily.nb-plugin
#
# Write to a daily log.
#
# Install with:
# nb plugin install https://github.com/xwmx/nb/blob/master/plugins/daily.nb-plugin
#
# A plugin for `nb`.
@pdxmph
pdxmph / lmno.org
Created April 22, 2025 03:27
lmno blogging capture tool

lmno blogging

Minor mode to capture:

(define-minor-mode lmno-blog-capture-mode
  "Mode for capturing blog entries like org-capture."
  :lighter ">> BlogCapture"
  :keymap (let ((map (make-sparse-keymap)))
@pdxmph
pdxmph / makeapp.rb
Created November 19, 2023 18:48
Wrapper to make nativifier apps and create the corresponding .desktop files
#!/usr/bin/env ruby
# - `makeapp.rb --help` for help on the options
require 'optparse'
# Where do we want to put things?
app_dir = "~/Applications"
custom_dir = "/home/mph/.local/share/applications/"
@pdxmph
pdxmph / update_contact.applescript
Last active April 27, 2023 18:11
Half-working contact update
-- provided there's a custom date field in a contact record, this will prepend a datestamped note and update "last contacted" to today.
set theDate to do shell script "date +%Y-%m-%d"
tell application "Contacts"
set selectedPeople to selection
repeat with thePerson in selectedPeople
set customDates to custom dates of thePerson
repeat with aCustomDate in customDates
if label of aCustomDate is "last contacted" then
set value of aCustomDate to current date
@pdxmph
pdxmph / org-contacts-crm.org
Created April 18, 2023 22:28
Functions, helpers, and agenda views to make a plaintext CRM in org-mode with org-contacts.

Org Plaintext Crm

org-contacts CRM

A bunch of functions and views to allow org-contacts to serve as the basis for a lightweight, text-based CRM.

Basic workflow:

  1. Get your contacts into org-contacts format. Traditionally this is done with org-vcard, but that didn’t work for me so I made a script.[fn:1]
  2. Add a :CONTACTED: property to the cards. It takes a date (not an org-date, just an ISO-8601 YYYY-mm-dd date). The script adds one.
  3. Tag contacts. The custom views depend on the tags :close:, :fam:, and :network:
@pdxmph
pdxmph / trains.rb
Last active April 15, 2023 06:35
ChatGPT-generated script to find the arrival time of a train at a given station in Portland, OR
#!/usr/bin/env ruby
require 'net/http'
require 'json'
require 'time'
# Replace with your TriMet API key
API_KEY = '73E10D534D59A179A687B98EDEE'
# Replace with the TriMet stop ID for the stop you're interested in
STOP_ID = '13136'
@pdxmph
pdxmph / catppuccin-simple-custom.css
Created January 22, 2023 04:16
Sample custom CSS to override simplecss with Catppuccin palette
@import url('https://fonts.googleapis.com/css2?family=Neuton:wght@700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Fira+Mono&display=swap');
@import url('https://unpkg.com/@catppuccin/[email protected]/css/catppuccin.css');
h1, h2, h3, h4, h5, h6 {
font-family: 'Neuton', serif;
}
:root {
@pdxmph
pdxmph / text-transporter-config.md
Created January 12, 2023 18:16
Sample config for obsidian43-text-transporter plugin