AI Coding: A Spectrum of Human-AI Collaboration

2025-08-02
AI Coding: A Spectrum of Human-AI Collaboration

This article explores strategies for AI-assisted coding, describing the process as a spectrum of human-AI collaboration. From minimal AI reliance (similar to discussing problems with colleagues at another company) to maximum reliance (delegating tasks to a junior programmer), the author details different levels of interaction and stresses the importance of choosing the right strategy based on the context, balancing learning depth and efficiency.

Read more
Development code collaboration

A Comedy of Errors: My Amateur Search Library vs. Elasticsearch

2025-06-06
A Comedy of Errors: My Amateur Search Library vs. Elasticsearch

The author compares their Pandas-based full-text search library, SearchArray, against Elasticsearch using the BEIR benchmark. The results are humbling: SearchArray significantly underperforms Elasticsearch in all aspects. The article delves into the reasons, highlighting optimizations in production-ready search engines like Elasticsearch, such as the WAND algorithm and efficient inverted indices. SearchArray's lack of these optimizations leads to poor performance. The author concludes that SearchArray is suitable for prototyping on smaller datasets, but not for large-scale retrieval systems.

Read more
Development

Supercharge Search with LLMs: A Cheap and Fast Approach

2025-04-09
Supercharge Search with LLMs: A Cheap and Fast Approach

This article demonstrates building a fast and cost-effective search service using Large Language Models (LLMs). The author deploys a FastAPI application calling a lightweight LLM (Qwen2-7B), leveraging Google Kubernetes Engine (GKE) Autopilot for automated cluster management to achieve structured parsing of search queries. Docker image building and deployment, combined with a Valkey caching mechanism, significantly improve performance and scalability. This approach avoids frequent calls to expensive cloud APIs, reducing costs and showcasing the potential of running LLMs on local infrastructure, offering a new perspective on building smarter and faster search engines.

Read more
Development

Conquering Dumb LLM Search Judges with Classic ML

2025-01-24
Conquering Dumb LLM Search Judges with Classic ML

The author explores using a local LLM as a search relevance judge, a cost-effective alternative to OpenAI. Individual LLM judgments are unreliable, so the article proposes combining multiple LLMs' assessments of various product attributes (name, classification, description, etc.) using traditional machine learning (e.g., decision trees) to improve accuracy. Experiments show this approach can predict human preferences and reveal the logic behind human labels, aiding search engine optimization.

Read more
Development

Preferring Throwaway Code Over Design Docs: A More Efficient Software Development Approach

2024-12-15
Preferring Throwaway Code Over Design Docs: A More Efficient Software Development Approach

In software development, the traditional design document and incremental development model isn't always efficient. Author Doug Turnbull proposes a "coding binge" approach: quickly implement a prototype using a temporary PR, get early team feedback, refine the design, and then gradually break it down into deployable PRs. This method encourages rapid iteration, early problem detection, and considers code itself as the best documentation. While design documents still have value in specific situations, the author advocates for "showing, not telling," using code prototypes for rapid validation and iteration to achieve more efficient software development.

Read more
Development code prototype