Skip to content

Instantly share code, notes, and snippets.

View markusstrasser's full-sized avatar
🎯
Focusing

Markus Strasser markusstrasser

🎯
Focusing
  • San Francisco
View GitHub Profile
@markusstrasser
markusstrasser / friend-sync.sh
Created March 21, 2026 02:46
Friend infra sync — pull repos, update CLI tools, link skills, version report
#!/usr/bin/env bash
set -euo pipefail
# ============================================================================
# Friend Infra Sync — pull repos, update tools, link new skills, report drift
# Run: ~/.local/bin/friend-sync.sh (manual)
# launchd runs daily at 06:00 (automatic)
# ============================================================================
BOLD='\033[1m'
@markusstrasser
markusstrasser / setup-friend.sh
Last active March 21, 2026 02:48
AI coding setup — Claude Code, Gemini, Codex, llmx, emb, MCP servers, skills, daily sync + API keys in macOS Keychain
AI coding setup — Claude Code, Gemini, Codex, llmx, emb, MCP servers, skills, daily sync + API keys in macOS Keychain
#!/usr/bin/env bash
set -euo pipefail
# ============================================================================
# Claude Code + AI Tools + MCP Infrastructure Setup
# Run: curl -sL <gist-url>/setup-friend.sh | bash
# ============================================================================
@markusstrasser
markusstrasser / patch-friend.sh
Last active March 21, 2026 02:48
Friend Mac Setup — full agent infrastructure bootstrap (Claude Code, hooks, MCP servers, skills, repos)
#!/usr/bin/env bash
set -euo pipefail
# Patch script — applies fixes to an already-installed friend setup
# Run on friend's machine: curl -sL <gist-url> | bash
BOLD='\033[1m'
DIM='\033[2m'
GREEN='\033[32m'
YELLOW='\033[33m'
@markusstrasser
markusstrasser / euromed.md
Created September 12, 2025 07:20
euro med

Based on extensive research across multiple deep-dive analyses and current 2024-2025 data, here's the actual situation your friend faces: The brutal reality: she's fantasizing about a mirage. Europe isn't the burnout cure she imagines—it's trading one set of problems for a drastically worse financial and bureaucratic nightmare. The Numbers Don't Lie Switzerland (the "best" paying): Pediatric specialists earn CHF 150-200k ($170-225k), sleep medicine CHF 170-220k. After 35% effective tax rates and Switzerland's astronomical living costs (Zurich rent: CHF 3,500/month), she's looking at maybe 60% of her current purchasing power. The FMH recognition? 9-18 months of bureaucratic hell, plus mandatory German/French C1 proficiency. Netherlands: €90-170k gross ($100-190k). With the 30% ruling helping expats, she might net €70-120k. But Dutch B2 medical proficiency is mandatory, BIG registration takes 6-12 months, and Amsterdam's housing crisis means €1,800/month for a shoebox if she can even find one. Real weekly hours

@markusstrasser
markusstrasser / .zshrc
Last active September 7, 2025 15:07
ZSHRC
# Show repo summary only when inside a Git repo
if command -v onefetch >/dev/null 2>&1; then
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
onefetch # looks cool
fi
fi
# Make sure shims are discoverable
: ${ZPFX:=${HOME}/.local/share/zinit/polaris}
typeset -gU path; path=("$ZPFX/bin" $path) # add in front
@markusstrasser
markusstrasser / brewformulas.txt
Last active August 29, 2025 13:22
Brew Formulas
brew install borkdude/brew/babashka borkdude/brew/clj-kondo oven-sh/bun/bun bash clojure codex direnv eza fd ffmpeg flac fontconfig fzf gemini-cli gh glib openjdk repomix ripgrep sqlite starship tailwindcss uv webp zsh starship eza bat fzf zoxide fd ripgrep vivid git-delta font-jetbrains-mono-nerd-font
@markusstrasser
markusstrasser / brewfile.txt
Last active August 29, 2025 08:26
Brew File
cask "anki"
cask "appcleaner"
cask "chatgpt"
cask "cheatsheet"
cask "claude"
cask "cold-turkey-blocker"
cask "cursor"
cask "daisydisk"
cask "deluge"
cask "expressvpn"
1. Introduction: This Privacy Policy explains how the Chrome extension ("the extension") collects, uses, and protects user information.
2. Information Collection: The extension collects user's saved contents in a cloud database (supabase). This may include information such as the user's email address, saved tweets, saved articles, and other atoms. All database contents are inspectable to the user.
3. Information Use: The extension uses user information to provide and improve the extension's services, to contact users, and to prevent fraud or other unauthorized or illegal activity.
4. Information Sharing: The extension does not share user information with third-party advertisers or marketing agencies. The extension may share user information with Supabase for the purposes of providing and improving the extension's services.
5. Information Security: The extension takes reasonable steps to protect user information from unauthorized access, use, or disclosure. However, no data transmission over the internet c
1. Introduction: These Terms of Service govern the use of the Chrome extension ("the extension"). By using the extension, you agree to these terms.
2. Acceptance of Terms: By using the extension, you agree to these Terms of Service. If you do not agree to these terms, do not use the extension.
3. User Account: To use the extension, you may need to create an account. You are responsible for maintaining the confidentiality of your account login information and for all activities that occur under your account.
4. User Data: The extension stores saved content in a Supabase database. The extension will collect, store, and use your data in accordance with our Privacy Policy.
5. Intellectual Property: All content included in the extension, such as text, graphics, logos, and images, is the property of the extension's developers or its content suppliers and is protected by United States and international copyright laws.
@markusstrasser
markusstrasser / PasteIntoTerminal.scpt
Created March 23, 2023 19:57
Paste from Clipboard into Terminal App
-- Change this variable to the desired terminal application name set terminalAppName to "Warp" -- Check if iTerm and Warp are running set isITermRunning to isAppRunning("iTerm2") set isWarpRunning to isAppRunning("Warp") -- If iTerm is open and Warp is not open, use iTerm if isITermRunning and not isWarpRunning then set terminalAppName to "iTerm2" end if tell application terminalAppName to activate delay 0.3 tell application "System Events" tell process terminalAppName set frontmost to true keystroke "v" using {command down} end tell end tell on isAppRunning(appName) tell application "System Events" to (name of processes) contains appName end isAppRunning