Skip to content

Instantly share code, notes, and snippets.

View benbarber's full-sized avatar
🟢
Available for hire

Ben Barber benbarber

🟢
Available for hire
View GitHub Profile
@benbarber
benbarber / use-strict-loader-data.ts
Last active October 11, 2023 12:49
ueStrictLoaderData - Adds a warning to the console for any data sent from the loader and not used
import { useLoaderData } from "@remix-run/react";
import { useEffect } from "react";
export const useStrictLoaderData = () => {
const data = useLoaderData();
const accessed = [] as String[];
const getAllKeys = (obj: any, path = "") => {
const keys = [] as String[];
@benbarber
benbarber / slow_query_handler.ex
Created July 9, 2023 09:26 — forked from joshnuss/slow_query_handler.ex
Output slow Ecto queries to logs
defmodule MyApp.Telemetry do
require Logger
def handle_event([:my_app, :repo, :query], measurements, metadata, _config) do
milliseconds = System.convert_time_unit(measurements.total_time, :native, :millisecond)
# did the query take longer than 100ms?
if milliseconds > 100 do
# log it as a warning
Logger.warn("SLOW QUERY: ms: #{milliseconds}, query: #{metadata.query}")
@benbarber
benbarber / preloader.exs
Created July 9, 2023 09:25 — forked from joshnuss/preloader.exs
Preloading & joining with Ecto, simplified.
# Preloading usually required an extra query.
# To do it in one query, a `join` is needed, and the call to `preload` needs to know the name of join
# This macro does both the `join` and `preload` together
defmodule Preloader do
import Ecto, only: [assoc: 2]
alias Ecto.Query.Builder.{Join, Preload}
defmacro preload_join(query, association) do
expr = quote do: assoc(l, unquote(association))
binding = quote do: [l]
@benbarber
benbarber / create-react-app-electron.md
Last active March 7, 2018 16:25 — forked from matthewjberger/notes.md
How to make an electron app using Create-React-App and Electron with Electron-Builder.
@benbarber
benbarber / polyfill.js
Created September 29, 2017 08:35
Polyfill loader for for React 16
const features = [
'Map',
'Set',
'requestAnimationFrame'
]
function browserSupportsAllFeatures() {
return features.every(f => window[f])
}
@benbarber
benbarber / installing_crystal_on_macos_sierra.md
Created May 13, 2017 11:20
Installing Crystal on MacOS Sierra

Installing Crystal on MacOS Sierra

I had a few issues getting the Crystal compiler to run on MacOS Sierra, these are the seteps I took to get it up and running.

Firstly install the Crystal Language through Homebrew;

brew install crystal-lang
@benbarber
benbarber / README-Template.md
Created May 5, 2017 08:57 — forked from PurpleBooth/README-Template.md
A template to make good README.md

Project Title

One Paragraph of project description goes here

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

@benbarber
benbarber / websocket-elb.md
Created April 25, 2017 07:42 — forked from zhiguangwang/websocket-elb.md
Configure websockets behind an AWS ELB.
@benbarber
benbarber / disposable-email-provider-domains
Created April 21, 2017 11:34
List of disposable email provider domains
0815.ru
0wnd.net
0wnd.org
10minutemail.co.za
10minutemail.com
123-m.com
1fsdfdsfsdf.tk
1pad.de
20minutemail.com
21cn.com
@benbarber
benbarber / tmux-cheatsheet.markdown
Created April 21, 2017 11:32 — forked from MohamedAlaa/tmux-cheatsheet.markdown
tmux shortcuts & cheatsheet

tmux shortcuts & cheatsheet

start new:

tmux

start new with session name:

tmux new -s myname