Skip to content

Instantly share code, notes, and snippets.


Tom Hicks tomhicks

View GitHub Profile
tomhicks / useTaskQueue.ts
Created Jan 11, 2021
React Hook for queueing and processing async tasks sequentially
View useTaskQueue.ts
function useTaskQueue(params: {
shouldProcess: boolean
}): {
tasks: ReadonlyArray<Task>
isProcessing: boolean
addTask: (task: Task) => void
} {
const [queue, setQueue] = React.useState<{
isProcessing: boolean
tasks: Array<Task>
tomhicks / InternalLink.tsx
Created Jul 24, 2020
Strongly-typed NextJS internal links
View InternalLink.tsx
tomhicks /
Created Feb 20, 2020
Node 12 node-svm fix
#include "node-svm.h"
#include "training-worker.h"
#include "prediction-worker.h"
#include "probability-prediction-worker.h"
using v8::FunctionTemplate;
using v8::Object;
using v8::String;
using v8::Array;
tomhicks / sweep-swoop.js
Last active Apr 17, 2020
Listen to your web pages
View sweep-swoop.js
const audioCtx = new window.AudioContext();
const oscillator = audioCtx.createOscillator();
oscillator.type = "sine";
let numItems = 0
tomhicks / plink-plonk.js
Last active Feb 15, 2021
Listen to your web pages
View plink-plonk.js
View SpoingyScrollView.tsx
import * as React from "react"
import {captureScroll, getSpoingyTransform} from "spoingyHelpers"
import {Animated} from "react-native"
const headerHeight = 300
export default () => {
// use an instance variable if using component classes
const scrollY = React.useRef(new Animated.Value(0)).current
tomhicks / spoingyHeaders.ts
Created Jun 20, 2019
Bouncy header helper functions
View spoingyHeaders.ts
import {Animated} from "react-native"
export function getSpoingyTransform(
scrollY: Animated.Value,
headerHeight: number,
) {
return [
translateY: scrollY.interpolate({
inputRange: [-headerHeight, 0, 1],