<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>observedby</title><description>More than a decade building software used by millions. Shipping with AI since before it was obvious. Currently building pinned.social.</description><link>https://observedby.com</link><language>en-us</language><item><title>The Workflows I Actually Ship With</title><link>https://observedby.com/observations/ai-dev-workflows</link><guid isPermaLink="true">https://observedby.com/observations/ai-dev-workflows</guid><description>While everyone&apos;s talking about AI replacing developers, I&apos;ve spent a year discovering how it&apos;s actually augmenting our capabilities in practical, everyday ways.</description><pubDate>Sun, 27 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I know, you don’t stop seeing tweets, posts, and videos about how AI is changing everything. Some are cataclysmic, predicting our replacement by the next shiny model, while others, more realistically, share what’s new and how you can leverage it.&lt;/p&gt;
&lt;p&gt;But after all the noise, it can feel too abstract, especially if you aren’t actively trying out AI in your day-to-day coding. It’s easy to dismiss the hype when you’re focused on shipping features and fixing bugs.&lt;/p&gt;
&lt;h2 id=&quot;the-reality-gap-between-ai-hype-and-developer-experience&quot;&gt;The Reality Gap Between AI Hype and Developer Experience&lt;/h2&gt;
&lt;p&gt;Let’s be honest, if you haven’t actively experimented with AI coding tools in your daily workflow, the endless stream of tweets and LinkedIn posts probably feels disconnected from your reality. The gap between “AI will replace all developers by next Tuesday” and “I just need to fix this bug before standup” is massive.&lt;/p&gt;
&lt;p&gt;I’m deeply immersed in the world of AI, constantly experimenting with different tools and approaches. Even so, I find it challenging to convey to friends and colleagues who haven’t taken the plunge just how profoundly AI is &lt;em&gt;already&lt;/em&gt; changing our work lives in practical ways. They see the demos and the sales pitches, but those perfect scenarios rarely reflect the messy reality of professional development. That disconnect is precisely why I decided to write this post and document my journey, not the highlight reel of perfect interactions, but the evolving, sometimes frustrating, ultimately transformative process of integrating AI into real-world development work.&lt;/p&gt;
&lt;h2 id=&quot;the-evolution-of-an-ai-augmented-workflow&quot;&gt;The Evolution of an AI-Augmented Workflow&lt;/h2&gt;
&lt;p&gt;My journey with AI in coding began about a year ago. I took on a complex project I was obsessed with, which became my testing ground. You can read the story about the project and its early learnings &lt;a href=&quot;https://observedby.com/observations/tmcbae-learnings&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, let’s get to the goodies: how did I start using AI, and how has that evolved over the past year?&lt;/p&gt;
&lt;h3 id=&quot;from-quick-wins-to-full-partnership&quot;&gt;From Quick Wins to Full Partnership&lt;/h3&gt;
&lt;p&gt;Initially, my use cases were very specific. I focused on implementing simple UI components or trying to one-shot small, self-contained features. For instance, I implemented a &lt;a href=&quot;https://x.com/filipealva/status/1829962035271974978&quot;&gt;fully functional small paywall blocking my app’s features for unsubscribed users in about a minute&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sure, it wasn’t the most complex piece of code. Building it manually, however, would likely have taken me around 30 minutes involving fiddling with state, styling, and logic. Seeing it come together so quickly made it clear this was already a game changer, freeing up valuable time and mental energy for more complex challenges.&lt;/p&gt;
&lt;p&gt;Over months, my usage patterns evolved significantly. What started as targeted assistance with isolated components gradually transformed into a comprehensive development partnership.&lt;/p&gt;
&lt;h3 id=&quot;building-postr-prompting-an-app-into-existence&quot;&gt;Building Postr: Prompting an App into Existence&lt;/h3&gt;
&lt;p&gt;At this point, I had spent months developing a complex app, using AI primarily for minor yet relevant tasks. That’s when I decided to shift gears and implement a more straightforward app, one that would not only deliver value using AI but also be almost entirely prompted into existence.&lt;/p&gt;
&lt;p&gt;This app is &lt;a href=&quot;https://apps.apple.com/us/app/postr-ai-post-generator/id6737490461&quot;&gt;Postr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The idea behind Postr was simple: empower people outside the AI bubble to train AI Assistants capable of writing social media posts in any desired style. Users could upload screenshots of posts they admire, and the AI would learn the nuances to replicate that style.&lt;/p&gt;
&lt;p&gt;The development process for Postr looked like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI Assistant:&lt;/strong&gt; Cursor with the Claude Sonnet 3.5 model. In my experience, it outperforms OpenAI models, especially for native iOS codebases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context:&lt;/strong&gt; Indexing relevant documentation web pages directly into Cursor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guidance:&lt;/strong&gt; Using a great set of native iOS Cursor rules from &lt;a href=&quot;https://x.com/Shpigford&quot;&gt;Josh Pigford&lt;/a&gt; found &lt;a href=&quot;https://cursor.directory/swiftui-swift-cursor-rules&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design Input:&lt;/strong&gt; Screenshots of Figma designs my friend &lt;a href=&quot;https://x.com/brunosquadros&quot;&gt;Bruno&lt;/a&gt; had created for another project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After about two months of prompting in my spare time, I had a remarkably polished version of the app ready. Virtually everything, from the core features to the RevenueCat integration, subscription state management, and paywalls, was implemented through prompting.&lt;/p&gt;
&lt;p&gt;The MVP launch went surprisingly well. I gained 100 users in the first month, and even after 3 months (despite me abandoning further development), 24 recurring users remained. I decided to halt work on Postr because conversations with those initial users revealed a need for a pivot to truly unlock paid conversion. I’m currently working on that pivot, and you’ll hear more about it soon. However, the specific outcomes aren’t the main focus here.&lt;/p&gt;
&lt;h3 id=&quot;beyond-code-ai-as-a-lifeline-in-hectic-times&quot;&gt;Beyond Code: AI as a Lifeline in Hectic Times&lt;/h3&gt;
&lt;p&gt;The crucial point is the context surrounding the Postr launch. I had just moved to a new country, was leading significant projects at my day job, and my father was undergoing surgery. Life was hectic.&lt;/p&gt;
&lt;p&gt;What I’m trying to emphasize is that without AI-assisted coding, Postr simply wouldn’t exist. It would have been another exciting idea I tinkered with, maybe integrated a few APIs for, and then inevitably relegated to the side project graveyard. I know many of you can relate to that feeling!&lt;/p&gt;
&lt;p&gt;So, let’s recap the evidence presented so far. AI enabled me to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Save significant time by having components fully implemented in a single shot.&lt;/li&gt;
&lt;li&gt;Code an entire, real-world user-facing application in just two months, dedicating only a few hours each week.&lt;/li&gt;
&lt;li&gt;Implement, polish, and even create design assets, making my apps look presentable with a fraction of the typical design effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still think this is all just hype? Hold my beer.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://observedby.com/images/blog/hold-my-beer.gif&quot; alt=&quot;Hold my beer GIF&quot;/&gt;&lt;/p&gt;
&lt;h3 id=&quot;tackling-new-frontiers-ai-for-multiplatform-development&quot;&gt;Tackling New Frontiers: AI for Multiplatform Development&lt;/h3&gt;
&lt;p&gt;I have more examples. Shortly after launching Postr and gathering user feedback, I began working on a new project to address the insights I’d gained. This new project came with expanded requirements, the most critical being native multiplatform support (iOS and macOS).&lt;/p&gt;
&lt;p&gt;Here’s the challenge: despite years of iOS development, I had never shipped a macOS app. Bootstrapping a project to support macOS natively, especially using SwiftUI from the ground up (my usual approach involved UIKit with embedded SwiftUI), felt daunting. While not overly complex, setting up authentication, a local database, API communication, and a basic, structured home screen for both platforms represented a substantial amount of tedious work.&lt;/p&gt;
&lt;p&gt;Normally, this bootstrap phase would take considerable time. Using AI, I accomplished it in a single day.&lt;/p&gt;
&lt;p&gt;My technique involved creating a folder named &lt;code&gt;LLMReferences&lt;/code&gt; within the project. I filled this folder with relevant code snippets: examples from my previous projects, code from GitHub repositories I admired for their multiplatform handling, and even source code from dependencies (since Swift Package Manager dependencies aren’t directly indexable by Cursor within the project directory).&lt;/p&gt;
&lt;p&gt;Below is one of the prompts I used to get the multiplatform structure working:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://observedby.com/images/blog/ios-reference-to-mac-prompt.jpg&quot; alt=&quot;Prompt example for bootstrapping multiplatform app&quot;/&gt;&lt;/p&gt;
&lt;p&gt;And here’s a visual comparison: the original &lt;code&gt;ComposerScreen.swift&lt;/code&gt; from an iOS reference versus the basic &lt;code&gt;HomeView.swift&lt;/code&gt; generated for the macOS target after the prompt:&lt;/p&gt;
&lt;div class=&quot;carousel-wrap&quot; data-astro-cid-wfe7xcno&gt; &lt;div class=&quot;carousel&quot; tabindex=&quot;0&quot; data-astro-cid-wfe7xcno&gt; &lt;figure class=&quot;slide&quot; data-astro-cid-wfe7xcno&gt; &lt;img src=&quot;https://observedby.com/images/blog/ios-implementation.jpg&quot; alt=&quot;iOS Implementation Example&quot; loading=&quot;lazy&quot; data-astro-cid-wfe7xcno&gt; &lt;figcaption class=&quot;meta&quot; data-astro-cid-wfe7xcno&gt;iOS Implementation Example&lt;/figcaption&gt; &lt;/figure&gt;&lt;figure class=&quot;slide&quot; data-astro-cid-wfe7xcno&gt; &lt;img src=&quot;https://observedby.com/images/blog/mac-os-implementation.jpg&quot; alt=&quot;macOS Implementation Example&quot; loading=&quot;lazy&quot; data-astro-cid-wfe7xcno&gt; &lt;figcaption class=&quot;meta&quot; data-astro-cid-wfe7xcno&gt;macOS Implementation Example&lt;/figcaption&gt; &lt;/figure&gt; &lt;/div&gt; &lt;div class=&quot;hint meta&quot; aria-hidden=&quot;true&quot; data-astro-cid-wfe7xcno&gt;←&amp;nbsp;&amp;nbsp;DRAG&amp;nbsp;&amp;nbsp;→&lt;/div&gt; &lt;/div&gt; 
&lt;p&gt;Again, the result isn’t groundbreakingly complex or visually stunning. Yet, within a couple of hours, I had a functional, native multiplatform app bootstrapped according to my preferred best practices, looking decent enough to start iterating on the core features.&lt;/p&gt;
&lt;h2 id=&quot;specialists-vs-generalists-where-does-ai-fit-in&quot;&gt;Specialists vs. Generalists: Where Does AI Fit In?&lt;/h2&gt;
&lt;p&gt;There’s a long-standing, sometimes heated discussion in the software development community: should you laser-focus on becoming a deep specialist or cultivate a broader skillset as a generalist? I’ve seen passionate arguments on both sides throughout my career. Honestly, I never strongly picked a side, my philosophy has always been that if you work hard and deliver value, there’s a place for you.&lt;/p&gt;
&lt;p&gt;However, I always leaned towards the specialist path. An old friend, also an iOS developer, used to say there are so many APIs within the iOS SDK alone that we probably couldn’t master it all even after ten dedicated years, especially since it’s constantly evolving. That line of thought resonated with me. I felt I could provide more value to clients and employers by deeply specializing, and that’s the path I took.&lt;/p&gt;
&lt;p&gt;It worked incredibly well, and I’m proud of where that dedication led me. But after about ten years, a subtle feeling started creeping in, a kind of professional FOMO. “What if I had learned more about backend development or modern frontend web technologies?” So much exciting innovation was happening elsewhere, and I felt like I might be missing out.&lt;/p&gt;
&lt;h3 id=&quot;exploring-the-unknown&quot;&gt;Exploring the Unknown&lt;/h3&gt;
&lt;p&gt;Well, that FOMO largely evaporated with the rise of AI-assisted coding. Recently, I decided to tackle my first significant web project in a very long time: the very website you might be reading this on right now (&lt;a href=&quot;https://www.doubleslitapps.com/&quot;&gt;https://www.doubleslitapps.com/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It’s a static Next.js site using MDX for the blog. Could I have built this before AI tools became prevalent? Technically, yes. I’d even considered it many times. But I knew achieving the level of polish it has now would have taken far longer than the few focused hours AI assistance allowed. That knowledge was a barrier, I simply hadn’t done it before because the time investment seemed too high compared to the potential return.&lt;/p&gt;
&lt;p&gt;My time outside of my day job is limited, just like yours probably is. I have to be deliberate about what I choose to learn or experiment with. Building a static blog website, while useful, wouldn’t typically have topped my priority list unless I could create something high-quality very quickly. And &lt;em&gt;that&lt;/em&gt; is one of the biggest powers of AI: it lowers the activation energy, enabling you to actually &lt;em&gt;do&lt;/em&gt; the things you previously only thought about.&lt;/p&gt;
&lt;h3 id=&quot;knowledge-momentum-keeper&quot;&gt;Knowledge Momentum Keeper&lt;/h3&gt;
&lt;p&gt;AI isn’t just an enabler, it’s also a fantastic momentum partner. The feeling is surprisingly similar to having a co-founder when I was running a startup. You see the value accumulating with each step, which motivates you to push further.&lt;/p&gt;
&lt;p&gt;After shipping this Next.js site, I thought: why not offload the potentially long-running AI calls in my native app to a simple backend? It shouldn’t be too complicated, right?&lt;/p&gt;
&lt;p&gt;And indeed, it wasn’t. Over the next weekend, I managed to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Design and implement a secure file upload system using a private Cloudflare R2 bucket.&lt;/li&gt;
&lt;li&gt;Set up a workflow involving a queue of workers that could: validate a user’s Firebase authentication token, upload the file to the private R2 bucket, generate a signed URL for temporary access, store the relevant information in a Firestore document, and finally trigger an AI worker for post-processing tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keep in mind, I had practically zero backend implementation experience before this. Accomplishing this in less than 8 hours of focused work felt genuinely impressive to me. Now, my macOS app doesn’t force the user to wait for this entire process, it uploads the file quickly, and the status updates happen asynchronously in the background. And importantly, I had a lot of fun taking those first steps into backend development.&lt;/p&gt;
&lt;p&gt;So, let’s quickly recap how AI has been helping me so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rapid Component Implementation:&lt;/strong&gt; Building functional UI elements like paywalls in minutes, not hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Application Development:&lt;/strong&gt; Creating entire, user-facing applications like Postr in spare time over a couple of months, despite personal life challenges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bridging Skill Gaps:&lt;/strong&gt; Bootstrapping projects in unfamiliar domains, like native macOS development, within a day by leveraging existing code and AI guidance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lowering Activation Energy:&lt;/strong&gt; Making it feasible to tackle projects (like this website) that previously seemed too time-consuming for the available time outside work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerated Learning &amp;amp; Implementation:&lt;/strong&gt; Enabling rapid development of new systems, like the backend file processing workflow, even without prior experience in that specific area.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintaining Momentum:&lt;/strong&gt; Providing the quick wins and tangible progress needed to stay motivated and see projects through to completion, similar to the boost from a co-founder.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-if-i-dont-code-on-weekends&quot;&gt;What if I Don’t Code on Weekends?&lt;/h2&gt;
&lt;p&gt;Okay, maybe coding during evenings or weekends isn’t your thing, and that’s perfectly fine. The good news is that AI-assisted coding isn’t just for side projects or learning new stacks. There are plenty of opportunities to leverage these tools effectively within your regular day job.&lt;/p&gt;
&lt;p&gt;Here are some ways I’ve personally used AI assistance in a professional setting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drafting Documentation and RFCs:&lt;/strong&gt; Finally get that RFC written that you’ve been putting off. AI can help structure your thoughts, write clearly, and even generate pseudocode examples to back up your proposal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boosting Test Coverage:&lt;/strong&gt; Writing unit tests, integration tests, or end-to-end tests can be time-consuming. AI can significantly speed up the process of generating test cases and boilerplate code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rapid Prototyping (POCs):&lt;/strong&gt; Product teams often have ideas they’d love to see prototyped, but developer bandwidth is limited. AI can make building a functional Proof of Concept feasible in a much shorter timeframe, allowing for quicker validation or iteration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerating Feature Work:&lt;/strong&gt; Yes, you can absolutely use AI for core feature development in complex, existing codebases. Before dismissing it as impossible for &lt;em&gt;your&lt;/em&gt; project, consider the tools available. With well-defined project-specific rules (&lt;code&gt;.cursorrules&lt;/code&gt;), agentic workflows, integration tools like Model Context Protocol (MCP) connectors (e.g., for Figma designs), and powerful models (like Gemini 2.5 Pro MAX), you might be surprised at the productivity gains and even the quality of the output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Start small, with self-contained components and grow steadily, you’ll see the sky is the limit.&lt;/p&gt;
&lt;p&gt;Of course, there’s a learning curve involved in effectively using these tools. However, many companies are starting to recognize the potential efficiency gains and are willing to support their developers in learning. If your organization isn’t yet aware of these possibilities, perhaps sharing this post could help them see past the hype and understand the practical benefits.&lt;/p&gt;
&lt;h2 id=&quot;bonus-shoot-your-shot-at-marketing&quot;&gt;Bonus: Shoot Your Shot at Marketing&lt;/h2&gt;
&lt;p&gt;As you get more comfortable integrating AI into your development workflow, you might find it unlocks capabilities in adjacent areas too. Take the header image for this very blog post, for instance. I didn’t need to spend time searching for the right stock photo. I created it using OpenAI’s image generation model with just a few prompts.&lt;/p&gt;
&lt;p&gt;I started by using a thumbnail from a YouTube video by my good friend &lt;a href=&quot;https://www.youtube.com/@LucasMontano&quot;&gt;Lucas Montano&lt;/a&gt; as a reference point and iterated from there. Here’s a glimpse of the process:&lt;/p&gt;
&lt;div class=&quot;carousel-wrap&quot; data-astro-cid-wfe7xcno&gt; &lt;div class=&quot;carousel&quot; tabindex=&quot;0&quot; data-astro-cid-wfe7xcno&gt; &lt;figure class=&quot;slide&quot; data-astro-cid-wfe7xcno&gt; &lt;img src=&quot;https://observedby.com/images/blog/image-gen-1.jpg&quot; alt=&quot;Initial AI image generation based on reference&quot; loading=&quot;lazy&quot; data-astro-cid-wfe7xcno&gt; &lt;figcaption class=&quot;meta&quot; data-astro-cid-wfe7xcno&gt;Initial AI image generation based on reference&lt;/figcaption&gt; &lt;/figure&gt;&lt;figure class=&quot;slide&quot; data-astro-cid-wfe7xcno&gt; &lt;img src=&quot;https://observedby.com/images/blog/image-gen-2.jpg&quot; alt=&quot;Second iteration of AI image generation&quot; loading=&quot;lazy&quot; data-astro-cid-wfe7xcno&gt; &lt;figcaption class=&quot;meta&quot; data-astro-cid-wfe7xcno&gt;Second iteration of AI image generation&lt;/figcaption&gt; &lt;/figure&gt;&lt;figure class=&quot;slide&quot; data-astro-cid-wfe7xcno&gt; &lt;img src=&quot;https://observedby.com/images/blog/image-gen-3.jpg&quot; alt=&quot;Final header image generated by AI&quot; loading=&quot;lazy&quot; data-astro-cid-wfe7xcno&gt; &lt;figcaption class=&quot;meta&quot; data-astro-cid-wfe7xcno&gt;Final header image generated by AI&lt;/figcaption&gt; &lt;/figure&gt; &lt;/div&gt; &lt;div class=&quot;hint meta&quot; aria-hidden=&quot;true&quot; data-astro-cid-wfe7xcno&gt;←&amp;nbsp;&amp;nbsp;DRAG&amp;nbsp;&amp;nbsp;→&lt;/div&gt; &lt;/div&gt; 
&lt;p&gt;This is just one example, but it highlights how AI can augment skills beyond pure coding, potentially helping with design, marketing assets, and more.&lt;/p&gt;
&lt;p&gt;So, what are your experiences? Are you using AI in your daily development? What surprising benefits or challenges have you encountered? I’d love to hear your thoughts and continue the conversation. Find me on Twitter &lt;a href=&quot;https://x.com/filipealva&quot;&gt;@filipealva&lt;/a&gt; and let’s discuss!&lt;/p&gt;</content:encoded><category>AI</category><category>Development</category><category>Productivity</category><category>Coding</category></item><item><title>MCP: Function Calling on Asteroids</title><link>https://observedby.com/observations/mcp-revolution</link><guid isPermaLink="true">https://observedby.com/observations/mcp-revolution</guid><description>The Model Context Protocol is unlocking new possibilities for AI applications by standardizing how LLMs interact with external systems - and it&apos;s changing everything.</description><pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I’ve spent the last month deep-diving into Model Context Protocol (MCP) so you don’t have to. Between wading through GitHub repos, testing implementations, and reading every piece of documentation I could find, I’ve developed strong opinions on whether this is worth your time.&lt;/p&gt;
&lt;p&gt;The AI landscape keeps evolving at a maddening pace. Yesterday it was a plain conversational interface, today it’s function calling and agents, tomorrow who knows? The result: developers constantly rebuilding the same core functionality just to handle the latest AI feature.&lt;/p&gt;
&lt;p&gt;MCP cuts through this chaos with a refreshingly pragmatic approach. It’s not introducing yet another AI capability, it’s standardizing how all AI capabilities connect to the real world. Think of it as function calling on asteroids.&lt;/p&gt;
&lt;h2 id=&quot;why-mcp-actually-matters&quot;&gt;Why MCP Actually Matters&lt;/h2&gt;
&lt;p&gt;The whole point of MCP is solving the fragmentation problem. It’s not trying to replace function calling or agents or any other extension approach. It’s creating a universal standard that can accommodate all of them.&lt;/p&gt;
&lt;p&gt;Think about it like this: before USB, connecting things to computers was chaos. Every device needed its own proprietary connector, and nothing worked with anything else. The MCP developers themselves often use this exact USB-C analogy when describing their vision. They’re quite literally doing for AI what USB did for hardware, creating a standard interface that just works across the entire ecosystem.&lt;/p&gt;
&lt;p&gt;When an LLM needs real-time information or specialized capabilities, MCP creates a consistent way to request and receive that data through a client-server architecture. The model doesn’t need to know the specifics of how each capability works under the hood. It just needs to follow the protocol.&lt;/p&gt;
&lt;p&gt;What’s amazing is how simple yet powerful this approach is. The LLM gets continuously updated context and maintains a persistent connection with real-world capabilities, but without the usual headache of completely different implementation approaches for each vendor.&lt;/p&gt;
&lt;h2 id=&quot;will-models-get-better-at-using-mcp&quot;&gt;Will Models Get Better at Using MCP?&lt;/h2&gt;
&lt;p&gt;Current LLMs are already getting fine-tuned for function calling. Claude, GPT-4, and others are increasingly good at it. But there’s a strong case that models will get even better at MCP specifically.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gautam75.medium.com/fine-tuning-llama-3-1-8b-for-function-calling-using-lora-159b9ee66060&quot;&gt;This excellent work on fine-tuning Llama 3.1&lt;/a&gt; shows how even smaller models can be optimized for structured function calling. The same techniques could make models significantly better at MCP interactions, especially since MCP has such a well-defined interface.&lt;/p&gt;
&lt;p&gt;If you’re curious which current models might work best with MCP, check out the &lt;a href=&quot;https://gorilla.cs.berkeley.edu/leaderboard.html&quot;&gt;Gorilla function calling leaderboard&lt;/a&gt;. These rankings give a decent proxy for which models will likely excel at MCP. This is because MCP essentially builds upon and standardizes function calling, models that already understand how to properly invoke functions are well-positioned to leverage MCP’s capabilities. The key difference is that while function calling is typically static, MCP provides LLMs with up-to-date context about available tools and their capabilities in real-time thanks to the 1:1 connection between the MCP client and the MCP server. This dynamic context window allows models to make more informed decisions about which tools to use and how to use them effectively, eliminating the need to hardcode function schemas directly into model weights.&lt;/p&gt;
&lt;h2 id=&quot;surprisingly-broad-industry-support&quot;&gt;Surprisingly Broad Industry Support&lt;/h2&gt;
&lt;p&gt;I was skeptical when I first heard Anthropic created MCP. The last thing we need is another proprietary standard from a single AI company. But the adoption has been genuinely surprising.&lt;/p&gt;
&lt;p&gt;OpenAI, Anthropic’s main competitor, recently added &lt;a href=&quot;https://openai.github.io/openai-agents-python/mcp/&quot;&gt;MCP support to their Python SDK&lt;/a&gt;. When direct competitors start adopting each other’s standards, something interesting is happening.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zapier.com/mcp&quot;&gt;Zapier’s aggressive move into MCP&lt;/a&gt; is another strong signal. They’re positioning MCP as the gateway between AI and their thousands of app integrations. For anyone curious about what’s possible, the &lt;a href=&quot;https://github.com/punkpeye/awesome-mcp-servers&quot;&gt;Awesome MCP Servers repository&lt;/a&gt; has become the go-to resource.&lt;/p&gt;
&lt;h2 id=&quot;mcp-invades-the-apple-ecosystem&quot;&gt;MCP Invades the Apple Ecosystem&lt;/h2&gt;
&lt;p&gt;The Apple ecosystem is notoriously insular, so seeing rapid MCP adoption there is particularly telling. There are already several fascinating implementations:&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/joshuayoes/ios-simulator-mcp&quot;&gt;iOS Simulator MCP&lt;/a&gt; transforms iOS testing by turning LLMs into automated QA agents. Instead of manually validating each UI element post-development, developers can prompt the AI to “verify all accessibility elements,” “enter text and confirm inputs,” or “validate swipe actions”. All without writing a single test script. It can even take screenshots and record interaction videos as documentation. Imagine how much time can be saved by letting the AI run through standard validation flows immediately after implementing features, catching subtle UI inconsistencies that would have otherwise shipped to production, or just caught by manual testing.&lt;/p&gt;
&lt;p&gt;For those of us constantly switching between Xcode and Cursor, the &lt;a href=&quot;https://github.com/cameroncooke/XcodeBuildMCP&quot;&gt;XcodeBuild MCP&lt;/a&gt; is a huge time-saver. Building and running iOS apps directly from Cursor without constantly hopping back to Xcode while an AI deals with the complexity for us feels like the future.&lt;/p&gt;
&lt;p&gt;For teams using &lt;a href=&quot;https://tuist.io&quot;&gt;Tuist&lt;/a&gt;, they’ve &lt;a href=&quot;https://github.com/tuist/tuist/pull/7366&quot;&gt;just added MCP support&lt;/a&gt; too. Their implementation exposes project dependency graphs and configuration details, letting you ask questions about architecture or get help troubleshooting build issues directly from your AI assistant. Check out their &lt;a href=&quot;https://docs.tuist.dev/en/guides/ai/mcp&quot;&gt;docs&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/modelcontextprotocol/swift-sdk&quot;&gt;MCP’s Swift SDK&lt;/a&gt; is the official Swift implementation of the Model Context Protocol, enabling developers to create custom MCP clients and servers natively in the Apple ecosystem. Supporting everything from iOS to macOS and even visionOS, it provides a comprehensive API for working with tools, resources, and prompts within the MCP specification. What’s particularly impressive is how it leverages Swift’s strong type system and async/await pattern to make MCP interactions feel natural to Swift developers.&lt;/p&gt;
&lt;p&gt;Powered by the Swift SDK, &lt;a href=&quot;https://github.com/loopwork-ai/iMCP&quot;&gt;iMCP&lt;/a&gt; is a macOS Productivity Suite MCP created by the same developers behind the Swift SDK. It enables AI systems to interact with core macOS applications through a unified protocol. With its ability to access contacts, calendar, and weather data, users can issue complex multi-system requests like “schedule lunch with Dave next Friday if it’s not raining” - and iMCP will handle checking weather forecasts and creating calendar entries across multiple applications without requiring any additional coding or API access setup.&lt;/p&gt;
&lt;p&gt;What really caught my attention was seeing Mattt, the iOS community’s &lt;a href=&quot;https://nshipster.com/&quot;&gt;favorite hipster&lt;/a&gt;, putting his weight behind both iMCP and the Swift SDK. When someone who’s shaped so much of the Apple development ecosystem jumps on board this early, it feels like a strong sign we’re onto something genuinely valuable here, not just another AI hype.&lt;/p&gt;
&lt;p&gt;In fact, you should read Mattt’s &lt;a href=&quot;https://nshipster.com/model-context-protocol/&quot;&gt;article on MCP&lt;/a&gt; as he goes much deeper than I can here, offering the kind of technical insight that only comes from someone who’s not just exploring it but actively building useful MCP servers and the Swift infrastructure so more people can do the same.&lt;/p&gt;
&lt;h2 id=&quot;so-what-now&quot;&gt;So What Now?&lt;/h2&gt;
&lt;p&gt;MCP feels different from the usual AI hype cycle. It’s solving a real problem developers face daily: how to extend LLMs with real-world capabilities in a consistent way.&lt;/p&gt;
&lt;p&gt;The broad adoption across competitors, the rapid integration into specialized ecosystems like Apple’s, and the focus on standardization rather than reinvention all point to MCP having serious staying power.&lt;/p&gt;
&lt;p&gt;I’m curious, what would you build with MCP? Do you think this will become the definitive standard for AI extensions, or will we see competing approaches? Drop your thoughts on Twitter &lt;a href=&quot;https://twitter.com/filipealva&quot;&gt;@filipealva&lt;/a&gt; and let me know if you’re as cautiously optimistic as I am.&lt;/p&gt;
&lt;p&gt;With MCP, I’m finally seeing AI solidly moving into an agentic approach that can seamlessly integrate with the tools and applications we already use every day. This isn’t just about making AI smarter, it’s about making our existing software more powerful by giving AI models a standardized way to work with them. And this is just getting started.&lt;/p&gt;</content:encoded><category>AI</category><category>LLMs</category><category>Model Context Protocol</category><category>Development</category></item><item><title>When Great Ideas Make No Money</title><link>https://observedby.com/observations/tmcbae-learnings</link><guid isPermaLink="true">https://observedby.com/observations/tmcbae-learnings</guid><description>A cautionary tale of how I built an entire app to fight useless meetings, broke every indie dev rule, and what I learned in the process.</description><pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Remember that late-night coding session when you couldn’t stop because an idea had completely consumed you? The room grows dark, coffee grows cold, but your fingers keep dancing across the keyboard because something inside you knows this idea &lt;em&gt;needs&lt;/em&gt; to exist in the world. Logic and business sense be damned: you’re building this thing.&lt;/p&gt;
&lt;p&gt;I lived in that state for months while creating &lt;a href=&quot;https://tmcbae.com/&quot;&gt;TMCBAE (This Meeting Could Be An Email)&lt;/a&gt;, and the journey taught me lessons I never expected to learn.&lt;/p&gt;
&lt;h2 id=&quot;the-siren-call-of-building-without-validation&quot;&gt;The Siren Call of Building Without Validation&lt;/h2&gt;
&lt;p&gt;As developers, we’re taught early and often about the importance of product validation. Talk to users. Test your hypothesis. Find product-market fit before investing months of development. It’s Indie Hacking 101.&lt;/p&gt;
&lt;p&gt;And yet, armed with over a decade of professional experience, I threw all that wisdom out the window when I built TMCBAE, a Tinder-style app for canceling unnecessary meetings.&lt;/p&gt;
&lt;p&gt;Why? Because I just really, really wanted to build it.&lt;/p&gt;
&lt;p&gt;The mystery here isn’t why the app didn’t become commercially successful. That part was predictable. The real enigma is why experienced developers like myself sometimes deliberately ignore everything we know about successful product development and build things anyway.&lt;/p&gt;
&lt;h2 id=&quot;the-curious-case-of-a-tinder-for-canceling-meetings&quot;&gt;The Curious Case of a “Tinder for Canceling Meetings”&lt;/h2&gt;
&lt;p&gt;The concept was simple but audacious: create an app where team members could swipe right on meetings they felt could be improved or eliminated, and when enough people matched on the same meeting, they’d collectively vote on better alternatives.&lt;/p&gt;
&lt;p&gt;Even as I started building, the red flags were unmistakable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users couldn’t get value from it alone, they needed teammates to join&lt;/li&gt;
&lt;li&gt;Not just any teammates, but specifically colleagues with overlapping meetings&lt;/li&gt;
&lt;li&gt;The app required both critical mass and organizational cultural alignment&lt;/li&gt;
&lt;li&gt;The cultural shift required for widespread adoption was massive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These weren’t minor hurdles, they were Mount Everest-sized adoption barriers. I knew this.&lt;/p&gt;
&lt;p&gt;Yet I kept building.&lt;/p&gt;
&lt;h2 id=&quot;the-technical-marathon-from-calendar-api-to-multi-team-support&quot;&gt;The Technical Marathon: From Calendar API to Multi-Team Support&lt;/h2&gt;
&lt;p&gt;What followed was months of intense work on several key technical challenges:&lt;/p&gt;
&lt;h3 id=&quot;google-calendar-integration&quot;&gt;Google Calendar Integration&lt;/h3&gt;
&lt;p&gt;Understanding how to integrate with Google Calendar’s API was the first major hurdle. I spent considerable time learning the ins and outs of the API, fetching all the data needed to provide a great swiping experience.&lt;/p&gt;
&lt;p&gt;Going through Google’s OAuth review process to get access to the calendar scopes I needed was far more work than I expected. The review process was rigorous, requiring detailed explanations of how user data would be handled.&lt;/p&gt;
&lt;p&gt;Once approved, I faced numerous edge cases in the calendar data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recurring meetings with complex patterns&lt;/li&gt;
&lt;li&gt;Various meeting types that needed to be handled differently&lt;/li&gt;
&lt;li&gt;Ensuring the right events appeared for swiping&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;building-the-core-functionality&quot;&gt;Building the Core Functionality&lt;/h3&gt;
&lt;p&gt;Beyond the calendar integration, I needed to build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A matching system to identify when enough team members wanted to change a meeting&lt;/li&gt;
&lt;li&gt;A post-match voting system so people could participate in deciding how to transform “meetings that could be an email”&lt;/li&gt;
&lt;li&gt;Subscription handling (with RevenueCat making this part more manageable)&lt;/li&gt;
&lt;li&gt;Authentication flows&lt;/li&gt;
&lt;li&gt;An in-app account deletion feature required by Apple&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-multi-team-pivot&quot;&gt;The Multi-Team Pivot&lt;/h3&gt;
&lt;p&gt;After initial beta testing, I discovered that multi-team support would be a game-changer for users. This meant implementing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A team management system&lt;/li&gt;
&lt;li&gt;One-to-many subscription approach&lt;/li&gt;
&lt;li&gt;Ensuring meetings were correctly associated with the right teams&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This addition significantly increased the scope, but seemed essential to deliver real value.&lt;/p&gt;
&lt;h2 id=&quot;the-design-transformation&quot;&gt;The Design Transformation&lt;/h2&gt;
&lt;p&gt;At this point, my friends who initially feared I was going crazy for pursuing this “Tinder for cancelling meetings” idea started to give me some praise. After all, it represented a substantial amount of work.&lt;/p&gt;
&lt;p&gt;This is when &lt;a href=&quot;https://brunoq.design/&quot;&gt;Bruno Quadros&lt;/a&gt;, an old friend of mine and a great Product Designer, decided to put some time into redesigning the app and creating a great app icon. His work transformed the look and feel completely, making the app incredibly polished. This meant more development time before launching, but the visual upgrade was worth it.&lt;/p&gt;
&lt;h2 id=&quot;launch-day-dreams-meet-reality&quot;&gt;Launch Day: Dreams Meet Reality&lt;/h2&gt;
&lt;p&gt;When TMCBAE finally launched, I was extremely happy to see my vision come to life. Some beta testing teams were interested in expanding their use, which was encouraging.&lt;/p&gt;
&lt;p&gt;The timing seemed perfect: many companies were trying to be more efficient by reducing meetings in the aftermath of pandemic-induced remote work. The meetings madness was draining team efficiency, and people were looking for solutions.&lt;/p&gt;
&lt;p&gt;Even &lt;a href=&quot;https://finance.yahoo.com/news/shopify-cfo-explains-meeting-cost-105829140.html&quot;&gt;Shopify had launched an extension to show how much their meetings were costing&lt;/a&gt; a few months earlier, encouraging employees to reduce unnecessary meetings. This trend seemed to validate the need for a tool like TMCBAE.&lt;/p&gt;
&lt;p&gt;Some users found the app super cool and a great conversation starter to help teams reduce meetings without being rude, while also providing alternatives to canceled meetings.&lt;/p&gt;
&lt;p&gt;However, I discovered something unexpected: some people actively want meetings. They enjoy the sense of control meetings provide and fear missing important conversations. There’s a real attachment to synchronous communication, even when async processes might be more efficient.&lt;/p&gt;
&lt;p&gt;I encountered extreme resistance to adoption, even though many people silently believed that fewer meetings could lead to better work.&lt;/p&gt;
&lt;h2 id=&quot;so-did-it-fail-yes-and-no&quot;&gt;So Did It Fail? Yes and No&lt;/h2&gt;
&lt;p&gt;From a financial perspective, TMCBAE was a spectacular failure. A work-intensive app that made virtually no money.&lt;/p&gt;
&lt;p&gt;But was it really a failure?&lt;/p&gt;
&lt;p&gt;I knew I wasn’t following the golden rules of successful indie development. I understood it was a crazy idea with significant adoption friction. My goal wasn’t primarily financial, it was to develop my first app with AI assistance and to address a topic I cared deeply about: reducing unnecessary meetings.&lt;/p&gt;
&lt;p&gt;By those measures, it accomplished its purpose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I got back to building my own apps in my spare time&lt;/li&gt;
&lt;li&gt;I learned a tremendous amount about using AI to write code (without AI, I wouldn’t have been able to ship everything I wanted to btw)&lt;/li&gt;
&lt;li&gt;It gave me material for this very blog post, sharing lessons on how not to build your ideas. It is worth it a share, isn’t it? :P&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-technical-growth-accelerator&quot;&gt;The Technical Growth Accelerator&lt;/h2&gt;
&lt;p&gt;Beyond the product itself, TMCBAE served as an intensive technical growth opportunity, forcing me to tackle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modern iOS development patterns&lt;/li&gt;
&lt;li&gt;Complex API integrations&lt;/li&gt;
&lt;li&gt;Puzzling match-making system&lt;/li&gt;
&lt;li&gt;Subscription management&lt;/li&gt;
&lt;li&gt;Team-based permission systems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These skills have proven valuable in subsequent projects, making the time investment worthwhile beyond the app itself.&lt;/p&gt;
&lt;h2 id=&quot;the-paradoxical-wisdom-of-building-impractical-things&quot;&gt;The Paradoxical Wisdom of Building “Impractical” Things&lt;/h2&gt;
&lt;p&gt;Perhaps the most important lesson from TMCBAE isn’t about product validation or market fit, but about the value of building things that matter to you personally, even when conventional wisdom suggests otherwise.&lt;/p&gt;
&lt;p&gt;Sometimes the greatest learning comes not from following best practices, but from intentionally breaking the rules to see what happens. Sometimes you build not to succeed commercially, but to succeed personally, to grow, to create, to express.&lt;/p&gt;
&lt;p&gt;Would I recommend other developers follow my approach? Probably not. The traditional advice about validation exists for good reason.&lt;/p&gt;
&lt;p&gt;What I can say with certainty is that there’s tremendous value in every shipped project, regardless of its commercial outcome. Each deployed app, each solved problem, each technical challenge overcome becomes part of your developer DNA, shaping how you’ll approach every project that follows.&lt;/p&gt;
&lt;p&gt;What rules are you following that might be worth questioning? What idea won’t leave you alone, despite all practical considerations? Maybe that’s exactly the project that will teach you what you most need to learn.&lt;/p&gt;
&lt;p&gt;After all, sometimes you can just build stuff.&lt;/p&gt;</content:encoded><category>Side Projects</category><category>App Development</category><category>Product Validation</category><category>iOS</category></item><item><title>Hello, (new) world!</title><link>https://observedby.com/observations/hello-new-world</link><guid isPermaLink="true">https://observedby.com/observations/hello-new-world</guid><description>After 10 years in iOS development, AI-assisted coding has reignited my passion for programming in a way I haven&apos;t felt since the beginning of my career.</description><pubDate>Sun, 31 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Editor’s note, 2026: the site this post celebrates has since been rebuilt from scratch, AI-natively, as the one you’re reading now. That story is its own post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s been a decade since I started my journey as an iOS developer. Ten years immersed in the Apple’s ever-expanding ecosystem. I loved it, built a career on it, and became comfortable in that space. But something was missing, that electric feeling of discovery and possibility I felt when writing my first lines of code.&lt;/p&gt;
&lt;p&gt;And then AI-assisted coding entered the scene.&lt;/p&gt;
&lt;h2 id=&quot;a-spark-reignited&quot;&gt;A Spark Reignited&lt;/h2&gt;
&lt;p&gt;When I first experimented with AI coding assistants, something unexpected happened. That long-dormant excitement, the thrill of building something from nothing, of watching ideas materialize through code came rushing back. For the first time in years, I felt like a beginner again, but with the advantage of seasoned experience guiding my explorations.&lt;/p&gt;
&lt;p&gt;This blog is my way of documenting this journey: exploring new technologies, building with AI, and sharing what I learn along the way.&lt;/p&gt;
&lt;h2 id=&quot;2024-testing-the-waters&quot;&gt;2024: Testing the waters&lt;/h2&gt;
&lt;p&gt;Last year, I’ve launched two apps built entirely with AI assistance during my spare time:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TMCBAE (This Meeting Could Be An Email)&lt;/strong&gt;: An app that helps teams reduce unnecessary meetings by allowing members to swipe and vote on better alternatives, similar to dating apps but for meetings. &lt;a href=&quot;https://apps.apple.com/us/app/tmcbae-avoid-bad-meetings/id6468180254&quot;&gt;Available on the App Store&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Postr&lt;/strong&gt;: An AI-powered social media assistant that learns from accounts and styles you admire to help create engaging posts. &lt;a href=&quot;https://apps.apple.com/us/app/postr-ai-post-generator/id6737490461&quot;&gt;Available on the App Store&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both projects taught me incredible lessons about AI-assisted development and pushed my understanding of what’s possible. I’ll be sharing detailed breakdowns of how I built each one in upcoming posts.&lt;/p&gt;
&lt;h2 id=&quot;meta-this-website-was-built-with-ai&quot;&gt;Meta: This Website Was Built With AI&lt;/h2&gt;
&lt;p&gt;Perhaps the most meta aspect of this journey is that the very website you’re reading was also built using AI. Despite having limited experience with modern web development (it’s been years since I built a website), I was able to create this blog in a single Saturday using Next.js, with Cursor IDE and Claude Sonnet 3.7 MAX as my companions.&lt;/p&gt;
&lt;p&gt;A few years ago, this would have been impossible. Learning Next.js from scratch would have taken weeks, and implementing a functional blog would have required extensive trial and error. But with AI guidance, the learning curve flattened dramatically.&lt;/p&gt;
&lt;h2 id=&quot;ai-a-plane-for-the-human-mind&quot;&gt;AI: A Plane for the Human Mind&lt;/h2&gt;
&lt;p&gt;If, as Steve Jobs famously said, computers are “a bicycle for the mind,” then AI-assisted tools feel like upgrading to a plane. The acceleration in productivity and creative output is not incremental, it’s transformational.&lt;/p&gt;
&lt;p&gt;In the coming posts, I’ll share specific techniques I’m using with tools like Cursor, practical examples of AI-assisted coding, and honest reflections on both the benefits and limitations I’ve encountered.&lt;/p&gt;
&lt;p&gt;If you’re as excited about this new world as I am, I’d love to hear from you. Share this post and drop me a tweet at &lt;a href=&quot;https://twitter.com/filipealva&quot;&gt;@filipealva&lt;/a&gt; to continue the conversation.&lt;/p&gt;
&lt;p&gt;Here’s to new beginnings, endless possibilities, and code that writes itself (well, almost).&lt;/p&gt;</content:encoded><category>AI</category><category>Coding</category><category>Next.js</category><category>Personal</category></item></channel></rss>