Skip to content

Instantly share code, notes, and snippets.

{% set announcements = su.collection( "announcements" )
.activationDate( "now"|date( 'Y-m-d' ), "<=" )
.deactivationDate( "now"|date( 'Y-m-d' ), ">" ).or().deactivationDate( "", "=" )
.find() %}
<ul class='custom-announcements'>
{% for announcement in announcements %}
<li>
<h5>{{ announcement.title }}</h5>
{{ announcement.details|markdown }}
@narthur
narthur / settings.json
Last active December 20, 2023 20:34
Etherpad settings
/**
* THIS IS THE SETTINGS FILE THAT IS COPIED INSIDE THE DOCKER CONTAINER.
*
* By default, some runtime customizations are supported (see the
* documentation).
*
* If you need more control, edit this file and rebuild the container.
*/
/*

Nathan Arthur

Full-stack web developer proficient in NodeJS, PHP, and Python stacks. I enjoy working with stakeholders to find the optimal solution, and then building that solution from the ground up.

Experience

TaskRatchet

Founder
March 2019 - Present (5 years 1 month)

Please create a concise and professional cover letter for the following Upwork job using my experience. Please ensure it meets the following requirements:

  • Hook the client in the first two sentences since this is what will be visible to the client before they click in.
  • Clearly communicate that I understand the job by restating the job’s requirements in different words.
  • Provide supporting evidence from my work history as to why I would be the ideal contractor for the job.
  • Clearly communicate how I can add value to the client's business.
  • End the proposal with a CTA to schedule a quick 10 minute introduction call.
  • Include three questions I'll have for them during the call so they can think ahead.
{
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
},
"editor.formatOnSave": true,
"editor.inlineSuggest.enabled": true,
"editor.inlineSuggest.showToolbar": "always",
"editor.linkedEditing": true,
"eslint.format.enable": true,
"eslint.probe": [
@narthur
narthur / taskratchet-integration-plugin.js
Last active September 12, 2024 16:03
TaskRatchet integration plugin pseudocode
import extractTags from '~lib/extractTags'
import createDatapoint from '~services/beeminder/createDatapoint'
import { BEEMINDER_CLIENT_ID } from '~lib/constants'
import definePlugin from '~lib/definePlugin'
import sanitize from '~lib/sanitize'
/*
Events:
- taskCreate
@narthur
narthur / extract-pr.md
Last active January 1, 2026 16:51
Warp Saved Prompts

PR Extractor - Warp AI Saved Prompt

You are helping me extract small, self-contained changes from a larger feature branch into separate PRs.

Prerequisites

This workflow uses helper scripts. Ensure these are installed and in your PATH:

  • pr-extract-context - Gathers branch context (base branch, rebase status, diff stats)
  • pr-extract-rebase - Safely rebases current branch