In the gold rush of Artificial Intelligence, developers often obsess over model parameters, token limits, and inference speeds. But in the Apple ecosystem, a groundbreaking AI model is only as good as the interface that houses it. If your app delivers world-changing insights but hides them behind a keyboard or makes them invisible to VoiceOver users, it isn't a "smart" app—it’s a broken one. Build
Hello Developers! 👋 Most developers today pick a side: Let’s talk about combining C++ and JavaScript—the ultimate hybrid stack for high-performance applications. 👇 1. The Core Engine (C++) ⚙️ 2. The Browser Bridge (WebAssembly) 🌉 3. The Cinematic Experience (Vanilla JS + UI/UX) ✨ The Takeaway 🎯 Keep optimizing, keep building! 💻✨ ~ Ujjwal Sharma | @stackbyujjwal About the Author 👨💻 Ujjwal
The previous two posts covered how events flow from the SDK to the UI. This post focuses on visualizing one specific type of event: tool calls. Tool invocations are the most frequent operations in an Agent application. A typical task might call tools twenty or thirty times—reading files, writing files, executing commands, searching code. If every tool call renders as the same gray block, it's hard
Post 1 covered how AgentBridge converts the SDK's AsyncStream<SDKMessage> into [AgentEvent]. This post looks at what [AgentEvent] becomes — how TimelineView renders 18 event types, handles scroll behavior, and stays smooth when the event count gets large. TimelineView is the main body of the workspace, filling all the space between the sidebar and the input box. Its view hierarchy is shallow: Time
Post 0 painted the full picture: AsyncStream<SDKMessage> → AgentBridge → EventMapper → SwiftUI. This post breaks open the two middle layers: AgentBridge and EventMapper, to see how they transform the SDK's message stream into an event list that SwiftUI can consume directly. Let's start with the conclusion: AgentBridge is the single most complex file in the entire app. It does five things at once:
Across the previous seven articles plus a bonus chapter, we thoroughly explored the inner workings of Open Agent SDK — Agent Loop, the tool system, MCP integration, multi-Agent collaboration, conversation persistence, and multi-LLM support. The bonus chapter even embedded the SDK into a macOS native app, Motive, and ran it live. But Motive was just a backend-swap experiment. The real question is:
I built a Vamana-based vector search engine in C++ called sembed-engine. Recently I made a pull request that sped up queries by 16x and builds by 9x. The algorithm stayed exactly the same. The recall stayed at 1.0. The number of visited nodes did not change. The speedup came from data layout. The original code stored vectors as separate objects pointed to by shared_ptr: struct Record { int64_t
The first time I implemented Vamana from the DiskANN paper, my approximate nearest neighbor index was slower than brute force. On tiny test fixtures, brute force took 0.27 ms per query. My Vamana implementation took 22.98 ms. That sounds absurd. ANN exists to skip work. The problem was not the algorithm. It was how I mapped the paper's abstractions to actual data structures. The DiskANN pseudocode