Skip to content

Instantly share code, notes, and snippets.

View phyllisstein's full-sized avatar

Daniel P. Shannon phyllisstein

View GitHub Profile
@phyllisstein
phyllisstein / i didn't mean who, i meant... her?.md
Created October 20, 2026 13:59
Look who's on that hog in the rear-view mirror
# $HOME/.zshrc

# -- Print Bluth ipsum paragraphs. --------------------------------------------
'her?'() {
  curl -fsSL https://bluthipsum.com/ \
    | perl -0777 -ne 'while (/<p[^>]*>(.*?)<\/p>/gs) { my $t = $1; $t =~ s/<[^>]+>//g; $t =~ s/^\s+|\s+$//g; print "$t\n\n"; }'
}
# zsh would otherwise try to glob `her?` when it is typed unquoted.
alias 'her?'='noglob her?'

Stop it, stop it! This objectification of women has got to stop! It's just Mom and whores. Don't worry, these young beauties have been nowhere near the bananas. Speaking of settling, how's Ann?

I know what an erection feels like, Michael. No, it's the opposite. It's like my heart is getting hard. Let's make Ann the backup, okay? Very good way to think about her, as a backup. I hear the jury's still out on science. I didn't mean who… I meant… her? Suddenly playing with yourself is a scholarly pursuit? And I wouldn't just lie there, if that's what you're thinking. That's not what I WAS thinking.

@phyllisstein
phyllisstein / llm.md
Created June 24, 2026 14:58
Claude explains LLM "contracts"

An LLM in code is just a function call over HTTP. There's no magic "spinning up" — you either hit a local daemon or a cloud endpoint, send {model, messages, options}, and get text back. For this spike I'd use Ollama (local): it's the on-prem, llama.cpp-family runtime we identified as the production sharp tool, so what you learn transfers directly; no API key; and it has a JSON mode. If ollama serve is running, you POST http://localhost:11434/api/chat with {"model": "llama3.1" (or any instruct model you've pulled), "messages": [...], "format": "json", "stream": false, "options": {"temperature": 0}}, and the JSON you want is in response ["message"]["content"] (as a string you still have to json.loads). urllib from the stdlib is enough — no new deps.

Three concepts that are the whole skill, each a deliberate choice:

  1. The system prompt is the component's contract, not chit-chat. You're not conversing; you're defining a function in English. It must state the job ("identify spans likely
//! Exploration of different strategies for handling optional/missing Neo4j node
//! properties in neo4rs 0.8.
//!
//! The problem: Neo4j nodes seeded at different times may or may not have a
//! given property. In Rust, we model this as `Option<String>`. But neo4rs's
//! `Node::get::<Option<String>>("words")` fails with `NoSuchProperty` when the
//! key is entirely absent from the node — the HashMap lookup fails before the
//! `Option` type parameter ever gets a chance to run.
//!
//! This binary exercises seven different approaches against live Neo4j data,
@phyllisstein
phyllisstein / lead-pipe.md
Last active December 2, 2025 00:18
Go go gadget idempotence

You're right to be confused! The lens composition actually does work in the order you expected - colorsLens first, then semanticLens, etc., ending with hoverLens.

The reason it looks backwards is that R.compose reads right-to-left for regular functions, but with lenses it's different:

How Lens Composition Works

When you compose lenses with R.compose, they execute in left-to-right order (the order written):

  1. colorsLens - focus on theme.colors
  2. semanticLens - within that, focus on semantic
@phyllisstein
phyllisstein / ublock-twitterneue.txt
Created May 19, 2024 15:15 — forked from beep/ublock-twitterneue.txt
uBlock Origin rules for new twitter website
# hides engage-y modules from the rightmost sidebar
twitter.com##[data-testid="sidebarColumn"] div[aria-label]
twitter.com##[data-testid="sidebarColumn"] div:has(> aside[aria-label])
x.com##[data-testid="sidebarColumn"] div[aria-label]
x.com##[data-testid="sidebarColumn"] div:has(> aside[aria-label])
# hides promoted tweets
twitter.com##article :has(svg[d="M20.75 2H3.25C2.007 2 1 3.007 1 4.25v15.5C1 20.993 2.007 22 3.25 22h17.5c1.243 0 2.25-1.007 2.25-2.25V4.25C23 3.007 21.993 2 20.75 2zM17.5 13.504c0 .483-.392.875-.875.875s-.875-.393-.875-.876V9.967l-7.547 7.546c-.17.17-.395.256-.62.256s-.447-.086-.618-.257c-.342-.342-.342-.896 0-1.237l7.547-7.547h-3.54c-.482 0-.874-.393-.874-.876s.392-.875.875-.875h5.65c.483 0 .875.39.875.874v5.65z"])
x.com##article :has(svg[d="M20.75 2H3.25C2.007 2 1 3.007 1 4.25v15.5C1 20.993 2.007 22 3.25 22h17.5c1.243 0 2.25-1.007 2.25-2.25V4.25C23 3.007 21.993 2 20.75 2zM17.5 13.504c0 .483-.392.875-.875.875s-.875-.393-.875-.876V9.967l-7.547 7.546c-.17.17-.395.256-.62.256s-.447-.086-.6
{
"slug": "punk-hardcore-photos-sunday-matinee",
"byline": [
{
"names": [
{
"twitter": "",
"facebook": "",
"name": "Caryn Rose",
"instagram": "",
[64290:1024/082914.178063:INFO:CONSOLE(83)] "Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' https://*.vscode-cdn.net 'nonce-icgVV3j6VgF5uX05ewOoIA==' 'unsafe-hashes' 'sha256-zCS+ubUbQ2s89oA2fBkOFRlQUjbq1DjjsiGY9OlmDMk=' 'sha256-0oUKC05+rMUna2WV/1dh4gYJXRAMAEtVgf+n8LpKnfE='". Either the 'unsafe-inline' keyword, a hash ('sha256-TMLnGHcHuaP1IGfOIlow4y9VuEmkzaBSGhTQHF7CzWM='), or a nonce ('nonce-...') is required to enable inline execution.
", source: https://file+.vscode-resource.vscode-cdn.net/tmp/code-git-lens-extensions/eamodio.gitlens-13.0.3/dist/webviews/settings.js (83)
@phyllisstein
phyllisstein / .dockerignore
Last active August 15, 2022 14:02
Dockerize Node app without installing or linking node_modules.
**/node_modules/**
**/.git/**
**/dist/**
import { babel, css } from '@nymag/configs/webpack/loaders/index.js'
import {
client,
development as developmentEnvironment,
} from '@nymag/configs/webpack/environments/index.js'
import {
context,
entrypoints,
resolveExtensions,
resolveModules,