Skip to content

Instantly share code, notes, and snippets.

View berstend's full-sized avatar
🐋
⊂(◉‿◉)つ b̡͉̙̞͙͔͔̺̉͌̽̽͂̿͂͝erstend͔͝

berstend̡̲̫̹̠̖͚͓̔̄̓̐̄͛̀͘ berstend

🐋
⊂(◉‿◉)つ b̡͉̙̞͙͔͔̺̉͌̽̽͂̿͂͝erstend͔͝
  • Berlin, Germany
View GitHub Profile
@berstend
berstend / instagram-unfollow-users.md
Last active December 23, 2023 14:37
Mass unfollow users on Instagram (no app needed)
  • Go to your profile on instagram.com (sign in if not already)
  • Click on XXX following for the popup with the users you're following to appear
  • Open Chrome Devtools and Paste the following into the Console and hit return:
(async function(){
  const UNFOLLOW_LIMIT = 800
  const delay = (ms) => new Promise(_ => setTimeout(_, ms))
  const findButton = (txt) => [...document.querySelectorAll("button").entries()].map(([pos, btn]) => btn).filter(btn => btn.innerHTML === txt)[0]
@berstend
berstend / es6_delay.md
Last active July 16, 2023 14:26
The best ES6 Promise.delay functions

Hello future self, here's the TypeScript version for your copy/pasting pleasure:

const delay = (ms: number) => new Promise(_ => setTimeout(_, ms))

and your favorite JS version:

const delay = ms => new Promise(_ => setTimeout(_, ms))
@berstend
berstend / LinkedOut.js
Last active November 2, 2022 23:28
Withdraw all pending invitations from LinkedIn automatically in bulk. - Or "How I stopped spamming all of my contacts with invitations". This script is super ugly (like what LinkedIn does with your email data) but worked for me. Usage: - Go to https://www.linkedin.com/inbox/invitations/sent - Open DevInspector, paste the script to the console, h…
var INCR = 16; // Number of messages per page
var SENT_URL = '//www.linkedin.com/inbox/invitations/sent?startRow=';
var loMessageLinks = []; // Main array for all contacts
var fetchMessages = function(i, cb) {
console.log('Fetching message page #' + (i+1));
$.get(SENT_URL + (i*INCR), function(data){
var $dom = $(data);
@berstend
berstend / hcaptcha.ts
Created April 15, 2021 13:56 — forked from prescience-data/hcaptcha.ts
HCaptcha Solver
import { IncomingMessage, RequestListener, ServerResponse } from "http"
import { createServer, Server } from "https"
import puppeteer, {
Browser,
BrowserLaunchArgumentOptions,
Protocol
} from "puppeteer-core"
import { Page } from "./types"
import Cookie = Protocol.Network.Cookie
@berstend
berstend / chromiumVersion.js
Last active March 27, 2021 20:21
Parse chrome/chromium version from user agent string and semver compare
const chromiumVersion = (() => {
const compare = (newVer = "", oldVer = "") => {
const oldParts = oldVer.split(".");
const newParts = newVer.split(".");
for (let i = 0; i < newParts.length; i++) {
const a = ~~newParts[i]; // parse int
const b = ~~oldParts[i]; // parse int
if (a > b) return 1;
if (a < b) return -1;
}
@berstend
berstend / AllowFlashInChromium.md
Last active January 22, 2020 10:21
Allow flash content to run by default in Chromium by using a management policy file

Tested on Ubuntu 14.04 and Chromium 65

Steps

apt-get install chromium-browser adobe-flashplugin

mkdir -p /etc/chromium/policies/managed

vim /etc/chromium/policies/managed/foo_policy.json
@berstend
berstend / graphiql_dark_0.11.11.css
Created November 4, 2019 14:47
Dark mode for GraphiQL extracted from Dark Reader
[data-darkreader-inline-bgcolor] {
background-color: var(--darkreader-inline-bgcolor) !important;
}
[data-darkreader-inline-bgimage] {
background-image: var(--darkreader-inline-bgimage) !important;
}
[data-darkreader-inline-border] {
border-color: var(--darkreader-inline-border) !important;
}
[data-darkreader-inline-border-bottom] {
@berstend
berstend / momorepofy.sh
Created March 5, 2019 12:19
Make a monorepo with existing repos
#!/usr/bin/env bash
# Before:
# (Assuming you standard branch is development in the mono repo)
# git checkout -b add-services
githubOrg=FOOBAR
repoList="api backend-service frontend"
repoBranch="development"
serviceDir=services # local directory to pull the other repos in
@berstend
berstend / foobar.yaml
Created January 22, 2019 16:56
Restart (rolling updates) pods recurringly on GKE
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: restart-pods
rules:
- apiGroups:
- extensions
- apps
@berstend
berstend / bayesian_ranking.js
Created December 16, 2018 19:18
Given star ratings and votes, calculate bayesian estimate ratings to sort by popularity (taking number of votes into consideration)
/*
bayesian rating = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
where:
R = stars for the entry
v = number of votes for the entry
m = minimum votes required to be listed (eg. 10)
C = the mean stars across the whole list (eg. 4.1)
This rating only includes entries that have at least 10 votes.
The bayesian estimate is a statistical technique used to reduce the noise