Skip to content

Instantly share code, notes, and snippets.

@shawnphoffman
shawnphoffman / AI Contribution Levels.md
Last active April 9, 2026 16:53
AI Contribution Level Disclosures & Badges

AI Contribution Level Disclosure Examples

Ready-to-use disclosure badges and callouts for GitHub READMEs, based on the VisiData AI Contribution Levels.


Level 0 — Human did not use AI at all

Level 0

@shawnphoffman
shawnphoffman / Guava NFC Tags.md
Created October 16, 2025 16:18
Tips for creating your own Guava tags

DIY Guava Health NFC Tags

If you are interested in using your own NFC tags with Guava, this is what you're looking for.

Notes

  • You can use whatever $id you want as long as it is unique for your profile.
  • Type AAR is needed for Android devices
  • I use basic NFC apps on my phone to write my NFC tags
  • Structure Documentation
{
"basics": {
"name": "Thomas Edison",
"label": "Inventor and Businessman",
"picture": "https://example.com/photo.jpg",
"email": "thomas.edison@example.com",
"phone": "(123) 456-7890",
"website": "https://thomasedison.com",
"summary": "Prolific inventor and businessman known for developing many devices that greatly influenced life around the world, including the phonograph, the motion picture camera, and the electric light bulb.",
"location": {
@shawnphoffman
shawnphoffman / jsonStringParser.js
Last active August 14, 2023 00:03
Stupid JSON parser implementation in JS without using JSON.parse. It's stupid.
function customJSONParse(jsonString) {
let position = 0
let currentChar = jsonString.charAt(position)
const throwError = message => {
throw new Error(message + ' at position ' + position)
}
const skipWhitespace = () => {
while (currentChar && /\s/.test(currentChar)) {
@shawnphoffman
shawnphoffman / StarWars-ABC.txt
Last active June 28, 2017 16:51
A brief list of Star Wars entities to consider for conference room names
A - AT-AT, Ackbar, A-Wing, Anakin, Ahsoka
B - Bantha, Bossk, B-Wing, Boba Fett, BB-8
C - C-3PO, Chewbacca, Cad Bane
D - Droid, Dash Rendar, Death Star, Darth Vader
E - Ewok, Endor, Emperor Palpatine
F - Force, Fett, Finn
G - Greedo, Grievous, Geonosis
H - Han Solo, Hoth
I - Imperial Stormtrooper, IG-88
J - Jabba the Hutt, Jango Fett, Jakku
efsdfsdf
@shawnphoffman
shawnphoffman / Status_minders.applescript
Created March 6, 2016 00:10 — forked from craigeley/Status_minders.applescript
Read upcoming Apple Reminders and sort them into an HTML table for use in Panic's Status Board
tell application "Reminders"
set output to ""
set hasOne to false
repeat with i from 1 to (count of (reminders whose completed is false))
set theReminder to reminder i of (reminders whose completed is false)
set reminderName to name of theReminder
set theList to name of container of theReminder
if due date of theReminder exists then
set dueDate to due date of theReminder
@shawnphoffman
shawnphoffman / LinkShortener
Created May 12, 2015 17:34
Link Shortener Example
var consoleLine = "<p class=\"console-line\"></p>";
console = {
log: function (text1, text2) {
if (arguments.length > 1) {
$("#console-log").append($(consoleLine).html(text1 + ": " + text2));
} else
$("#console-log").append($(consoleLine).html(text1));
}
};
@shawnphoffman
shawnphoffman / GPS Converter JS
Last active August 29, 2015 14:15
Quick and dirty GPS format conversion from 'DDMM.MMMMMM,N' to DD.MMMMMM
var latString = '3958.617113,N';
var lonString = '08609.633520,W';
console.log(latString);
console.log(lonString);
latString = latString.replace(/[^0-9\.]+/g,'');
lonString = lonString.replace(/[^0-9\.]+/g,'');
var lat = latString.substring(0,2);
/**
* @class Ext.ux.GridPrinter
* @author Ed Spencer (edward@domine.co.uk)
* Helper class to easily print the contents of a grid. Will open a new window with a table where the first row
* contains the headings from your column model, and with a row for each item in your grid's store. When formatted
* with appropriate CSS it should look very similar to a default grid. If renderers are specified in your column
* model, they will be used in creating the table. Override headerTpl and bodyTpl to change how the markup is generated
*
* Usage:
*