You can catch domain-specific anti-patterns that ESLint
, Ruff
, or golangci-lint
miss by writing custom linter rules that parse your code into an Abstract Syntax Tree (AST), walk the tree to match specific node patterns, and report violations with auto-fix suggestions. The process is the same regardless of language: parse source into a tree, define the pattern you want to catch, walk the tree to find matches, and emit diagnostics. In JavaScript/TypeScript, this means writing an ESLint plugin with a visitor-pattern rule. In Python, you write a flake8 plugin using the ast module or a Ruff plugin in Rust. In Go, you use the go/ast and go/analysis packages.
Custom Linter Rules: JavaScript, Python, Go ASTs
Promptfoo: Catch LLM Regressions Before Production
Promptfoo
is an open-source CLI tool that runs your test cases against one or more LLM providers
at once. You write a YAML file with prompts, test cases, and checks, then run promptfoo eval to get a report with pass/fail rates, regressions, and side-by-side comparisons. It scores results three ways: simple text checks, LLM-as-judge grading, or your own scoring code. The point is to catch prompt regressions, broken model upgrades, and quality drops before users see them.
Python Markdown Blog: 100 Lines of Code
You can build a working static site generator in about 100 lines of Python. The result reads Markdown files from a content directory, parses their YAML front matter, converts the Markdown to HTML, wraps everything in Jinja2 templates, and writes the output to a public/ folder ready to be served by any web server. It is the same fundamental pipeline that powers tools like Hugo
, Jekyll
, and Eleventy
- just stripped down to the essentials so you can see exactly how the pieces fit together.
RAG vs. Long Context: Choosing the Best Approach for Your LLM
RAG and long context windows are not competing replacements. They are different tools built for different problems. If you are trying to choose between them, the short answer is: it depends on the size and nature of your data, your latency and cost constraints, and how much infrastructure complexity you are willing to maintain. The longer answer involves understanding what each approach actually does, where each one breaks down, and what teams running production LLM systems are doing in 2026 - which is usually some combination of both.
Veepeak vs OBDLink: BLE OBD-II for Home Assistant
You can stream live vehicle diagnostics and GPS location to Home Assistant by pairing a Bluetooth Low Energy OBD-II adapter with an ESPHome -based BLE proxy or a dedicated Android device running Torque Pro . This setup feeds real-time fuel economy, engine codes, coolant temperature, and GPS coordinates into Home Assistant entities, enabling geo-fenced automations like opening your garage door on arrival or logging trip fuel costs - all without any cloud dependency.
WCAG 2.2 Web Forms: Error Handling, Validation, ARIA
Accessible web forms start with semantic HTML and use ARIA only to fill gaps native elements can’t reach. Use aria-live for error announcements and aria-describedby to link messages to fields. Following WCAG
2.2 AA ensures every user can perceive, navigate, and complete your forms using only a keyboard.
Most form accessibility failures are not caused by missing ARIA. They come from developers skipping basic HTML semantics like labels and fieldsets. Patching this damage with ARIA often makes things worse. The W3C’s first rule is simple: no ARIA is better than bad ARIA. Misapplied roles or redundant labels create noise instead of clarity.





