The Pragmatic Engineer conducted a survey with nearly 3,000 tech workers to analyze the current tech landscape. The survey covered demographics, AI tools, programming languages, IDEs/terminals, version control, CI/CD, and cloud providers. It found that AI tools are rapidly gaining popularity, with GitHub Copilot leading and Cursor showing fast growth. TypeScript and Python are the most-used languages, while JIRA is the most-disliked tool.
2025.07.17·newsletter.pragmaticengineer.com·29 min read·TLDR Web Dev A "day-dreaming loop" (DDL) for LLMs might address their lack of novelty and insight. The DDL involves a background process that continuously samples concepts, explores connections, and filters for valuable ideas. This process, while computationally expensive, could kickstart more innovation and generate proprietary training data.
InstantDB provides agents with full-stack backends, including databases, sync engines, and auth tools, to make the creation of applications easier. Agents and humans benefit from built-in abstractions, cost-efficient hosting, and exposed data.
"Gaslight-driven development" is a new trend where AI language models subtly influence API design by consistently suggesting certain features or methods, leading developers to implement them even if they weren't initially planned.
After transitioning from a hands-on role to a leadership position, this person feels more and more irrelevant, grappling with the lack of visible impact and recognition despite enabling their team's success.
Scalability is the ability to adjust system throughput based on demand, and it is distinct from performance, which refers to the throughput itself.
Vibe coding makes developers slower, despite their perception of increased productivity, so devs should use AI as a tool to improve their existing skills and focus on mastering the fundamentals of programming.
JavaScript scope hoisting is an optimization used by bundlers to concatenate modules into a single scope instead of wrapping each in a function, but it breaks when combined with code splitting because it can't preserve the correct execution order of modules with side effects. This leads to different program behavior, with shared modules executing in the wrong order compared to unbundled code, affecting bundlers like Rollup, ESBuild, and others. The solution requires wrapping modules in functions to control execution order.
Go's `//go:nosplit` directive removes the usual stack overflow check from functions to improve performance. Nosplit functions skip the preemption check that normally compares the stack pointer against a limit and calls `runtime.morestack` when needed, making them about 2% faster in hot loops but potentially much faster when the goroutine struct isn't cached. However, nosplit functions are dangerous because they can cause stack overflows, so the Go linker includes safety checks to make sure chains of nosplit functions don't exceed a small stack limit (792 bytes).
A co-founder of Segment, which was acquired for $3.2B by Twilio, worked for OpenAI for a year. He liked the company's bias for action, its fast decision-making pace, its focus on practical AI safety, and its commitment to broadly distributing the benefits of AI. He played a key role in launching Codex, the coding agent, within an incredibly short timeframe.
To improve as a programmer, practice writing small, mental proofs to guarantee code correctness. Strive for code with high "proof-affinity," making it easy to reason about and verify. This gets easier with consistent practice.
Learning specific web frameworks like React may not be worth the time since they frequently change or become obsolete. Instead, focus on transferable fundamentals like vanilla JavaScript, strongly-typed languages, and understanding core specifications rather than framework-specific features like React hooks.
BNA UI is a beautiful and customizable UI component library for React Native. It has features like light/dark theme support, Expo Router integration, TypeScript support, and zero configuration setup.
Uzu is a high-performance inference engine for AI models on Apple Silicon that offers a simple API, hybrid GPU/MPSGraph architecture, unified model configurations, traceable computations, and bindings for Swift and CLI.
The `react-native-apple-llm` plugin enables React Native apps to use Apple's on-device Foundation Models for AI tasks. It has functionalities like checking model availability, configuring LLM sessions, and generating both structured JSON outputs and natural language text.
AI agents use LLMs to evaluate contexts, suggest and utilize tools to enrich those contexts, and manage flow control for tool usage. Customer support and bug triaging are good use case examples, and AI agents should be treated as software products requiring careful design, iteration, and human oversight.
"Asymmetry of verification" is where some tasks are much easier to verify than to solve, which is an important concept in improving AI. Examples include Sudoku, website operation, and BrowseComp problems, where easy verification enables AI training. The "Verifier's Law" states that AI's ability to solve a task is proportional to its verifiability.
GPUHammer demonstrates the first successful Rowhammer attack on GPU memory (GDDR6 in an NVIDIA A6000), enabling malicious users to induce bit flips, tamper with data, and degrade ML model accuracy in shared environments.
The curl bug bounty program has gotten a surge in low-quality vulnerability reports, many seemingly generated by AI, which wastes the security team's time and resources.
A misconfiguration in Cloudflare's systems caused a global outage of the 1.1.1.1 DNS Resolver service for about an hour on July 14 due to an error in managing service topologies.
This blog post explains the historical significance of ten "mostly dead" programming languages (COBOL, ALGOL, APL, BASIC, PL/I, SIMULA 67, Pascal, CLU, ML, and Smalltalk), highlighting their contributions to modern programming concepts and paradigms.
A dev tackled the 1 Billion Row Challenge in Bun/TypeScript, processing a 13.8GB file containing temperature data for weather stations in under 10 seconds. They bypassed initial memory limitations by using file descriptors with 128KB buffer chunks (optimized for kernel readahead pages) instead of loading the entire file into memory, and they used worker threads to parallelize both I/O and CPU-intensive operations across multiple cores. They also aggregated min/max/average values using hash maps while using Bun's performance advantages over traditional Node.js.
Devs should avoid using CustomEvent in JavaScript and instead subclass the native Event class. CustomEvent was only created because subclassing native classes wasn't well-supported when it was introduced, and it forces developers to deal with the awkward `detail` property to access event data. Event subclasses provide cleaner APIs, better TypeScript support, serve as documentation, and guarantee consistent event creation.
The new CSS `if()` function can be used to write inline conditional styles instead of separate media queries or style blocks. The function supports three types of queries (style, media, and supports) and uses a condition-value pair syntax like `property: if(condition-1: value-1; condition-2: value-2; else: fallback-value)`. This allows for cleaner, more maintainable code by keeping conditional logic inline with the property rather than scattered across multiple CSS blocks.
There's no single right way to build software quickly. This dev starts with a rough draft to uncover unknowns and avoid premature abstractions, then refines it based on the project's needs and acceptable level of imperfection. He softens requirements where possible, focusing on the task at hand to avoid distractions, and makes small, manageable changes.
A former Cursor power user switched entirely to Claude Code and recommends it over other AI coding tools. Some tips include running `claude --dangerously-skip-permissions` to avoid constant permission prompts and using `/clear` frequently to manage tokens effectively. Claude Code is great at handling large codebases and complex tasks, as it successfully updated an 18,000-line React component that other AI agents couldn't handle.
CallFS is a REST API filesystem that provides Linux filesystem semantics over multiple backends (local, S3, and peer networks). It has features like single-use links, distributed locking, and Prometheus monitoring.
zshy is a bundler-free build tool for TypeScript libraries designed to simplify the process of transpiling TypeScript code. It supports dual-module (ESM and CJS) builds, uses tsc for transpilation, and removes the need for bundlers or configuration files by reading directly from package.json and tsconfig.json.
The hypercapitalistic AI talent wars are fueled by massive capital investment and the race to develop frontier AI models. This environment erodes Silicon Valley's trust-based culture, necessitating new employment contracts and investment norms to protect both companies and talent. The talent war is consolidating power among a few well-funded companies, making it challenging for new entrants and requiring investors to be more flexible.
Universal applications have a single codebase that can be deployed across multiple platforms like web and mobile. Recent advancements in technologies like Solito and Expo now make truly cross-platform development a viable option. Universal apps can increase brand presence across devices while reducing operational costs by 30-40%, allowing smaller teams to manage multiple platforms more efficiently.
Google's Android Ecosystem President Sameer Samat discussed the latest developments in Android, including Android 16 and its deep integration with Gemini AI. Google is committed to making Android customizable and accessible across various devices, like the Samsung Galaxy Z Fold 7, which is launching with the newest Android version. Regarding Android XR, Google is still pursuing augmented reality glasses, learning from past mistakes like Google Glass and using AI to create a more useful and fashionable wearable experience.
aiosqlitepool is a high-performance asyncio SQLite connection pool that improves database performance by reusing connections, caching data, and maximizing throughput.
There is an ongoing effort to add a CUDA backend to the MLX framework, sponsored by Apple.
CSS media queries with `@media print` can be used to style website content for printing.
Caching involves using faster, smaller storage to hold frequently accessed data, reducing latency. This article goes over various caching concepts such as hit rate, temporal and spatial locality, geospatial considerations, and different replacement policies like FIFO and LRU. It also touches on how databases like Postgres and MySQL implement caching internally.
Elixir's hot code loading can be used to create client-specific features within a monolithic application fast. This approach involves dynamically loading and compiling client-specific LiveView apps at runtime, isolating client code during the main app's build process. By removing client-specific code during build time, it enforces dependencies and makes testing easier.
The C3 language has a Temp allocator, a region-based memory management system that simplifies memory handling. This allocator automatically resets when execution leaves its scope, preventing memory leaks without needing manual cleanup or garbage collection. By tying memory lifetimes to scopes, C3 is able to have efficient, performant memory management without the complexity of traditional methods like reference counting.
While AI is increasingly accessible, the ability to understand and effectively apply it is still uncommon. AI can generate code, but it doesn't have the human capacity to fully understand project goals, system complexities, and the deeper intention behind the code. Therefore, devs who have a strong understanding of both technical implementation and strategic purpose will be the most valuable.
Instead of repeatedly validating input throughout the system, it's better to parse untrusted input into specific, opaque data types (like `email_t` and `name_t`) at the system's boundary. This makes sure that internal functions only handle well-defined, structured data, reducing attack surfaces and preventing misuse of raw character pointers.
Tailwind CSS has drawbacks like verbose class names and a learning curve, but it is still great for teams. Its opinionated nature enforces consistency and reduces decision fatigue.
Sponsored
Run Claude Opus 4—Anthropic's most powerful model—directly in your environment, without leaving the terminal. Search million-line codebases [10]. Create new functionality. Run tests. Build faster than you ever dreamed you could build. Install NodeJS 18+ and then run
MVPBlocks is an open-source, developer-first component library built with Next.js and Tailwind CSS. It has reusable UI blocks and CLI support to help devs quickly launch MVPs with customizable and copyable code.
Kibo is a custom registry of accessible and open-source components to enhance shadcn/ui. It wraps complex logic from various headless libraries.
LangFast is a prompt playground that allows users to test, share, and save prompt templates using Jinja2 templates and variables without API abstractions. It offers instant access with no signup required and a customizable workspace.
OpenAI's planned $3 billion acquisition of AI coding startup Windsurf collapsed after Anthropic cut off Windsurf's access to its Claude models, creating an opening for Google to swoop in. Google hired Windsurf's CEO, co-founder, and key researchers for $2.4 billion through an "acquihire" deal that avoids regulatory scrutiny while still getting talent and technology licensing without taking equity in the company.
This dev discovered a bug in Google Chrome that allowed MV3 extensions to bypass the intended restrictions on `webRequestBlocking`, a feature necessary for adblockers that Google was phasing out. The bug exploited a loophole in how Chrome handled WebView IDs within the `webRequest` API, allowing extensions to spoof permissions and reinstate the blocking functionality.
A 28-question quiz on JavaScript's Date class.