') + ')', '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); } })(); })(); DrewRidley (Drew Ridley) · GitHub
Skip to content
View DrewRidley's full-sized avatar

Highlights

  • Pro

Block or report DrewRidley

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
drewridley/README.md

Hey, I’m Drew 👋

I’m a software engineer passionate about distributed systems, cybersecurity, and AI-driven tooling.
I specialize in Rust, JavaScript/TypeScript, Python, C#, and C++, and I’ve built everything from full-stack web apps to real-time game engines and security automation frameworks.

Currently, I’m exploring decentralized architectures and real-time multiplayer systems with my project Nevy, and building SpaceBandits, a stylized space game blending engineering, exploration, and narrative gameplay.


🧠 Interests & Focus

  • 🦀 Systems Programming & Tooling – Rust-based infra, macro-powered DSLs, and embedded tooling
  • 🔐 Cybersecurity – Automated pentesting agents, malware forensics, and EDR disruption via WASM
  • 🌍 Distributed Systems – CRDTs, edge coordination, multiplayer architecture
  • 🕹️ Game Dev – Procedural content, ECS patterns (Bevy), and GPU compute
  • 🧠 LLM Workflows – Agentic pipelines, SurrealDB orchestration, and open-ended reasoning

🧰 Technologies & Tools

RustTypeScriptPythonC++C#

SurrealDBPostgreSQLMySQLRedis

DockerKubernetesLinuxGitHub Actions

Bevy
ViteCapacitorOpenGL


🚀 Featured Projects

A Rust-powered distributed game engine with modular networking and realtime ECS syncing.

A stylized open-world space game blending engineering, survival, and rogue exploration.

SurrealGuard

A Rust ORM + LSP enhancer for SurrealDB, enabling structured multi-agent automation.


📊 GitHub Stats

Popular repositories Loading

  1. nevy nevyPublic

    Rust 10 1

  2. bronzite bronzitePublic

    🔮 Compile-time type reflection for Rust - inspect traits, fields, and methods from proc-macros

    Rust 7 1

  3. surrealguard surrealguardPublic

    Static analysis & type inference for SurrealQL — compile-time-checked queries in Rust, typed db.query in TypeScript, an LSP, and an agent-friendly CLI.

    C 6

  4. plumesplat plumesplatPublic

    triplanar mapping for bevy

    Rust 5 1

  5. zverse zversePublic

    idek

    Rust 4 1

  6. surrealix surrealixPublic

    Rust 2