Skip to content

Instantly share code, notes, and snippets.

View banagale's full-sized avatar

Rob Banagale banagale

View GitHub Profile
@banagale
banagale / .django_functions.zsh
Last active November 3, 2023 00:22
Shortcuts to common django management commands for a project running poetry
# Django-related shell functions for zsh
# Run development server
function runserver() {
poetry run python ./manage.py runserver "$@"
}
# Run tests
function runtests() {
poetry run python ./manage.py test "$@"
@banagale
banagale / digital-ocean-slugs.md
Created October 29, 2023 05:53
Digital Ocean Droplet Slugs
Class Slug RAM CPU Disk Transfer Price Monthly Price Hourly
Basic s-1vcpu-512mb-10gb 0.5 GB 1 10 GB 0.5 TB $4 $0.00595
Basic s-1vcpu-1gb 1 GB 1 25 GB 1 TB $6 $0.00893
Basic AMD s-1vcpu-1gb-amd 1 GB 1 25 GB 1 TB $7 $0.01042
Basic Intel s-1vcpu-1gb-intel 1 GB 1 25 GB 1 TB $7 $0.01042
Basic Intel s-1vcpu-1gb-35gb-intel 1 GB 1 35 GB 1 TB $8 $0.0119
Basic s-1vcpu-2gb 2 GB 1 50 GB 2 TB $12 $0.01786
Basic AMD s-1vcpu-2gb-amd 2 GB 1 50 GB 2 TB $14 $0.02083
Basic Intel s-1vcpu-2gb-intel 2 GB 1 50 GB 2 TB $14 $0.02083
@banagale
banagale / widen-chatgpt.js
Last active September 29, 2023 17:34
Widen chatgpt output column to full width
// Run this in console, keeps hideable left nav column chat history in place.
// "Works" as of 9/29/23
function updateClassName(element) {
if (element.className === 'flex flex-1 gap-4 text-base mx-auto md:gap-6 gizmo:gap-3 gizmo:md:px-5 gizmo:lg:px-1 gizmo:xl:px-5 md:max-w-3xl }') {
element.className = 'flex flex-1 gap-4 text-base mx-auto md:gap-6 gizmo:gap-3 gizmo:md:px-5 gizmo:lg:px-1 gizmo:xl:px-5 md:max-w-5xl }';
}
}
// Find the parent div first
const parentDivs = document.querySelectorAll('div.p-4.justify-center.text-base.md\\:gap-6.md\\:py-6.m-auto');
@banagale
banagale / wagtail-database-tables-removal.sql
Created March 21, 2023 16:07
Footgun blast wagtail out of a django installation
--This script removes all tables that start with 'wagtail' and 'taggit' database.
--Use with great caution, slightly modified https://stackoverflow.com/a/4202280
--If you have an app to support wagtail, such as 'blog', uncomment that line at end.
--You will also need to manually remove all related entries from django_migrations (consider extending this to also remove those) to run migrations and get back to clean install
CREATE OR REPLACE FUNCTION footgun(IN _schema TEXT, IN _parttionbase TEXT)
RETURNS void
LANGUAGE plpgsql
AS
$$
DECLARE

Keybase proof

I hereby claim:

  • I am banagale on github.
  • I am banagale (https://keybase.io/banagale) on keybase.
  • I have a public key ASCiFfGzAc_BnpIu0cz0oaFPn_uOFsOOG4AWJiXAXQ7jigo

To claim this, I am signing this object:

Keybase proof

I hereby claim:

  • I am banagale on github.
  • I am ripta (https://keybase.io/ripta) on keybase.
  • I have a public key ASBQIWFoZCW-maRzA_BfwRaYmYBMq8R0wEFhhOIVmYp3wQo

To claim this, I am signing this object:

@banagale
banagale / build.js
Last active October 17, 2021 07:11
An example javascript api-based `esbuild` build script with a watch and automatic post-build bash script execution.
// As discussed in https://github.com/evanw/esbuild/issues/1688
require('esbuild').build({
entryPoints: ['./briefings/frontend/src/briefings.ts'],
outfile: './briefings/frontend/build/briefings-fe.js',
bundle: true,
minify: true,
target: 'es2017',
color: true,
watch: {
@banagale
banagale / useSendGatheringEvent.js
Created May 12, 2021 15:03
A React Query function that POSTs user behavioral events to /events/ from the frontend
import Cookies from "js-cookie";
import { wvApiUrl } from "../../routes";
const fetchUrl = wvApiUrl.events();
export async function useSendGatheringEvent(bodyData) {
const response = await fetch(fetchUrl, {
method: 'POST',
body: JSON.stringify(bodyData),
headers: {
@banagale
banagale / frontend.api.views.py
Created May 12, 2021 14:54
A DRF Serializer and APIView defining an endpoint for behavioral analytics events posted from a frontend application
import logging
from rest_framework import serializers
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from core.analytics.helpers import track_event
from frontend.api.event_constants import GATHERING_EVENT_ID_MAP
@banagale
banagale / useCreateSessionToken.js
Last active May 12, 2021 14:44
Example custom hook for retrieving an OpenVidu session token, implemented using React Query
import Cookies from "js-cookie";
import { wvApiUrl } from "../../routes";
const fetchUrl = wvApiUrl.ovToken();
export async function useCreateSessionToken(bodyData) {
const response = await fetch(fetchUrl, {
method: 'POST',
body: JSON.stringify(bodyData),
headers: {