An exploration of Apple business news and technology. We talk about how businesses can use new technology to empower their business and employees, from Leo Dion, founder of BrightDigit.
[00:00:00]
Work Slop
---
Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo Dion. Today, I'm joined by Joe Fabisevich. Joe, thank you for coming back on the show
Joe Fabisevich (guest): Yeah. Thank you for having me. I appreciate it
Leo Dion (host): This is about your third time on the show, and a lot has changed since you were last on for Plinky. But we'll go ahead and let you introduce yourself for those who don't know
Joe Fabisevich (guest): Yeah. So, I'm an iOS developer by trade. I work on an indie app called Plinky. It's the easiest way to save links for later. It basically is just like Pocket or Raindrop or any of those other apps, but with a different take. I also have been teaching AI for the last year and a half, so I've taught at a nonprofit, and I also run workshops where people bring an idea that they want to build, like a real idea.
Joe Fabisevich (guest): It could be an app, it could be a prototype, it could be, like, an agent or something, and then they walk out after three hours with that in hand, but they've learned a whole lu- bunch of lessons [00:01:00] about AI along the way. And then, you know, for the next couple weeks, I get messages from them saying, like, "I built this thing that I've wanted for years," or, "My wife has wanted this idea, and I was able to deliver it."
Joe Fabisevich (guest): And it's just, like, a really cool experience to see people learn a whole lot in a short period of time, and then yeah, like enable them to continue building upon that.
Leo Dion (host): So let's get into it today. The focus of our episode is AI and AI-assisted development. How has your life changed in, as far as a software developer in the last few years with the rise of these AI tools?
Joe Fabisevich (guest): Yeah, I mean, how's my life changed is the big question, but specifically in software, I'd say it's not to say that, like, I don't think about code, I don't do code. I just don't write the code manually. Like 95 to 99% of my code is AI generated, but I am constantly shaping the code that comes out. Which is to say that, like, I care as deeply about the code that I ship to production [00:02:00] today as I did before AI, but my ability to ship has become much more ambitious.
Joe Fabisevich (guest): So it's not an exaggeration to say that, like, through the process of instead of sitting at a computer and almost, like, drawing on a blank canvas the way you would, like, one stroke at a time for a painting, I'm very much often just, like, molding the code into what I want it to be, and that process is genuinely faster.
Joe Fabisevich (guest): It can feel more exhausting at times, but the payoff is that I do a day's worth of work and I get a week's worth of output that looks like the code that I want. And especially as the models continue to get better and as I build up infrastructure in my projects that the code that I want it to produce, the results just keep getting better and better.
Joe Fabisevich (guest): And so I am still thinking as deeply about code as I was before. And in fact, like, I just went through, like, a bunch of interviews for, you know, potential jobs and I had to code manually, right? And so I was very [00:03:00] worried about, like, my skills atrophying or deteriorating. And it turns out that no, as a person who is a really good engineer, and B, is thinking about code all the time, my ability to type out that code and think about the code the way that I want it to has stayed the same as it was.
Joe Fabisevich (guest): And honestly I would say that somewhere around six months ago I started to get to the point with working with AI models where I'm learning more by continuing to dive in and asking it, like, "Why did you do this? How did you do that?" Sometimes the answer is, "Oh, that's a bad idea." And honestly, as a developer, I'm able to identify that 90, 95% of the time.
Joe Fabisevich (guest): But every once in a while, like, it'll surprise me and I'll be like, "Ah, that is actually a better pattern than I would've come up with." And, you know, the, like, the closed-minded way of looking at that is to say, "Ugh, like, you know, the AI is better than me." But the open-minded way is to say like, "Hey, I have an opportunity to learn from AI here."
Joe Fabisevich (guest): And I continue to think that there's just, like, a huge amount of educational value in [00:04:00] working with AI with an open mind
Leo Dion (host): I really like that, yeah, 'cause I'm in the same boat where I've done some interviews where I've had to code, and yeah, I was impressed with myself that I actually knew what the heck I was doing. I didn't get the syntax all right 'cause auto-complete wasn't great and stuff, but like, as far as, like, the ideas, yes, I, I understood it.
Leo Dion (host): I think, so there's a lot to unfold there, and I think I wanna start with the misconceptions people have with software development with AI, and one of the things you talked about, and I'll just call it work slop, right? This idea of I think a l- lot of people want to extract economic value from it, and so they're willing to take shortcuts and use AI without understanding what the heck is going on underneath.
Leo Dion (host): Do you see that problem a [00:05:00] lot in the industry right now and possibly a problem in the near future?
Joe Fabisevich (guest): Yeah. So I mean, I think work slop represents two things. One is the desire to take shortcuts, as you put it, but it's like to prioritize short-term returns over long-term benefits. And so even when you worked at companies that before... in a world before AI, you would see people would ship crap because they knew that they had to make a deadline or they had pressure from a PM or something.
Joe Fabisevich (guest): And so human nature hasn't changed in that regard. We've just kind of accelerated the ability to produce the output that generates the returns or the results. So I have always made the argument that, like, we should be prioritizing or balancing really the short term and the long term, but prioritizing our own long-term success.
Joe Fabisevich (guest): AI doesn't change that equation. I think it's really important that when I use AI to generate code, I go and I actually mold it and make sure, like, if I'm building a platform or I'm building something that is [00:06:00] going to stand the test of time or I want it to stand the test of time or to serve many users or to scale up, you're not gonna vibe code your way to the next Google, but you can vibe code your way to, like, your own personal app.
Joe Fabisevich (guest): And I think that we should be encouraging that creativity and human flourishing where people really do wanna see, like, the ideas in their head come to life. But as a professional software engineer, I think that it's still on you to say the thing that we ship to production, the thing that we ship to customers, in the same way that you care about user experience and user design, this matters just as much. The other thing that I see with work slop is that people are just, you know, they have different incentive structures that something is pushing them internally to say, "This doesn't matter." And I think it's kind of unearthing a real thing in the world, which is a lot of the work that we do or have done is not economically important.
Joe Fabisevich (guest): It is just [00:07:00] the way that we've always proved that we're doing economically valuable things. And so, you know, a PRD is valuable if you're working on a complex feature, but an AI-generated PRD that is slop is not valuable, which means that the shape of the PRD wasn't the valuable thing. It's that the fact that you spent the time thinking about it, documenting it, and communicating it was the value.
Joe Fabisevich (guest): And so we oftentimes create proxies for what's important by the way that it looks in the end. But, you know, when someone writes a book, they spend years writing a book that someone reads in six hours. That means that years of work went into putting together something that was digestible in six hours.
Joe Fabisevich (guest): It's not six hours worth of knowledge. It's just the way that we consume it. And so when people make work slop, they are oftentimes equating it as one-to-one. Like, the thing that matters is that we have a PRD. No, the thing that matters is that you put the thought into this that is required [00:08:00] to ship something that is good
Leo Dion (host): Yeah. So there's a couple of things I was thinking when you said that. One of the parallels I see a lot is, like, the way businesses use outsourcing where it's not the quality of the workers, it's we just, we saved money by hiring cheap, unskilled engineers and not actually vetting them or you know, doing the right work.
Leo Dion (host): It's kind of like the whole nobody got fired if they hired IBM kind of thing, where it's like, yeah, the work might be crap, but, like, we did what everybody else does. And also, like, there is a lot ... I'm a remote worker, but I've been in offices, and there's a lot of ceremony in working at an office that is unnecessary and just it's what you do 'cause your boss tells you what to do, and I see a lot of that.
Leo Dion (host): So, what was the other thing? There was something else I was gonna say. No, I think I covered [00:09:00] it. But, like, o- one of the things in my talks on vibe coding that I talk about is, like, the human in the loop idea, and the idea being, like, it comes from the military, but the idea being, like, you have a human somewhere along the AI chain that is looking at the code, reviewing the PR, like, that kind of stuff.
Leo Dion (host): And yeah, I mean, that stuff is still really important. Where, like, what are some ways that can help a team not get into a rut of just depending on AI without actually putting the work into it? 'Cause, like, you could do an AI-built PRD. Like, I've done that, but then I, of course, I look at it and I double-check it.
Leo Dion (host): I don't just go, "Good enough." What are some ways to make sure that, like, you're not just being lazy and just depending on the AI to do everything for you without actually checking the work?
Joe Fabisevich (guest): Yeah. So I mean, the first thing I'll touch on is you mentioned this kind of like human in the [00:10:00] loop, and I think what we notice is that AI continues to push the human in the loop further and further back. Like, where in the process do we need to be? Or it changes in general. So like I like to be very involved upfront.
Joe Fabisevich (guest): I like to plan meticulously, and I don't mean by like creating a planning doc that's AI generated. I mean, I have like a skill where I write up like a, you know, I spend like 30 minutes kinda like building the context for the AI about the feature that I'm trying to build, and then I work with it to like ask clarifying questions, and this is kind of like a relentless process.
Joe Fabisevich (guest): And it doesn't generate like a plan per se, it just provides all the context that it needs to make sure that all the ambiguities are resolved. And then by doing that, I then get like, you know, a result that is 90, 95, 99% of the way to what I want it to be. But I spent like one to two, maybe three hours doing that.
Joe Fabisevich (guest): And so when I said like, "Oh, the purpose of that PRD is to communicate the value," it's not the creation of the PRD, it's that the reason you can automate away a large chunk of work [00:11:00] is because you spent a lot of time actually thinking through the problem. And then, of course, let's say it only gets you 90% of the way, it's still your job to figure out what the last 10% is.
Joe Fabisevich (guest): And so there's this idea called Amdahl's law, which is when... Let's say that something is like 90% parallelizable and 10% serial. Let's call it being humans in the loop as the serial part of it. You can't just like get 100% return. You're going to have a bottleneck somewhere. And so the second part of the question is like how do teams kind of like work with this, is to remember that certain tasks are automatable, but that doesn't mean that the entire process is automatable just because the tasks are automatable.
Joe Fabisevich (guest): And so what you should be doing is looking and saying like, "What can we automate? What do we still need humans for? What do we think in six months, in a year we will not need humans for, and how do we kind of race towards that?" There's this idea that like you should be skating to where the puck is going in terms of the models.
Joe Fabisevich (guest): And so even just looking three months out, I [00:12:00] oftentimes am like, "Oh, like this idea may not work today, but I'll keep the idea in my pocket or I'll pr- you know, keep the initial prompt," like I'll write a big prompt for it, and then try it again in three months or six months and then see, yep, that worked.
Joe Fabisevich (guest): And so part of this is teams need to, one, understand what models can and cannot do, two, plan for when they can do that, and then three, just continue to use your best judgment, right? It's like whether a human is in the loop or not, it's ultimately your job to figure out is this going to be value additive.
Joe Fabisevich (guest): I don't think that models are there yet for kind of determining what is uniquely useful to you, even though sometimes models can feel like uniquely scary at almost how well they know you.
Leo Dion (host): Right, right. So let's get into that. Like, as of today, what... I don't know if I should ask what are models good at first, or maybe just get into where do they fall short as of [00:13:00] today?
Joe Fabisevich (guest): I think the best way I put it is h-
Verifiable Tasks
---
Joe Fabisevich (guest): models are very good at verifiable tasks, and that means that's where they fall short is where tasks are unverifiable, and they succeed where tasks are verifiable. So if you ask models to be creative, they can do their best guess approximation at being creative, which is often more creative than many people are.
Joe Fabisevich (guest): But writing a good essay is not a verifiable task. Like, I tried to have AI generate some documentation for an open source library I'm working on, and I just found it was crap
Leo Dion (host): What specifically was crap about it?
Joe Fabisevich (guest): I think the main thing is it didn't really understand why it was writing the documentation, right? It was like, "This is what documentation is shaped like, so I'm going to write documentation." On first glance, I was like, "Wow, this is really impressive." And then I started to get into it, and it started talking about how I implemented testing in this library, and I got better results when I said, "You should actually just go read the tests as opposed to guessing what tests should look like," if that makes sense
Leo Dion (host): or like [00:14:00] it's very much I find like my READMEs can be very salesy when it's like, "No, this is an open source library. You don't need to tell me what's so much better about my library than the other way to do it." It's like, stop doing that. And that's what it's trained on, so that's what it does
Joe Fabisevich (guest): Yeah, and I actually kind of to the note of training on is I found better success, not perfect by any means, but I found better success by I pointed AI at all of my writing on build.ms, and then I also pointed it at readmes from my open source libraries where I've, you know, handcrafted meticulously
Leo Dion (host): Yeah.
Joe Fabisevich (guest): And said like, "Basically copy this, but go do this."
Joe Fabisevich (guest): And the parts that it copied were, like mechanically were great, and the parts where I tried to like translate what worked in Boutique into what Broadcast should be like Broadcast the name of the library, and I was like, "Oh, this kind of sucks," right? I'm gonna have to go in there and do this myself.
Joe Fabisevich (guest): And so this kind of gets at what I mean by verifiable tasks are [00:15:00] automatable or are models are good at because that's what they can automate. So coding is like the canonical example of a task that is verifiable. You have a compiler in the loop. You can run it. You can... and we can talk about this later, but like you can write enough logs that show the entire journey that a user goes down through combinations of action and state.
Joe Fabisevich (guest): The more observability you can add, you know, that's why people like tests, like AI is good at writing tests, but when it doesn't know what tests to write, it writes mediocre tests because the question of what test should you write is not verifiable, but did a test pass is a verifiable task. And so models are really good at verifiable tasks, and they're really not there yet without human judgment or human intuition or, you know, a human in the loop at things that still require verification.
Leo Dion (host): Yeah, I think what you're touching upon too is like how AI is not great at like video [00:16:00] or art or like writing books. Especially the video, like especially visual stuff. It seems like that's where it falls short and
Leo Dion (host): i'm not pessimistic that AI is gonna take over and like r- do every, all the video work or all the art. Like I think there's a place for it when it comes to like, oh, we just need you to generate a bunch of people in the background maybe or something like that. But like if it's
Joe Fabisevich (guest): really good at, like, the mechanical stuff though, right? 'Cause it's like, one, creating video takes forever, and two, And that is, like, a task that it can do. But if you start to break down videos into frames, then you may be able to get things that are actually tangibly useful. So, like, the more that you can break down a problem, code, for example, is, like, like I said, it's the perfect example because every character is well thought out and checked by grammar, that if you can get...
Joe Fabisevich (guest): I think we're probably gonna end up [00:17:00] designing new systems that are meant to be automatable. So yes, video generation in the way that you think about it today doesn't make sense, but you may actually have an LLM that is trying to follow certain video generation rules that are well-defined in a grammar, and then you can have an LLM that's smarter than it continue to check, like a, they call it a model judge, to make sure that it's following the grammar as you would expect.
Joe Fabisevich (guest): And so while I am kind of saying that, like, anywhere where creativity is still needed is a place where LLMs can't really fully solve the problem, we may cut down drastically because we may be able to invent new ways of rec- representing what is the thing that we're going for.
Leo Dion (host): Yeah, I don't think we disagree. I think, like, I do think, like, video, we think too much video generation. We just think, you know, videos where grandma has six ha- fingers and stuff like that. But I'm thinking more like it's part, it'll be part of the process of making a video, [00:18:00] not like, "Oh, we're gonna make an entire video with a prompt."
Leo Dion (host): Like, I just don't see that happening anytime in my lifetime
Joe Fabisevich (guest): that's where I think we disagree
Leo Dion (host): Oh, okay. So you think you can make a whole movie from a prompt at some point?
Joe Fabisevich (guest): I think you'll be able to make whole movies by prompting, if that makes sense. The difference being that, like, you don't have to make video- movies 120 minutes at a time, you know. In the same way that I'm not actually suggesting that professional software engineers should write one prompt and expect an app,
Leo Dion (host): Okay
Joe Fabisevich (guest): may write series of prompts and then end up with a movie that is, I don't know what the right term is, but like satiable or like enjoyable to people.
Joe Fabisevich (guest): Because I also kind of think that there is this dichotomy that we don't really talk about, but like what do consumers enjoy versus what is professional grade output is very different. Like, I will admit that I think AI... I hate AI video as a general concept. Like, it's just like it... I'm also... I've never [00:19:00] been a video person, which is weird being on video right now.
Joe Fabisevich (guest): But I just doesn't... it just doesn't do it for me is probably the best way I can put it. But at the same time, there have been like two AI videos that I can recall where I was like, "Damn, that was funny and like, I actually enjoyed this." And how much of a human was in the loop is questionable, but I suspect that I think those videos were like 60 seconds long, and there was a human riffing on it basically at some point, right?
Joe Fabisevich (guest): Like, they came up with the silly idea or whatever, but they were not video producing it in any way, and I think that will continue to expand
Leo Dion (host): Yeah. Okay. So we had t-talked about what are the good parts, what are the bad parts. Like, as far as you're teaching folks right now what are some of the biggest misconceptions and also the big, like, aha moments that they were like, "Oh my gosh, this is amazing"?
Joe Fabisevich (guest): Oh, yeah, that's a good [00:20:00] question. I mean, I think the biggest misconception is that everyone thinks they're good at prompting, and I think that prompting is a skill. It's like a, it's a skill of context building, and I think that people oftentimes have an idea in their head of what they want, and they are not particularly good at communicating it.
Joe Fabisevich (guest): So I often joke that after three hours of a workshop when people are done and they're just like, "Wow, I can't believe how much we did," I'm like, "Yeah, you know, this is basically a communication workshop, but if I sold it as that, no one would pay me $1,000," right? They... If you put the word AI in there, then it's suddenly valuable.
Joe Fabisevich (guest): And so tend to think that they're good at prompting, but in reality, the way that, you know, the workshop starts is you bring an idea, and then I say, "All right. Go write down your idea in a Google Doc." Nothing high-tech. I'm just like, "Go write down your idea." And then I ask them like, "Okay. Do you think someone would be able to build this from scratch based on what you wrote?"
Joe Fabisevich (guest): And they go, "Of course not." And I go, "Okay, so how would you write it so they can build it from scratch?" And two sentences goes to a paragraph. A paragraph [00:21:00] turns into two. Two turns into three pages when they realize everything that is missing, and I show them techniques and tools for how to, like, structure their writing but also structure their thinking.
Joe Fabisevich (guest): And then when they're done with, like, their third or fourth revamp, they realize everything that was missing. So I think that's kind of my first thought is everyone thinks they're good at prompting, and then the truth is the better you are at prompting or context building, the better your results will be.
Joe Fabisevich (guest): So it's no surprise that a lot of people are not getting good results with AI, is that they're missing this, like, immediate fundamental skill or that it's not fully developed. They're not missing it in the sense that, like, it's something that they can't do. It's just something that they haven't practiced at.
Joe Fabisevich (guest): And so I consider that exercise almost like the way that you play scales at a piano
Leo Dion (host): So I think this is a good opportunity to deep dive into some terminology for novices. But I'm gonna try, I'm gonna try my hand at it, and you're gonna tell me whether I'm right or wrong. Like, you know, Claude would tell me I'm wrong if I try to [00:22:00] explain something incorrectly. I...
Leo Dion (host): And I think I'm really glad that you've mentioned this term a lot, context and the context window, 'cause I think that is... when I talk about vibe coding, I think that's the most important piece when it comes to understanding how AI works is understanding how to manage that context window. My, so my understanding is context window is everything, essentially.
Leo Dion (host): It's everything you feed into the LLM. It's the system prompt that the software developers who built Claude Code or Codex feed into it. You have your prompt, which is the thing you say. You have the whole entire conversation. You have any files it's read in, whether that's your CLAUDE.md, your constitution, your skills.
Leo Dion (host): And it, so basically every time you say something, you're sending that context over and over. And the challenge is that people, I think, misunderstand is that it is finite. It's [00:23:00] limited to a certain part, and managing that and figuring out what is the important parts that Claude or Codex needs to know about, and what are the parts that can be left out as you move through the conversation, is a big piece of understanding how to use these tools properly.
Leo Dion (host): Is that... Did I say that right?
Joe Fabisevich (guest): I feel like that is almost 100% correct, and the only thing I'll caveat is Codex has gotten ridiculously good at, like GPT 5.5 specifically, has gotten so good at managing the context window on its own. I have chats that have been going on for a month with zero problems whatsoever, and I don't know what the secret sauce that they've done.
Joe Fabisevich (guest): They have like a new memory architecture that I think is paying huge dividends, but I genuinely don't think about context windows anymore. It is not infinite. I know that it's not infinite, but whatever they're doing to pull in more information that's been referenced in the past that's valuable, it works.
Joe Fabisevich (guest): It is just like it [00:24:00] feels like magic that I can have a conversation that goes on for over a month
Leo Dion (host): I think, so like one of the things you may not notice when you're using these tools, at least with Claude Code, is the idea of compacting. I did use Fable last week for that one, those few hours that I was able to have access to it, and I I think I'd seen that as well, where like it's not so much that the context window's gotten bigger, it just knows how to modify the context window as you go through.
Leo Dion (host): We talked about this in the previous episode of where like now with foundation models you can kind of do the same thing, where you can modify the context window as your conversation goes through. So that's, yeah, that's a big part of it. I do think, so managing context window, like I said, like you said, I do think it's gonna become less and less of an issue, but I do think having a good pro- like you still have control over your prompt and your like, I don't know, your co- your what do they call it?
Leo Dion (host): Like, the files you have. The markdown files you [00:25:00] have, your documentation, things like that I think are still gonna be important in the future
Joe Fabisevich (guest): Totally. And also I'll probably... I should caveat with one thing, which is like if you're building your own agent, how you manage your context window is going to be actually still very important. So I don't wanna like shoo it away and say like, "Everything's been solved." But so like if you're building a tool for an end user, how you manage the context window is going to be on you, how you compact is going to be on you, how you you know, how you store and replay memory is going to be something that you have to do yourself.
Joe Fabisevich (guest): And so it's just that Codex and GPT-5.5 have gotten really good at this, but that doesn't actually mean that the problem has gone away. It just means that the tool that I primarily use is very good at figuring out how to compact and then seek back in memory
Leo Dion (host): So you mentioned
Building Agents
---
Leo Dion (host): building your own agent. This is where you're getting into stuff I'm still a baby when it comes to. So what does that exactly mean, building your own [00:26:00] agent?
Joe Fabisevich (guest): Yeah, an agent is actually just like a... It's a really fancy term for a prompt plus tools plus... So I always say it's like your prompts plus tools plus context running in a loop until it achieves a success criteria. So imagine you have like a for loop that instead of like being like run through this from zero to 10 or you know, it's a while loop actually.
Joe Fabisevich (guest): It's a while loop where you set a success criteria and you say like, "I want you to keep doing this until you've achieved a goal." Right? So, and whatever is in the loop is the this that you're doing. And then the loop, you give it a bunch of tools. You could say like, "Here's a GitHub search tool, here's web search, here's,
Leo Dion (host): Here's a Bash script, here's some
Joe Fabisevich (guest): here's a bash script.
Joe Fabisevich (guest): Yeah. Here's how to like y- work with files," all that kind of stuff. You could provide it all those tools and maybe the task is, I want you to read my file system and rename all the files based on the way that I like to [00:27:00] name files, right? I don't know. I'm saying this because I'm looking at my computer as I'm talking to you.
Joe Fabisevich (guest): But
Leo Dion (host): you... no, I'll tell you an example because I'm working on this, I think, accidentally. So I've a library called SyntaxKit. It uses a result builder. It basically uses, makes building Swift code easier, whether you're creating a macro or templates or things like that. And I hate Swift Syntax.
Leo Dion (host): I find it really difficult to use. So basically, it's a result builder, uses a result builder, which is, you know, if you've built a SwiftUI view, you know what I'm talking about. And then it takes that, makes it into... It writes, it runs Swift Syntax code to then build the Swift code accordingly. So what I'm doing right now is I'm trying to create, like, basically a bunch of, like, Swift code, my result builder code, and I'm gonna create command line that's gonna go through, well, not yet quite a loop, but eventually what I'd like to do is have a loop where it constantly tries to, like, [00:28:00] fix the SyntaxKit code so that whatever the result builder expects the Swift code to look like, it will look like it.
Leo Dion (host): I mean, that s- sounds like an agent kind of, right?
Joe Fabisevich (guest): Yeah. So let's use your example actually. So in this example, let's say you had this like loop, let's keep fixing this until it compiles. The until it compiles is your success criteria, right?
Leo Dion (host): Or until the Swift code looks like the Swift code I expect
Joe Fabisevich (guest): Sure. Yeah. The, that's... I think, for example, actually, until it compiles I agree that it's not a perfect goal, so we're gonna get into that in a second. But until it compiles is a verifiable goal, so that's why it's inherently better than it looks ident- like it looks like this. But if you could say it looks identical to this, meaning that you provide a whole bunch of...
Joe Fabisevich (guest): Yeah, if you provide a whole bunch of training data, you could say, "Make it look identical to this." Now, that's your success criteria. It's going to run on a loop. The context is the goal that you're trying to accomplish, but the tools actually [00:29:00] can be... We're gonna, like, step away from AI for a second, but it's like you have your compiler, you have your syntax trees, you have, like, the AST.
Joe Fabisevich (guest): You can basically codify all these things as tools and say, "This is what you have at your disposal to solve the problem." So honestly, like, you know, a human at work is the same metaphor, right? It's like you are a person who has a job to do, and then you are given a tool. You can be given the computer, you can be given, like, a whole bunch of Google Docs and do whatever, and someone says, "Go figure this out," and then you're an agent.
Joe Fabisevich (guest): That's it. That's all it is an agent is a fancy way of saying, "I want to accomplish something and I want to keep doing it until I accomplish it correctly." And so it's really important to define what correct means, because a bad agent will say, "I've solved the problem," when it hasn't, because it hasn't understood the problem
Leo Dion (host): Right, right. Um, so w- When you talk agent, the other thing that I am still a baby-- Well, I'm not a baby, I'm a teenager, 'cause I'm starting to do, make these skills. So a skill is basically [00:30:00] like a combination of a prompt and a set of tools, right? Whereas agent runs in a loop, it may run a skill in a loop more or less.
Leo Dion (host): Did I say that right?
Joe Fabisevich (guest): They don't necessarily have to run skills in a loop, but so I have a little skills handbook, and the way that I define a skill is a prompt paired with resources. In practice, you use skills as a domain expert, instructions for execute- executable commands, or a combination of both, instructions for a domain expert to execute.
Joe Fabisevich (guest): So a skill could just be like, "Here's a bunch of info that is valuable," right? "That you should know." And it could be, I don't know, a code formatting skill. It says like, "This is how we like to format our code." Now, a skill could also be the code formatter, right? It's like whenever you have to format code, go run this command.
Joe Fabisevich (guest): Or ideally, the skill is both. It says, "This is Leo's code style, and any time that we're writing code, we should reformat it to make sure that it does this." You could build a skill around, for example, your syntax kit, right? [00:31:00] So every open source repo I publish now has skills for integrating that library. So Boutique has a Boutique best practices skill, and what this does is it saves me a whole bunch of support requests when people say, "I added Boutique and I did it completely wrong," right?
Joe Fabisevich (guest): And I'm like, "Well, you should have read the docs." Instead of reading the docs, I'm like, "Literally just go ask Claude to integrate it for you into your app, and it will read the skill, and the skill will teach you the best way to do it." So it's domain expertise about the subject, in this case, databases. And yeah, like my new logging library will have a skill that's just like how to best integrate Broadcast into your app, and you don't even have to write the code.
Joe Fabisevich (guest): You just go, you know, dollar sign or slash depending on Claude Coders u- or Codex, dollar sign, Broadcast best practices, add a whole bunch of logs, and that's it. It will do it for you.
Leo Dion (host): What would you [00:32:00] recommend for, like, a software developer today? Like, depending on their, I guess, whether they're a beginner to a senior, like,
Careers & Hiring
---
Leo Dion (host): what do they need to do to get hired, I guess, or to be successful?
Joe Fabisevich (guest): I think to get hired is different than to be successful,
Leo Dion (host): Yeah, I agree.
Joe Fabisevich (guest): like, what people should learn. I think the truth is that, one, you should get good at using AI because it's undeniable that AI will be a part of how software developers write code, right? So I don't wanna, like, get high on my own supply, but I think it's really important to get good at AI.
Joe Fabisevich (guest): And by that I mean is you should be seeing successful results from when you're using AI, and if not, there's something to learn. And again, I'm always... I think my philosophy in life is always you should be learning all the time. So if you continually compound learning, you can't guarantee career success, but you can maximize the odds of it happening.
Joe Fabisevich (guest): So whatever domain you wanna get good at, I would continue to learn. So I do think that [00:33:00] engineering is probably going to bifurcate and have, like, a barbell curve where people at the highest end, you know, you could be, like... If you want to be a SwiftUI developer or a Swift developer, you should aim to be in the, like, top 10 percentile, because there's still going to be demand for people who know Swift so well that when AI is generating code that doesn't make sense, that they're the ones who are like, "Ah, you know what?
Joe Fabisevich (guest): This is the way that we should be doing it instead." But AI is... I don't know. There's, like, the saying, like, AI is an av- is average because of the training data, and I think that's a bit of a misnomer because you get to control the training data and curate it, so it's like you could actually skew things higher.
Joe Fabisevich (guest): But you can just assume that AI, if you are in the bottom 50 percentile of some subject matter and do not intend to get better at it, you would be best off using AI to raise the floor of your potential in that subject matter. And so you're probably gonna wanna develop, like, some sort of expertise, regardless of what that expertise is.
Joe Fabisevich (guest): Whatever you're looking [00:34:00] to get hired for, you better be, you know, striving to be the best at it. Because otherwise, AI is going to be better than you at it very soon. So if you're looking to optimize career success, I'd say that.
Leo Dion (host): How, like, how will that affect as far as, like, recent grads though? Like, who, like, just got out of college. Like, what are they supposed to do to get hired or be successful in either way?
Joe Fabisevich (guest): Yeah, I mean, I think this is the thorniest of all questions, right? Is like I
Leo Dion (host): I know
Joe Fabisevich (guest): think there's a good answer here. I would be lying if I was like, "Here's a recipe or formula." I do see a lot of people who are from non-traditional backgrounds adopting AI, but also learning skills that are adjacent, like product and marketing and public speaking and development.
Joe Fabisevich (guest): Like, you know, there is room for people who are going to be generalists. So I've always said that the right career... Like the right shape for a person is T-shaped for career path success. And I don't know if you know what the term T-shaped [00:35:00] engineer is, but it's
Leo Dion (host): No, I do. Yeah
Joe Fabisevich (guest): Yeah, well, I'll say it for anyone who doesn't, but it's like
Leo Dion (host): Please
Joe Fabisevich (guest): you want to be an expert at something and really good at everything else.
Joe Fabisevich (guest): And the reason for that is not because... Like you want to be able to lean on your expertise, but you also want to be able to see where everyone else is coming from and achieve more success by being able to be working together. So if you imagine this ideal team in a world of AI, it's like a designer, a developer, a marketer, a product person, and, you know, they're small, they're scrappy, but with AI they're able to do so much more than they could have two, three years ago, right?
Joe Fabisevich (guest): And so what's important there is that they're all really dang good at what they do, but they can all collaborate well together. They are T-shaped. And I think the formula doesn't change in a world of AI for a new grad either. The problem that we have is that a lot of what you develop in the kind of generalist skills comes from experience, and so that's why [00:36:00] it's much harder for new grads.
Joe Fabisevich (guest): But when I say there's a barbell curve, I mean, yes, you want to be the top 10% at some specific skill, or you want to be on the lower end, which is like, I kind of think the worst part. The worst place in your career to be is six years into a profession where you were getting paid $150,000 and you were okay at it, but the demand is so high for expertise in that subject that people are willing to take the second, third or fourth best option as well.
Joe Fabisevich (guest): And so if you are new, you're possibly in a better position to get jobs than someone who is, you know, in that mid-level state and mid-level, but that their plan was to basically be mid-level for the rest of their career as opposed to striving to become like senior or super senior staff, that kind of thing.
Joe Fabisevich (guest): And I think basically the best advice I can give is like continue to show that you have growth potential, because if you combine growth potential with AI, [00:37:00] then you have someone who can deliver results as they're learning. I often come back to the fact that like I learned how to code by making stuff, but also like using tools like Stack Overflow and Googling.
Joe Fabisevich (guest): And then there's a whole generation of developers shortly after me who learned everything they know from YouTube. And it's not a way that I learn, but it doesn't mean that it's like... It doesn't disqualify them as having learned, right? They still can like do deep dives and under- Understand things that I understand.
Joe Fabisevich (guest): So just because our tools for learning change doesn't mean that learning stops, and I think it's really important to internalize because there's gonna be a lot of people who are AI native learners. They learned with AI, and yes, the tools are not always perfect, but they can accelerate their learning in a way that we may not even be able to foresee yet.
Joe Fabisevich (guest): So I'm not here giving up on new grads or anything like that, even though I don't have, like, a clean answer other than to say exercise and show your potential early and [00:38:00] often
Leo Dion (host): And I like, you had mentioned this earlier too, like I like the idea of learning via AI. Like look at what AI does, look at what Claude Code does, and understand why it does what it does. Like if you want personal growth, that's a big part of it, 'cause I've been in the same boat as well, and this idea of like, I don't know if you've heard of like the centaur developer where it's like the developer attached to the AI, like working together in unison.
Leo Dion (host): And I mean, I don't see that going away anytime soon. I don't know about you, if we're gonna get to a point where AI's just gonna be so good where you don't need that. But I don't...
Joe Fabisevich (guest): on the day.
Leo Dion (host): Yeah, right. But what do you, I guess what do you recommend then like companies do when it comes to the hiring process?
Leo Dion (host): Because that's a mess. Like hiring is just awful right now. People don't know what, companies don't know what they're doing in a lot of ways and are sort of just still like, "Do you have a bachelor's degree and a resume?" When [00:39:00] that l- like doesn't really tell you anything. Or we're posting jobs that aren't even, don't even exist.
Leo Dion (host): You know, it's a mess to say the least. Like w- what would you recommend your ideal company do when it comes to hiring?
Joe Fabisevich (guest): Yeah, so I mean, actually I wanna take a step back to learning for, to make one kind of, one more point. So you mentioned the idea that you should pause and understand what Claude Code is doing. I think the higher level concept there is friction. Friction is so important to learning. You can't just, like, you can't, I don't know, open a funnel and then have learning happen by shoving more and more knowledge through that funnel.
Joe Fabisevich (guest): It just doesn't work like that. You have to actually sit with an idea. I really like this like one Ezra Klein quote about how reading for him is not just taking in the information, it's... He takes his time with reading because sitting with the book for a week or a month is what actually makes the learning happen.
Joe Fabisevich (guest): And so I think that to tie it back [00:40:00] into like employers, I still think it's gonna be really valuable if you wanna have a durable firm to invest in your employees. And I think this is that long-term versus short-term thinking that we were talking about earlier. I can't... I'm never gonna build a company that is, you know, optimized for making money, and that's going to...
Joe Fabisevich (guest): That's like kind of a flaw in my own place in the economy. But I found that long-term investment has led to durable success in my career, and I think that has lur- led to durable companies as well that outlast any particular fad and that stand the test of time, right? Like, a company like Nintendo or Microsoft or whatever, they're not...
Joe Fabisevich (guest): They're thinking at, from first principles about like, what do we want users or people to be feeling when they interact with our company and our products? They're not thinking about, how do I make the most bang for my buck in the next three months? Arguably, sometimes they do. But if you like [00:41:00] go back to the early Microsoft days, it's like- We're building an operating system because, and that because is the thing that matters.
Joe Fabisevich (guest): It's not just we found a random, like, loophole in the market and we're gonna exploit it like a D2C company for the next 30 days, and then figure out what the next exploitable loophole is. So if I was building a company, I would focus on how to build a company that can last years through any changes that happen.
Joe Fabisevich (guest): Now, in terms of hiring, I still think hiring has... I mean, hiring's always been broken, right? Like, especially in our career. Part of the problem is that we test for things that we do not actually value in the job. And so it's really important to take a step back and say, "What do you value in the job?" And one example of that would be, I...
Joe Fabisevich (guest): I'll link to this, but I designed an interview process a while back. I actually designed an interview process last year for a company, and it was, like, a screening process. It went really well. And then I also designed, like, a full-day loop kind of thing. And I think that what you [00:42:00] wanna do is if your company is building product, you want an engineer to meet with a product person, and then they discuss the product they're going to build.
Joe Fabisevich (guest): Like, imagine a day. You come in and you discuss the product, and then you work with a backend developer to build the API, and then you work with a client developer. If let's say you're an iOS developer you then have to build out your, the actual API that you've designed with the backend developer.
Joe Fabisevich (guest): And it's, like, a real collaborative process because that's what we're imagining work to be, is this process of collaboration between humans. Now, if you're more on the AI side, then you're gonna wanna start testing those skills, right? Like, I interviewed with an AI company, and there was no AI even though they were like, "We want you for your AI skills."
Joe Fabisevich (guest): And I'm like, that's what I would call a misalignment between the interview process and the desired outcome. And of course, they're looking to test my ability to write Swift and SwiftUI and, like, or TypeScript or whatever I'm interviewing for. But they also just left off a [00:43:00] huge part of this. So it's really important for companies to just step back and say, like, "If we're hiring, then what are we hiring for?
Joe Fabisevich (guest): And if we're hiring for that, then how do we test for that and work from that perspective?"
Leo Dion (host): Yeah. Yep, I like that a lot. It's just pain in the butt to get a company to actually do that,
Joe Fabisevich (guest): yeah, I can't fix the economy, Leo,
Leo Dion (host): yeah, I know. Not in this episode. Maybe in the next one. All right, so let's...
Joe Fabisevich (guest): back for a fourth time
Leo Dion (host): Joe fixes the economy. So let's talk about, like, your actual
Daily Setup
---
Leo Dion (host): daily setup. So I'm a Claude Code person. I just pretty much do only Claude Code. I used to do Cursor. I don't really do use Cursor anymore. And now I... If I do need, like, to do s- like, I guess I use VS Code when I'm doing something that involves a dev container because then it's just easier to talk to Claude through that so I can fix a Linux issue.
Leo Dion (host): But yeah, what, like, I guess, what's your setup right now?
Joe Fabisevich (guest): [00:44:00] Yeah, so I want to preface this with I think that the tools are good enough that you can basically do anything you want with any tool you want. And so in a lot of ways it's kind of like how some people use Vim, some people use what's it called? Emacs, and some people use, like, Xcode. Yeah, like, it doesn't matter.
Joe Fabisevich (guest): You know? Like, it's totally fine. Everyone wants to hear, like, what's your setup, what's this. At the end of the day, I use the Codex for Mac app, and I have my own workflow in it, and it is, like, super effective for me, and I am very happy with it. And if someone doesn't like Codex or they don't like OpenAI and they don't want to use any of their products, you can accomplish all of this with any tool that you want.
Joe Fabisevich (guest): So, like, when I teach my workshops, I ask people what they want to use, and then we do it in that tool, and they are always happy nonetheless
Leo Dion (host): So one of the things I wanna talk about, and I've seen this problem a lot you talked about this briefly with your skills about formatting, is like figuring out a way to do stuff. I guess, fig- like a lot of... And Claude is pretty good at knowing when to do it. It's like [00:45:00] don't do find and replace using a AI tool.
Leo Dion (host): Have the AI tool write a command or write a script to do it, and then automate it that way. Because otherwise you're gonna go through tokens. And I call this automate by AI and not with AI. I guess, I... My question i- my question is, like, what other tips might you have to help, like, use these tools optimally and not just fly through tokens when you don't need to?
Joe Fabisevich (guest): Yeah, actually I think you hit on the most important one, which is have it write code that is reusable, right? You want... if you're building a process for your business, you want it to be deterministic, and you want it to be not using tokens. So I have AI write scripts all the time. There's a coding agent or a harness called Pi, P-I, and its whole premise is it only has four tools.
Joe Fabisevich (guest): It's like read, write, bash, and grep. And if it wants [00:46:00] to solve a problem, it writes code that solves the problem. And so that's where bash comes in, and all you have to do is write code. I think that this is part of the reason that Pi is consistently among the top, if not the top, like coding agent. You know, it combines with the, with a model like GPT-5 or whatever.
Joe Fabisevich (guest): But The thing that coding agents are best at is writing code. And so we should be optimizing for that, and we should be optimizing business processes towards that as well. There are also like, I don't 100% do this myself, but I would say the models that are open and available and served cheaply are getting so good that they are capable of doing many of the things that, like, you would previously need a GPT or a, like, Claude model to do.
Joe Fabisevich (guest): And so if you're thinking about this as like how do I save money then... And but I still want AI involved, not for coding specifically, but for you build an agent. You can build an agent with like a GLM [00:47:00] 5.2 or like a Kimi model, and they're really cheap because the open source models are dramatically cheaper to serve than, you know, like the giant monster, GPT 5.5 model.
Joe Fabisevich (guest): And so at some point, we're probably gonna have to start thinking about, more about like it's not this duopoly. There's a landscape of AI tools available at our disposal, and some people, you know, they already do this. They say like, "I like to use Manus. I like to use Devin. I like to use Codex." But when... You know, we really have to think of this as like intelligence available to us for a price.
Joe Fabisevich (guest): For a price is really important because we're gonna have to make trade-offs and say, "I don't actually need the most frontier intelligence right now. I would actually get away with using..." The same way that we choose between, like sometimes I can use Claude Haiku instead of Claude Sonnet or Claude Opus. I do the mental math and say like, "Yeah, this ch- this task is easy."
Joe Fabisevich (guest): And it's like a little... I think the a- [00:48:00] the AI industry is like obsessed with GPUs, but a lot of agentic work is actually CPU bound, not GPU bound. And so we're gonna... Yeah, I mean, the actual AI generation is, like the token generation is GPU bound. But coming up with like a task or scheduling it or doing anything local oftentimes is CPU friendly.
Joe Fabisevich (guest): And so we are gonna start rethinking our relationship with like GPUs, and that will drop the price of an agentic task dramatically because not... You know, GPUs are not actually very good at doing what CPUs do, and CPUs are not good at doing what GPUs do. So we're just gonna lean into each other's strengths, and doing things on a CPU is so much cheaper that we're probably gonna invent processes to do things on CPUs that could be done on GPUs.
Joe Fabisevich (guest): But even NVIDIA is now making CPUs, so I feel confident that we will [00:49:00] like, we will not have to worry as much about, "Oh, this agent is doing X, Y, and Z, and it costs so much
Leo Dion (host): What I wanna talk more about local models and things like that. But before, there was a couple things I wanna get into. We touched on, so like documentation is really important, and one thing I started looking at SpecKit. I don't like any of these like task management tools. I find them all to be a lot of like cruft that isn't needed.
Leo Dion (host): But one thing I did pick up from SpecKit was this idea of a constitution. You know, saying like, "Hey, don't do this, don't do that," and seems to follow those rules okay. It hasn't, you know, done anything crazy. What are some documentation or like file must-haves when you have your project?
Joe Fabisevich (guest): I'm not actually really sure how to answer that. I would say that, like, having a good CLAUDE.md is probably the most important thing you can do, and so it's like using the CLAUDE.md to [00:50:00] define the process. I also think SpecKit and tools like that, the... I would say that they are the best way to take someone who does not know how to write code and give them a leg up in building software, right?
Joe Fabisevich (guest): So they may not inherently be designed for software developers. I think they're actually designed for builders more widely. And so you can substitute any of this kind of stuff with 15 years of software development experience. The problem is that most people don't have 15 years software development experience.
Joe Fabisevich (guest): And so I don't have any, like... You know, at first I feel like working with AI was tips and tricks of figuring out how to get the AI to do the thing that you want it to do, and then we formalize the process in things like SpecKit. But ultimately, it comes down to, like, being able to communicate the desired task, being able to understand the edge cases, being able to, like, figure out where to take shortcuts, where not to take shortcuts, all these things that it's like you can't [00:51:00] substitute that with a doc or a skill per se.
Joe Fabisevich (guest): But for example, like, I oftentimes am... I ran into a performance issue yesterday. Someone emailed me and were like, "This is so bad. I don't understand how it's so bad." And I was like, "I don't understand either." And I was like, "Send me a spin dump," right? And so they sent me a spin dump, and I gave that spin dump to Codex and said, "You figure it out."
Joe Fabisevich (guest): And I gave it a Swift performance audit tool and was like, "You figure it out with this skill," and it did. I was like... It was like, "Oh, your timeline view is redrawing, like, a crazy amount in this one specific edge case." And because I gave it a bunch of logs, it was able to figure out, like, you were...
Joe Fabisevich (guest): You caught this edge case here. Here's how it happened. Here's how it manifested, and then here's what I would do to fix it. And I was like, "That's really dang handy." And so the reason I wasn't, like, inclined to solve that on my own is I'm not actually really good at performance profiling, but I am good at knowing how to guide a tool to do good [00:52:00] performance profiling.
Joe Fabisevich (guest): And so that's an example where even as a software developer, I was making up for a lack of skill of mine with a skill.
Leo Dion (host): Yeah, that makes a lot of sense. I, like, I guess for me it's just important to, like, what's important about documentation or you said agents, I assume that's the same thing as like the Claude MD basically, but
Joe Fabisevich (guest): CLAUDE.md, yeah
Leo Dion (host): Yeah. But I think it's important to have some set of like understanding, like for the context so that way a tool like Codex or Claude will understand exactly like, "Okay, this is what I need.
Leo Dion (host): This is the context I need before I get started every time."
Joe Fabisevich (guest): Yeah, like if there's, if you don't know what you're doing, then you're not gonna have a good time. It's just the rule in life in general,
Leo Dion (host): Yes
Joe Fabisevich (guest): And I think that's still true here. It's just the floor has been dramatically raised for what you can do when you don't know anything. But it hasn't raised the ceiling on people who don't know what they're doing.
Joe Fabisevich (guest): It's raised the ceiling for people who do know what they're doing
Leo Dion (host): so [00:53:00] lastly,
WWDC 2026
---
Leo Dion (host): I wanted to talk about WWDC came out a couple weeks Finally we're in 2024. We have AI, artif- Apple Intelligence. Just I guess before we get into it, what's kind of your g- general impressions of WWDC this year?
Joe Fabisevich (guest): Yeah, I mean, clearly it was very AI focused. There was almost nothing else besides performance improvements, which as a user of iOS, I love. I'd say I think Apple caught up to about where we were six months ago, which is gonna be good enough for a lot of people and a lot of, like, developers myself included.
Joe Fabisevich (guest): There are... I think if you'd asked me before WWDC, will I be using any Apple AI features in my apps, the answer would've been no. But I've watched a couple videos, like WWDCvideos. I think they've done a lot of really good work, for example, like the new evaluations framework for generating evals for your prompts and
Leo Dion (host): That's the thing I'm really excited about is e- evaluations and playing around with that[00:54:00]
Joe Fabisevich (guest): Yeah, I was actually very impressed, where I was like, "Okay, I think this will do two things." One is it will your AI, what you build with AI, more serious in an iOS app. But it's also going to pull forward a bunch of iOS developers who have been like, "I don't really get this. This doesn't make sense."
Joe Fabisevich (guest): They've done a really good job of presenting the case for why this stuff matters, where I feel like I've kind of ventured into the world of the web to be like... Or like TypeScript or all these non-iOS environments, to be like, "No, this clearly makes sense. We should... As an engineer, I should be focusing my time and energy on this."
Joe Fabisevich (guest): Now as an, you know, as an iOS developer, I get to say, "Okay, here's, like, how we do this in an iOS world as well." And so I really like what they've done. And I do think that oftentimes the most important things have to be built up from the foundation as opposed to, like, gluing on a new API layer and saying, like, "We have Apple Intelligence."
Joe Fabisevich (guest): I, you know, I [00:55:00] worked with App Intents for the last two years, and it just felt incomplete. Now it feels like the story is much more complete. I still have to... Like, I basically have to revisit all the work that I did for iOS 17 or 18, I forget which one, and see if that works now. But I had basically written off Apple, and I do think that they've done a good job of...
Joe Fabisevich (guest): You know, I've used the new Siri a couple times and been like, "Yeah, this'll substitute for, you know, a Raycast query or a quick open of ChatGPT to Google." So, like, basically the equivalent of Google something. And I think that's what most consumers are gonna want. They're not building agents on their phone
Leo Dion (host): Yeah, like what betas have you installed?
Joe Fabisevich (guest): I have iOS 27 and macOS 27
Leo Dion (host): Okay. On your main phone or main Mac or what?
Joe Fabisevich (guest): Yes, I'm stupid
Leo Dion (host): Okay. That's okay. I forgive you. What kind of phone do you have?
Joe Fabisevich (guest): I have a 17, not the Pro, just the regular
Leo Dion (host): Okay. 'Cause I was curious what the difference in the, like, we talked about this on the [00:56:00] last episode, what's the difference between, like, the advanced models on the Pro, 17 Pro as opposed to the 17? And it doesn't seem clear to me exactly
Joe Fabisevich (guest): Yeah, I can't really tell you. I think that there's two kinds of models. There's one that's like a three billion parameter model, and for context, three billion is I don't know, probably GPT 3.5 to GPT-4 intelligence, right? And there's a new model that they've trained that I have not had any hands-on experience with, but it's a 20 billion parameter model that's I believe a mixture of experts, which means that only certain...
Joe Fabisevich (guest): If you imagine, like, you're in a room with a bunch of experts, and there's a person who knows science, and there's a person who knows math, and there's a person who knows English, and there's a person who, like, is is a great programmer. And you have a question, and you ask, like, "When exactly did, like, the US surren- or wh- when exactly did Germany surrender in World War II?"
Joe Fabisevich (guest): Right? You basically wanna go to the history expert and [00:57:00] say, "Okay, you answer this question." And so a little layer above that sits and says, "Who would be the best to answer this question?" And evokes two experts at a time, gets their answer, synthesizes the best result, and then gives you that answer in return.
Joe Fabisevich (guest): So when you have 20 billion parameters, only one, two, three, four of them may be active at a time, and that's those multiple experts that you're consulting with is the active models. And so, the 20 billion model, parameter model is going to be that kind of tool, is gonna be smarter, but it will not actually invoke all 20 billion parameters which would require some number of gigabytes of RAM, like multiple gigabytes of RAM.
Joe Fabisevich (guest): It will instead just consult with a couple of experts, and then you still get a better answer
Leo Dion (host): Okay. That's super helpful 'cause that makes a lot of sense. Do you have any thoughts on private cloud compute as opposed to, like, the on-device [00:58:00] models? And what... I guess that goes back to what I was gonna ask you is, like, what's the future of on-device models over, like, using big data center models?
Joe Fabisevich (guest): I think anyone who tells you they have an answer is just guessing, right? Like, I think it's probably gonna be the same way with like sometimes you use an app that requires the server, and it's like you can't have Uber without servers. And you can't... But also, like, does your calculator need to go to a server?
Joe Fabisevich (guest): No. And so we're all gonna find the right balance for these tools in the right way. So private cloud computing is kind of like a nice mix where you're given privacy promises, and the truth is they're not fully validatable. They are almost completely verifiable all the way, but at some point you do end up having to trust Apple still.
Joe Fabisevich (guest): And so if privacy really matters to you, that's never gonna be a substitute. But for example, like, I don't know, I [00:59:00] have a medical question that I don't want ChatGPT to know about, but if I trust Apple's promises, I may be more inclined to use private cloud compute. But at the co- like the trade-off is I know it's not as good of a model, so asking it a medical question may lead to worse medical results, and so I'm constantly doing this mental math in my head.
Joe Fabisevich (guest): I think that most people are not going to think about this, period. And so the reason I say anyone who has, like, a strong prediction about this, I, I don't inherent- I think they're guessing, is because no one can get in the mind of, like, 6 billion consumers or 8 billion consumers and make that singular decision.
Joe Fabisevich (guest): Or, like, singul- you can place your bets, but I really don't think that it's going to... You're gonna have to play it by ear as the technology develops.
Leo Dion (host): I mean, do you think that there's a future for on-device models, period? I mean, I would say so. Yeah. Okay. Yeah
Joe Fabisevich (guest): But what will they do and what will we ask them
Leo Dion (host): Yeah, obviously.
Joe Fabisevich (guest): absolutely no idea
Leo Dion (host): Yeah, that makes total sense. [01:00:00] So were there any APIs that came out a few weeks ago that you're like, "Oh, this is exciting. I'm excited to try this out in Plinky"?
Joe Fabisevich (guest): Yeah. So this is a little bit of, like, a different take on AI per se, but Plinky is obviously an app that saves your links for later, but I also view it as, like, your home for links. And so if you are in your home, you get to design your home however you want. And so what I'm trying to do is build, like, a completely customizable link-saving experience that works for anyone.
Joe Fabisevich (guest): And one of those things is I wanna... Right now when you, like, long press or swipe on a link, you can set a reminder, you can add it to a folder, you can share it, you can do all these things with the link and you... What... How it works for you is totally up to you. But going beyond that, I wanna build a new...
Joe Fabisevich (guest): I'm building a new feature called Pro Actions which lets you take a link and you can run a shortcut or you can make an API call with the contents of that link. Or now because of Private Cloud Compute, I was already planning on [01:01:00] building this out using like, you know, the GPT 5.5 and Claude and all these models that are available.
Joe Fabisevich (guest): But I think I'm actually gonna build, like, to start with Private Cloud Compute and, you know, all the features that are built into the iOS device, your ability to interact with AI as one of these Pro Actions when you long press on a link or swipe a link or do anything with a link. Like, if you're in reader mode, you can say take this article and obviously you can say something like summarize it, right?
Joe Fabisevich (guest): Super, super common thing that people do. But I wanna go many steps beyond that. So imagine you are reading an article and you finish it and it's like a, I don't know, daring fireball piece on the newest iPhone and John is very poetic and prosaic about how this iPhone changes everything. And then you can just click one button and generate like a counterpoint.
Joe Fabisevich (guest): Like take this person, write it from another person's perspective, and then write an article on demand [01:02:00] that argues against the thesis of this article at the same grade level with the same writing style to make sure that I can actually get a fully rounded picture. That's one example of where AI actually goes above and beyond and is able...
Joe Fabisevich (guest): Like we're tapping into the generative nature of AI to say, what experiences can we build that we couldn't build before? This was already kind of in my plans, but it's a little bit accelerated knowing that I can get to a working version quicker because I have Private Cloud Compute without having to build out my own stack, which has been like a work in progress for the last few months.
Leo Dion (host): Yeah, that sounds amazing. I'm excited to, to see that. What, as far as your, I don't know if you've had time, but the updates to Xcode and some of the stuff that's been added, like skills and things like that, have you had time to even look at any of that stuff, and have you been like at all, "Oh, that's really cool.
Leo Dion (host): I'm gonna add that to my workflow"?
Joe Fabisevich (guest): Yeah. I've only [01:03:00] looked and I haven't played with it at all. It's been, you know, WWDCwas 10 days ago, nine days ago, and there's been so much to take in. Yeah. But I would say Apple seems to have done a decent job, and I think that, like, it's not a great job by any means because they're still playing catch up and they're still moving slower than everyone else is in a lot of ways.
Joe Fabisevich (guest): And so for example, they added a plan mode, and the plan mode looks okay, and I think it's like, it's gonna do the job, but it's not gonna give a person who has never done AI the best impression of what is p- already possible. And so I don't think I will be using Xcode any more than I use it today, which is to say that, like, I drop into Xcode to, like, make small changes and review some diffs where it's like I've just gotten so used to looking at code in Xcode that when I want to look at Swift code, I think Xcode.
Joe Fabisevich (guest): But I, I think that they've done a good job of, you know, like I said, catching up to where we were six months ago on the development front. I think it's [01:04:00] probably closer to, like, nine months ago. I'm just kind of, like, spitballing here, but it's a little more behind than the consumer experience of AI that they shipped
Leo Dion (host): I, and I also feel like, you know, I would say we have a decent expertise at AI-assisted development. We're kind of stuck in our ways, and we like the way we do things now. It's gonna be really hard for someone like me to want to go and, like, use these Xcode tools. And, like, I tried the beta out probably a few days after it came out for Xcode, and, like, there was some things that did okay, and then there was a thing where it just didn't work.
Leo Dion (host): Gave me a failure error message, and I was like, "Okay, gonna ... Like, I'm done. I've tried it. Back to going to Fable to write my SwiftUI app based on my new..." Like, 'cause there was a, what is it, like, the reordering and swipe action stuff I wanted to play around with, and Fable did perfectly fine with it, and it was able to read the new documentation and understand how to [01:05:00] use it.
Leo Dion (host): And like, okay, guess I'm not going back to Xcode for doing AI stuff. It's just not worth it to me. So, yeah. I mean, that's kind of
Joe Fabisevich (guest): the opposite
Leo Dion (host): Okay, go ahead.
Joe Fabisevich (guest): true, right? I think the opposite is also true, where, like, if you have not been AI pilled and you are first getting into this, then the Xcode version is going to be a decent gateway into like, "Oh, okay, I'm using more AI features." I've even seen that with the Xcode 26 features, where it's like people who are long, like lifelong iOS developers are like, "Okay, I tried this.
Joe Fabisevich (guest): I could see where it's potential." And I think over Xcode 26, it's a pretty big jump. And so they will kind of have a little bit of like the feeling, the AGI moment, where they say, "Okay, like I can see how this is progressing." And it may not be as fast as you and I want using Codex or Fable or whatever, but it may...
Joe Fabisevich (guest): You know, we don't... It's not like this like curved, [01:06:00] you know, angled line like this. I feel like AI is often like we hit a plateau, and we're like, "Wow." And then we just get used to being on that plateau, and then two months later, a new thing comes out, and we reach a new plateau, and we keep going from... Like, we're stably on plateaus for a couple months, and we get used to that.
Joe Fabisevich (guest): And it actually looks like a curve when you project it out over a long period of time. It looks like it's like rocket ship growth. But when you're actually living it, you're on a plateau
Leo Dion (host): Yeah. I know what you mean. Well, and, but I think, like, with people themselves, it's very much like, like I said, like, I started off with ChatGPT and then Cursor and then Claude Code. It's sort of like getting on a bike and, like, being able to have the confidence to go faster with tools that can work faster.
Leo Dion (host): And, like, you personally, your journey is, like, more, like, accelerating and being able to understand the, like, jagged parts of AI and how to optimize it
Joe Fabisevich (guest): There's some element to that I think that maybe as the technology progresses, things get easier and the curve [01:07:00] won't feel as jagged. It's gonna feel jagged at the frontier always probably, or I'm guessing it will always feel jagged at the frontier. But the way that most people use technology is not that they're, like, doing the most bleeding edge thing all the time.
Joe Fabisevich (guest): If this thing is really out there curing cancer, you and I are not going to be using the bleeding edge model to write our SwiftUI app, if that makes sense. And so
Leo Dion (host): total sense
Joe Fabisevich (guest): Our experience of it is going to get less and less I mean, you use the term jagged. It's gonna get less and less chaotic. But it will still be always chaotic.
Joe Fabisevich (guest): It's just gonna be like how much of that chaos is felt by us directly, which is also the argument for, like, cheaper models. Models will get cheaper because we will not be using Fable to build an HTML page. We will be like, "Opus is good enough," and... Or Fable Haiku is as good as Opus 4.8 Claude 5 Haiku, right?
Joe Fabisevich (guest): And so [01:08:00] we're just gonna be like, "Well, I don't need that, and I'm not gonna spend those tokens or that money on those tokens."
Leo Dion (host): Yep. Yeah, exactly. So speaking of spending tokens, I don't know if you saw, I built a app month bar specifically so I can track not my tokens, but how much is left in the month, because I was using Copilot at my worky work. But yeah, I'm trying to figure out how I can actually track people's like, not tokens so much as like their usage remaining in a time period and be able to like show that in the menu bar.
Leo Dion (host): I haven't gotten that far yet, but yeah, that's like gonna be a big thing is being able to like keep an eye on that and when you can- when your what is it? Your period of time gets reset, so to speak
Joe Fabisevich (guest): Yeah. And I mean, I know it's built into Codex, so I check that all the time rather than like having a menu bar app. I did have Peter Steinberger had a Codex bar. It is an app that does that. And I was using it, and then I was like, honestly, it's just not even that big of a problem for me. But as the economics of [01:09:00] AI change, I suspect it will become a problem either more or at times
Leo Dion (host): Do you think, like, do you think there's
AI Economics
---
Leo Dion (host): gonna be a bubble where, like, these prices are gonna go up?
Joe Fabisevich (guest): I think that it's too hard to predict the actual... Like, what I can tell you is there's more demand than there is supply, and when there's more demand than supply, prices go up. But how much we can allocate towards supply is a question of many factors, right? It's like there's a political factor. People don't want data centers being built right now.
Joe Fabisevich (guest): It takes a long time to build something in this world, and so you can't just say, "Okay, there's new demand." And in the digital world, we're so used to being able to satisfy demand by going and buying a new server, and that's another million users we can serve.
Leo Dion (host): Great
Joe Fabisevich (guest): If you have to build a data center, it's going to take 18 months at the minimum, and probably closer to multiple years.
Joe Fabisevich (guest): And so I can't predict the price because I can't predict what will happen, but I feel very confident that demand will continue to rise. [01:10:00] So depending on how supply is constrained or opened up the price will follow depending on that. But also, in technology, we have spent the last 40 years not really facing, like, an optimization crunch.
Joe Fabisevich (guest): We oftentimes are just like, we can solve the problem with better compute, more hardware, et cetera. So one of the things that was kind of, like, revolutionary about DeepSeek was not its... The fact that it was a better model, it was that it was dramatically cheaper because they invented a new mechanism for caching.
Joe Fabisevich (guest): And so, like they did a... i'm pretty sure it was DeepSeek that came up with new techniques for KV caching. But it made serving models cheaper, right? And so we have been racing towards, like, improving the frontier that we don't even spend the time to optimize what we have right now.
Joe Fabisevich (guest): And so if there is some sort of crunch that would drive token prices up- AI labs may just reallocate their thought on how to [01:11:00] be more efficient and in a way to keep token prices down. So I am watching this just like everyone else is in that regard. I just think that we are not being particularly clever or we're not being particularly open-minded to the idea that there are many ways that things may go.
Joe Fabisevich (guest): Like, oftentimes when we're on... You know, when we're like, we see some news happen, we create an immediate reaction to it, and create an immediate, like, narrative around it, and then one day later that's invalidated. And so rather than trying to figure out how to respond to the news of the day, it's more important to develop, like, the foundations and fundamentals to figure out, like, okay, what does this mean in the grand scheme of things?
Joe Fabisevich (guest): So rather than making predictions, I'm like, "Hey, there's like a million ways this can go, and here's ways that I foresee it w- will possibly go." And I try and keep those in my mind all at once rather than saying, like, the price of AI will go up. For example, the price of serving an open source model is probably 80% cheaper than serving a GPT quality model.[01:12:00]
Joe Fabisevich (guest): And so maybe we will just choose to use open source models because they're good enough at creating our websites or creating our apps. And so that would change and invert the dynamics of the economics 100%. It would just completely flip the way that we currently think about AI and what the price of a token is.
Joe Fabisevich (guest): And so, yeah I think I've said this like four times. I'm like, I'm not in the predictions business. I'm just trying to, like, trying to ride this wave with everyone else and h- be one step ahead
Leo Dion (host): I think there's a lot we don't know that we don't know when it comes to this stuff. So like anytime, like that's my thing with like this whole like, oh, doomsday type scenario with AI is like we, we don't... I don't think we even understand what intelligence actually means. And I feel like over the next few decades we'll be like, "Man, back in the old days we thought intelligence was this thing that you could do artificially."
Leo Dion (host): And it's like, no, like LLMs are good and these models are good at very specific things [01:13:00] that is a subset of what I would qualify as intelligence. But there are other pieces that humans provide, like wisdom and experience, that I think like we, w- I think we'll value more in the future because we've been able to take this thing we call intelligence, and turn it into software and make it a product.
Leo Dion (host): But there's gonna be other pieces that people will provide that I think will be more important now that we're able to put it in a machine, I guess. Does that kind of make sense? I don't know how to... But I think there's a, just a lot we don't know that we don't know. Like I, I'm a big fan of history and like with, when you look at like the Industrial Revolution, we just kind of, we had no idea what the future would look like.
Leo Dion (host): And like, I think we kind of think everything, it's a straight line that goes up, but that's not the way it works usually.
Joe Fabisevich (guest): Yeah. There's two thoughts I have. One is I often live by F. Scott Fitzgerald's quote, which is, "The test of a first-rate intelligence is the ability [01:14:00] to hold two opposed ideas in the mind at the same time and still retain the ability to function." It's like, so we don't know what we don't know, and there are things that we don't know how to connect them, and so we have to just accept that there are two things that are very different and are both true, and figure out how they can both be true.
Joe Fabisevich (guest): That's just kind of what the act of living is to figure out how these things are. And to, like, provide an example, you know, Noam Chomsky spent his whole, like, life thinking about linguistics and theory of mind and connecting them, and now we have this, like, really strong counter example. You know, you can say it's like language is thought, or that to think is to use language, or language is a universal human property. And, you know, in the last three or four years, we have this counter example that proves that's just not true. And it may be true in some ways, but as an overarching thesis, [01:15:00] it's not inherently true that language is thought or that language is inherently human. Yes, it was... Like, you could say a large language model is trained on human language and human thought, but that doesn't mean that the way that we embody it will be uniquely human going forward.
Joe Fabisevich (guest): And so that changes the way that I think about this entirely, and I just don't have answers. I'm just trying to figure all this stuff out as I go as well, the same way that you said. And being comfortable with being uncomfortable, I think that being comfortable with being uncomfortable is going to be, like, a legitimately necessary and useful skill in the future of being a human being or the economy or whatever you want to think about it.
Joe Fabisevich (guest): It's just gonna be more and more important by the day to be okay with being uncomfortable. And the truth is that, like, you and I, we're, like, recording a podcast. We're happy and healthy, and we have a home and all that. A lot of people dealing with the discomforts despite, like, you know, even in modern living, life is not [01:16:00] inherently comfortable, right?
Joe Fabisevich (guest): Or, like, I think about my parents who were, like, refugees from the Soviet Union, and it's like they didn't know what their next day would bring them. And I think that we just have to be a little more okay with the fact that our lives will have elements of that. And I think that's the part that actually makes everyone really, like, anxious about AI, is what happens when that core assumption isn't baked in anymore?
Joe Fabisevich (guest): And having grown up at home watching that, I realize, you know, it's like it's never been baked in, for me at least. And but that's not to say, like, "Oh, it's all bad." It's to say that human flourishing and, like, a lot of beauty still happens even when there is discomfort. And so we just gotta take things one day at a time.
Leo Dion (host): Yeah. The, sorry to be a downer, but I also think, like, all the stuff, like the, like, "Oh, the future is this, the future is that," I think we, we go to b- worst case scenarios when we're just not even paying attention to, like, the issues that AI already [01:17:00] presents to us on a daily life, to actual, like, real people nowadays.
Leo Dion (host): Just, like, with people being more isolated and people, like... Or, you know, just the kind of the issues there that have come up with AI or people not understanding how to take what it says and understand that what it actually means. Oh, 100% like the internet. Yeah. Yeah
Joe Fabisevich (guest): I contend that we have not caught up to the internet yet. Like, we had this technological change that was 25 to 30 years ago where it was like, okay, suddenly things are connected, and we still haven't grappled with how to deal with that, and now we have this, like, accelerant that we've thrown in.
Joe Fabisevich (guest): And so we're moving on to the next problem before we even solve the last one, because that's the pace of technological change. And so we're living a very compressed version of that change when we haven't even figured out how to deal with that change, and are trying to come up with answers on the fly that are going to be resilient to whatever comes up.
Joe Fabisevich (guest): And that's [01:18:00] why I'm saying, like, I think it's just more important to be comfortable with being uncomfortable and not having every answer.
Leo Dion (host): Yep. Yeah, I mean, to me it's like, it reminds me of like when I, you know, in history when the printing press came out, and just any old schmo could come out with a pamphlet with all sorts of crazy things. Like, that's essentially what social media is right now, and being able to understand how to like sift between truth and fake news.
Leo Dion (host): I hate that term 'cause it's overused, but essentially that's what it is, right?
Joe Fabisevich (guest): Yeah. We, and also like, I mean, just to take it into a biological realm, but like we aren't designed biologically to be dealing with this many inputs all the time. So at least the printing press was like, okay, it took this guy like a day to put together all these pamphlets. But now I see like 10 things a week that previously would've been unfathomable and would've lasted in my mind for like a month, right?
Joe Fabisevich (guest): And I'm not equipped to handle this. I wrote an [01:19:00] essay about this called Artifacts, but the premise is that like people talked about the moon landing for decades, and then you remember the dress?
Leo Dion (host): Yes. Yeah, what color is it? Yeah
Joe Fabisevich (guest): Exactly. And then do you remember the two llamas?
Leo Dion (host): No, I don't remember the two llamas
Joe Fabisevich (guest): Okay, that's my point. So the two llamas was this, like, viral moment that happened where these two llamas escaped from a zoo, and it happened on the same day as the dress. Three hours later, the dress happened, and everyone forgot about the llamas, and that's kind of what, like, life is like today. It's like one crazy thing happens after another.
Joe Fabisevich (guest): We spent months talking... or years, decades talking about an event like the moon landing. We talk about, you know, there was this, like, there was this invasion by the Mongols where they destroyed, I forget which library. I have it in my essay, but it's, like, this beautiful library that the Persian Empire had built.
Joe Fabisevich (guest): And there was a line that said, like, the Tigris ran black with ink as if it was blood. And they just, like, took it so seriously that it was literally a century's worth of [01:20:00] thought was put into what happened and caused that. We don't spend... We don't have things that last centuries.
Joe Fabisevich (guest): We don't even have things that last more than a few minutes these days. And so we're just not designed to deal with all the stimulus, and I'm not trying to say like, "Oh, ban social media," or whatever. I'm just saying that, like, we're trying to say, like, how do we fix AI when we haven't even figured out how to fix the problems of the internet?
Leo Dion (host): Yeah, I agree completely. Yeah. Yeah, totally. All right, before we leave, let's talk about,
Broadcast Logging
---
Leo Dion (host): you have a new library you've been working on that's supposed to help with logging and iOS development and stuff. You wanna talk about it?
Joe Fabisevich (guest): Yeah. So I'm sure that you've had this experience where you're building an app and it uses... Like, Claude goes in and starts a bunch of logs so it can figure out what the heck is happening, right? So what I realized was what if your whole app did that [01:21:00] all the time? You just had logs that documented every action, every piece of state, every metric, every diagnostic.
Joe Fabisevich (guest): And this is actually kind of how, like, a lot of enterprise apps are built. They have just, like, unending amounts of logs that you can then trawl through. And the reason that I came up with this, though, was because I would basically have, like, Claude or Codex build a thing, and then I would have it, like, log out a whole bunch of stuff, and then it would be able to read through its own logs and determine what happened to understand the cause and effect.
Joe Fabisevich (guest): So if you can determine the cause and effect from start to finish, what you can do is hand... Like, these tools are so good at taking 100, 1,000, 10,000 logs and parsing through them to figure out what happened that then they can start beginning to solve race conditions and bugs that last, like, a year.
Joe Fabisevich (guest): So I have a bug in Plinky that I finally solved after a year once I built a new library called Broadcast, which is... Like, it's built upon this, like, internal library that I had for Plinky. But the idea is if you were logging every state and action that a [01:22:00] user takes, that even when you are not watching them use the app, you can figure out what happened from start to finish.
Joe Fabisevich (guest): So I mentioned that I gave Codex a spin dump and logs. I basically gave it... I asked the user to upload logs, and it happens automatically as part of my support process. And it correlated the events that they took to the actions of the spin dump to figure out where things were broken, and it's because lo- like, agents can't see anything, right?
Joe Fabisevich (guest): You can hand them screenshots, you can give them tests, you can give them, you know, after the fact figure out what happened, but they can't see things as it's happening. A screenshot is just a moment in time, but logs are forever. Logs document what you did. And so Broadcast is a logging library that makes it...
Joe Fabisevich (guest): is optimized for human readability. It's like, you know, really clean, nice, easy APIs that don't disrupt your code as much, but also optimized for agents to debug [01:23:00] your hardest of problems
Leo Dion (host): This looks amazing. We were talking offline about how I'm working on my app At Least which is a Apple Watch app for, like, a passive timer. And I wanted an iPhone component because you really can't make an app and have anybody see it in the App Store unless it's an iPhone app too. And I was working on watch connectivity stuff so you can start the timer on the phone, and Claude was great.
Leo Dion (host): It wrote a bunch of logs, so that way I can pay attention to what's going on the watch and the phone at the same time. This looks like exactly what I need for At Least, because I wanna be able to know, hey, is... Like, if I tap on the phone, why is it not starting the timer on the watch? And I want all those log statements and things like that.
Leo Dion (host): So I am really excited to try this out. We'll put a link in the show notes to this, but this is amazing
Joe Fabisevich (guest): One thing I forgot to mention actually is I-- it started as a composable logger. So your [01:24:00] watch and phone example is perfect, where your watch can have a logger, your phone can have a logger, and you can actually merge those two logs together to say, "When I took this action on my phone, then it did this thing on the watch, and when I did this thing on the watch, it took an action on my phone."
Joe Fabisevich (guest): And so you can hand one stream of logs that combines a watch, a server your phone, and I actually use this API. I have an analytics logger. I have a remote logger. I have a multi-session logger. I have all these different loggers that I can then turn to. And so analytics logs are formatted differently, so that way I can read my analytics in, like, a clear manner.
Joe Fabisevich (guest): It's like tap this, did this, track that. But if I'm trying to, like, optimize for an AI, I have a token optimized format that it exports to and says, "Great," like minimize the usage of the context window. So the idea is you can have many loggers and you combine them or you can separate them and filter them out as much as you want to get the information that [01:25:00] you need for either for you, for support, for AI, and for whatever, all with one simple API.
Joe Fabisevich (guest): So you just call log.debug, log.error, log.info, and it does all these things in multiple places at once.
Leo Dion (host): Nice. This is great. And it's ... Okay, so it ca- it can use OS log, but otherwise you can't ... Like, what would you recommend somebody do to get started using this with their app as far as, like, a log destination?
Joe Fabisevich (guest): The simplest destination is the session logger. All it does, it writes to memory, right? Like, it has a buffer that it's writing to and says, "These are the logs for this session." Now, what I found really helpful is it ships with support for multiple sessions at once using the open source library I maintain called Boutique, which it's basically like sometimes you have bugs that creep up over multiple uses.
Joe Fabisevich (guest): So, like, the user quit the app and then this thing started happening. If you have the multi-session logger, you'll actually be able to track [01:26:00] down bugs that are much harder to figure out where state is often a problem, or, like, state restoration or state cancellation happens.
Leo Dion (host): Okay
Joe Fabisevich (guest): I use the console logger so I can read through all the console statements that I want.
Joe Fabisevich (guest): But also combine it with a multi-session logger so that way when a user reaches out to support, it sends me their last 2,500 logs across multiple sessions, and then I can hand those 2,500 logs to Codex and Codex says, "Oh, here's the problem. I figured out where it is in the code and I fixed it for you autonomously."
Leo Dion (host): Awesome. That is amazing. Definitely check this out. I see you have set up you have your Claude plugin and your agents and stuff, so this is, like, ready to go. Yeah. Fantastic. Anything else you wanted to mention before we close out?
Joe Fabisevich (guest): No, I mean, the most important thing in my life right now is just saying, "Let's go Knicks," over and over again
Leo Dion (host): I know. That was amazing. That was my highlight of last week, and that says a lot because we had WWDC Nintendo Direct, [01:27:00] so yeah, that was great.
Joe Fabisevich (guest): week of my life was two months
Leo Dion (host): Yeah. Thank you, Joe, for coming back on. Where can people find you?
Joe Fabisevich (guest): Yeah. So I'm on Bluesky. I'm mergesort.me there. I'm also on Mastodon. I'm macaw.social/@mergesort. Really, I write at build.ms and fabisevich.ch. That's mostly where I am, but yeah, honestly, my name is very unique, so feel free to just Google me and you'll find whatever you need
Leo Dion (host): Awesome. Thank you again for coming back on. People can find me on Mastodon at leogdion@c.im, at leogdion everywhere else. Brightdigit.com, that's my company. I've posted on social media that if you are interested and want to talk about career, you wanna talk about automation and Swift, or you wanna talk about how to plug AI into your system for AI assisted development, there's a link in the show notes to free 30-minute consulting.
Leo Dion (host): Let's just chat and see if there's a way I can help you [01:28:00] in any of those things. And then if you're listening to this on a podcast player, Overcast, Apple, Spotify, please give me a review, and if you're watching this on YouTube, like and subscribe. Consider joining our Patreon patreon.com/brightdigit if you want these episodes right away, like this one.
Leo Dion (host): Thank you again, and I look forward to talking to you later. Bye, everybody