Skip to content
View shirkattack's full-sized avatar

Block or report shirkattack

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

shirkattack — applied AI, NLP, local-first LLMs, 3rd Strike

TL;DR: Data scientist turned applied-AI builder. Ten-plus years of Python, a PhD's worth of stubbornness, and a long history of pointing NLP at messy real-world text: fraud, corruption, drug seizures, crypto scams, legal complaints. These days I mostly build local-first LLM tooling (prompt optimization, evals, self-hosted inference) and, for balance, a Street Fighter III engine in Python. Powered by tacos.


What I'm About

Applied AI / NLP

Retrieval, extraction, classification and evaluation pipelines that survive contact with real data. RAG, fine-tuning (LoRA / QLoRA / PEFT), DSPy prompt optimization, LLM-as-judge evals, and the MLOps glue to ship them.

Local-first LLM infrastructure

Consumer GPU + Ollama + vLLM + a single gateway + tracing. Nothing leaves the box. Every model earns its spot with a reproducible, checksummed eval bundle or it doesn't ship.

AI for investigations

Formerly a Senior Data Scientist at the UN Office on Drugs and Crime. Text analytics and entity extraction for economic crime, corruption and regulatory work.

Fighting-game engineering

Frame data, hitboxes, parries and cancels recreated in pure Python, plus a Gymnasium RL environment for Street Fighter 3rd Strike running on stock MAME. Because the lab work never ends.


Projects - Stuff I'm tinkering with

LLM tooling & evaluation

Local, private prompt optimization with DSPy + Ollama. Paste a rough prompt, get a rewrite, a score and a diff. Add a small dataset and it measures candidates on held-out examples and evolves instructions from written feedback with GEPA, showing the lineage of every edit. No API keys, nothing leaves your machine.

Python DSPy GEPA Ollama FastAPI

Does an assistant's earlier refusal make it more likely to refuse the next request? A controlled study of refusal hysteresis: 65 borderline prompts, byte-identical final turn, multiple conversation set-ups, a blind LLM judge, bootstrap CIs. Result of record reproduces offline from a fresh clone.

Python vLLM RunPod LLM-as-judge Prodigy

Retrieval-Augmented Generation from notebook experiments to a deployable FastAPI + TypeScript document-AI app on Azure OpenAI and AI Search.

LangChain LlamaIndex FastAPI Azure TypeScript

Local-first infrastructure

A local LLM workstation and on-demand server for one Ubuntu desktop with one consumer GPU. Ollama for chat, vLLM for batch, Bifrost as the single gateway, Phoenix tracing everything. Cloud fallback: never. Every claim exercised end-to-end on real hardware and written up in ADRs.

Docker Compose Ollama vLLM Bifrost Phoenix NVIDIA

Because life's too short for a boring terminal. Zsh configs, aliases, theming and the scripts I actually reach for every day.

Zsh CLI dotfiles

Fighting games, but make it engineering

From frame data to fireballs. A love letter to Street Fighter III: 3rd Strike, written in pure Python: parries, cancels, hitboxes, frame data and that sweet self-KO energy.

Python Pygame Frame data

A Gymnasium RL environment for 3rd Strike on stock MAME. Bring your own ROM.

Gymnasium MAME RL

NLP for investigations

Detecting drug seizure information in open-source news with Named Entity Recognition. Unstructured articles in, structured intelligence out.

spaCy Transformers NER

Mapping the crypto risk landscape: a spaCy text classifier that flags scam and fraud discussion on Twitter. Annotated in Prodigy with active learning, weak-labelled with Snorkel, tuned with W&B sweeps.

spaCy Prodigy Snorkel Weights & Biases

A Scrapy crawler that collects open-source news worldwide for downstream analysis. Paginates politely, slow-rolls to avoid bans, exports structured data instead of chaos.

Scrapy Redis


Tech I Actually Use

Core

LLMs, RAG & evals

Local inference & serving

NLP, annotation & scraping

Dev environment


GitHub at a Glance

GitHub at a glance: stars, public repos, pull requests, languages


Elsewhere

NVIDIA AI Podcast

Episode 218. Recorded at GTC 2024 on using data-centric AI and investigative analytics against economic crime and corruption. Blog post / SoundCloud / Apple Podcasts


Popular repositories Loading

  1. PromptCraft PromptCraft Public

    Local, private prompt optimization with DSPy and Ollama. Rewrites prompts, measures them against your own data, and evolves them from feedback with GEPA.

    Python 5 2

  2. shell_yeah shell_yeah Public

    Because life's too short for a boring terminal.

    Shell 3 1

  3. drugdetection drugdetection Public

    Detecting Drug Seizure Information in Open Source News Articles (Named Entity Recognition)

    Python 1

  4. RADRAG RADRAG Public

    Compilation of Retrieval Augmented Generation and Agent scripts

    Jupyter Notebook 1

  5. SpiderWire SpiderWire Public

    Scrapy news project for open source news articles worldwide.

    Python 1

  6. PyKuma PyKuma Public

    From frame data to fireballs — a love letter to 3rd Strike's mechanics, written in pure Python.

    Python 1