Skip to content

Instantly share code, notes, and snippets.

View evantahler's full-sized avatar
💭
Programmin'

Evan Tahler evantahler

💭
Programmin'
View GitHub Profile
@evantahler
evantahler / schemas.sql
Last active September 21, 2023 01:26
users-table-type-and-dedupe-annotated
-- RAW TABLE
/*
IDEAS:
* Should this table be a Snowflake Stream?
* https://docs.snowflake.com/en/sql-reference/sql/create-stream
*/
create or replace TABLE AIRBYTE_DEVELOP."airbyte_internal"."USERS_RAW" (
"_airbyte_raw_id" VARCHAR(16777216) NOT NULL, -- Added by Airbyte, this id links the rows in these 2 tables (UUID)
@evantahler
evantahler / connector.js
Created August 12, 2022 18:39
Airbyte Mutatable Spec
getSpec() {
// start the returned spec with constant properties that are always needed in all ways the connector can be deployed
let spec = {
properties: {
host: { required:true, type: string },
username: { required:true, type: string },
password: { required:true, type: string },
}
};
@evantahler
evantahler / Dockerfile
Created April 8, 2022 21:42
Airbyte Source in TS
FROM node:alpine
LABEL maintainer="evan@airbyte.io"
WORKDIR /airbyte/integration_code
COPY package*.json ./
COPY . .
RUN npm install
RUN npm run build
@evantahler
evantahler / install.sh
Last active March 8, 2022 22:25
Install & Run Airbyte on Digital Ocean
# ssh root@<<YOUR IP>>
# Install Docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce -y
@evantahler
evantahler / example.ts
Created August 28, 2021 20:01
Inheriting class method augment types in Typescript
abstract class Greeter {
abstract greet(who: string, message: string): void;
}
class ClassyGreeter extends Greeter {
greet(who, message) {
console.log(`Salutations, ${who}. ${message}`);
}
}
@evantahler
evantahler / purchases.csv
Last active August 4, 2021 22:26
Grouparoo Sample Data CSVs
id user_id item category price state created_at
1 69 88 Garden 68.13 successful 2021-06-07 00:43:22.505
2 155 25 Grocery 75.89 successful 2021-06-07 04:29:33.122
3 560 59 Books 19.7 successful 2021-07-31 07:40:07.724
4 562 95 Games 17.64 successful 2021-07-10 10:49:36.804
5 64 24 Kids 76.08 successful 2021-07-28 18:38:26.248
6 402 88 Movies 42.87 successful 2021-07-20 04:59:39.054
7 319 67 Garden 22.85 successful 2021-07-22 18:17:16.081
8 86 69 Outdoors 25.21 successful 2021-06-19 04:55:45.292
9 585 51 Grocery 34.85 successful 2021-07-08 07:35:33.024
@evantahler
evantahler / grouparoo-install-tests.md
Last active February 19, 2021 18:53
Grouparoo Install Tests - Feb 2021
@evantahler
evantahler / buildSitemap.js
Last active December 17, 2020 16:35
35 lines to build a sitemap for next.js projects
#! /usr/bin/env node
// I am ./bin/buildSitemap.js
const path = require('path')
const glob = require('glob')
const fs = require('fs')
const SITE_ROOT = process.env.SITE_ROOT || 'https://www.actionherojs.com'
const SOURCE = process.env.SOURCE || path.join(__dirname, '..', 'pages', '/**/*.js')
const DESTINATION = process.env.DESTINATION || path.join(__dirname, '..', 'static', 'sitemap.xml')
@evantahler
evantahler / email.js
Last active July 23, 2020 18:21
simple sending email service in actionhero
var nodemailer = require('nodemailer');
module.exports = {
initialize: function(api, next){
api.email = {
transporter: nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com'),
send: function(to, subject, body, callback){
var payload = {
from: '"Fred Foo 👥" <foo@blurdybloop.com>',
@evantahler
evantahler / gifit
Last active June 26, 2020 18:26
Convert movies to animated gifs
#!/bin/bash
# This script required ffmpeg and gifsicle
# On OSX: `brew install ffmpeg gifsicle`
SECONDS=0
INPUT_FILE=$1
BASENAME="${INPUT_FILE%.*}"
OUTPUT_FILE="$BASENAME.gif"