') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); dpersek (Dustin Persek) · GitHub
Skip to content
View dpersek's full-sized avatar
🌱
Tending PersekOS, upstream bugs, and an actual farm.
🌱
Tending PersekOS, upstream bugs, and an actual farm.

Block or report dpersek

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
dpersek/README.md

Corporate systems, a North Carolina farm, and an open-source software graph flowing into one another

Dustin Persek

Building practical AI systems from a farm in North Carolina.

After twenty years in payments and enterprise software—mostly at Visa, ending as COO and CPO at Fraedom—I traded corporate life for a farm. Now I am building PersekOS and contributing precise, practical fixes to OSS.

🌱 Currently tending PersekOS, upstream bugs, and an actual farm.

WebsiteX @dpersekLinkedIn

Start here

Open source

I am early in my open source journey, so this list is currently small. These are projects where a contribution actually merged upstream. It should grow quickly.

ProjectContribution
codebase-memory-mcpreal ThreadSanitizer test target; tools/list pagination compatibility; Python LSP eval-depth guard; libgit2 allocator version floor; UI delete unwatch cleanup; Visual Studio strict tool schema
cli-printing-presscli-printing-press #3504 OAuth token persistence; cli-printing-press #3497 offset/page bare --all pagination; cli-printing-press #3477 array request body stdin; remove vendor-specific profile wording
open-wisprconfigurable Whisper prompt; sleep/wake recording recovery; clipboard insertion fix; Handled Homebrew trust installer failures with clearer remediation and installer regression coverage.
nonoexplicit intercept match predicates; network block upstream proxy conflict; intercept argv matcher hardening
openwhisprOpenWhispr #1007 local model download state; clipboard restore delay regression; Preserved rich clipboard formats during restore.
openmedHTML text extraction with source offsets; biomedical NER entity type categories
OpenMAICOpenMAIC #876 isDeckComplete predicate, PR #883; Rendered math formulas in quiz text and added focused tests around formula parsing and fallback behavior.
Vibe-TradingVibe-Trading #403 IM reply timeout config, PR #413; preflight redirect
remotionWebM tail frame extraction; InputDragger keyboard focus
hermes-agentcustom-provider pricing guard
qmdmulti-get docid resolution
yqdelete commented empty list YAML output
graphitiFix Graphiti Docker Compose PATH interpolation
astryxChatComposerInput child onChange submit flow
strixLinux release binary GLIBC baseline
SurfSenseSurfSense #1354 separate embedding base URL
impeccableimpeccable #334 Google Fonts css2 family parsing
serverpreserve Universal Player startup restore settings
last30days-skilllast30days skillignore regression coverage follow-up
browsercharset unicode mojibake
SnapOtterRepaired copied AI virtualenv paths during Docker bootstrap and added regression coverage.

Pinned Loading

  1. persek-ospersek-osPublic

    A public map of my local, private-by-default AI operating stack.

  2. remotion-dev/remotionremotion-dev/remotionPublic

    🎥 Make videos programmatically with React

    TypeScript 57.9k 4.4k

  3. pbakaus/impeccablepbakaus/impeccablePublic

    The design language that makes your AI harness better at design.

    JavaScript 64.3k 4k

  4. DeusData/codebase-memory-mcpDeusData/codebase-memory-mcpPublic

    High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static bin…

    C 41.4k 3.4k

  5. mvanhorn/cli-printing-pressmvanhorn/cli-printing-pressPublic

    Every API has a secret identity. This finds it, absorbs every feature from every competing tool, then builds the GOAT CLI — designed for AI agents first, with SQLite sync, offline search, and compo…

    Go 4.6k 494

  6. human37/open-wisprhuman37/open-wisprPublic

    Local, private voice dictation for macOS

    Swift 191 42