sethserver.com

All Posts

AI

Auto-Optimize Python Code: AI Performance Tools 2026

Updated: September 17, 2026

Python is slow, and "AI optimization" is often just a story with better branding. This post lays out a simple rule: stop guessing, measure with a profiler, let AI suggest targeted patches, then force it to prove the win with benchmarks. The best speedups are boring, local tools beat cloud vibes, and you still own correctness and judgment. If your optimizer can't show receipts, it's probably another spreadsheet in a trench coat. read on »

Startups

Vibe Coding Hangover: What Happens After the MVP Ships

Updated: September 17, 2026

You shipped a vibe-coded MVP in a weekend. Then a user pasted a cursed CSV and your app fell over. This post is a quick hangover cure: the common failure modes (no tests, leaky errors, hardcoded secrets, zero validation, AI-shaped architecture) and a simple triage plan-secure the money paths, add visibility, test the core flows, document the basics, then decide whether to patch or rewrite. read on »

Python

Python Pydantic Validation: Stop Writing Manual Checks

Updated: September 17, 2026

Manual input checks start as "just a few if statements" and end as validation logic smeared across your whole codebase. This post shows how Pydantic v2 pulls that mess into one model: typed fields, safe coercion (yes, "42" - 42), clean error messages, and custom rules with @field_validator-so your Flask routes stay thin and your data stays sane. read on »

Startups

Decoding Tech Entrepreneurship: Startup Myths vs. Realities

Updated: September 17, 2026

Startups aren't "small businesses, but faster." They run on different incentives: growth, fundraising, and exits-not stability. That's why low cash + "equity will hit" can quietly turn into unpaid risk, and why funding can mean "good story," not "good business." This post lays out the warning signs-death flailing, transparency theater, and pitch-first building-and the blunt questions to ask before you bet your time, money, and sanity. read on »

Python

Python asyncio Recipes

Updated: September 17, 2026

Asyncio gets easier once you stop trying to memorize the event loop and start using a few patterns that work. This post is a copy-paste set of the recipes I actually ship: concurrent URL fetches, timeouts, worker pools with queues, debouncing noisy events, running blocking code with `to_thread()`, and clean shutdown with signals. Each one includes the common mistake that bites people (like per-request `ClientSession`s or forgetting `task_done()`). read on »

Programming

Why I Only Use UTC and Why You Should Too

Updated: September 17, 2026

UTC in the backend is the fastest way to delete a whole class of bugs-especially the twice-a-year chaos of DST. Store timestamps as aware UTC datetimes, keep timezone names (not offsets) as user preferences, and convert only at the last display step. Your cron jobs, logs, billing, and incident timelines will stay boring, sortable, and sane. read on »

Python

Mastering Python's itertools: Efficient Data Processing and Manipulation

Updated: September 17, 2026

itertools is Python's built-in way to write cleaner loops without building huge lists first. This post shows the iterator mindset-stream values, keep pipelines moving-and the handful of tools worth memorizing: cycle/repeat, chain, product, permutations, and combinations. It ends with a practical log-processing pipeline and a few guardrails to avoid infinite-iterator pain. read on »

Startups

When Your AI Startup Isn't Actually an AI Startup

Updated: September 17, 2026

"AI startup" is a spectrum: real ML teams with real evals on one end, and "proprietary AI" that's mostly spreadsheets and humans on the other. This post lays out three buckets (genuine ML, honest API wrappers, and outright fraud), plus the technical and social tells that separate them. If you're interviewing or investing, you'll leave with specific questions that force reality to show up. read on »

Programming

AWS LightSail: The Final Piece of the Replit to Production Puzzle

Updated: September 17, 2026

Friday deploys shouldn't depend on one person, one SSH session, and a lucky sequence of commands. This post shows a boring (good) deployment loop: push a timestamp tag, let GitHub Actions build and ship a Docker image, and run it on AWS Lightsail with health checks and easy rollback. Tags become the big red button-and production stops being a fragile ritual. read on »

Startups

The 6-Month Rule: The Difference Between Startups and 'Expensive Hobbies'

Updated: September 17, 2026

If nobody pays after 6 months, you probably don't have a startup-you have an expensive hobby. This post lays out a blunt checkpoint: ship a "just enough" MVP, ask strangers to pay, and treat revenue (not vibes, press, or polite VC nods) as the only real signal. If the answer is still no, do a real pivot based on customer pull-or shut it down before you waste more time, money, and pride. -Sethers read on »

AI

Next-Level Self-Healing: Building Agents That Fix Their Own Bugs

Updated: September 17, 2026

Vibe coding is fun until the model invents a library and calls it "fact." The fix isn't more personality-it's a tight feedback loop: run real commands, capture real errors, let a Critic diagnose, patch, and retry. With a Builder/Critic split (LiteLLM makes it easy) and full run logs stored in S3, agents stop guessing and start self-correcting. read on »

Programming

Building Your First MCP Server

Updated: September 17, 2026

Stop writing five slightly-wrong S3 helpers and call it "platform." This post walks you through building a first MCP server that gives agents safe, audited, policy-based access to S3-backed unstructured data-without turning your buckets into a panic factory. We'll start with the boring (logs, auth, limits, predictable errors), sketch a tiny FastAPI endpoint, and cover the guardrails future-you will demand the moment compliance shows up. read on »

AI

Why Your Startup's 'AI Features' Keep Breaking

Updated: September 17, 2026

If your startup's AI feature "randomly" breaks in production, it's probably not random. It's prompt drift, silent model upgrades, missing evals, and a demo-to-prod gap big enough to drive a sales promise through. Here's the boring stabilization work that keeps your AI from turning into an incident generator. read on »

Python

Calling LLMs from Python: LangChain, LiteLLM, and HF Transformers

Updated: September 17, 2026

Most LLM tutorials stop at "call the API and print the output." That's demo-ready, not production-ready. In this post, we'll talk about the unglamorous stuff that keeps your app alive after real users show up: prompt templates (not string soup), retries and rate limits, streaming for better UX, caching to stop burning money, structured outputs, safe logging, and evals you can actually track. Boring? Yes. Also the difference between "cool prototype" and "doesn't page you at 2am." read on »

AI

What The Heck is Clawd... er Molty... er OpenClaw

Updated: September 17, 2026

"What the hell is this?" Direct quote from me last week when Reddit started blowing up about Clawd. I exist in the grey area of a lot of things. Really, let's discuss religion, politics, technology. I'll show you the extremes that I'm aware of, and then show you how far to each side I am for any given opinion. When it comes to bleeding edge technology I somehow find myself cautiously treading with reckless abandon. read on »

Newsletter

One email, once a week.

Notes on databases, systems, and the occasional strong opinion about Python. No spam, unsubscribe anytime.