Sign in

Thorin

@tmtabor.io
2.4K followers 737 following 206 posts

Staff Software Engineer specializing in agents, RAG and MCP applications. Nineteen years of full-stack engineering. Open source developer. Building and writing at tmtabor.io

PostsRepliesMedia
Thorin @tmtabor.io · 28/09/2026
I've updated my portfolio with my latest agentic AI, including a Python agent template, a local multi-agent content drafter via Ollama, and an LLM issue triager for GitHub. Check out what I'm building: tmtabor.io/projects #AgenticAI #Python
tmtabor.io
Projects — Thorin Tabor
Projects by Thorin Tabor — agentic AI systems, research software and open source developer tooling.
141
Thorin @tmtabor.io · 25/09/2026
I'm glad the AI world is (re)discovering non-autoregressive models. LLMs are incredibly capable, but they aren't the right fit for every problem. If a faster, more energy-efficient model can solve a specific task, that's a clear win in my book. #AgenticAI #LLMs #NLP
030
Thorin @tmtabor.io · 25/09/2026
Unlike traditional fixed-label classifiers, its label set is specified at inference time rather than training time. This structure gives it more flexibility. #LLMs #NLP #MachineLearning
111
Thorin @tmtabor.io · 25/09/2026
Jev is a new model gaining traction. It's fast and cheap, designed to classify unstructured data instead of generating text. This shift back to non-generative methods is important for certain NLP tasks. #LLMs #AgenticAI #NLP
340
Thorin @tmtabor.io · 24/09/2026
When a model struggles with a specific output structure in production, trace-derived training data, a task-native eval harness and iterative LoRA fine-tuning is a repeatable playbook. #MLOps
130
Thorin @tmtabor.io · 24/09/2026
The result: JSON errors were cut roughly in half. #Bioinformatics
110
Thorin @tmtabor.io · 24/09/2026
𝗧𝗵𝗲 𝗶𝘁𝗲𝗿𝗮𝘁𝗶𝗼𝗻 𝗽𝗿𝗼𝗰𝗲𝘀𝘀. Each run was evaluated against the baseline and previous iterations using the Module Toolkit's existing linter scripts -- already the authoritative definition of valid output. That gave a clean signal on whether changes were moving things in the right direction. #Testing
100
Thorin @tmtabor.io · 24/09/2026
𝗟𝗼𝗥𝗔 𝗳𝗼𝗿 𝗶𝘁𝗲𝗿𝗮𝘁𝗶𝗼𝗻 𝘀𝗽𝗲𝗲𝗱. LoRA rather than full fine-tuning kept iteration cycles short, which mattered given the need to continuously refine the training data. #LoRA
100
Thorin @tmtabor.io · 24/09/2026
𝗗𝗮𝘁𝗮 𝘀𝗼𝘂𝗿𝗰𝗶𝗻𝗴: 𝘁𝘄𝗼 𝘀𝘁𝗿𝗮𝘁𝗲𝗴𝗶𝗲𝘀. We extracted our first training examples directly from observability traces, where the correct input and output at each pipeline step were already visible. The rest we reverse-engineered: working backward from known-good outputs to plausible inputs. #DataEngineering
100
Thorin @tmtabor.io · 24/09/2026
We fine-tuned Qwen 3 on Intel Gaudi nodes at the San Diego Supercomputer Center for the GenePattern Module Toolkit, an agent pipeline that produces bioinformatics tool integrations for GenePattern. With 20,000 free compute hours at SDSC, fine-tuning beat switching models and raising API spend. #HPC
100
Thorin @tmtabor.io · 24/09/2026
Our agent pipeline kept producing malformed JSON. Fine-tuning fixed it. Here's what that process actually looked like. #AIEngineering
230
Thorin @tmtabor.io · 22/09/2026
For deeper vetting, the agent optionally uses an LLM to judge if an issue is truly good, not just based on a label. The output is a short digest emailed directly to you. #LLMs #RAG #AgenticAI
110
Thorin @tmtabor.io · 22/09/2026
The OSS Notifier Agent takes a list of projects you care about. On schedule, it scans for new issues and filters for tickets that are small, clearly described, unblocked, and ideally labeled as good first issues for contributors. #AgenticAI #MultiAgentSystems #AIAgents
github.com
GitHub - tmtabor/oss-notifier-agent: LLM-triaged good-first-issue digest for GitHub repos, delivered by email. Runs on GitHub Actions, no server required.
LLM-triaged good-first-issue digest for GitHub repos, delivered by email. Runs on GitHub Actions, no server required. - tmtabor/oss-notifier-agent
230
Thorin @tmtabor.io · 17/09/2026
Ultimately, Claude Code is a superior agent harness to GitHub Copilot and provides more guidance than Cursor. But if you already know what you're doing and are familiar with agentic coding, I am not convinced it beats Cursor just yet. #AgenticWorkflows
010
Thorin @tmtabor.io · 17/09/2026
The real bottleneck, at least for those on the base Claude Pro subscription, is the token quota. It feels particularly restrictive when an afternoon's coding session can burn through my entire token quota for the week—even if I understand the economics behind why those caps exist. #ClaudeCode
210
Thorin @tmtabor.io · 17/09/2026
I also appreciate the fine-grained control over the context window. Commands like /clear and /compact are a nice touch, and something that is usually a black box in most other harnesses. #LLMOps
100
Thorin @tmtabor.io · 17/09/2026
One thing that Anthropic got very right is the automatic prompt to generate a CLAUDE.md file for project context. This is a smart move that enforces some of the best practices I had already been following. #CodingAgents
claude.md
Overview - Claude Code Docs
Claude Code is an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools. Available in your terminal, IDE, desktop app, and browser.
100
Thorin @tmtabor.io · 17/09/2026
The terminal interface is pretty slick, though I still wish it were IDE-first. I'm most comfortable in PyCharm, but being able to connect via ACP is a solid bridge for those who'd prefer not to live in the terminal. #DeveloperExperience
100
Thorin @tmtabor.io · 17/09/2026
I know this is already old news to many. In AI years, two weeks is a decade. But after my look at OpenCode recently, I wanted to visit how Claude Code compares. #Anthropic
100
Thorin @tmtabor.io · 17/09/2026
Claude Code is a better agent harness than GitHub Copilot and offers better hand-holding than Cursor. But for the senior dev who knows exactly what they are doing? I am not sure it takes the crown. #AgenticWorkflows
560
Thorin @tmtabor.io · 16/09/2026
That's a good thought.
010
Thorin @tmtabor.io · 15/09/2026
With GenePattern Copilot we found that a non-augmented model initially beat our RAG assistant. The failure was naive chunking splitting Q&A pairs. The fix was preprocessing with LLM fact extraction, ensuring every vector DB row was an atomic statement. Read the blog post below. #RAG #AgenticAI
tmtabor.io
A hallucinated module, a backfiring RAG pipeline and the MCP server that fixed it — Thorin Tabor
How an eval suite exposed a RAG pipeline that hurt GenePattern Copilot more than it helped, and what finally fixed it.
370
Thorin @tmtabor.io · 14/09/2026
What has your experience been with MCP? Are you finding ways to manage these risks in production? #LLMOps
110
Thorin @tmtabor.io · 14/09/2026
MCP is great at what it does, but until the spec defines a first-class, transport-agnostic auth standard, every agentic deployment is implicitly trading security for convenience. #AIAgents
110
Thorin @tmtabor.io · 14/09/2026
This deception allows an attack to be executed using the user's own authenticated session. #DataPrivacy
110
Thorin @tmtabor.io · 14/09/2026
Perhaps most dangerous is the risk of tool description poisoning. Because an LLM relies on a server's self-description to understand a tool's function, a malicious server can misrepresent a destructive command as a benign task. #AISecurity
110
Thorin @tmtabor.io · 14/09/2026
There is no fine-grained, protocol-level way to ensure that an LLM can read data without having the authority to delete it. #APIsecurity
110
Thorin @tmtabor.io · 14/09/2026
The permissions model is similarly limited. Most current implementations are all-or-nothing: once you provide an MCP server with an API key, the server has the full permissions of that key. #ZeroTrust
120
Thorin @tmtabor.io · 14/09/2026
This lack of parity extends to delegated authority. If a server needs to access a private GitHub repo, the handshake between the MCP server and the OAuth flow is clunky. It often requires manual intervention that completely breaks the agentic flow. #DevSecOps
210
Thorin @tmtabor.io · 14/09/2026
Software engineering spent a decade moving away from hardcoded credentials, only for MCP to make them the primary way to plug a tool into an LLM. Pasting sensitive API keys into plain-text configuration files is a significant security regression. #CyberSecurity
110
Thorin @tmtabor.io · 14/09/2026
Because there is no standard for negotiating identity across these layers, the resulting security model is a house of cards built on plain-text JSON files and hardcoded secrets. #InfoSec
110
Thorin @tmtabor.io · 14/09/2026
Local connections lean on OS permissions, while remote ones bolt on OAuth and Bearer tokens, and never the two shall meet. There is no protocol-level identity that survives the handshake. #OAuth
110
Thorin @tmtabor.io · 14/09/2026
That gap exists because MCP runs across two fundamentally different transports: local stdio and remote streamable_http. It treats authentication as each transport's problem to solve separately. #AgenticAI
110
Thorin @tmtabor.io · 14/09/2026
Model Context Protocol (MCP) has no settled answer to a foundational question: Who are you, and what are you allowed to do? #MCP
430
Thorin @tmtabor.io · 12/09/2026
Nemotron 3.5 Lightning is a vivid local model. It consistently invents specific, compelling detail. In controlled throughput tests, it out-generated Gemma 4 on raw tokens/sec, and delivered twice the distinct ideas on an open-ended brainstorm. #AgenticAI #LLMs #AIAgents
Nemotron ProseMuse ProseGemma Prose
120
Thorin @tmtabor.io · 11/09/2026
My job-hunting agent sent me a daily email listing new job postings, noting where I'd be a fit and where I'd be a stretch. It saved hours otherwise spent crawling job boards, but it doesn't write applications or resumes. That must be done deliberately by you. #AgenticAI #AIAgents #LLMs​
github.com
GitHub - tmtabor/job-agent: Daily job-scanning agent: fetches postings from multiple sources, filters/scores against a candidate profile with an LLM, emails a ranked digest. Runs on GitHub Actions.
Daily job-scanning agent: fetches postings from multiple sources, filters/scores against a candidate profile with an LLM, emails a ranked digest. Runs on GitHub Actions. - tmtabor/job-agent
330
Thorin @tmtabor.io · 09/09/2026
What is the most difficult part of your work to explain to a non-technical audience? #TechCareers
110
Thorin @tmtabor.io · 09/09/2026
Distilling years of engineering into 4-year-old terms is a great exercise in first principles. Behind the most complex stacks, the goal is often as simple as helping people heal. #STEM
120
Thorin @tmtabor.io · 09/09/2026
It was a high-latency, unpredictable runtime environment. Execution was inconsistent and command divergence was a constant challenge. A good reminder that if a concept can't be explained with Legos and simple instructions, the core logic is likely too cluttered. #Programming
110
Thorin @tmtabor.io · 09/09/2026
To show how these robots follow instructions, the class became the computer. I issued a sequence of commands: "lift your arm," "step forward," "pick up a block," etc. #Coding
110
Thorin @tmtabor.io · 09/09/2026
My role is to program computers, basically helper robots, that study these blocks. The robots help understand why the blocks are funny so that doctors can figure out how to heal the boo-boos. #ComputationalBiology
110
Thorin @tmtabor.io · 09/09/2026
The demonstration was straightforward: bodies are built out of tiny building blocks called cells. Using a Lego person, I showed how these blocks are supposed to fit together, and how sometimes cells go crazy and form bad "boo-boos." #Bioinformatics
110
Thorin @tmtabor.io · 09/09/2026
Explaining my job at my son's preschool career day required stripping away every piece of jargon until only the logic remained. #SciComm
120
Thorin @tmtabor.io · 09/09/2026
You thought debugging an agentic workflow was hard? Try running a "human computer program" with twenty 4-year-olds. It turns out kids are a great test case for clear instruction tuning. #SoftwareEngineering
230
Thorin @tmtabor.io · 09/09/2026
What stuck with me? * There is no one size fits all chunking strategy. * Agents live or die by evals. * Version prompts. * Inference needs to live outside of the request-response cycle.
000
Thorin @tmtabor.io · 08/09/2026
Early on Copilot would recommend modules that didn't exist. Forum data got jumbled during chunking. Getting it all right took months of learning what the system should be: data cleaning, anchoring against ground truth, guard rails, evals. The platform is gone. The experience I keep.
030
Thorin @tmtabor.io · 08/09/2026
A year later, we ditched LangChain for #PydanticAI and integrated #MCP. At the time, that was also unusual. Today that's common. Half the people working in the agentic space have used a similar approach.​ Copilot is gone now. The funding ended and the whole platform was shuttered in June.​
120
Thorin @tmtabor.io · 08/09/2026
Two years ago I built a #RAG pipeline for GenePattern Copilot, an agentic assistant for genomics analysis. It used #LangChain and had retrieval over documentation and a decade's worth of help forum data. At the time, that was unusual.​ #AgenticAI #BuildInPublic
460
Thorin @tmtabor.io · 05/09/2026
That video absolutely captures what it's like to watch users use something you built for the first time!
110
Thorin @tmtabor.io · 05/09/2026
Nemotron 3.5 Lightning passed tool-use grounding tests cleanly. But in open-ended writing, it hallucinated resource ownership details outside the established context. Passing a tool-use test doesn't mean the model is grounded everywhere. The risk moves. #AgenticAI #LLMs #RAG
250