Skip to content

Instantly share code, notes, and snippets.

View peterw's full-sized avatar

Peter peterw

View GitHub Profile
@peterw
peterw / task130-stripe-test-proof.json
Created September 10, 2026 23:48
Stripe TEST proof for peterw/carby#5191 delinquent cancel_at stop
{
"mode": "stripe_test",
"started_at": "2026-09-10T23:43:51.605Z",
"created": {
"product": "prod_VEl9wKQDrdQX1N",
"price": "price_1UEHdFLcAF3esx3bpnUO7Fl6",
"clock": "clock_1UEHdFLcAF3esx3bZl76FSx6",
"customer": "cus_VEl9Tx2uYHV4wX",
"payment_method": "pm_1UEHdGLcAF3esx3bFr97Cabr",
"subscription": {
@peterw
peterw / format-ladder-carby.html
Created July 25, 2026 01:52
Carby Format Ladder — 5 Executions
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Format Ladder — Same Angle, Five Executions</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<style>
@peterw
peterw / carby-design-exercise-reference.md
Created July 20, 2026 03:05
Carby design exercise: what good and bad work looks like

Carby Design Exercise — What Good and Bad Work Looks Like

This guide uses anonymized examples from real Carby design exercises. It explains the evaluation bar without publishing candidate names, private hiring decisions, or source files.

The two hard bars

  • Visual taste: The screen must be coherent, polished, and materially better than the starting point.
  • Causal product thinking: The designer must identify one behavioral bottleneck and make a plausible bet about helping the user reach first value faster.

Both bars must be met. A polished screen without a product hypothesis is weak, and a smart explanation cannot rescue weak visual execution.

@peterw
peterw / embed.py
Created April 17, 2023 16:30
embedding the pdf
import openai
import streamlit as st
from streamlit_chat import message
from dotenv import load_dotenv
import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
import openai
from langchain.document_loaders import UnstructuredMarkdownLoader
from langchain.chains.question_answering import load_qa_chain
import openai
import streamlit as st
from streamlit_chat import message
from dotenv import load_dotenv
import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
import openai
from langchain.document_loaders import UnstructuredMarkdownLoader
from langchain.chains.question_answering import load_qa_chain
import openai
import streamlit as st
from streamlit_chat import message
from dotenv import load_dotenv
import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
import openai
from langchain.document_loaders import UnstructuredMarkdownLoader
from langchain.chains.question_answering import load_qa_chain
@peterw
peterw / index.html
Last active January 21, 2023 03:47
{% extends "web/app/app_base.html" %} {% load static %} {% block app %}
<script src="{% static 'js/loomhq/record-sdk/dist/cjs/index.js' %}"></script>
<script src="{% static 'js/loomhq/loom-embed/dist/cjs/index.js' %}"></script>
<div id="app">
<label ref="targetDiv" id='loom_is_ready' class='hidden'></label>
<label class="hidden" id="script1-url"></label>
<label class="hidden" id="script2-url"></label>
<span class="indicator-item badge">Record your Scripts!</span>
from moviepy.editor import VideoFileClip, ImageClip, CompositeVideoClip
import moviepy.video.fx.all as vfx
import os
import mux_python
from mux_python.rest import ApiException
import requests
import uuid
from moviepy.editor import *
from moviepy.video.compositing.concatenate import concatenate_videoclips
from time import sleep
from moviepy.editor import VideoFileClip, ImageClip, CompositeVideoClip
import moviepy.video.fx.all as vfx
import os
import mux_python
from mux_python.rest import ApiException
import requests
import uuid
from moviepy.editor import *
from moviepy.video.compositing.concatenate import concatenate_videoclips
from time import sleep
{% extends "web/app/app_base.html" %} {% load static %} {% block app %}
<span class="indicator-item badge">Coming soon!</span>
<p class="text-xl font-bold">History</p>
<p class="text-sm">History of everything that you've generated.</p>
<div id='app'>
</div>
<div id='target'> </div>
<script