Skip to content

Instantly share code, notes, and snippets.

molly /
Created January 12, 2024 20:37
Merge Substack subscriber CSVs
import pandas as pd
from pandas import notna, isna
if __name__ == "__main__":
paid_all_data = pd.read_csv("/Users/molly/Desktop/paid.csv")
paid_with_stripe = pd.read_csv("/Users/molly/Desktop/mollywhite_subscriber_emails_2023-12-24.csv")
all_all_data = pd.read_csv("/Users/molly/Desktop/all.csv")
all_with_misc = pd.read_csv("/Users/molly/Desktop/mollywhite_signup_emails_2023-12-24.csv")
all_combined = pd.merge(all_all_data, all_with_misc, on="email", how="outer", suffixes=('', '_DROP'))
all_combined = pd.merge(all_combined, paid_all_data, on="email", how="outer", suffixes=('', '_DROP'))
// This source code is subject to the terms of the Mozilla Public License 2.0 at
// © mollywhite
indicator('GBTC premium')
btc ='COINBASE:BTCUSD', timeframe.period, close)
gbtc = nz('OTC:GBTC', timeframe.period, close))
gbtcVolume = nz('OTC:GBTC', timeframe.period, volume))
btcPerGbtcShare = 0.00091152 // Value as of 2023-01-28, via
Title Date Amount (USD)
Africrypt investors disappear with $3.6 billion of investor funds 2021-04-13 3600000000
CEO of Turkish crypto exchange Thodex apparently makes off with $2 billion in investments 2021-04-21 2000000000
Popular blockchain game Axie Infinity suffers a $625 million exploit, possibly the largest in defi history 2022-03-29 625000000
$611 million is stolen from Poly Network in one of the largest cryptocurrency heists to date 2021-08-11 600000000
Wormhole, a cross-blockchain bridge, is hacked for more than $320 million in one of the largest hacks to date 2022-02-02 320000000
Hackers steal about $200 million from BitMart 2021-12-04 200000000
Founder of DeFi platform Compound threatens users who received mistaken payments with the IRS 2021-09-30 160000000
Vulcan Forged users lose a collective $135 million in hack 2021-12-13 135000000
DeFi platform C.R.E.A.M. is hacked for a third time, this time for $130 million 2021-10-27 130000000
molly / pixeldex.js
Last active February 26, 2022 06:13
// ==UserScript==
// @name Pixeldex
// @namespace
// @version 0.1
// @description Gawk at Pixelmon's funny new NFTs
// @author Molly White
// @match *://*
// ==/UserScript==
(function() {
### Keybase proof
I hereby claim:
* I am molly on github.
* I am molly0xfff ( on keybase.
* I have a public key ASDbKsCyxsmQqyL_MUsc975rzfdOy-9rHb4KxMyn2AtONAo
To claim this, I am signing this object:
Rob Monster, YT0:00:00: ... working hypothesis is that it was a backup. And I'm not going to say where the backup was found but I believe it was a backup and it wasn't the live data. I don't think that there is an active vulnerability that would have allowed that scale of data haul. But we're going to find exactly where it was, we're going to find exactly how it was moved, and...
Monster, YT0:00:28: [reading question from chat. Full question in chat was asked by "nf84": "Why are you putting breach in quotes? Do you not believe the breach happened...?"] No, I think that there was a non-active host. Not our production system. It had a backup, as we were doing remote backup of our data, and I think that was intercepted. And we'll figure out exactly how it was done, and cyber forensics people will navigate that, and they will advise us on what we should do, and law enforcement's involved.
Monster, YT0:01:05: [reading the chat. Full comment in chat was from "JorgeOrwell": "He's in a state of denial. I've looked
.big-ass-wrapper {
position: relative;
min-height: calc(100vh - 145px);
.wrap {
width: 50vw;
box-sizing: border-box;
line-height: 1.65;
position: absolute;

Keybase proof

I hereby claim:

  • I am molly on github.
  • I am molly0x57 ( on keybase.
  • I have a public key ASCI587Ud0bgqtIGOVgHCnYyx_UTE1MyTK3IwUiCXZjnEgo

To claim this, I am signing this object:

molly / gist:18d5efba978afb04f838
Last active August 29, 2015 14:21
list comprehension
holding = [x for x in holding if x != item]
equivalent to
new_holding = []
for x in holding:
if x != item:
holding = new_holding
for contact in contacts
td= contact.firstName
td= contact.lastName
td= contact.age