Articles

Here is a collection of articles I have found valuable on topics like development, design, and AI. I've saved them to reference insights, best practices, and evolving industry trends. It also reflects the kind of content that influences my work and thinking as a developer.
General
There are seven mental models - Inversion, Inertia, Second-Order Thinking, Entropy, Hanlon's Razor, Bottlenecks, and Activation Energy - that can help engineering managers make better decisions and avoid costly mistakes.
Some key dev philosophies to follow include the importance of avoiding rewrites by managing technical debt early, the last 10% of a project often takes as much effort as the first 90%, and automating good practices to enforce consistency. Devs also need to account for edge cases, simplify code when possible, and write testable, obviously correct code rather than relying on implicit correctness.
A software dev reflects on their decade in the industry, revisiting opinions they had written down in the past. For example, contrary to their past beliefs, they now believe that typed languages are essential, that simplicity is not a given, etc.
This essay provides tips on how to write, organize, and edit an effective design document. A design document is a technical report that outlines the implementation strategy for a system in the context of tradeoffs and constraints. Its goal should be to convince the reader that the design is optimal given the situation. Writing a design document adds rigor to otherwise vague intuitions - it helps the author think better.
There are two common extremes in software development: prioritizing speed over quality and prioritizing perfectionism over shipping. Both approaches lead to slowdowns, high costs, and burnout. Instead, use a "no bugs" mindset that focuses on writing clean, robust code from the outset, even if it initially seems slower.
Web Dev
A slide deck on the tradeoffs made when choosing React Query. It's pretty good.
The core principles of stateless architecture are independent requests, external state management, idempotency, decoupled components, and horizontal scalability. The advantages of it are better resilience and scalability, while the disadvantages include increased network overhead and having to deal with more complex state management.
Jakob Nielsen's ninth usability heuristic emphasizes clear, actionable error messages that help users recognize, diagnose, and recover from issues. Effective design reduces frustration, saves time, and builds trust. Good error messages use plain language, specify problems, and offer solutions, ensuring users stay informed and engaged rather than confused or frustrated.
The Temporal API is a new JavaScript feature designed to replace the existing Date object. It addresses the limitations of the Date object, such as poor time zone support and unreliable parsing, by providing immutable objects, built-in time zone handling, and support for various calendar systems.
React Scan is a tool that automatically detects and highlights performance issues in React applications. Unlike other tools, it requires minimal code changes and provides clear visual cues to pinpoint problematic components.
Design
Combining colors in graphic design involves understanding the color wheel, relationships, and meanings.
Icons must evolve to stay relevant. Obsolete designs like floppy discs, mail envelopes, and landline phones no longer resonate with modern users. Replacing these with intuitive, updated icons aligns with user expectations and technological advancements. Balancing innovation with familiarity ensures smoother transitions, helping UX designers cater to diverse audiences without sacrificing usability.
AI
Andrej Karpathy has released an educational video that dives deep into many aspects of developing language models that covers pre-training, hallucination mitigation, and post training.
Most AI companies are stuck in the experimental phase and lack proper eval tools to measure and improve model performance. The “AI MVP trap” misleads teams into thinking an impressive prototype is nearly complete, when in reality, building a good AI product requires extensive eval suites and automated testing.
There is a real anxiety among students and junior professionals regarding AI and its effects on their careers. The future will belong to people whose work cannot be easily reduced to a dataset and those who can use AI to become even better at what they do. Some jobs are currently vulnerable because we can create clear benchmarks for performance. AI will amplify the gap between high performers and the rest.
There are two distinct, largely incompatible approaches for AI-assisted programming: dialog programming, where AI aids human coding, and commanding an AI to program autonomously.
A developer initially planned a side project for an afternoon. However, it stretched into four days due to unreliable AI assistance and USB communication issues. Their reliance on AI for coding led to a buggy and unmaintainable codebase.
OpenAI has released Operator, a research preview of an AI agent that uses a browser to complete web-based tasks for users. Powered by a new model called CUA, Operator can interact with websites by typing, clicking, and scrolling, handling tasks like filling out forms or booking travel.
This developer built a small-scale AI assistant to learn about AI application development. He found that high-quality data and robust evaluation methods were more important than he first thought. Also, the training pipeline, not the model itself, represents core intellectual property.