Skip to content

Instantly share code, notes, and snippets.

@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
{
"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": [

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.

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)

@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.
*/
/*
{% 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 / journal.py
Last active April 30, 2019 20:31
Script for generating Beeminder journal updates
#!/usr/bin/env python3
import os
import yaml
from beeminderpy import Beeminder
import json
from pprint import pprint
from tabulate import tabulate
import datetime
import time
@narthur
narthur / Twig.php
Last active January 20, 2019 15:56
[Twig wrapper object] #php
<?php
namespace Resume;
class Twig {
private $twig;
public function __construct() {
$loader = new \Twig_Loader_Filesystem([
BASEDIR . "/twig"
@narthur
narthur / Filesystem.php
Last active January 31, 2019 16:30
[Filesystem object] #php
<?php
namespace Resume;
class Filesystem
{
private $recursiveMatchingScans = [];
public function getFile($path)
{
@narthur
narthur / arrow.css
Created December 20, 2018 16:26
[Pseudo Element Arrow] #css
.element::after {
content: "";
display: block;
width: 0;
height: 0;
border-top: 10px solid transparent;
border-left: 10px solid black;
border-bottom: 10px solid transparent;
border-right: 10px solid transparent;
}