Skip to content

Instantly share code, notes, and snippets.

@EfosaSO
EfosaSO / README.md
Created January 15, 2025 22:47 — forked from arussellsaw/README.md
Monzo Plus Grafana Dashboard

Monzo Plus Grafana Dashboard

Now that Monzo Plus is out, i thought i'd share how i've set up my personal budgeting dashboards using the Google Sheets export that i showed off in this tweet: https://twitter.com/arussellsaw/status/1283876210750230530?s=20

A quick note on cost, bigquery isn't free, but even with my Monzo transaction history, which i've had since 2016 (although the google sheets only goes as far as the prepaid->current account migration) the volume of data here is still so low that bigquery doesn't even appear on my GCP billing, as we're well below the 1tb billing threshold. That being said if you somehow misconfigure things, it's possible that you could incur billing costs, so it's worth being wary of that.

The sheets export automatically creates and updates a google sheet with each transaction, and luckily google BigQuery supports using a google sheet as an external table, so we can just query the sheet directly, and have it updated as new rows are add

@EfosaSO
EfosaSO / useTextSelection.ts
Created February 24, 2024 22:22 — forked from KristofferEriksson/useTextSelection.ts
A React Typescript hook that tracks user text selections & their screen positions
import { useEffect, useState } from "react";
type UseTextSelectionReturn = {
text: string;
rects: DOMRect[];
ranges: Range[];
selection: Selection | null;
};
const getRangesFromSelection = (selection: Selection): Range[] => {
@EfosaSO
EfosaSO / SplitScreen.tsx
Created February 24, 2024 13:41 — forked from smontlouis/SplitScreen.tsx
Amie in-app split screen in react-native
import { useWindowDimensions } from 'react-native'
import { Gesture } from 'react-native-gesture-handler'
import Animated, {
Extrapolation,
WithSpringConfig,
interpolate,
scrollTo,
useAnimatedRef,
useAnimatedScrollHandler,
useAnimatedStyle,