{\rtf1\ansi\ansicpg1252\cocoartf2820 \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 \f0\fs24 \cf0 The following is a rough transcript which has not been revised by Vanishing Gradients or the guest. Please check with us before using any quotations from this transcript. Thank you.\ \ \ Hugo Bowne-Anderson (00:02)\ Hey there everyone, I am Hugo Bowne Anderson of Vanishing Gradients. Super excited here today to be here with Greg Cicciarelli. What is up, Greg?\ \ Greg Ceccarelli (00:12)\ Not a lot, just another day in paradise.\ \ Hugo Bowne-Anderson (00:15)\ I couldn't agree more. And in fact, as you know, it's Thursday morning here, it's the future and I'm looking outside and it is a beautiful, beautiful day. So we're here to talk about building the future, right? How AI is transforming, who can create software. I'd like to welcome everyone here in the chat. Please let us know who you are, where you're calling in from and what your interest in such things is. Do you work in data science or ML or AI or your product manager who wants to learn more about how to use these types of tools?\ \ And if you like this type of thing, please give it a like and subscribe and share with friends. If you don't like it, just stop watching. It's as easy as that. Don't leave rude comments. That's fine. It's the internet. Greg, so excited to have you here. There's a lot of...\ \ A lot of conversation around vibes these days and vibe coding. And one thing I want to do with you today is kind of break apart. It's not vibes or no vibes, right? There's an entire spectrum, if not multi-dimensional space that we're working in. So to get started, I don't want to...\ \ dive straight into that. What I do want to get from you is just a bit about your background and your journey and how you ended up doing what you're doing at Spec Story because former CPO at Plurisight, Director of Data Science at GitHub, you've had a wide variety of work and career that you've done. So maybe you can just give us bit of background on how you got to where you are today.\ \ Greg Ceccarelli (01:44)\ Yeah, thanks Hugo. You know, I've had a meandering career to be honest. You know, when I graduated from university, I started as a management consultant. And it's funny because sometimes I joke like, hey, I'm still a recovering management consultant in some ways. But the one thing that that opened me up to is just like the variety of business and challenges and also working with data, quite frankly. It's where I actually met a couple of people that I think, you know, were mutually acquainted with.\ \ Hugo Bowne-Anderson (02:05)\ Mm-hmm.\ \ Greg Ceccarelli (02:13)\ and I realized that like, you know, in consulting you, you basically either it's an up or out situation, right? And you know, it's like, you're going to be a career consultant or you're going to move to industry. And so I was lucky enough about a decade ago to move out West. I do live in Washington DC today, but I lived in San Francisco for about seven years and that's how I got started in tech. but, yeah, so.\ \ As you mentioned, I've had a little bit of an interesting journey, you could say, I guess. And, you know, for a long time in my life, I was very focused on like the managerial track, right? That's just kind of what, what, at a certain point you realize is, or at least historically, it's been kind of like, you know, what you get rewarded for. But it's not the only thing you get rewarded for. And the thing I really enjoyed about the sort of tech scene, because it has its positives and negatives is\ \ Hugo Bowne-Anderson (02:54)\ Mm.\ \ Greg Ceccarelli (03:10)\ At a lot of companies that are, you know, software businesses, you can have a lot of impact in individual contributor roles. And just to kind of bring this around, I think, you know, the sort of threshold we're on where AI is starting to permeate sort of everything that knowledge workers do kind of makes you reevaluate, like where can you have the most impact? Is it managing very large teams or is it building\ \ Software that can have, you know, a very large impact on many perhaps smaller teams. So\ \ Hugo Bowne-Anderson (03:46)\ Yeah, appreciate all of that all of that context. And what led us to this conversation today is, as you know, I do, and among other things, do a lot of work building with with LLMs and AI. And the way you framed it to me is that you don't build AI powered products, but you you don't build AI powered software per se. But what you're interested in is building software using AI. So maybe you could just elucidate that distinction a bit more for us.\ \ Greg Ceccarelli (04:13)\ Yeah, and it's not black and white because to be quite fair, the product that we are building our current product iteration at SpecStory, which right now is a cursor extension, actually is also LL-empowered. But I am most interested in making it more accessible for those who might not be traditional developers or software engineers or, you know, on the fringes of that, right, technically minded, able to...\ \ Hugo Bowne-Anderson (04:26)\ Mm-hmm.\ \ Greg Ceccarelli (04:41)\ build more reliably with AI. So I think the distinction is, everyone since Copilot was released, GitHub Copilot, what's probably going on for years at least now, knows that there's like AI capability in the editor. And of course, recently you opened the conversation talking about vibes with some of the agentic SDE capabilities and tools like cursor or windsurf, or of course now GitHub Copilot is introducing their\ \ agentic coder, it's becoming more and more accessible to basically program with English language. so how do you democratize that? I think one of the things that's interesting to me, because actually at Pluralsight, one of the first sort of missions, and people aren't familiar with Pluralsight, think Udemy, Coursera played in the same space. It's online sort of ed tech.\ \ Hugo Bowne-Anderson (05:19)\ Mm.\ \ Greg Ceccarelli (05:40)\ professional training was to democratize access to technology skills. And I think that LLMs and AI are doing a fantastic job of that. And so, how do you kind of reduce the gradient of the scent that's required in order to start getting feedback on how you can bring your sort of ideas to life? That's where we're at right now. I mean, you can, and if you're on a certain part of Twitter,\ \ You can see that every day, right? People are vibing, building things, some of which are coming under scrutiny. But at the same time, I think it's widening the aperture of who is going to be able to experience telling a computer what to do and getting an outcome.\ \ Hugo Bowne-Anderson (06:11)\ Mm.\ \ Totally. And viewers and listeners may know this about me, but my background's in scientific research in biology, math and physics. And a large part of my career has been trying to help people with scientific and data-centric backgrounds build more robust software, right? So we've been coming at this from a variety of different angles. And we have mentioned the vibe. So I suppose it is worth drilling down now into how we can use\ \ AI assistants or these or co-pilots, whatever we want to call them to help us build software, not necessarily write code, but build build software. Right. So I think this all started with a tweet that Andre Carpathi\ \ wrote. I'm just going to read out part of that. He wrote for those who don't know this, there's a new kind of coding I call vibe coding, where you fully give in to the vibes. I love that embrace exponentials and forget that the code even exists. And I think we've ended up in a space where there is you know, there's a lot of friction and controversy around it and a lot of hate to be honest. So there are I think there are grifters on one side.\ \ and a lot of people dismissing it on the other side. I think in the middle, there's a lot of fertile ground to explore, to be honest. So I'm wondering from your perspective, how do you even think about starting adopting tools before we get to vibes? What's the continuum look like from starting to work with LLMs to doing like the extreme version of vibe coding and not even being aware of what's in the code per se?\ \ Greg Ceccarelli (08:00)\ Yeah. Well, I mean, of course it all comes down to what your sort of professional expertise or prior knowledge is. But I mean, there is a big sort of spectrum of products out there on the market today. Some of which are, I think now like some of the fastest growing SaaS products, probably since whiz, which just got acquired by Google like the other day, I think it held the record. and so\ \ Hugo Bowne-Anderson (08:22)\ Mm.\ \ Greg Ceccarelli (08:25)\ You know, for me, whenever I was really starting to explore some of these tools more specifically, I'd say kind of like, I would argue that today they kind of compete against the web builders, like the web flows and Squarespace's. There's like bolt.new, there's lovable.dev, there's, know, basically more constrained environments that allow you to prompt Git code.\ \ see that version code in sort of like a sandbox that you can instantly deploy and iterate on it. The one downside to some of them are they restrict you in terms of like the frameworks and technology stacks that you can use. They're mostly like TypeScript or JavaScript, right? And like you're gonna build like a React app and it's a little bit better than, you know, like sort of the sandbox experience that Claude, for example, offers via its artifacts functionality. But I think\ \ Hugo Bowne-Anderson (09:01)\ Mm.\ \ Greg Ceccarelli (09:24)\ Those are probably some of the easiest entry points if you're interested in like, hey, how can I use natural language and sort of get working software? Because they're all self-contained. And I think a lot of people are starting with them. I'd say in the middle, probably like a product like Replit, right? You can code in pretty much any sort of language you want. You can use natural language. You can write the code. It's completely hosted. It's deployable. And then sort of, you know, the most technical.\ \ Hugo Bowne-Anderson (09:33)\ Mmm.\ \ Greg Ceccarelli (09:53)\ are the IDEs, right? The ones that we sort of talked about at the beginning, but just to say them again, it's like, you know, have the VS Code forks like Cursor and Windsurf. You have some of the open source products like Ader, Klein, and, you know, depending on your comfort level, like if you haven't opened an IDE in five years, maybe you'd want to start, you know, more on the left side of that spectrum, but there's a great continuum. And then...\ \ I think for a lot of people, should mention like v0.dev from Vercell, right? Because more and more it's becoming something that, you know, can almost completely build, host, you know, anything built with like Next.js, right? Cause that's their bread and butter. But for me, it was actually starting a little bit with a sprinkling of v0.dev. I dipped my toe a little bit into lovable, but I really figured out that, you know, I wanted a lot more control and that's...\ \ what kind of got me on the cursor train probably back in August of last year.\ \ Hugo Bowne-Anderson (10:52)\ Mm.\ \ So, August 2024, which led up to your quote unquote September moment. So maybe you can tell us a bit about your September moment and what happened in that magical month.\ \ Greg Ceccarelli (11:07)\ Yeah, well one of the things that I do beyond software compose vibe code, you know, try to find product market fit for a startup Read a lot is I also write and I have a I have a sub stack called meditations on tech and What Hugo's referring to which maybe goes in the show notes or you can send a link around\ \ Hugo Bowne-Anderson (11:28)\ Yeah, and I'm going\ \ to link to it in YouTube right now as well, but yes.\ \ Greg Ceccarelli (11:30)\ Yeah, is something that I wrote actually, I think it was in January, which was a little bit of a personal expose on really the feeling that I want to be able to express and convey to as many people as possible about one, sort of like reinvention, and two, about just what you can do if you put your mind to something.\ \ Hugo Bowne-Anderson (11:58)\ Mm.\ \ Greg Ceccarelli (11:58)\ I\ \ think a great aphorism is, you know, not very many things are difficult, just unfamiliar. And as you build like more familiarity with things and you do things sort of every day, right, and you really apply a lot of focus to the thing that you're interested in, you can get really good at it. And the thing about, you know, building with AI is that it is a completely different skill set than writing traditional software, you know, right? Because\ \ Hugo Bowne-Anderson (12:14)\ Yeah.\ \ Greg Ceccarelli (12:27)\ If you think about the way that, well, first of all, it's stochastic, right? It's going to be influenced by the sort of quality of the inputs, AKA your prompts and the context that you can feed models. But there's a lot of like rough edges that you have to learn about. But once you start to dig in and you experience sort of, you know, more outcomes because you're doing it consistently with purpose, I think it can become very intoxicating.\ \ One of the reasons why is because you actually get to make less decisions. There's actually another great sub-stack, I'll just plug it here, by one of the co-founders of Mode. I think it's just like Ben.substack. And he talked, yeah, Ben Stansel, he wrote about this. He wrote about this intoxicating feeling, where I'm kind of lifting some words from one of his more recent articles. It might've been like two weeks ago.\ \ Hugo Bowne-Anderson (13:13)\ Ben Stansel. brilliant. Yeah, yeah.\ \ Greg Ceccarelli (13:26)\ talking about this fact that you actually sort of see decision-making. And I think when we talk about vibes, right, if you're going to the extreme of vibe coding, often what happens is you kind of allow yourself, you allow what's being built to get ahead of your understanding of what's actually happening and you're not understanding maybe, you know, not just the architecture of what's getting built, but like actually what's happening under the hood, what the code is doing. And...\ \ Hugo Bowne-Anderson (13:51)\ Mm.\ \ Greg Ceccarelli (13:53)\ For some people that might be fine depending on the purpose of what you want to use that resultant code for. But it is empowering because you can focus on higher order abstractions and depending on, again, what you're doing it for, it can be extremely fruitful. I'm going to stop for a second, but I'll get more into some other use cases if you want to talk about why I think it's so fruitful.\ \ Hugo Bowne-Anderson (14:15)\ Ahem.\ \ I'd love that in a second. does kind of bring to mind, I'll link to this as well. John O'Whittaker has from answer AI and from being a\ \ a legend has a great post about something that he vibe coded and the details don't matter for the purpose of this but he sent it to some people then they asked questions about it and he was like I don't really understand what's happening and he was like I'm gonna go and build it myself and I may be you know missing a few details here but when he built it himself he realized it was reducible to three modules that were connected in a particular way and he then understood the inner workings of it right and it just reminded me when I started working in biology previously I was working in math maths as we say here\ \ mathematics. And it kind of reminds me of the difference between closed form solutions to equations and simulating things. And when I started working in biology, stuff was so complex, you can't get closed form mathematical solutions to a lot of things. So you use, well, I use MATLAB and then jumped into Python in the then IPython notebook pre-Jupiter times, and started simulating stuff and having this little lab on my laptop. And I didn't necessarily understand the math behind, you know, the systems I was building, but\ \ the power to build something complex there with slightly less understanding but something far more complex, I think this is reminiscent of that for me.\ \ Greg Ceccarelli (15:37)\ Yeah, it is. And like, of course, you you can use software composition, vibe coding, know, AI assisted programming, even like some people have named it like chat oriented programming. Like it's all a kind of thing chop. Um, beyond it being intoxicating because you can sort of make less decisions and beyond simulating things. I think, you know, being able to explore both problem spaces and solution spaces really quickly with a really fast REPL cycle.\ \ Hugo Bowne-Anderson (15:48)\ Chop, yeah.\ \ Mm.\ \ Greg Ceccarelli (16:06)\ Right? It's kind of like what makes people gravitate to like interpreted languages versus compiled languages. Cause you could just like, you know, especially if you're working in the data field, you can just see, can, you know, write a function, run it, see what the variable states are, modify it, interact in the terminal. And in a lot of ways that compressed cycle time of getting fast feedback is one of the biggest benefits, right? To what building with AI.\ \ Hugo Bowne-Anderson (16:12)\ Mm.\ \ Greg Ceccarelli (16:35)\ specifically sort of ceding more control over to the LLM as you're prompting affords. And that is extremely, extremely beneficial because, you know, if we abstract up a little bit, think about the way that software has been built for the last 20 years and actually probably beyond that, it's required a lot of specialized skill. And especially if we're talking about software that's getting built for a business use case, you know, it's, there's,\ \ Hugo Bowne-Anderson (16:57)\ Mm.\ \ Greg Ceccarelli (17:04)\ sort of like ROI cost equation, right? And so if you can reduce that, even if AI assisted programming hasn't really taken off for production use cases to the extent I believe it will, that holds a ton of promise and has a huge amount of impact that I think we're just starting to scratch the surface of.\ \ Hugo Bowne-Anderson (17:25)\ Yeah, totally. We have a great question around building trust with these systems and how dangerous it is for people starting, which I want to get to. before that, do want to... So Charles Fry, and I'll link to this tweet, who's a colleague of mine, I presume, know, Charles, but yeah, cool guy, huh? Amazing hair and spectacles as well. He wrote the complaints about vibe coding, in my opinion, not even wrong.\ \ Greg Ceccarelli (17:39)\ Yep, I've met him.\ \ Yeah, great hair.\ \ Hugo Bowne-Anderson (17:54)\ It's a terrible way to build software as we currently do it, where software machines have many nines of reliability and used by millions, but a great way to build ephemeral end user program software. what this speaks to is just the increased surface area of what we're able to do now at this high level abstraction. So I'd love your thoughts on that before we jump into a bunch of concrete things that you've worked on.\ \ Greg Ceccarelli (18:20)\ Yeah, well, I wrote a post about this sort of ephemeral or disposable software. I think it's titled something on my sub stack along the lines of like more software should die young. And I used that analogy around like disposable cameras, right? And what sort of that afforded in this area that disposable cameras in their heyday allowed for, right? know, before people obviously had, you know,\ \ Hugo Bowne-Anderson (18:37)\ Mmm.\ \ Greg Ceccarelli (18:47)\ fantastic high resolution megapixel cameras sitting in their phone, like you would take it to a party. You would like not care about like what happened to it. You would capture moments that you otherwise wouldn't have brought your, you know, your Nikon to or whatnot. And you were able to, you know, have a lot of fun. so there's a lot of different types of, I think scenarios where, you know, building something\ \ today in two hours to solve a particular problem in a way that you couldn't have before, even if you're the only user, makes a whole ton of sense. And it could be in a work setting or it could be in a personal setting. And like, for example, maybe to sort of lead myself, one of the things I was doing earlier last week was for one of the pieces of functionality that we just released for spec story, it sort of auto-derives your cursor rules.\ \ And this is one of those things that is actually LLM-powered, whereby we send some of your sort of like chat history. This is only if you want this, of course, you send your chat history. send sort of like the state of your project folder, our system prompts available on our docs. using a set of file headers, we help people like auto-derive their personal rules for them that you would have had to otherwise sort of manually write.\ \ And it's experimental and we're not sure actually how to evaluate it very well because it's kind of like, what do you test there? But that's a separate subject. The point of that exposition was, I wanted to explore some pretty complicated trace data out of the service that we're using to log all of these requests, Heliocon. And I needed to download like,\ \ Hugo Bowne-Anderson (20:19)\ Mm.\ \ Greg Ceccarelli (20:38)\ this fairly large set of requests and it's in this very sort of complicated JSON. And, you know, if I didn't really know the, the, relationship between some of the tables or whatnot. And, you know, if you've ever worked with JSON in SQL to start to explore it, you know, like most editors don't allow you to like natively browse that. So I was like, I'm going to roll my own editor just for this use case to get a bearing on, you know,\ \ Hugo Bowne-Anderson (20:56)\ Mm.\ \ Greg Ceccarelli (21:06)\ what I ultimately want to extract, which are these like text chunks of these requests. And so I did that and I would have never done that. Like, I couldn't have ever done that, first of all. And I would never have done that in any, I don't know, prior life. And not only was it rewarding, it helped me like solve the problem in a way that I could have spent a lot of time finding the perfect SQL IDE to, know, ingest this data into and explore it. But I was like,\ \ You know, the cost of going down this route is, you know, a couple hours of time. Why not?\ \ Hugo Bowne-Anderson (21:41)\ Totally. And I'm interested in that case. Did you need to just introspect into the code and check out the code a bit to make sure it was doing the right, the thing you thought it was doing, like not serving you incorrect traces or something like that?\ \ Greg Ceccarelli (21:54)\ Not in that case. it was a multi-step process. So first of all, it was like, okay, how do I actually download this stuff? I had to get familiar with like HeliCone's API and then.\ \ some of the data that comes out of Heliocon API because some of these requests response pairs are so gigantic or actually stored in S3 buckets. And, you know, I'm using LLMs the whole time, right? But then it was like, well, I want to build this specifically because I want to store this data on disk and it's about like 14 gigs. So I use DuckDB. I'd never used DuckDB in my entire life, but I'm like, this seems like a good technology to try. And because a lot of the like sort of scripts to...\ \ download from the API, from their GraphQL endpoint. I was using Python. was like, I'm gonna roll this thing in a framework that I've never used. Because a lot of stuff that I build is in TypeScript because LLMs have a lot of TypeScript and JavaScript in their training sets and are pretty good at it. I actually used FastHTML and also the sort of like newest ShadCN sort of like component library monster UI, which I had also never used.\ \ Hugo Bowne-Anderson (22:41)\ Mm.\ \ Greg Ceccarelli (22:54)\ And so a lot of the time that I spent sort of debugging and troubleshooting, you know, building this IDE was around, you know, one, my low exposure to some of those technologies, but two, the LLMs low exposure to those technologies. But luckily, Isaac Flath, who is the gentleman who came up with Monster UI has made a lot of their docs very accessible to LLMs using the LLMs.text sort of, you know, new proposal for, I guess you could call it.\ \ Hugo Bowne-Anderson (23:21)\ Mm.\ \ Greg Ceccarelli (23:24)\ um, AI empathy, right? Like how do we make it easier for the AI?\ \ Hugo Bowne-Anderson (23:28)\ So for those\ \ who haven't heard of this, it's kind of like when you put in whatever index equals true and all that stuff to make sure that search engines can read your websites. There's something for LLMs, lms.txt.\ \ Greg Ceccarelli (23:41)\ Yeah,\ \ those folks that have docs, you know, can basically expose all of their docs as markdown. Yeah. And so like, yeah, that was sort of the path and sort of journey I took for that particular use case. Yeah, just to put a bow on it.\ \ Hugo Bowne-Anderson (23:48)\ Yep.\ \ Awesome. And\ \ so essentially you're talking about, among other things, it's you building up\ \ spitting up ephemeral tools for exploratory data analysis. so like a lot of people, that's what we do in data science. We use notebooks for that. And people complain that notebooks like cell execution, blah, blah, blah, blah, blah, missing the point of what notebooks are for. And they're not necessarily for entirely reducible stuff all the time. Although you can do that. I'm not going to start any flame wars, particularly with our mutual friends. But the idea that\ \ you know, for data analysis, for data science, even for ML exploration, you can start building ephemeral tools for dashboarding or whatever it may be to explore your own stuff. I think that's incredibly exciting as well.\ \ Greg Ceccarelli (24:40)\ Yeah, you can. actually something I could show because Hugo and I, you know, we've been debating like, do I do a whole live demo or like maybe build off something that, you know, it's pretty existing because there's all some of it's a lot of trial and error and I'm happy to show sort of like the vibe coding plus vibe debugging process. But one of the things I was actually doing this afternoon around 2 p.m. my time, like so five, I don't know, six hours ago is.\ \ Hugo Bowne-Anderson (24:54)\ Mmm.\ \ Greg Ceccarelli (25:06)\ I was thinking like, what could be cool to show for this audience? Because a lot of the stuff that I'm building, well, it's obviously related, isn't necessarily targeting the sort of probably core audience that you have of like data scientists, machine learning researchers, sort of like applied ML folks. And, you know, I did spend a long time at GitHub where actually I was like the director of data science and machine learning prior to joining Pluralsight. And I know that people have so many gripes about\ \ Hugo Bowne-Anderson (25:19)\ Yeah.\ \ Greg Ceccarelli (25:36)\ the way that certain types of data assets are handled in repos, of course, like the whole Jupyter Notebook thing. I actually went and built a little Chrome extension that marks up the DOM of GitHub and allows you to write SQL against CSVs in any repo, which I'm happy to show off.\ \ Hugo Bowne-Anderson (25:52)\ Awesome. That'd\ \ be cool. so we'll do the demo. We'll do some things at the end, but I'd love to see that. I am, I am interested in, let's get to this question from Mr. Me 77. How his questions, how dangerous is vibe coding coding for people starting in data science and perhaps in terms of losing problem solving skills among other things.\ \ Greg Ceccarelli (26:00)\ Yeah.\ \ Yeah, well, mean, dangerous is kind of a pretty broad, like that's probably also a pretty broad spectrum. think, look, like, you know, I talked about it being intoxicating. think depending on, you know, depending on your identity, honestly, and what you care about, right? Like some people, for example, really care about understanding\ \ Hugo Bowne-Anderson (26:23)\ Mmm.\ \ Greg Ceccarelli (26:41)\ certain things very deeply, or they get a lot of satisfaction and have a lot of incentives tied to, you know, becoming extraordinarily technical and understanding the inner workings of a particular language or problem space. If you are more of a generalist, however, and you want to get broad exposure to a lot of, I don't know, different surface areas, application stacks, technologies, know, languages,\ \ Hugo Bowne-Anderson (26:50)\ Mm.\ \ Greg Ceccarelli (27:06)\ I certainly don't think it's dangerous for that. In fact, I think it makes that actually accessible. But like anything, if you rely on something, a tool, then naturally you probably could lose some amount of your past expertise. But I think it's all about how you use it, like anything. And so if the question about danger was about, are you going to, I don't know.\ \ I don't know what that means, so maybe we have to clarify, but I think, depending on the setting in which you're using products like this and what the stakes are, or perhaps what the user impact is, that's where perhaps some of the notions that Charles was describing around it might not be appropriate for production come in. But I think the reason that is, is the world today is extraordinarily code-centric.\ \ Hugo Bowne-Anderson (27:55)\ Mmm.\ \ Greg Ceccarelli (28:03)\ everything is code-centric. All the tools we use are code-centric. If you want to know how a piece of software runs, the primary source of truth is the code. And we didn't really talk about this at the onset, but one of the bets that's just inherent to what we're doing in spec story is that beyond the code as the only source of truth, the spec, the sort of specification that might be sort of iterated over\ \ Hugo Bowne-Anderson (28:03)\ Yeah.\ \ Greg Ceccarelli (28:32)\ via prompts or maybe top-down generated becomes another extremely important asset because as more and more folks start to use agentic coding sort of software for delivery, you you want to have that traceability from the actual intent that you expressed, however you did it, to the actual code that got generated. And if you can do that more reliably, then I think in, you know, more work settings, for example, it will...\ \ grow in adoption because today, if you use, for example, Cursor or you use Windsor for Copilot, all your prompts, all your chat history is not actually tied to the code. And that makes traditional challenges if you think about software development as having sort of two loops, right? An inner dev loop where people go from, you know, code to build to sort of test to compile to push, right? That's the inner dev loop.\ \ what folks are doing all day to the outer loop of activities where you might go through a code review process. Your code gets tested and integrated through a CI-CD pipeline. It's obviously built and then deployed and released. That is not just a technical process. This is like a socio-technical process. If you can generate code extraordinarily quickly, you don't know what it does, you can't explain it.\ \ if someone's interrogating it via code review process and don't know what your intent was even to produce it, like the likelihood of that getting integrated into a company's code base is low, right? And so I think, you know, as, as this space matures and obviously, you know, lot of the thesis behind the business, even though it might not be evident from our current product iteration is around what is the new store for intent? What should that be? How do you think about\ \ You know, English language is a first-class citizen. How do you think about conflict resolution at the intent level? How do you, you know, store or version that? And how do you link it to the code artifacts that get generated from it?\ \ Hugo Bowne-Anderson (30:41)\ Totally. So well, the other thing of course is LLMs can be great at helping us figure out what intent from natural language is as well compared to at least previous versions of natural language understanding and these types of things. am, something you've spoken to is not only the different types of software that can be built as a function of cost as well, but the types of people that can build build software. So do you see, you know,\ \ different personas being able to work more closely on building software together now and in the future.\ \ Greg Ceccarelli (31:16)\ So totally, that's the, like, yes. I mean, I think it's, it's, I haven't observed it much in the wild, but you know, one of the things that we have started to do as part of research for where we're taking the future of spec story is talk to users of our current, sort of single player focus tool and understand sort of like what they're doing with it. And\ \ Hugo Bowne-Anderson (31:40)\ Mm.\ \ Greg Ceccarelli (31:41)\ We actually just had a research conversation yesterday with a large public company that we learned had encouraged many of their software engineers to download and use SpecStory. And we were lucky enough to basically meet someone at that company who mandate in the engineering organization is to sort of drive AI tool use adoption.\ \ And they have a very large effort across their engineering base to do so. And so you asked about other people, I'm going to get there in a second, but I think what's really interesting for us, one of the learnings was like, there's even a spectrum within engineering of who's adopting or not adopting, you know, more agentic, you know, composer-like workflows. And one of the...\ \ Hugo Bowne-Anderson (32:21)\ Hmm.\ \ Greg Ceccarelli (32:40)\ one of the things that they're using some of the of prompt histories for that they sort of version, because all of them get dumped if you're using the extension into like the root of your sort of project structure and you can push them to get or whatnot, is actually helping to debug sort of prompts, right? So for people that haven't sort of operated that way, that are learning this sort of new way of communicating with their computer, like, why didn't...\ \ this series of prompts actually have the effect that I thought it would. They're actually using that as an internal education device in order to basically generate more adoption of these products internally because of their sort of belief systems and some of the company incentives around it. But on the flip side, at that same company and some others, we know that product managers and designers and people who are not\ \ sort of naturally in the code are starting to adopt either some of the AI IDEs or some of the other sort of peripheral products like we talked about at very beginning, like the lovable.devs or the bolt.news or even the v0.devs in helping aid whatever they're trying to do, whether it's build a fast prototype or series of prototypes to explore a solution space or help design something.\ \ Hugo Bowne-Anderson (34:03)\ Mm.\ \ Greg Ceccarelli (34:03)\ So yeah,\ \ I think that it's just a matter of time until it grows in adoption and sort of the folks on the fringes figure out that, you know, with precisely specified intent, just how much you can actually do.\ \ Hugo Bowne-Anderson (34:18)\ And I know that something you think quite a bit about is how different personas and different people in different teams or the same team can interact with LLMs and agents more generally. How do you see the future of agentic structures and vibe coding existing within teams?\ \ Greg Ceccarelli (34:42)\ Interesting. How do I see them existing within Teams? Meaning, give me an example.\ \ Hugo Bowne-Anderson (34:46)\ Well, for example, right now, agentic coding assistance like cursor at a single player, right? You and I can't, we could pay a program with it, but we can't, you can't be there and me here and us have a three way conversation with an agent that, that helps us with stuff, right?\ \ Greg Ceccarelli (35:05)\ Yeah, it's okay. Great question. Now I'm tracking internally. I have two co-founders at spec story and some folks in engineering and we actually do what you're what you've just said almost every day. So, and a lot of this is because some of the tooling doesn't exist to make sort of like asynchronous review better and easier. Like I was sort of alluding to, but we call it try composing. So what that means is\ \ Hugo Bowne-Anderson (35:30)\ Mm.\ \ Greg Ceccarelli (35:35)\ It's me, another person and the agent, right? That's the, it's not a pair, it's try. And we've explored a couple different ways of doing this. So one, if we were on Zoom, we could do this easily. I don't know if this particular recording service allows for it, but you can actually have, can actually take control of someone's screen. And so we've done it that way. If we want to, for example, send prompts,\ \ we'll use, you know, like Super Whisper, right, to record our voice that obviously works over a Zoom type interface and sort of be able to both reason about the code that's getting generated and sort of the next set of steps that we want to take and make it be sort of collaborative. But I think one of the things that I actually want to explore is, you know, and there aren't good products for this, at least as far as I've been able to find.\ \ Hugo Bowne-Anderson (36:08)\ Mm-hmm.\ \ Greg Ceccarelli (36:33)\ Is what you're saying. Like how could you actually kind of do it? Like together you can kind of do this by the way on replit so you can create a replit project and you can actually Send Like multiplayer prompts, but at any given time, you know, like whatever the LLM is accessing is it's only it's gonna sort of work sequentially\ \ Hugo Bowne-Anderson (36:42)\ Mm.\ \ Greg Ceccarelli (37:00)\ But you can sort of share the ability to prompt a single project together today on like a Replit. We just don't use Replit that much internally. And so I would love to be able to, for example, spin up a multiplayer cursor composer session that somehow could modify the same code base at the same time. You can do it. think, although I haven't explored this in great depth with like Git, I think they're file trees.\ \ Hugo Bowne-Anderson (37:08)\ Super cool.\ \ Greg Ceccarelli (37:30)\ It's a little known feature of Git that allows you to basically create multiple branches with like, basically instead of just branching onto a new branch, it actually copies a directory for you. And then you sort of merge them in the same way. I think they're called Git file trees. I wanted to explore that. We've also tried to do it simultaneously by setting up a server that would basically sync a network drive.\ \ Hugo Bowne-Anderson (37:30)\ Mm.\ \ You're right.\ \ Greg Ceccarelli (37:59)\ and it didn't work super well. But we've explored some of these like multiplayer use cases. Yeah, it's, yeah.\ \ Hugo Bowne-Anderson (38:07)\ Super cool.\ \ And you call it tri composing? that? Tri composing. So this actually, this has been implicit in our conversation. We've alluded to it, but this idea of modern software work being more about composing and that reframing. I'm actually gonna read to you a tweet you wrote. And I kind of want to...\ \ Greg Ceccarelli (38:10)\ Try composing.\ \ Hugo Bowne-Anderson (38:28)\ discussed the start of it first, but all of it I'm really aligned with you wrote low key hate, vibe, vibe, quoting, vibe coding. is okay. I'm going to start again. Low key hate, vibe coding. is such a polarizing and now in many cases pejorative term. It dismisses dismisses the reality that a lot of modern software work is more about composing, integrating API's, configuring tools and orchestrating systems. Software composition is a better descriptor of what's been made possible with SDE agents. It's real work. Even if\ \ doesn't fit the old school definition of programming where you write line by agonizing line. So I actually want to break this apart and not even get to soft composition at the start. Your second sentence is vibe coding is such a polarizing and in now many cases pejorative term. you just tell me why you think this is and what's happening right now?\ \ Greg Ceccarelli (39:18)\ Yeah, I mean, it's like the X-Twitterfication of things, at least that's where, because that's where I think a lot of the conversation is happening at the, you know, like with the sort of the frequency and speed of, know, if you're on a certain part of Twitter, right, that part of Twitter, you're going to see people that are just engagement baiting, showing like, hey, I built this SaaS software product and...\ \ two minutes and blah, blah. Or like check out me one-shotting this game I made, right? And it's like very sensationalized. And I think that's the thing that I don't love because before Andre coined that phrase, vibe coding, I actually have to give credit to a great content streamer, Riley Brown. He started a community called Senior Software Composer.\ \ Hugo Bowne-Anderson (40:08)\ Mmm.\ \ Greg Ceccarelli (40:12)\ where I picked up on this phrase of software composing and I'll drop in our chat. I wrote this article, was sort of cross-linked on my meditations on tech sub stack, but also it's on Tola Capital's sort of ideas page around the rise of the software composer, where I really tried to break down, like the definition of it. And the reason I like composition is, you can think about\ \ A lot of the work again that we do today is building on top of libraries and things that have been already written for us. Like that's the benefit of open source, but you're gluing a lot of things together ultimately, right? Like you're figuring out how to make an API call here or there and you know, what the API of library is you're using. And I think it's like for a lot of software use cases,\ \ that is ultimately what you need to do is you need to figure out how to sort of compose the right solution as if you were, you know, a musical like composer, right? You're not inventing new notes, you're inventing sort of a new melody stringing together a bunch of pre-existing notes or in this case, pre-existing software, right? And that's why I like the sort of phrase.\ \ Hugo Bowne-Anderson (41:20)\ Mmm.\ \ Greg Ceccarelli (41:36)\ in the term a lot better because people have just sort of taken vibe coding too far to the nth degree where they aren't actually thinking about what is getting generated or what is getting quote unquote written. And that might be appropriate for some cases, but even disposable apps, right? Some of the things that I've built internally, some of the things I've shared in like my September moment, right?\ \ Even if I didn't know precisely what everything was doing, I understood how the program or the sort of product fit together. And I could reason enough about it because I was able to test it, change it, test it, see it like that, right? And when I say test, mean test the functionality of it in a lot of cases, because if it's not gonna be something robust, you're probably not going to care about writing a lot of test cases for it, but.\ \ Hugo Bowne-Anderson (42:22)\ Mm.\ \ Greg Ceccarelli (42:31)\ If it is, maybe you should. And there's a lot of heuristics around how you can take that approach and get pretty far, even if you don't precisely know the particular language you're working in or every single thing that is happening in the code base. Which, by the way, people that work in professional software and are professional developers or engineers also don't know everything that's happening in an entire code base anyway. So yeah.\ \ Hugo Bowne-Anderson (42:57)\ Hmm.\ \ Totally. And on top of that, a lot of the time when we're building MVPs, right, like we will use stuff we don't know and spend days classically Googling stuff, right, about packages we don't know much about. And now we get to do that using, you know, the sum of human knowledge as encoded in large language models, right, which is pretty.\ \ impressive and that's why I think one of the critiques of you can't build production robust reliable secure software using it is not even wrong because that isn't that isn't what we're claiming\ \ Greg Ceccarelli (43:33)\ Yeah, well, I think that it's all about the approach. So one of the things that I'll sort of talk about a little bit is there's different modes that we even internally go into, right? And I like to define them as being either explore mode or exploit mode. Meaning if I want to get a feel for how something's going to look or feel, know, building a prototype is much, much better than\ \ writing a bunch of user stories or a very large PRD document, right? Because people can naturally, people naturally perk up and actually participate and have a reaction to something that they can sort of kinesthetically feel, touch, you know, right? Experience. And when you're sort of in explore mode, when you're software composing or vibe coding, right? In a setting that is not, you know, totally for shits and giggles, right? Then,\ \ Hugo Bowne-Anderson (44:16)\ experience.\ \ Greg Ceccarelli (44:31)\ you have this sort of agency and leeway to take sort of more risks, right? But then as soon as we actually figure out like, hey, maybe this prototype for this particular part of a solution space we're exploring is something that we want to kind of make real, make production ready and integrate into our app. It's not like we go back and like completely rewrite everything from scratch. We just enter a different mode, which is kind of like the exploit mode where\ \ in like a tri composing session, which is very similar in a lot of ways to pair programming or like mob programming, right? Where you're all kind of looking at the same screen and someone's driving. We make a very discreet work plan from maybe what we've software composed and go through and hopefully we're like committing that or if we didn't commit that at every sort of step, we go through and make.\ \ sort of like a work breakdown structure. We work in small batches like you should and we review the contents of the commit, right, together and make modifications there to the commit before we actually push it on to the branch that hopefully will get integrated into main, right, and shipped. And that's a very different mode in mindset because you're turning on your like, you're turning up the scrutiny of like what you care about, right?\ \ Hugo Bowne-Anderson (45:54)\ Hmm\ \ Greg Ceccarelli (45:55)\ you care about different things because if this is in your production app or production feature or whatever it is, you want to make sure that you understand it. And you want to make sure you understand it because at some point, if there is user consequence to something going wrong, it's like the old saying, who's going to respond to the pager at midnight and be responsible for the fix if there is a need for that. And so if we can build enough confidence that yes,\ \ we might've run far ahead of ourselves to get sort of an idea of what it was precisely that we wanted to actually make real and then sort of take a couple steps back and say, okay, now that we're ready to make this real, we're gonna break it down and build a shared understanding of it. Not wholly in a traditional sense of we're gonna go back and rewrite every single thing from scratch, but the sort of.\ \ Hugo Bowne-Anderson (46:50)\ Mm.\ \ Greg Ceccarelli (46:51)\ engineering constraints and the sort of technical requirements of how it should function, know, coding standards that we have or have developed, you know, like just like the way we want to name variables, for example, like make sure that's consistent, right? Make sure that we're not, you know, actually injecting a bunch of duplicative code into our code base because LLMs are really great at like duplicating a lot of things unnecessarily. Like, yeah, make sure it's, make sure that's cogent, right? And so it's, we'll do a different version of\ \ Hugo Bowne-Anderson (47:14)\ file structures as well though Yeah, and you can get it in get a\ \ URL them to help with this as well right if you're in the loop with it really nicely\ \ Greg Ceccarelli (47:24)\ Yeah, I think the biggest misnomer is that you know, vibe coding or software composing doesn't require technical understanding. It most certainly does. And it requires being able to understand what questions to ask. Like you just mentioned around, is like, you could build a gigantic sort of single file app, right? But\ \ There's a couple of reasons why you might not want to do that. One is obviously as the file grows in size, it's much harder for the AISDE agent to hold that in its context window. It's going to chew through a lot of that way more quickly, but you also run the risk of having inadvertent regressions where the LLM might delete something. So it's like, okay, when do we actually take the step to modularize this and break it apart and maybe break it down into components or...\ \ you move these files that are obviously we're able to extract into a different location. so yeah, it's just like lots of very obvious common software development approaches. Those don't go out the window. In fact, that becomes the most important thing, the architecture of how you build, what you're gonna build, and that never goes away.\ \ Hugo Bowne-Anderson (48:46)\ I agree completely and I've just linked to, it's a shame I agree with everything you're saying Greg, I just linked to a post by an essay by Tim O'Reilly called The End of Programming as We Know It in which he mentions Chip Hwen who wrote the book AI Engineering among other things but and\ \ an observation he made to her in an email. Chip wrote, I don't think AI introduces a new kind of thinking. It reveals what actually requires thinking. No matter how manual, if a task can be done by a handful of those most educated, that task is considered intellectual. One example is writing, the physical act of copying words on a paper. In the past, when only a small portion of the population was literate, writing was considered intellectual. People even took pride in their calligraphy. Nowadays, the word writing no longer refers\ \ to this physical act but the higher abstraction of arranging ideas into a readable format. Similarly, once the physical act of coding can be automated, the meaning of programming will change to refer to the act of arranging ideas into executable programs.\ \ Greg Ceccarelli (49:52)\ I mean, I can't say I disagree with that or you either. I mean, that's the whole concept of this higher form of abstraction around intent, right? And also I can't claim first credit for this notion. There's this fantastic substack by Tyler Jewell, who doesn't write very frequently anymore. He was a VC, I think with like...\ \ Hugo Bowne-Anderson (49:55)\ Yeah.\ \ Hmm?\ \ Greg Ceccarelli (50:18)\ Dell technology capital or Dell capital technology. can't, always sort of invert them. And now he's the CEO of a company I think called Acca. And the reason I got turned on to it and we didn't even talk about this, but beyond being the CPO at Pluralsight, one of the things that I first did is I ran a product line called Pluralsight Flow, which is in the sort of software engineering measurement space. you know,\ \ say what you will about that. It's a religious war subject for many, right? Like, is it possible to measure developer productivity? But, you know, I was very interested just generally in the dev tools landscape. And of course this came after GitHub and I started reading some of his sub stack because he has this or he did, he had this catalog of basically the developer tooling landscape. And one of his last sort of posts, which is like almost a book in length, it's about like, you know,\ \ Autonomous Systems and the Future of Programming. came out in June of 2022. He talks about sort of this next wave of essentially autonomous systems before ChachiPT 3.5 or whatever even released as allowing for intent to be stored and then dispatched and sort of that generate artifacts. And I think...\ \ That was before, much ahead of its time, even though that's only like three years ago. But if you think about it, like every time there's a new sort of technological shift, right? You talked about like calligraphy and now everyone types so they don't care about writing as much. There's been like friction, right? I actually profiled this in a sub-stack article that you commented on.\ \ that had a little bit of a spicy name. I called it Handwritten Code is Virgin, LLM Outport a Whore, right? And it's actually, it's an allusion to this scribe back, I think his name is like Filippo Distrada, who was writing in earnest against the technological shift being brought upon when Gutenberg's printing press came out, right? And talking about, what's that going to do to the profession of being a scribe and writing things?\ \ Hugo Bowne-Anderson (52:15)\ Mmm.\ \ Greg Ceccarelli (52:38)\ Well, you there was a lot of slop published and there still is. It's not like people don't publish slop and the same conversation is happening now where it's like, you know, if programming or computing, generating code is so much more accessible, there's going to be so much slop. But isn't it better to make it more accessible? Because yes, while there is the potential for more poorly written code, there's also the potential\ \ for the 99.5 % of the world that doesn't have the ability to program, to get into it, to become interested in it. And I think it's like anything in history, there's no sort of putting the genie back into the bottle, right? So I think the question now becomes, how do you make this new form of programming, how do you make natural language as a compliment to being able to\ \ Hugo Bowne-Anderson (53:24)\ Mm.\ \ Greg Ceccarelli (53:36)\ write code reliable and sustainable and increasingly more accessible. That's the big question in my mind is how do you make this work? Where if we had this conversation two, three years from now or maybe even shorter than that, it wouldn't even be a question because a lot of the workflows and systems had evolved to support this new way of taking an idea in your mind and translating it into machine readable code or X.\ \ Hugo Bowne-Anderson (53:54)\ Yeah.\ \ I think\ \ part of the mismatch as well as people thinking it always refers to you don't know.\ \ anything that's happening in your system. so someone in the chat, Phil has a question saying what type of industries do you foresee being early adopters for for vibe coding? Would it be more startups, enterprises? And then, no, I'm sorry. then said I thought this was from Phil as well. But Seth then says I have a colleague who created an impressive enhancement for some open source software that improves render queue management. While his code runs really well, when he submitted it, they rejected his submission. Now he needs a real software\ \ dev to fix it. So how do you think adoption will work when we hear stories like this as well?\ \ Greg Ceccarelli (54:49)\ Well, I mean, who knows that sounds like an open source project with a maintainer that for whatever reason has a lot of contributing standards that maybe that person didn't follow. I think to answer the first question, it's pretty obvious that the folks that have picked up this for sort of business use cases are like the indie hacker community, right? The indie hacker community, you know, that might be building in public.\ \ that obviously are bootstrapping or more likely to be bootstrapping are always looking for an advantage, right? And if they're a team of one and now don't have to go in outsource, at least initially to get traction or product market fit, you know, their ideas to, especially if they're non-technical or low technical, I guess, it's a huge benefit to them, right? Like in terms of it actually creating real value, like...\ \ I almost hesitate to say it because it's probably not like, it's not like a representative, it's not a representative, but you know, like Peter levels, right? Like he's now, cause it's more about, I think for him, not only how creative he is, but also his audience that's giving him the success that he has, but he's an indie hacker. He is the indie hacker, right? And he's an extreme success, vibe coding his fly, you know, dot Peter game, amongst other things. And\ \ Hugo Bowne-Anderson (56:08)\ Mm.\ \ Greg Ceccarelli (56:16)\ It's like, how would that be possible to do as a unit of one if you didn't have this extra assistance that could buoy you, right? And it's not to mean that, you know, I think every single successful business or whatnot is gonna be reducible to a unit of one, but it does start to level the playing field in terms of the hardest part.\ \ of building a successful software company is probably finding that initial product market fit and quickly iterating to get there, right? But at the end of the day, think, you know, any successful business that actually grows to be something that's large by conventional standards, like, you know, over a couple million dollars ARR if you're B2C or even if you're B2B, it's going to require a team. the real question, because there's just too many problems, right?\ \ Hugo Bowne-Anderson (56:47)\ Mm.\ \ Mm.\ \ Greg Ceccarelli (57:09)\ Software business is not just a product, right? It's the team, it's the market, and it's the price by which you sell your software. There's too many problems for a single person to be able to sort of manage, at least today, probably in the foreseeable future. So then how do you take that product that might have found initial product market fit and extend it, right? And that's like the collaborative workflow of the feeling that you get when you vibe code or software compose by yourself. How do you extend that to the team?\ \ How do you make that real for everyone else? And how do you make sure that that's something that you can extend?\ \ Hugo Bowne-Anderson (57:45)\ And by extend, also do you also mean then understand and make sure it's maintainable and reliable and these types of things as well.\ \ Greg Ceccarelli (57:53)\ Yeah,\ \ of course, of course. Of course, that's why I don't think software developers or engineering teams are going anywhere. You just might not need the same size team, right? And I don't think that's necessarily bad. In a lot of cases, you know, we've obviously talked about some of the hottest tools, you know, that are leveraging LLMs in them, like the AI code IDEs and, you know, like...\ \ Hugo Bowne-Anderson (58:04)\ Mmm.\ \ Greg Ceccarelli (58:18)\ they're growing at tremendous rates with very small teams in terms of user adoption, ARR, whatever metric you want to look at. And it goes to reason or show that you can do a lot with a few or smaller set of very motivated individuals. And I guarantee you they're using Cursor to build cursor. Like I know they are, right? And so that's a super meta example, but...\ \ Hugo Bowne-Anderson (58:42)\ Mmm.\ \ Greg Ceccarelli (58:47)\ Yeah, there's no reason why you can't build a successful software company using these types of approaches, especially if you realize what is important, which will ultimately be the scalability and reliability of whatever the product is that you are delivering. Because reliability is a feature.\ \ Hugo Bowne-Anderson (59:07)\ Absolutely. Well, I'm glad to hear cursor isn't using Windsurf or lovable. I am so you've talked about how AI makes code makes coding feel more improvisational. I even vibe coding I'm just putting where the line is like, when do you decide you need structure and when is the improvisation enough for your own practice?\ \ Greg Ceccarelli (59:29)\ Again, I think it's like, well, what do you want to do with that thing that you improvised to begin with, right? It could be like, for example, built this, I'll explain this small tool that I've built internally amongst a few that's...\ \ I just decided it was good enough and it like we didn't actually need because because it has five users, right? Like it didn't need to be re-engineered. Basically, you know, if you're on a team that's using Slack, you're constantly sharing lots of stuff and you might be sharing and posting around links and it's hard to go find them right later. And so I wanted a way of understanding who was posting what, not only what they were reading, but what they might've been posting sort of on other channels.\ \ Hugo Bowne-Anderson (59:58)\ Mm.\ \ Mm.\ \ Greg Ceccarelli (1:00:16)\ So we built this little app. I built this app called Social Share internally. And it's like a Next.js app that has, you know, like a Postgres backend and it's all hosted on Railway. But the core feature is that there's actually a Slackbot integration. You can tag Social Share and you can, you know, basically it will store the link, provide a little AI generated summary. And then if you go to the backend sort of interface, you can go and look at all the past links that were ever shared by who and when.\ \ And, you know, does it, does it need to work perfectly every time? Is it okay if there's bugs in it? Yeah, because it like has a user base of five and it's not growing and it's doing its job and it's been up running for the last probably 70 days, right? with no downtime. I think the question is, you know, well, when do you decide, huh, maybe I really need to go and refactor this thing. It's like, well,\ \ Hugo Bowne-Anderson (1:01:01)\ Mm.\ \ Greg Ceccarelli (1:01:12)\ Maybe you want to open source something you've done and you want to enable others to contribute to it. And in that case, if you just ship your single file app, it's going to be really hard for people to reason around it. So you're thinking about the community. And so then you might want to go and break it down. And it doesn't mean that you have to go and manually do it. You can use an LLM to do it. You just have to have a structured thinking approach. I think ultimately it depends on what's the use case and who's going to use the thing.\ \ that you've built that probably dictates the approach that makes the most sense to take.\ \ Hugo Bowne-Anderson (1:01:47)\ That makes a lot of sense. I think it'd be great to jump into a demo now if you're up for it.\ \ Greg Ceccarelli (1:01:55)\ Sure, what do you wanna do? What do you wanna build? I can show some stuff and then maybe if, I don't know if there's like audience questions. One of the fun things our team did is on Reddit, gosh, it was probably a little over a month ago now on the cursor forums, we did a build me anything challenge where we actually built 14 prototypes for Redditors that were submitted like the night before. And then we spent a whole day sort of building them and sort of sharing them.\ \ That was really fun. I don't think you could have ever done such a thing prior, I don't know, four or five, six months ago, I'm happy to do whatever.\ \ Hugo Bowne-Anderson (1:02:32)\ I'm going to link to that because you've got\ \ all the code and great videos and I messaged you earlier today, Han's video was super cool of the converting text into what different generations would say. So yeah, why don't you show us something and then we'll get some ideas from the crowd as well.\ \ Greg Ceccarelli (1:02:40)\ Yeah.\ \ Alright, let me make sure I can share my screen. Maybe we could start, we could just modify this, because it's easier than starting from scratch. I'll show you this little thing that I was messing around with this morning. Gosh, I hope, okay, I'm gonna just try and share my entire screen, because I'm gonna have to tab through lots of stuff, so hopefully this doesn't create chaos. Can you see my screen? Alright, let me look at this for a second.\ \ Hugo Bowne-Anderson (1:03:16)\ I can see it. Yeah, I can.\ \ Greg Ceccarelli (1:03:22)\ If I do this, can you see this? Like, can you see my cursor window here?\ \ Hugo Bowne-Anderson (1:03:27)\ I can, I just want to make sure it's appearing on the YouTube as well. yeah, if you could zoom in a bit as well.\ \ Greg Ceccarelli (1:03:32)\ I'll just make it bigger. Does that work?\ \ Hugo Bowne-Anderson (1:03:34)\ Yeah, yeah.\ \ Greg Ceccarelli (1:03:36)\ Okay.\ \ All right, well, can people see this? I'm not sure. Okay, okay, cool. So, you know, I have a love for GitHub and the first thing I guess makes sense to show, we can figure out how we want to modify it a little bit is, you know, there's a lot of stuff that's stored on GitHub that is not code, for example, data, right? And so I was thinking like, huh, it be cool to make a little Chrome extension so that you could like do something with this. So I just searched for...\ \ Hugo Bowne-Anderson (1:03:46)\ They can. Yeah. Everyone can see it. We're good.\ \ Greg Ceccarelli (1:04:13)\ you know, CSVs here. And I'll just pull one up and I'll show you, I installed this extension that I built. I'll pull one that might be interesting. What's a good one? Let's just go to this actual repo because I think there's a lot of CSVs in it, our data. Cool, so there's lots of data in this. What the thing does is basically if it finds a path that ends in CSV, I don't know, I don't just...\ \ picking random things. This doesn't look very interesting because I actually want to query something.\ \ Gosh, we have to find a good example of data. Bake off, bakers. Okay, so something you might notice here, do you see the SQL query button that's like poorly aligned? So that's actually what the extension is doing. It's marking up the DOM. Yeah, yeah, so like for example, I'll just remove this here and then I'll like reapply it and you'll see that the DOM will change.\ \ Hugo Bowne-Anderson (1:04:52)\ What's the bakers? Great.\ \ Yes.\ \ And that's the Chrome extension you built.\ \ Greg Ceccarelli (1:05:17)\ So see, it's gone, right? So I'm gonna add it back, load unpacked, make sure I'm in the right directory, it's going to dist. And for people that have never built a Chrome extension, well, you're gonna get a taste of what it's like to do it. The reason I didn't wanna live this after I kinda went through it once is it's actually pretty complicated because of all the CSP rules that Chrome and also GitHub have, like that prevents you from doing a lot of stuff.\ \ Hugo Bowne-Anderson (1:05:17)\ Mm-hmm.\ \ Greg Ceccarelli (1:05:45)\ There's actually like a background service worker and like a sandbox environment, but just to show everyone. So let me reload this now that the extension's there and you see it comes back. If I click on this, using, I think the package is like Ada SQL, which is like an NPM package that allows you to, you know, write SQL queries against stuff sort of in memory. And so I'm going to open up the developer tools here.\ \ and show you kind of like what's happening kind of like on the side. I think here, okay. So you can see some of the stuff that's happening, right? Like sandbox URL, CSV, GitHub. Let me make this bigger. I'm trying to, I'm making riverside bigger, which is not what I wanted to do. You can kind of see what happens when it gets initialized. So, you know, the DOM gets the loaded sandbox is ready. And now we're ready for query. So.\ \ Hugo Bowne-Anderson (1:06:23)\ Mm-hmm.\ \ Greg Ceccarelli (1:06:42)\ One of the nice things about this, if I actually write a query, I actually don't need to know what the table name is called because Ada uses this little question mark syntax here. And I'll do limit 10. And I run it. And there we go. This is that Baker's data set. We're just looking at this for whatever reason. And I just thought this was interesting because obviously, there are big things.\ \ Hugo Bowne-Anderson (1:07:01)\ Mm-hmm.\ \ That's super cool.\ \ Greg Ceccarelli (1:07:09)\ big CSVs, you might not want to download them, you might want to explore them first to get a sense of what's in there. So like, let's write something more complicated like occupation, and then I'll just do.\ \ Hugo Bowne-Anderson (1:07:20)\ And just to be\ \ clear, this is something you vibe coded.\ \ Greg Ceccarelli (1:07:23)\ Yeah, I did it like at 2 p.m. this afternoon.\ \ Hugo Bowne-Anderson (1:07:27)\ And\ \ to be assured that it's giving you the results though, have you needed to look at the code to just confirm a few things? Or how do you learn to trust what you've vibe coded?\ \ Greg Ceccarelli (1:07:30)\ that didn't work very well.\ \ Well, in this case, I don't have a lot of experience building Chrome extensions. So one of the strategies that I used in this case was I was iteratively testing it as I was building it. And obviously I know how SQL works. And so I can kind of verify that this is working as expected.\ \ Hugo Bowne-Anderson (1:07:56)\ Mmm.\ \ Yeah, yeah, yeah.\ \ Greg Ceccarelli (1:08:07)\ Right? But there are parts of it that I know are not working correctly. So like, I don't actually even know what save query does because I wasn't testing this. Let's see. Test on Baker's data set.\ \ Hugo Bowne-Anderson (1:08:21)\ Baker's Delight. Sorry, that's a chain in Australia. I didn't realize.\ \ Greg Ceccarelli (1:08:24)\ Yeah, the funny thing is now\ \ I have no idea how do I access that, right? Like I don't actually know what happens now. But yeah, the basic functionality I was able to sort of get working here and we can add like another query and we can do something. I can't even remember what the columns were. So like, let's look at them again. Oh, Baker, okay. There's like not actually that much stuff. Oh, that's only 10 rows. Yeah, so.\ \ Hugo Bowne-Anderson (1:08:28)\ Yeah.\ \ Greg Ceccarelli (1:08:53)\ You get the idea. It works enough for what I was trying to get across, which is, how do I actually load this and run something that required an eval function in a sandbox? Because the content scripting, whatever CSP stands for, doesn't allow you to, in a Chrome extension, evaluate things. And so that's why there is actually a...\ \ Hugo Bowne-Anderson (1:08:57)\ Mm-hmm.\ \ Greg Ceccarelli (1:09:23)\ There's what you see here, but there's also this background service that goes and fetches the data and loads it. And then there's this sort of sandbox HTML, which has less restrictions in terms of what Chrome allows or doesn't allow to happen. But yeah, why don't we look at it? And one of the things I can show too is I think in my plan, so I know this isn't the full history and maybe it's not as exciting.\ \ But I actually started off like this. Like this is actually what I first wrote to start to execute this. And one of the things that spec story does is it stores all your history over here. So I started from like a starter repo and like this is marked down so I can just like preview this, right? And you know, this do this, there's actually the plan was in the context there. And you can see that there was a lot that happened, right?\ \ Hugo Bowne-Anderson (1:09:57)\ Mm-hmm.\ \ Greg Ceccarelli (1:10:21)\ There is a lot of back and forth. And I definitely failed many, many times. yes, the content security policy. That is the thing that requires a lot of workarounds that I wasn't super familiar with, which led to the sort of architecture that exists today, which is, you know, most of what you saw, where is it? It's in here. And I think it's in this content TSX file. A lot of...\ \ Hugo Bowne-Anderson (1:10:33)\ Mm.\ \ Greg Ceccarelli (1:10:48)\ the sort of front end of everything is defined in here. And there's a message passing system that basically works to fetch the data using this background service and then enable me to use the sandbox to actually evaluate the queries and send them back to essentially content.tsx, which is the front end that we were looking at together. So we could modify this, rebuild the thing and then\ \ change it if you want, or we can do something completely different.\ \ Hugo Bowne-Anderson (1:11:22)\ Well, we've got a few ideas from the crowd. also, had an idea. I don't know if this is possible at all. But all those JFK documents that were released yesterday, could we build something to do like information retrieval there or be able to query them or something like that?\ \ Greg Ceccarelli (1:11:38)\ Sure, do you have a sense of where they are?\ \ Hugo Bowne-Anderson (1:11:43)\ Yeah, I think I can... Give me one second.\ \ Greg Ceccarelli (1:11:47)\ I'll look up here. Release. Where?\ \ Hugo Bowne-Anderson (1:11:49)\ Yeah.\ \ And\ \ they're in PDFs, my understanding is. So if you search PDF, it...\ \ Greg Ceccarelli (1:12:01)\ to get like national archives.\ \ Hugo Bowne-Anderson (1:12:03)\ I think that, yeah, I think those are, let's\ \ open one and see what's up.\ \ Greg Ceccarelli (1:12:08)\ Okay, what would we want to do?\ \ Hugo Bowne-Anderson (1:12:12)\ I mean, get a sense of what's happening in them. Well, essentially some sort of information. It may be tough to be able to do proper retrieval from this on the fly, but.\ \ Greg Ceccarelli (1:12:14)\ Yeah, okay.\ \ Yeah, well, let's just start with a Next.js app. I think it's easiest. then because I to get a sense of what's in them, we'll probably have to maybe send them off to an LLM or something to have them OCR'd, right?\ \ Hugo Bowne-Anderson (1:12:31)\ Okay. Yeah.\ \ Yeah, well, Mistral\ \ OCR is one of the best at the moment in my experience. But this may be trying to bite off more than we can chew though as well. I don't know. You seem like a pretty ambitious guy though, so.\ \ Greg Ceccarelli (1:12:47)\ Okay.\ \ If this is something we can attempt, let's attempt it. So JFK Explorer, we'll call it.\ \ All right, so we have a blank project folder here. And I guess maybe the first step is like, I'm just gonna bootstrap an app, right? And I'll just use Next.js for that, why not? NPX, let's do Shad Sienna, latest in it. Gotta install some stuff. Okay, sure, my app is fine. We're gonna bootstrap this.\ \ Let me see if while that's happening I can like understand a little bit more about this. So there's a lot of entries. Let's see how these things are paginated. So they're just paginated.\ \ Does this even work? it does. There's just no change. There's just no change to the URL string. That's great. Cool. They've made this super accessible. I love it. Yeah. Let's see. We could probably read the DOM and access them. So let's see if this started. it didn't. didn't do all this. We'll use legacy pure dependence. OK. So maybe let's...\ \ Hugo Bowne-Anderson (1:13:54)\ Yeah.\ \ Classic, right?\ \ Yeah, I think so.\ \ Greg Ceccarelli (1:14:18)\ This is the way I'd normally start is by sort of defining a plan, right? Like, what are we actually trying to achieve? And so like, let's do that together. So that's actually what I am. That's actually what I am.\ \ Hugo Bowne-Anderson (1:14:23)\ Mm-hmm\ \ You are a product guy deep down, aren't you? No, I'm joking. I'm joking. Yeah. Yep. But this is it.\ \ This type of technology as well brings product and design closer to data, to systems, to software and brings systems and software closer to decision making as well, which is super fucking cool, man.\ \ Greg Ceccarelli (1:14:47)\ Yeah, okay. So, and sorry, it's hard to see like what you're saying or right, because I'm trying to operate this computer here. So let's just like, let's just get the app up and running first. But like, I think maybe one of the things is like, look, can we actually retrieve these documents, understand like the structure of where they are, can, and then we can see if we can get them. And then if we can do something with them, which again, I think we're gonna probably have to like,\ \ Hugo Bowne-Anderson (1:14:54)\ yeah, yeah.\ \ Greg Ceccarelli (1:15:16)\ I want to build\ \ an app that lets me explore the recent JFK document release. All of the documents are accessible from this. However, there isn't an easy way to page.\ \ them. what the app should initially do is... gosh, I don't even know. guess, like...\ \ Navigate.\ \ the DOM and we'll get some data about that just with DevTools. Extract the first whatever this is, what, 10 URLs from the page. Let's just get the URL strings extracted. Yeah, let's just do that. Let's start that just so we can\ \ Hugo Bowne-Anderson (1:16:21)\ Mm-hmm.\ \ Greg Ceccarelli (1:16:39)\ do something sort of incremental with them. And then we want to display the URLs on the page.tsx in this next JS app. And then we're probably gonna need a reliable way of paging through and getting all of them and maybe making a big list and then figuring out what we do from there.\ \ Hugo Bowne-Anderson (1:17:03)\ and I just\ \ noticed if you drop down, so if you go back to the website, actually, if you in the dropdown, you can say how many entries you want to show wackily enough.\ \ Greg Ceccarelli (1:17:08)\ Mm-hmm.\ \ Ooh,\ \ and that doesn't change anything. Great.\ \ Hugo Bowne-Anderson (1:17:16)\ No, it's insane. This\ \ website was vibe-coding. That's the other thing, dude. There's been vibe-coding pre-vibes-coding, as if all the software out there, the people who wrote it, the amount, we've built things upon castles of sand, right? So...\ \ Greg Ceccarelli (1:17:33)\ Yeah. Yeah. So it's in a table. That's nice. Okay. Let's look at this.\ \ Hugo Bowne-Anderson (1:17:37)\ Mm-hmm.\ \ Greg Ceccarelli (1:17:43)\ Web scraping can be challenging.\ \ Hugo Bowne-Anderson (1:17:46)\ Mm-hmm.\ \ Well aware.\ \ Greg Ceccarelli (1:17:49)\ Alright, let's take this approach instead of trying to figure out... there we go. That's what I wanted. where's that div? Okay, this is good.\ \ This is good.\ \ Hugo Bowne-Anderson (1:18:03)\ because we just want to extract the URLs for the files, right?\ \ Greg Ceccarelli (1:18:08)\ Yeah, look for this div. Whoa, OK. Why? This is gigantic. What is? What happened?\ \ Hugo Bowne-Anderson (1:18:19)\ And if\ \ you could just maximize slightly more, that'd be cool. Yeah, great. Yep.\ \ Greg Ceccarelli (1:18:24)\ Is that better? This is like a...\ \ This is humongous. Okay, let's just do it this way. Let's see how smart we can get the AI to be. We'll paste in a picture here. Let's begin to simply implement this beginning plan. And then what do we wanna do? I guess we can use thinking. I have Macs available, but let's just use thinking and see.\ \ Hugo Bowne-Anderson (1:18:54)\ Yeah,\ \ and just noting for those who haven't seen you're actually in agent mode now as well, which is a huge amount of fun. So it will decide to use tools and whatever else and then are you in YOLO mode as well or? Dude. You're a wild man.\ \ Greg Ceccarelli (1:19:07)\ Yeah, yeah, I am.\ \ it has to index my code base. Hopefully it did that. Okay, so it's planning its thinking here.\ \ Hugo Bowne-Anderson (1:19:22)\ So it's thinking, trying to do something which indexes and gets out.\ \ Greg Ceccarelli (1:19:24)\ Yeah. So normally it's smart.\ \ I'm in cursor settings here. Normally it's smart when you bootstrap a new code base to actually hit the sync button here, right? But I think it did. So we're going to see what happens. Scrape JFK data. It's making a library for that. Cool.\ \ Hugo Bowne-Anderson (1:19:36)\ Mm-hmm.\ \ awesome.\ \ Greg Ceccarelli (1:19:47)\ It's not especially fun to watch this all happen, I realize, so that's why I wanted to...\ \ Hugo Bowne-Anderson (1:19:55)\ or though there's a certain\ \ Zen to it though. Like when I say, let's start the development server to see if our experiment implementation works. Like there is a certain Zen to watching all of that roll on in, right?\ \ Greg Ceccarelli (1:20:07)\ Yeah, well, in this case, we got agent mode to kick something off here. there we go. That was easy. That was easier than expected. Let's see what happens if we... Okay, so that's not gonna... So that has... Interesting, let's see the string over here. Okay, so since we're in localhost, okay.\ \ Hugo Bowne-Anderson (1:20:14)\ Awesome!\ \ Greg Ceccarelli (1:20:32)\ So that's everything up to files without, what was it? Archive.gov. Okay. So now what I want to do is let's just quickly do the following, which is let's update our plan to document what we did. And I haven't even initialized a Git repo here yet. So, I did. Okay. Cause ChatCN has, yeah.\ \ It comes with Git. Let's do this really quick.\ \ And normally we'd want to kind of build an incremental work plan. But I like to just kind of keep a record. Okay, so I'm just going to do a small change here. And we could just go into the app and probably make this modification ourselves. But this works great. However, when I click on the document link, I want it to actually take me to the...\ \ Hugo Bowne-Anderson (1:21:13)\ Mm-hmm.\ \ Mm-hmm.\ \ Greg Ceccarelli (1:21:38)\ correct site, which is prepended, by, this, I'm going to unlink this.\ \ instead of localhost.\ \ All right, so that should hopefully work and I need to restart the dev server. So I'm going to start a new terminal here because it was.\ \ Hugo Bowne-Anderson (1:22:05)\ And also\ \ feel free to use Super Whisper, which I know you have installed as well if you...\ \ Greg Ceccarelli (1:22:09)\ Yeah, I probably should. NPM, let's like, NPM run dev this thing. have to be in my app probably. NPM run dev, get this changed. Okay, see, like the base URL. We could easily have done that ourselves, but why not just ask the agent to do it? So we're gonna go back here, reload this thing.\ \ Hugo Bowne-Anderson (1:22:24)\ Sure.\ \ And just note, although\ \ we're vibe coding, like you just did a quick spot check on something as well, right? And we're talking about it, so.\ \ Greg Ceccarelli (1:22:37)\ Yeah,\ \ one of the things that I just normally do is I actually look at these. So in cursor lingo, these are called bubble IDs and these relate to tool calls that happen behind the scenes. And this would be an edit file diff. And so I'm normally paying attention to what's going on in these. Now this is a very simplistic app as it currently stands, right? But one of the things that you should always kind of look at is, know, am I getting more sort of\ \ Hugo Bowne-Anderson (1:22:50)\ Mm-hmm.\ \ Greg Ceccarelli (1:23:06)\ additions than subtractions, depending on what you're attempting to do, right? Because sometimes, and at least historically, it was very probable or likely that you might get an inadvertent delete that just deleted a bunch of stuff. And if you're not paying attention, you could be in for a world of hurt. So let's look back here. Okay, so this works. Cool. Okay, so let's do something more complicated.\ \ Hugo Bowne-Anderson (1:23:10)\ Mm.\ \ Dude, awesome.\ \ So we can see,\ \ we can get to the PDFs through the app we built now.\ \ Greg Ceccarelli (1:23:35)\ Yes, this is the lamest app ever. We have to make it better. So let's define something here. All right, so next steps. Yeah, let's actually see if it can just do that. Okay.\ \ Hugo Bowne-Anderson (1:23:53)\ Do what? Sorry?\ \ Greg Ceccarelli (1:23:55)\ So some of these potential next steps, which Claude so generously gave me whenever I asked it to update my plan, right? Like, let's do this. Yeah. So let's.\ \ Hugo Bowne-Anderson (1:24:02)\ add pagination to view more than the first 10 implement search and filtering capabilities, improve\ \ the scraping patterns. Great. Add metadata. Yep.\ \ Greg Ceccarelli (1:24:10)\ Yeah, let me, let's\ \ use super whisper actually, so I don't have to type. All right, this is a great first step. We've corrected the base URLs and we actually want to enhance our scraping capabilities such that we can get more than the first 10 URLs. It actually happens to be on the site.\ \ that we're scraping from, there is a ability to show more than 10 entries. How could we approach actually getting more than 10 entries when that site is first accessed? I just want to see what's going to happen. Well, yeah, I mean, we could take that sort of approach, but I just want to see what Claude can come up with here.\ \ Hugo Bowne-Anderson (1:24:52)\ Well, it said just selenium or something like that. Do you think? What do you?\ \ Yeah,\ \ that was my question. I mean, you know it. Like, what do you think it could, let's see. And I love, I actually love watching these thought processes.\ \ Greg Ceccarelli (1:25:10)\ Yeah, expand it for people that are looking at this.\ \ Hugo Bowne-Anderson (1:25:12)\ it does remind me, know, like when we do\ \ deep learning or used to like actually train models, like watching the epochs, the epics roll on in, right, watching your loss and accuracy and you know, there is a still pushing the border up the hill, but there's a vibe to it.\ \ Greg Ceccarelli (1:25:29)\ Yeah, this is just a hard site because there's no query parameters or anything that are getting back. it makes it a little bit more challenging. Let's see what happens. It looks like we're getting a few errors.\ \ Hugo Bowne-Anderson (1:25:36)\ It's amazing.\ \ Is the final URL of the PDF encoded in the name when we do the drop down? Because we could do a big screenshot of a lot of it.\ \ There's a date as well.\ \ Greg Ceccarelli (1:26:01)\ Maybe\ \ this is, this looks like a date. This is yesterday. Yeah. There doesn't seem to be a reliable pattern to any of this, right? But these, maybe these are numbered sequentially actually, right? Like the actual kind of, right? Like I'm just like the URL, the URL pattern is actually pretty straightforward, right? There's\ \ Hugo Bowne-Anderson (1:26:06)\ Yep. So that's the date of release. Yeah.\ \ No.\ \ Hmm.\ \ Greg Ceccarelli (1:26:29)\ Like, I wonder, me make this smaller and then we'll go to the end to just get a sense of like what the documents sort of end at, right?\ \ Hugo Bowne-Anderson (1:26:39)\ Mm.\ \ Greg Ceccarelli (1:26:43)\ I don't, it's hard to, yeah, there is a pattern. Let's see what happened here. Let's see what happened. Added length. I don't think that this is gonna work. Whatever, let's see. All right, where's my app? Over here. Oh, well, there it did. It certainly did. It got all of them. How did it happen? I'm not actually sure. We can look at the code. All right.\ \ Hugo Bowne-Anderson (1:27:02)\ What? Dude. Can-\ \ Can we also\ \ just confirm that it is the PDFs that\ \ Greg Ceccarelli (1:27:12)\ Alright, that looks like a different one. Alright, well I'm sort of surprised. That's why sometimes it doesn't hurt to ask. Let's look to see kind of what it's doing.\ \ Hugo Bowne-Anderson (1:27:14)\ Dude.\ \ Yeah.\ \ Greg Ceccarelli (1:27:29)\ Why don't we this? Why don't we ask it how it did it instead of us looking at all this code together just because it's probably not as fun for the audience. How did we actually achieve that result? It worked fairly well. Don't implement anything. Just explain the modifications.\ \ Hugo Bowne-Anderson (1:27:37)\ Sure.\ \ Greg Ceccarelli (1:27:59)\ code that achieved this for us in the last set of edits. Okay. So this is nice. Although this is like the usability. I guess the usability of this is almost better than, now this, this, this document count seems low. Aren't there more than 2000 documents? I don't actually know.\ \ Hugo Bowne-Anderson (1:28:17)\ You've yeah, you're absolutely wrong.\ \ Yeah,\ \ yeah, there were like 30,000 or something, I think.\ \ Greg Ceccarelli (1:28:29)\ Yeah. But we have more to work with, so that's good. here. Number allowing caller to specify entries to fetch.\ \ Hugo Bowne-Anderson (1:28:33)\ Yeah.\ \ I'm sorry.\ \ there are no, no, that's it. It is. Yeah, there are in two sets one at 7pm, which was 1123. And yeah, I was thinking about the number of pages. But yeah, we that's it, man.\ \ Greg Ceccarelli (1:28:49)\ Yeah, PDF songs.\ \ We got them all. Okay, cool. All right. Sweet. Okay, so now what do we want to do? Does the audience have any ideas?\ \ Hugo Bowne-Anderson (1:28:59)\ Whoa,\ \ yeah, maybe I'm doing some creating some sort of rags is more information retrieval if we want to query it in some way.\ \ Greg Ceccarelli (1:29:08)\ Yeah, why don't we try to get some actual...\ \ Hugo Bowne-Anderson (1:29:12)\ or get a sense\ \ of what's in there first.\ \ Greg Ceccarelli (1:29:14)\ Yeah, well, mean, since they're all PDFs, it's like we need to kind of like OCR them, right? Like, how would we build anything on top of this? Okay, let's do this. Okay.\ \ Hugo Bowne-Anderson (1:29:20)\ Yeah.\ \ Greg Ceccarelli (1:29:30)\ I want to be able to, and like we're getting some errors here, but like let's not focus on those. Let's use super whisper again. For a given set of files that I mark in the UI, I want to be able to send the contents of the PDF off to an LM to OCR the results and then give me the file name.\ \ and the OCR content back in a new page. Let's use Claude to do this, just because I can get an API key super easily. Yeah. Let's just give it that.\ \ Hugo Bowne-Anderson (1:30:10)\ You've got your tokens,\ \ Sounds great.\ \ Greg Ceccarelli (1:30:17)\ Or maybe we can ask Claude what to do with a bunch of PDFs from JMK. I'm gonna do this.\ \ Hugo Bowne-Anderson (1:30:22)\ Yeah, I wouldn't be surprised if Claude was cool on that.\ \ And do we want to incorporate\ \ this into the plan, the plan markdown as well or?\ \ Greg Ceccarelli (1:30:33)\ Yeah, we can.\ \ Let's do that first. Let's update our plan with everything.\ \ I can't type everything we've just done.\ \ So that will run. Still no commits. Let's make a commit. Why not? The initial document retrieval of the JFK files with a basic UI.\ \ Hugo Bowne-Anderson (1:31:09)\ Yeah, and this is something I haven't figured out. You'd be the person to ask about this. Is there a way to get like the chat in the commit and all the diffs that you're having in the chat with Claude or whatever in like synced with Git?\ \ Greg Ceccarelli (1:31:21)\ Of course,\ \ right here. We have it all right here from spec story. Yeah, yeah. Yep, yep, yep, yep. It's part of spec story. So I mean, guess for those that are interested, like there's a bunch of commands if you have this installed, but to install it, you can just go into the marketplace. You can go to our website. There's like a one click install. You can look for it. And then one of the core,\ \ Hugo Bowne-Anderson (1:31:27)\ So that's part of spec story. That's not, okay, great.\ \ Mm-hmm.\ \ Greg Ceccarelli (1:31:48)\ pieces of functionality as you're working is it's auto saving these composer logs directly to your project root in this history folder. So if I start a new composer session, it would start to save that markdown file. The other thing that we can do, and I'll show this just briefly right now, is I can share this to the web in sort of an anonymous format, and it's gonna push all that markdown.\ \ here and then you can see essentially what you saw just then and I can add arbitrary markdown blocks here and mark this up and record a video, stick it in there, what have you. But let's go back to what we were doing. So we've documented that. I did save this.\ \ Let's use Cloud 3.7 Sonnet to do this. So let's get something interesting out of this.\ \ to a document table selection capabilities. Because what I have in my mind, just to make this more clear for those listening or watching, is that like we can just, well, it's probably in the, that was an inopportune time for that to happen. Like you could select a bunch of documents and then process them, right? Cause we don't want to send all of these off to Claude at once. So like, let's let it cook here for a second. So,\ \ Hugo Bowne-Anderson (1:33:18)\ Mm-hmm. Yup.\ \ Greg Ceccarelli (1:33:29)\ It's made a new component, select documents, that's useful. So it's separating out some of the logic from the page, which is useful. And then it's probably gonna need to create a, well, we'll see what happens here, where it puts it. We could ask it to refactor it into like a separate component. it's gonna create like a route, I guess, here. It's creating a route and maybe a service to use Claude.\ \ Hugo Bowne-Anderson (1:33:53)\ Mm-hmm.\ \ Greg Ceccarelli (1:33:58)\ Let me get a Claude API key for this purpose.\ \ Hugo Bowne-Anderson (1:34:03)\ And while you're doing that, I'll just also flag, definitely beware everyone in vibe coding with API keys for paid services, because you can rack up some pretty serious fees pretty quickly.\ \ Greg Ceccarelli (1:34:17)\ Yeah, yeah, that's why I wanted to just do this very like very incrementally, So everyone saw my key. I'll burn it at the end. That's fine. Alright, so we have an end local, which is good, and we're going to paste that in there. Let's update the plan. see it see it's it's sort of pulling from prior context that it should be updating my plan at the same time.\ \ Hugo Bowne-Anderson (1:34:23)\ Yeah, yeah, yeah, of course.\ \ Greg Ceccarelli (1:34:46)\ All right, so let's see what it did. So we can select things. We have some integration here, server-side integration with this route. We have an issue here. I probably need to install that package. It did not do that for me. And then let's do that. So I'm just going to ask it. This looks like there's a bunch of problems, so we're going to have to solve for that. Let's get this key in here because I have it in my clipboard. Where is nvot.local? There it is.\ \ Hugo Bowne-Anderson (1:34:46)\ Mm.\ \ Greg Ceccarelli (1:35:14)\ Paste it in here. Everyone sees this. Great. It's amazing. But they probably can't get it all. Save. Okay. Let's see what's going on right now with this. Because I think it might be... it's not broken. That's good. It seemed like it was. Where are all these issues? There's a bunch of issues. For the purpose of this, let's see what happens.\ \ Hugo Bowne-Anderson (1:35:37)\ always.\ \ Greg Ceccarelli (1:35:41)\ see actually what happens because we didn't really define, let's see what is this page gonna show us? I'm not actually sure. All right, let's just do, let's look at one and get an understanding for what we'd expect. That looks like a really bad document to PDF. Let's get a clear.\ \ Hugo Bowne-Anderson (1:35:58)\ Yeah, yeah, yeah, there\ \ are a lot of them like that, actually. So\ \ Greg Ceccarelli (1:36:02)\ Yeah. This one seems somewhat readable. Let's try this one for... What was that one? Now I forgot. Was it this right here? No, that was the wrong one. This one? No. Oh my gosh. I can't remember what I just clicked on. This one? This one. Okay. It's 321. Okay. 321. Let's see what happens. Processing. Okay. Cloud API error. Blah, blah, blah, blah.\ \ Hugo Bowne-Anderson (1:36:08)\ somewhat. Yeah.\ \ No.\ \ Greg Ceccarelli (1:36:33)\ Can I not send this image off? Let's see if there's... let me actually check what model it's using because that might actually be the problem. Claude. Where would that be? Did they put it in...\ \ Okay, this might not be a correct model name. Let's look up.\ \ Hugo Bowne-Anderson (1:37:03)\ That's\ \ an issue that happens a lot, right?\ \ Greg Ceccarelli (1:37:07)\ It does, it hallucinates,\ \ it's funny, because it's like literally Claude hallucinating model names.\ \ Hugo Bowne-Anderson (1:37:11)\ hallucinating itself, yeah. They\ \ should be grounded in their own documentation. All LLMs should be grounded in their own docs and other LLM docs and aren't enough.\ \ Greg Ceccarelli (1:37:19)\ Yeah, let's do... I didn't copy this right. Sonnet latest, whatever, I can just type it.\ \ Hugo Bowne-Anderson (1:37:26)\ The other thing we haven't encountered yet is dead looping, which for those who don't know is horrifying, but it's where it just, you get in a loop of errors essentially, and it will forget errors it's made before and rewrite code that it's done before.\ \ Greg Ceccarelli (1:37:39)\ Let's try this. Processing.\ \ can it not do this? Yes, maybe we can convert it to an image first.\ \ Hugo Bowne-Anderson (1:37:47)\ Yeah,\ \ Yeah, it looks like\ \ it wants a JPEG or a PNG or a GIF or a...\ \ Greg Ceccarelli (1:37:53)\ Let's try it like this.\ \ Let's just get some understanding of this. So I'm down with this. I'll use Claude, just regular Claude. We might have to create a image first, which we should be able to do fairly easily.\ \ Hugo Bowne-Anderson (1:37:58)\ Mm-hmm.\ \ So.\ \ Greg Ceccarelli (1:38:09)\ is OCR this? Let's see. Okay, this seems like it actually is working. okay, let's try. Okay.\ \ Hugo Bowne-Anderson (1:38:19)\ Cool, man.\ \ Greg Ceccarelli (1:38:25)\ Does the API not support it? That might be a question. That might be a question to ask in cursor. Let me go back to this. Sorry, I just wanna get this message.\ \ Hugo Bowne-Anderson (1:38:33)\ Mm-hmm.\ \ Yeah, yep. No rush,\ \ man. This is... This is the vibe we're surfing, dude.\ \ Greg Ceccarelli (1:38:43)\ So when we process a document using Claude 3.7 Sonnet in our app, we are getting the following error. Oh. I'm clicking around like a maniac. But this is part of the vibe, right? Just trying to solve some of these problems quickly.\ \ Hugo Bowne-Anderson (1:39:00)\ Mmm.\ \ Greg Ceccarelli (1:39:06)\ And I'm not familiar enough. See, this is a Media Type API. That's funny.\ \ Okay, well, it's doing what we just said. Is that actually true? I'm kind of surprised that the API doesn't accept PDFs, but the client does.\ \ Hugo Bowne-Anderson (1:39:29)\ That would be,\ \ yeah, I should be surprised, few things surprise me these days, to be honest. After what we've seen the past several years, I mean.\ \ Greg Ceccarelli (1:39:35)\ No, it's like, does the\ \ API support PDFs? I guess it was on them all. Wait, it is available. That's confusing.\ \ Hmm.\ \ confusing.\ \ Well... maybe...\ \ Let's just see if this worked. That was like a simple enough change. Although this doesn't seem like it's actually gonna, okay. It's just having to, doesn't directly through the image field. Maybe we aren't specifying it correctly. Let's actually restore this.\ \ Hugo Bowne-Anderson (1:40:24)\ You've\ \ got type image that it may be yet. Yep.\ \ Greg Ceccarelli (1:40:26)\ That's what\ \ I'm thinking, but I don't know what it should be. So is it just like type PDF? Like I don't actually know what the type field should be. That's the problem.\ \ Hugo Bowne-Anderson (1:40:38)\ I wonder if cursor could help with that.\ \ Greg Ceccarelli (1:40:42)\ Well, it already hallucinated the model name, so that's good question. Let's see if this works, which it probably won't, but we might be surprised again.\ \ Hugo Bowne-Anderson (1:40:45)\ That's true.\ \ Greg Ceccarelli (1:40:59)\ That's not what I wanted to do. I wanted to click this. Okay. That's not a type. Document image. document. It's probably just doc. Okay. that error message was helpful. Okay. I'm not sure about the... All right. Let's try it one more time.\ \ Hugo Bowne-Anderson (1:41:07)\ Yeah, great.\ \ Who would have thought? Who do they think they are, Karras?\ \ Famous last words. I love it when LLM say to you, this is the final correct version. Yep. Yep.\ \ Greg Ceccarelli (1:41:26)\ This is working! Unless this errors, this seems like it might work, because it's processing for a while. Although,\ \ let's look at our logs. nope.\ \ Awaited, okay. This is not working. All right. Let's do this here.\ \ Actually, that's clear that I'm going to restart the server because there's like so many different error methods.\ \ Hugo Bowne-Anderson (1:41:51)\ Yeah, yeah, yeah.\ \ Greg Ceccarelli (1:42:00)\ Let's try it one more time to get like a sort of clean slate.\ \ All right.\ \ Here we go.\ \ All right. When we updated the document type to document and attempted to process a PDF, we're getting the following error.\ \ Please help me address this. what? I don't even know how that happened. Well, maybe, yeah, there might be some synchronization.\ \ Hugo Bowne-Anderson (1:42:50)\ Amazing.\ \ Well, it sounds like\ \ you're really embracing the vibes and embracing exponentials, Greg, is what I'm what I'm seeing now.\ \ Greg Ceccarelli (1:43:01)\ In this\ \ case, but that was unclear. Okay, so now it is starting to not loop, but this is the clear dead loop because we actually solved it. I think this is the major issue. So we're gonna probably reject at least part of that change. Look, it's only changed this one line. Document clearly works. And then hopefully it just resolves this issue. Now the real question is like, what happens when\ \ Hugo Bowne-Anderson (1:43:08)\ Dead loop.\ \ Greg Ceccarelli (1:43:31)\ we try and process multiple at the same time. Because I actually don't know what the user interface is going to be. And so we probably want to then do something with that sort of text. So we can modify this page to allow us to do something.\ \ Hugo Bowne-Anderson (1:43:35)\ Mmm.\ \ Yeah, I think probably what we want to do is convert like four a certain number of PDFs convert them into text files.\ \ Greg Ceccarelli (1:43:57)\ Okay, we can add some option there. So I've rejected that change because we know document works. And then, okay, so it's rewritten a bunch of things.\ \ Hugo Bowne-Anderson (1:44:04)\ Hmm.\ \ I mean, because in\ \ the end, think one goal would be to like, just get a sense of what's happening in these documents. Like we could even do some basic summarization of each document in a table or whatever,\ \ Greg Ceccarelli (1:44:16)\ Yeah,\ \ of course. Yeah, let's just let's just see\ \ Hugo Bowne-Anderson (1:44:20)\ And that's the\ \ joke man. A lot of people like build rag systems and then engineers rarely think of this. The first question people ask are what is this corpus of documents about? Which rag is horribly equipped to be able to deal with, right?\ \ Greg Ceccarelli (1:44:35)\ Indeed. We're still getting some of these await issues, but I think it is processing. We just probably need some better user feedback here because you saw how slow this was actually to OCR. We need a little bit of better user feedback. That's why I was surprised when we tabbed back to the app and we saw the thing actually done.\ \ Hugo Bowne-Anderson (1:44:42)\ Mm-hmm.\ \ Totally, yeah.\ \ Mmm.\ \ Greg Ceccarelli (1:45:03)\ It's just still chugging along so we could add some logging to sort of show us incrementally even in the terminal, like what's happening, right? Hopefully this actually does something. Let's see. I'm just patiently waiting here, but my patience is wearing. All right. This doesn't feel like it's doing what we expect.\ \ Hugo Bowne-Anderson (1:45:12)\ Let's do it.\ \ Greg Ceccarelli (1:45:31)\ it did. So that took a while. Okay. It's just, think it's just, it literally just takes a very long time for it to actually OCR these, these docreases. All right. So the down.\ \ Hugo Bowne-Anderson (1:45:33)\ Yep.\ \ So.\ \ It'll take me\ \ a while to OCR them as well, to be honest. Yeah.\ \ Greg Ceccarelli (1:45:44)\ I can't read them.\ \ So I'm gonna stay on this page because we could probably just apply a hot update to this. So we have text here. Let's update the, although it's probably gonna reload it, because I'm not caching anything, right? Okay. Let's update the page and OCR results to allow us to...\ \ Hugo Bowne-Anderson (1:45:53)\ Mm-hmm.\ \ Greg Ceccarelli (1:46:14)\ Search. I think we want document summaries, don't we? Maybe we should just update the OCR results to show the actual extracted text and summarize some meaning from it. Let's add a post-processing step such that, I'll do it like this, such that once we've successfully OCR'd the document,\ \ we can actually get a summary to explain what the document was about and have that be rendered above the OCR text on the OCR results page.\ \ Okay, okay that. And then let's also say, well let's just do that, but I wanna add a little bit more feedback. I that it's not just hanging there. We'll do that right after we finish this.\ \ Hugo Bowne-Anderson (1:47:10)\ Mm-hmm. Yeah, some logging would be helpful. Yeah.\ \ Greg Ceccarelli (1:47:20)\ All right, first extending the Cloud API to generate summaries.\ \ I hope it doesn't reload this page, but it will because it's like we have to actually process it. I was just going to add some search. This one is about Gestapo. Interesting.\ \ Hugo Bowne-Anderson (1:47:31)\ Mm-hmm.\ \ Greg Ceccarelli (1:47:40)\ my gosh, it did that again.\ \ Hugo Bowne-Anderson (1:47:43)\ Mm.\ \ Greg Ceccarelli (1:47:46)\ broke it.\ \ And then is there anything, I don't know if anyone's even still around in the chat, but is there any?\ \ Hugo Bowne-Anderson (1:47:54)\ No, we've\ \ got 10 people here.\ \ Greg Ceccarelli (1:47:57)\ Are there any ideas for what to actually do beyond document summarization?\ \ Hugo Bowne-Anderson (1:48:03)\ Yeah, if anyone has\ \ any ideas, think maybe building a rag system around it could be fun, but that may take a bit too long now as well. I don't know what.\ \ Greg Ceccarelli (1:48:08)\ Yeah,\ \ that's one of the challenges not going into this with like a great idea of what we wanted to do kind of makes it a little bit. Let's let's ask let's ask Claude while we're waiting for the other Claude to finish. So we built a system that enables us to get every single document from the JFK file release and we're OCRing them in our Next.js web app. Beyond summarizing the document contents, we have 2000 documents. We're not going to process all of them, but what are some interesting\ \ things that you could help us think about that we could do with such a dataset.\ \ All right, we're like clotting everywhere. Okay, two phase cloud document processing. All right, that's useful. Added a second API call. That's fine. I don't think it, well, I don't know. It might be more than 15,000 characters. That's okay. Let's just, let's leave it for now. All right, here we could topic cluster them timeline reconstruction. I think the problem is you'd probably wanna.\ \ OCR everything, which we're going to do, don't know, compare documents, but it's like, what are we even comparing? We don't even know what's in it, you know? Document authenticity scoring. All right, let's go and test this. look at that. That was...\ \ Hugo Bowne-Anderson (1:49:14)\ Mm-hmm.\ \ Dude, this is awesome. This document is\ \ a classified CIA message from September. It's our September moment again. But September, yeah, yeah.\ \ Greg Ceccarelli (1:49:38)\ It wasn't mine, though. I was\ \ born in 64. The message was sent to multiple CIS stations. Yeah.\ \ Hugo Bowne-Anderson (1:49:51)\ The document reveals that this bloke had communist ties having joined the German Communist Party, USSR. Fascinating.\ \ Greg Ceccarelli (1:49:59)\ Interesting. What\ \ this one say?\ \ This document is a CIA name check.\ \ Who is this person? Let's see who this is, I have no idea.\ \ Hugo Bowne-Anderson (1:50:11)\ Yeah.\ \ Wow, and look, they're not mentioned in many places. This where they are. it's already, this PDF is indexed, yeah.\ \ Greg Ceccarelli (1:50:18)\ I'm a raker!\ \ That's right. Okay. He's a soviet citizen. Yeah, like, there's no way you're gonna read this. Like, there's just... Yeah.\ \ Hugo Bowne-Anderson (1:50:23)\ Fascinating.\ \ No, not at all. But even\ \ like we don't even need to take this much further. The fact that we've been able to vibe code a document summarizer with the next JavaScript app in the front end is super cool, man.\ \ Greg Ceccarelli (1:50:42)\ Yeah, it is. Maybe I'll stop sharing my screen so I can see you again.\ \ Hugo Bowne-Anderson (1:50:46)\ Yeah, and do you\ \ you'll commit this and can we share share the repo with with people?\ \ Greg Ceccarelli (1:50:50)\ Not\ \ only that, but I will share the spec story too. But yeah, let me look at getignore and I'll include the sort of context here.\ \ Hugo Bowne-Anderson (1:51:01)\ And we haven't necessarily described everything spec story does. So maybe it would be cool to wrap up by actually showing us the spec story and telling us a bit about what's up.\ \ Greg Ceccarelli (1:51:11)\ Yeah, mean, one of the easiest ways is probably if we just like to look at the docs, just so I have some visual aids, because it's an extension, so it's kind of hard to show off. I could show all the command palette things. But if you want a quick start, there's three primary sort of, I guess, pieces of value right now. One is, as you've already seen, when you just install it, it will start to read from the state DB.\ \ that is in your cursor sort of user folder. And if you're on Mac, Windows, Linux, it's in different sort of places. And it will just start to extract your composer logs for you. None of that leaves your machine. It's all local, right? And you can do kind of what you want with it. One of the biggest use cases for these actually is if we were composing for a very long time and we accumulated a ton of context, right?\ \ Hugo Bowne-Anderson (1:51:57)\ Mm-hmm.\ \ Greg Ceccarelli (1:52:09)\ If you need to start a new session, which we didn't do, if we could, you can just at reference your old session to sort of bring the agent or LLM, whatever you're using up to speed, which can be very, very useful. Also too, for people that use cursor, cursor is releasing a lot of improvements at a very rapid clip. And often people's composer histories actually get...\ \ lost and wiped. So you just have some assurance that if you ever want to get back to your prompts, can, right? You can just select and save individual ones too, but like autosave kind of obviates some of that functionality. I showed that you can like actually share these things, which is one of the ways that I'll do this to put in your probably show notes, And it'll be linked to the GitHub repo that has it in it if anyone, you know, wants it. And then the last bit is something that we just released, which I didn't have turned on.\ \ But I can turn on and kind of show this off a little bit, because it does require sort of incremental degeneration for it to work. If I had it turned on, there's like a little spec story menu bar here. I have derived cursor rules off. But as we were prompting, what would be happening if I had this turned on was it would be sending these prompts in text.\ \ to another LLM that would then be writing a cursor rules file for you automatically, that if you were doing something complicated and you really wanted to make sure the agent was always respecting your tech stack choices or the way that you wanted to name files or whatnot, you wouldn't have to write all those rules yourself. so that one does for those that are listening to this live or maybe later.\ \ Hugo Bowne-Anderson (1:53:49)\ Mm.\ \ Greg Ceccarelli (1:53:56)\ It requires you to authenticate because we're actually making free LLM calls on your behalf. And do know that if you do use that, this prompt history would be sent to us, right? Because obviously we're processing it. But at the very base level, if you want to easily have your prompts and your history available to you, if you just used autosave, nothing sort of leaves the machine.\ \ The only thing that we collect are product analytics about like, you know, the fact that the extension gets activated and, you know, like debugging information. And you can turn off that if you, if you don't want it down here. So that's kind of it in a nutshell in terms of the, main use cases. But what we found is that people really, really want their chat histories, right? And this is actually one of the first steps as I was alluding to earlier in our conversation.\ \ Hugo Bowne-Anderson (1:54:23)\ Mm.\ \ Mm.\ \ Greg Ceccarelli (1:54:53)\ about kind of linking your intent to code, which is kind what we're working on next, which is also very, very fascinating, right? Because while there are these diffs in here, what you might really want to understand is what prompt actually led to what part of your code changing, right? You can think of it as like AI blame, right? If you're familiar with like it blame. So yeah, that's the...\ \ Hugo Bowne-Anderson (1:55:16)\ Mmm. Yep.\ \ Greg Ceccarelli (1:55:21)\ That's the nuts and bolts of it today. Let me do this. Let's update our plan with a final entry and also write a commit to memorialize what we've created.\ \ And I probably should change my gitignore, which might be, it's because I know what's happening. Git was actually initialized in my app folder and not in the root. That's why these aren't getting committed, but I'll fix that after this.\ \ Hugo Bowne-Anderson (1:55:55)\ Mm-hmm.\ \ Great. cool. Great. So it's going to be time to wrap up in, a minute, but I just love to know for people who are getting like started with AI assisted programming and coding and software, compose composition and composing a lot of the conversation as we've discussed has been like, you've got people building apps on Twitter on one side being like,\ \ you know I've got the next SAS whatever you got people on the other side saying this is totally useless and a horrible use of time and stop talking about it what advice do you give to people who want to like sit in the middle of the space and explore what's up?\ \ Greg Ceccarelli (1:56:38)\ Yeah, I mean, I don't think that there is any substitute for getting your hands dirty, right? And so it's like, don't trust everything you read on the internet. Like, just pick a path, pick something that you're interested in passionate about, choose one of those tools or products that's sort of closest to where you are technically, and start exploring like, I mean,\ \ If anyone's familiar with a gentleman named Ethan Mullick, wrote that book Co-Intelligence, right? He also talks a lot about alums all the time. One of the pieces of research that he's been associated with is, I think it was like a Harvard study, it could have been Wharton, I'm not exactly sure. He calls it the Jagged Frontier, right? He talked a little bit about it in Co-Intelligence, but it is actually an HBS sort of paper.\ \ Hugo Bowne-Anderson (1:57:09)\ Yeah, he's great.\ \ He's at Warden,\ \ Mm-hmm.\ \ Greg Ceccarelli (1:57:33)\ even though he is associated with Wharton. But there's this fantastic sort of blog post that he wrote on his one useful thing substack. And really the gist of it is, you know, there's no instruction manuals for these LLMs, right? And when they're in a coding context, it's kind of clearer what you can or can't do. But even when we were just doing what we were doing, you know, I was surprised by the way that\ \ that code was generated to be able to allow us to get the entirety of all of those URL strings, right? And sometimes you just kind of have to have the, I guess, courage to push the boundaries a little bit about like, even if in the past you thought like, hey, I really need to research this and figure it out, you can just ask things and be surprised when you get answers. And of course it's like trust, verify, but you really need to try and figure out how to push the boundaries of\ \ Hugo Bowne-Anderson (1:58:08)\ Hmm.\ \ Greg Ceccarelli (1:58:31)\ what these products can do. And think there's no better way to do that than playing with them. So as a final piece of advice, would be immerse yourself in the various elements that you can access, pay for subscriptions for. And for this particular use case around building with AI, treat some of this like with a beginner's mindset, right?\ \ Hugo Bowne-Anderson (1:58:33)\ Mm.\ \ Yeah.\ \ Greg Ceccarelli (1:58:59)\ you might have an identity that is, hey, professionally developing software is something that is really important to me. But until you can explore this jagged frontier and kind of let go of that a little bit, you're not gonna know what the boundaries are, right? And so that's where maybe I'd leave it is, be curious and keep prompting.\ \ Hugo Bowne-Anderson (1:59:15)\ Mm.\ \ love it and I just want to thank you for for your wisdom your time for coming and sharing it with us and thanks everyone who's who's here still for sticking around this this has been two hours Greg and it's flowing flowing by so I'm excited for the next time we get to get to have a chat as well so thanks once again my friend and see you all soon and seen\ \ Greg Ceccarelli (1:59:34)\ You\ \ Yeah, me too. Yeah, thanks for having me on. I appreciate it.\ \ }