Skip to content

Instantly share code, notes, and snippets.

10x Ninja Rockstar

Adam Loving adamloving

10x Ninja Rockstar
View GitHub Profile
adamloving / ci.yml
Created Aug 9, 2022
RedwoodJS CI workflow action for Github (put this in .github/workflows)
View ci.yml
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
# Triggers the workflow on push or pull request events but only for the "main" branch
branches: [ "main" ]
branches: [ "main" ]
adamloving / example.ts
Last active Jul 27, 2021
Isomorphic (shared) Typescript models for full stack Node Express React Postgres projects #NERP
View example.ts
import { array, object, number, string, date, InferType } from "yup";
import { Model } from "objection";
// Shared
// Shared API data schema (objects shared between client and server)
export const sharedSchema = object({
// none of these are required since not set until save (but they are also not nullable)
id: number()
adamloving / ARTapToPlaceObject.cs
Created Jun 11, 2020
Place Object on surface in AR using Unity AR Foundation
View ARTapToPlaceObject.cs
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
// This script is inspired by:
// video Getting Started With ARFoundation in Unity (ARKit, ARCore):
adamloving / typeahead-autocomplete.tsx
Created Apr 16, 2020
React typeahead autocomplete
View typeahead-autocomplete.tsx
import React from "react";
import { ActionMeta, ValueType } from "react-select";
import CreatableSelect from "react-select/creatable";
type CreatableMultiSelectProps = {
options: Set<string>; // available choices
values: Set<string>; // current selections
onChange: (values: Set<string>) => void;
adamloving /
Created Sep 24, 2019
Python truth table and truthiness
import math
values = [
True, False, 1, 0, -1, "true", "false", "1", "0", "-1", "", None, math.inf, -math.inf, [], {}, [[]], [0], [1]
print("Truth Table")
for value in values:
print(f"\t", end="")
adamloving /
Last active Sep 23, 2019
Python is a very inelegant language. Here are some things I dislike.
# 1. Clunky lambda syntax
numbers = [1, 2, 3]
# don't do this...
doubled = list(map(lambda n: n * 2, numbers))
# There's no way to define the end of the block except that comma. What about wrapping lines?
# better for this case
doubled = [n * 2 for n in numbers]
adamloving / .flake8.ini
Last active Oct 4, 2018
flake8 python linting configuration file
View .flake8.ini
# on macOS, put this in ~/.config/flake8
#E302 expected 2 blank lines, found 1
#E261 at least two spaces before inline comment
# E401 multiple imports on one line
adamloving /
Last active Jun 19, 2018
parallelize python method
import multiprocessing, concurrent.futures
from functools import partial
WORKER_THREAD_COUNT = multiprocessing.cpu_count()
def parallelize(partials):
results = []
with concurrent.futures.ProcessPoolExecutor(max_workers=WORKER_THREAD_COUNT) as executor:
jobs = [ executor.submit(p) for p in partials ]
adamloving / react-numeral-input.jsx
Created Jun 24, 2016
React based HTML input for dollars that disallows decimals and inserts commas.
View react-numeral-input.jsx
class NumericInput extends React.Component {
constructor(props = {}) {
this.state = {
value: numeral(props.value).format('0,0')
onChange(e) {
var number = numeral().unformat(
adamloving / BraintreeViewController.swift
Created Apr 12, 2016
Combined (working) Braintree Swift example for iOS 9
View BraintreeViewController.swift
import UIKit
import Braintree
let testToken = "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJkODIwNjRmN2ZhZjExNWJiYTI5NjdmNGEwNmM2OWJhZjQxODVjYjJiZjg2NWNkYzRjNzRiZmIzMzdjNmU5MDMwfGNyZWF0ZWRfYXQ9MjAxNi0wNC0xMlQxNjowNzoyOS44MTc4NjgzNjYrMDAwMFx1MDAyNm1lcmNoYW50X2lkPTM0OHBrOWNnZjNiZ3l3MmJcdTAwMjZwdWJsaWNfa2V5PTJuMjQ3ZHY4OWJxOXZtcHIiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tOjQ0My9tZXJjaGFudHMvMzQ4cGs5Y2dmM2JneXcyYi9jbGllbnRfYXBpL3YxL2NvbmZpZ3VyYXRpb24iLCJjaGFsbGVuZ2VzIjpbXSwiZW52aXJvbm1lbnQiOiJzYW5kYm94IiwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuc2FuZGJveC5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzM0OHBrOWNnZjNiZ3l3MmIvY2xpZW50X2FwaSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tIiwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5zYW5kYm94LmJyYWludHJlZWdhdGV3YXkuY29tLzM0OHBrOWNnZjNiZ3l3MmIifSwidGhyZWVEU2VjdXJlRW5hYmxlZCI6dHJ1ZSwicGF5cGFsRW5hYmxlZCI6dHJ1ZSwicGF5cGFs