Pełny tekst po polsku 1265 zdań · zsynchronizowane z wideo
01 · 0:00 Przedstawienie gościa0:01 Mam przyjemność przedstawić Johna Crepezziego. – Well, it's my pleasure to introduce John Crepezzi. 0:05 John jest inżynierem, który przez sporą część kariery pracował nad narzędziami dla programistów, tu i w innych miejscach, a dziś większość czasu spędza, myśląc o naszych narzędziach do John is an engineer who's worked on developer tools for a bunch of his career both here and in other places and these days spends most of his time thinking about our tooling for 0:14 AI i inżynierii oprogramowania, o AI i o wielu innych rzeczach. AI and software engineering and AI and lots of other things too. 0:18 – To prawda. – That's true. 0:18 Większość czasu. Most of my time. 0:19 Właściwie chyba cały czas, tu i poza biurem. I think like all of my time here and and outside the office. 0:22 Tylko o tym myślę. This is all I think about. 0:24 – No to dziękuję, że jesteś. – – Well, thanks for joining me. 0:26 – Dziękuję. – Thank you. 02 · 0:28 QBasic i nieskończona pętla0:27 – Zawsze lubię słuchać o tym, jak ludzie trafili do pracy, którą dziś wykonują, więc jestem ciekaw: – So, one thing I always like to hear about is how people kind of got into the kind of work they do today and so for you I'm kind of curious, 0:34 jak w ogóle wsiąkłeś w te komputery? how did you get into this whole like computer thing? 0:37 – Mój tata przyniósł do domu komputer. – Yeah, so my dad brought home a computer. 0:39 Ktoś z pracy mu go dał. Someone at work had given him this computer. 0:41 Przyniósł go do domu i podłączył. He brought it home and he plugged it in. 0:44 Był bardzo podekscytowany, choć chyba niewiele wiedział o komputerach. Jedno, co umiał, to otworzyć QBasic. He was like really excited about it but I think he didn't really know much about computers and one thing he did know is he had learned how to open QBASIC. 0:52 To był komputer z DOS-em. So, this was like a DOS based computer. 0:54 Otworzył QBasic. He opened QBASIC. 0:55 Dla tych, którzy nie wiedzą: QBasic to proste IDE i jednocześnie język programowania. For anyone that doesn't know what QBASIC is, it is a basic IDE and programming language. 1:02 Jedno i drugie. So, it's it's both. 1:03 Masz edytor, w którym piszesz, a potem wciskasz, chyba F5, i program w QBasicu się uruchamia. You have an editor where you type in and then you hit I think it was F5 and it will run the QBASIC program. 1:09 Napisał więc w QBasicu program, coś w stylu: 10 PRINT „Hello John”, 20 GOTO 10. So, he wrote this QBASIC program that said I think it said like 10 print hello John 20 go to 10. 1:15 A potem go uruchomił, program zajął cały ekran i bez końca wypisywał „Hello John”. A ja: o, And then he ran it and it took over the entire screen and it just wrote hello John over and over again forever and I was like oh, 1:22 jakie to fajne. this is so cool. 1:23 On zna moje imię! It's like it knows my name. 1:25 Jak to zatrzymać? How do we how do we stop this thing? 1:27 Chcę napisać następny program. A on: nie wiem. Like you know, I want to write the next program and he's like I don't know. 1:30 Próbowaliśmy to rozgryźć, ale w końcu po prostu wyłączyliśmy komputer, bo to przecież też jakiś sposób. – – So, like you know, we tried to figure it out but eventually we ended up just turning the computer off cuz that's you know, it's one way to stop it. 1:38 Potem włączyliśmy go z powrotem, otworzyliśmy QBasic jeszcze raz, a na górze była pomoc, chyba pod F2 albo F1. – – Then we turn it back on and he also knew enough to we opened it again and there's at the top I think it was like F2 for help or maybe F1. 1:46 Wciskasz pomoc, a tam jest naprawdę solidna dokumentacja języka QBasic. Od tej pory spędzałem wszystkie wieczory na jej czytaniu i tak powoli And you hit the help button and inside of there there's actually this really robust documentation for the QBASIC language and I just spent all my nights after that reading it and kind of 1:55 wchodziłem w programowanie. getting into programming. 1:56 – Niesamowite. – No. – Amazing. – Yeah. 1:57 – Jak przeszedłeś od QBasica i grzebania w fascynującej starej maszynie z DOS-em do inżynierii oprogramowania na poważnie? – So, how did you go from like QBasic and just like digging into, you know, an exciting old DOS machine into doing software engineering kind of in a more serious way? 2:09 – Wiele osób zaczynało od chęci robienia gier. – Yeah, I think like a lot of people were interested in making games. 2:12 To chyba dość typowe wejście w programowanie. This is a I think a pretty common introduction to programming. 2:15 Ludzie myślą: „Chcę zrobić własną grę, to jest to”. People are like, "Oh, I want to make my own game and that's what I want to do." 2:18 Ja z jakiegoś powodu chciałem tylko odtworzyć DOS-a. For some reason, all I wanted to do was recreate DOS. 2:21 Tylko to mnie kręciło. Like, that's the the thing I wanted to do. 2:23 Spędziłem więc mnóstwo czasu, pisząc własne CLI, które miało zastąpić zwykły wiersz poleceń. So, I spent a lot of time uh making my own essentially CLI that would replace the the normal prompt. 2:30 Później zrozumiałem, że może tak naprawdę interesowało mnie… – To świetna historia początków dla kogoś, kto trafił do narzędzi dla programistów. I later realized that maybe what I was interested in – This is a great origin story for getting into developer tools. 2:36 Pierwsze, co chcesz zrobić, to interpreter metacykliczny. Like, the first thing you want to do is a meta-circular interpreter. 2:38 Chcesz napisać DOS-a w DOS-ie. You want to like write DOS in DOS. 2:40 – Tak. Chyba za dużo razy obejrzałem wtedy „Piratów z Doliny Krzemowej”, bo stwierdziłem, że muszę napisać własny system operacyjny. – Yeah. – – And I think at the time I'd like watched Pirates of Silicon Valley enough times that I was like, I need to make my own uh operating system. 2:48 Tylko tego chciałem. This is like all I wanted to do. 2:50 Pisałem więc systemy operacyjne. So, I'd make like operating systems. 2:52 Nadawałem im zabawne nazwy. I'd give them little toy names. 2:53 Pracowałem nad jednym parę miesięcy, potem rzucałem i zaczynałem od nowa. I'd kind of work on them for uh a couple months and then I would stop and start over. 2:57 – Mówisz „systemy operacyjne”. Pisałeś własne sterowniki urządzeń? – you say operating systems, like, were you writing your own device drivers? 3:00 Jak poważne to było? Like, how how serious was this? 3:01 – Wtedy niezbyt, ale potem, na studiach, poszedłem trochę tą ścieżką: czy chcę – Not very serious at the time, but then when I went when I went into university, I did spend I I like went down the course a little bit of uh do I 3:08 zostać deweloperem systemów operacyjnych? Aż zrozumiałem, że nie, nie chcę. want to be an operating system developer until I realized that that no, I do not want to. 3:12 – Dziwne jest też to, że dziś już właściwie się tego nie robi. – There's also a weird degree to which we just kind of don't do that anymore. 3:15 – Tak. – Prawda? – Yeah. – Right? 3:17 To znaczy, badania nad jądrami systemów wciąż trwają, ale wszyscy jakby przyjęliśmy, że naszym systemem operacyjnym jest teraz Linux. Like, I mean, there is still research on operating system kernels, but like we've all just kind of accepted that Linux is our operating system now. 3:22 – Zgadza się. – That's right. 3:23 Przez chwilę nie było to tak oczywiste. It was a little less clear for a bit. 3:24 Pojawiało się dużo nowych rzeczy. There were a lot of new things coming out. 3:26 Był na przykład QNX. There was like a QNX, I think, was a thing. 3:28 – Jasne. I w pewnym sensie nadal jest. – Sure. And it still is in some ways. 3:30 – Tak. I dużo się działo w odmianach BSD, co też było wtedy bardzo ciekawe. – Yeah. And there was like all the um there was a lot of development happening in like the BSD variants that uh was also very interesting at the time. 3:37 – Które wciąż nie umarły. – Which are still not dead. 3:38 – Tak, nadal istnieją. – Yeah, they're still there. 3:39 – Żeby ludzie od BSD się na nas nie obrazili. – Lest the BSD people get angry at us. 3:41 – Tak. – Świetna reputacja w kwestii bezpieczeństwa, wciąż aktualna. – Yeah. – Great security record still exists. 3:43 Dobra, potem poszedłeś na studia. Okay, and then and then so you went and studied in college. 3:47 Studiowałeś informatykę? You studied computer science? 3:49 – Informatykę. – Studied computer science. 3:49 Miałem trochę szczęścia, bo od zawsze chciałem robić właśnie to. Kind of got lucky that I This is always the thing that I wanted to do. 3:52 Chciałem pisać kod. I wanted to uh write code. 3:54 Nawet nie wiedziałem, że to w ogóle jest jakaś dziedzina, wiesz? I just I didn't even really know that it was a thing, right? 3:57 Po prostu to robiłem. Like I was just doing it. 3:58 Pamiętam, jak w liceum robiłem strony internetowe i różne inne rzeczy, których potrzebowałem. I was uh Remember in high school developing web pages or or different things that I wanted. 4:03 W pewnym momencie zrobiłem stronę z poezją. I made a poetry website at some point. 4:05 Potem poszedłem na studia, myśląc: nauczę się o tym trochę więcej. And then uh you know, I went to college and I was like let me learn a little bit more about this. 4:11 Potem dostałem pierwszą pracę i tak to trwa do dziś. Then I got my first job and kind of just have continued since then. 4:13 Ale zawsze z tyłu głowy miałem, że tak naprawdę chcę pisać kod. But it was always kind of with a an eye on, you know, the thing that I really want to do is I want to write code. 4:19 I w efekcie duża część mojej pracy poszła w kierunku tego, żeby ludziom piszącym kod było łatwiej i wygodniej. And as a result a lot of my work has moved in the direction of trying to make it easier and better experience for people writing code. 03 · 4:25 Tumblr, Square i GitHub4:25 – Rozumiem. – Got it. 4:26 A zawodowo czym się zająłeś? And then professionally, what do you end up doing? 4:27 – Pracowałem w kilku startupach. – So I worked at a couple startups. 4:30 Kilka własnych próbowałem założyć. Uh I tried to start a few of my own. 4:32 Nie wypaliły, z różnych powodów. They did not pan out – – uh for various reasons. 4:35 A potem… – Najczęstszy scenariusz startupu jest taki, że nie wychodzi. And then I – That is the like the modal experience of a startup is it doesn't work. 4:39 – Nie wypala. – not pan out. 4:39 – Właśnie. – That's right. 4:40 Dlatego potencjalna wygrana jest tak duża, bo przypadek medianowy nie wygląda dobrze. That's why the upside is so good is like the median case is not great. 4:42 – Tak. Niektóre odniosły pewien sukces, ale ostatecznie zacząłem rozglądać się za inną pracą. – Yep. – – Yeah, some of them some of them have had some success, but and ultimately like uh you know, I ended up looking for different jobs. 4:49 Trafiłem do firm takich jak Square, a w końcu wylądowałem w GitHubie, gdzie pracowałem tuż przed przyjściem tutaj. And I did end up working at uh companies like Square and then eventually I found myself at GitHub, which is where I was right before this. 4:56 – GitHub to oczywiście firma od narzędzi dla programistów. – And so GitHub is obviously like a developer tool tooling place. 5:00 Czym się tam zajmowałeś? What kind of work did you end up doing there? 5:01 – W GitHubie robiłem wszystko po trochu. – Yeah, I did all kinds of things at GitHub. 5:04 Pracowałem głównie nad stronami współtwórców i narzędziami dla programistów. I worked on uh mostly like contributor pages and developer tooling. 5:10 Przez jakiś czas pracowałem nad wykresem kontrybucji. So this is like I worked on uh the contribution graph for a bit. 5:13 Nad implementacją kolejki scalania (merge queue). I worked on the merge queue implementation. 5:15 Nad wczesnymi wersjami Codespaces. I worked on uh the early versions of code spaces. 5:19 Robiłem właściwie wszystko. I I kind of just did everything. 5:21 Bardzo lubiłem tam pracować. I really liked working there. 5:22 Mówiłem kiedyś, że… Wcześniej pracowałem też w Tumblrze. I used to say that when So I Another place I worked at in the past is I worked at Tumblr. 5:27 I jedna rzecz była tam naprawdę fajna… Wiem, wiem, jestem stary. And one thing that was really neat is I know, I'm old. 5:30 Jedna rzecz… no tak, jestem stary. One thing – I'm old. 5:31 Fajne było to, że czasem po ciężkim dniu w pracy schodziłem do metra i widziałem ludzi korzystających z – that's really neat is I would like, you know, I would maybe have a rough day at work and I would walk down the subway and I would see people like using the 5:38 aplikacji Tumblra. I myślałem: „No dobra, to całkiem fajne”. Tumblr app and I'd be like, okay, well, that's that's pretty neat. 5:41 Ludzie tego używają. People are using that. 5:42 Albo w Square: wchodziłem do różnych firm i widziałem, jak ludzie prowadzą sprzedaż przez nasz terminal, nie? Or I worked at Square and I would go into businesses and see people like conducting business with with the terminal, right? 5:48 O, to całkiem fajne. Oh, that's pretty cool. 5:49 Ale nigdy tak naprawdę… To zupełnie inne uczucie, kiedy budujesz coś, czego sam używasz. Um but you never really It's like a different feeling to build something that you use. 5:53 A GitHub był moim pierwszym prawdziwym doświadczeniem firmy, której sensem jest to, żeby ludziom takim jak ja lepiej się pracowało. And GitHub was my first real experience being like the point of this company is to make people like me have a better experience with their work. 6:00 To dla mnie zupełnie inny rodzaj satysfakcji. And that's just like a totally different kind of satisfaction from for me. 6:04 – Ciekawe. – That's interesting. 6:04 Choć można sobie wyobrazić, że to działa w obie strony, nie? Well, you you can you can imagine that like cutting both ways, right? 6:07 Bo to, co fajne w Tumblrze: kto go używa? Because it's the the cool thing about Tumblr is who uses it? 6:10 Tumblra używają wszyscy. Everybody uses Tumblr. 6:12 No, już nie. It's I mean, not anymore. 6:12 Ale… – GitHub to taki fajny złoty środek, nie? But – GitHub's this nice like middle ground, right? 6:15 Bo korzysta z niego mnóstwo ludzi. Cuz it's like a lot of people use it. 6:17 Masz więc poczucie, że swoją pracą przynosisz korzyść całemu światu. Right? So, you get you get kind of the feeling of uh you're you're benefiting the whole world in in your work. 6:23 A jednocześnie to w większości programiści. Um but also the people are mostly developers. 6:26 Więc myślę, że to fajny złoty środek. Right? So, I think it's like it's a nice middle ground. 6:29 – Albo mieszkasz w Dolinie Krzemowej i wtedy masz wrażenie, że używają go wszyscy. – Or you can live in Silicon Valley and then it feels like everyone is using it. 6:32 Wszystkie reklamy w metrze są o inżynierii oprogramowania i… – Tak, trzeba się tylko trzymać kawiarni w Dolinie Krzemowej. Like all of the ads in the subway are about software engineering and – Yeah, you just got to stick to the Silicon Valley coffee shops. 6:38 Będzie zupełnie jak z Tumblrem. – – It'll be just like Tumblr. 04 · 6:41 Narzędzia dla tysięcy, nie milionów6:41 – Właśnie. A teraz pracujesz nad narzędziami dla programistów w Jane Street, co w pewnym sensie jest jeszcze bardziej skupioną wersją tamtego doświadczenia, prawda? – Right. And now you're working on developer tools at Jane Street, which is like in some sense an even more focused version of that experience, right? 6:48 GitHuba używają miliony ludzi, a narzędzia, które budujesz w Jane Street — setki, może kilka tysięcy osób. Like GitHub is used by many millions of people and the tools you build at Jane Street are used by hundreds, a few thousand people. 6:56 – Tak. – Czym różni się to doświadczenie? – Yep. – Um how Like how does that feel different? 6:59 – Myślę, że jedną z różnic jest głębia, na jaką możesz zejść — i chyba głównie dlatego tu wylądowałem. W GitHubie – I think one difference is the the depth that you can go to and that's I think why I ended up here mostly is that you At GitHub, 7:06 budujesz rzeczy dla mnóstwa ludzi, ale często robisz je pod największy wspólny mianownik zastosowań, prawda? you're building things for a lot of people, but a lot of times you're building things kind of to the greatest common denominator use case, right? 7:13 Robisz rzeczy, które działają we wszystkich językach programowania, bo ludzie używają różnych. Like you're making things that work in all the programming languages because people use different ones. 7:18 Robisz rzeczy, które działają z najpopularniejszymi systemami budowania czy najpopularniejszymi konfiguracjami testów. You're making things that work with uh maybe the most mainstream build systems or the most mainstream test setups. 7:24 Może obsłużysz najczęstsze biblioteki testowe dla Javy albo dla Ruby, bo GitHub jest napisany w Ruby. Like maybe you'll support um the most common Java testing libraries or Ruby ones because GitHub is built in Ruby. 7:31 Ale całą resztę — już niekoniecznie. Um but maybe all of the other ones not so much. 7:34 Fajne jest tu to, że możemy naprawdę pójść głęboko we wszystkich naszych implementacjach. What's neat here is that we can really go deep on all of our implementations. 7:38 Możemy więc budować rzeczy, które przyjmują pewne ogólne założenia o tym, jak ludzie pracują. So, we can build things that like really make some general assumptions about the way that people are working. 7:43 Możemy założyć, że używają systemu budowania, którego używa tu praktycznie każdy. We can assume that they're using the build system that is the build system pretty much everyone uses here. 7:48 Możemy założyć, że piszą zasadniczo w OCamlu i Pythonie. We can assume they're pretty much using OCaml uh and Python. 7:51 I możemy przyjąć założenia o tym, nie wiem, jakiego narzędzia do przeglądu kodu (code review) używają albo jak ich kod trafia na produkcję. Uh and we can make assumptions about uh I don't know what code review tool they're using or how they're getting their code merged to production. 7:58 To znaczy, że możemy sprawić, by rzeczy działały lepiej i płynniej dla ludzi. That uh means that we can make things uh work better and be more seamless for people. 8:04 – Czyli w gruncie rzeczy możesz budować lepsze integracje end-to-end, bo wiesz, z czego ludzie faktycznie korzystają. – Well, so since you can just build better end-to-end integrations cuz you know what are the things that people are using. 8:10 – Dokładnie. – A czy ma to minus taki, że zachęca do zamknięcia się w tym, jak rzeczy działają teraz? – Exactly. Is there like a downside to that of that encourage you to like lock into the particular ways things work now? 8:17 A gdy chcesz robić coś bardziej ogólnego… Trochę się martwię taką przedwczesną konkretyzacją przepływów pracy. And if we you want to do more general things like like I worry a little bit about a kind of like like premature concretization of the workflows. 8:25 – Ciekawe pytanie. – That's an interesting question. 8:27 Czyli pytasz, czy kiedy zaczynasz coś budować, grzęźniesz przez wybory podjęte wcześniej? So are you asking like when you when you start building something, do you end up stuck because of choices that were made previously? 8:35 – Tak. Żeby dać dobry, konkretny przykład: – Yeah, like like just to give like a good concrete example. 8:38 prawie całe nasze programowanie to OCaml i Python, prawda? Almost all of almost all of our programming is in OCaml and Python, right? 8:43 I jest jeszcze kilka innych języków. And there's a couple of other languages. 8:45 Mamy inny zabawny wewnętrzny język do dużego, skomplikowanego modelowania, nazywa się Webs — pomyśl o nim jak o dziwnej wersji Excela z alternatywnego wszechświata. We have like another fun internal language for like a kind of big complicated modeling thing called Webs that does like think of it as like a weird alternate universe version of Excel. 8:55 Ale czasem chcemy robić nowe rzeczy, prawda? But sometimes we want to do new things, right? 8:57 Kiedyś nie używaliśmy zbyt wiele Pythona, a potem zaczęliśmy używać go dużo więcej. So you know, at some point we didn't used to use very much Python and then we started doing a lot more of it. 9:01 Ostatnio zaczęliśmy robić dużo więcej programowania na GPU. We've recently started doing a lot more GPU programming. 9:04 I ojej, tam jest mnóstwo różnych języków programowania, a całe otaczające je narzędzia są zupełnie inne. And like boy, there's like a lot of different programming languages and like all the tooling around it is pretty different. 9:10 Na ile ta specjalizacja ma tę wadę, że można się hiperwyspecjalizować w konkretnych rzeczach, które robimy, w sposób prowadzący do budowania rzeczy, To what degree does this specialization have a downside of you can end up hyper specializing on the particular things that we do in a way that might lead you to build things that 9:19 które są zbyt sztywne? are too inflexible. 9:20 Tak że gdy chcesz robić coś nowego, okazuje się, że jesteś związany tym, że za bardzo wsparłeś specyfikę wewnętrznej infrastruktury. So that when you want to do new things, you can kind of get tied up in having like overly supported the kind of particularity the particularities of the internal infrastructure. 9:29 – Tak, czuję, że to balans między wchodzeniem naprawdę głęboko a zostawianiem wystarczająco otwartych drzwi na zmiany, które mogą przyjść w przyszłości. – Yeah, I feel like there's a balance between trying to go really deep but still trying to leave enough doors open to changes that might come in the future. 9:36 Warto też powiedzieć — jak wiesz, bo kierujesz tą grupą — że mamy cały dział o nazwie Tools and Compilers, skupiony głównie na tworzeniu tych narzędzi Um it's also worth saying, as you know, cuz you you lead the group, that we have this whole uh department called tools and compilers, which is mostly focused on uh making these developer 9:47 dla programistów. Więc w pewnym sensie podjęliśmy decyzje, które, jak sądzę, dają nam głębię kosztem pewnej sztywności — ale mamy też zespół, który pracuje nad tym, by tools. So, in a way, we've made decisions that um I think get us the depth, but at the cost of some inflexibility, but we also have a team that kind of works to 9:56 wyciągać nas z tego, gdy trzeba. take us out of that when we need to. 9:58 Myślę, że jesteśmy dość odporni na zmiany, ale to dobre pytanie. I think we're pretty robust to change, but I think it's a good question. 10:02 – Tak, i myślę, że część dobrej roboty w tej dziedzinie to po prostu dobór dobrych abstrakcji — tak, by móc korzystać ze specyfiki, – Yeah, and I I I do think part of doing a good job of this is just picking good abstractions, like both making it so you can take advantage of the particularities, 10:10 ale też umieścić przeguby w odpowiednich miejscach, żeby wymiana części nie była kompletną katastrofą. but also trying to like put the joints in the right place so that when you want to replace pieces of it, it's not like a complete disaster. 10:17 – Tak, myślę, że część z tego wymaga prawdziwej pracy. – Yeah, I think some of this takes real work. 10:19 Na przykład używamy dużo więcej Pythona, prawda? Like, for example, we are using a lot more Python, right? 10:22 I Python jest integrowany z coraz większą liczbą naszych systemów, ale byłoby przesadą twierdzić, że jest zintegrowany wszędzie tak samo jak OCaml, And Python is getting integrated into a lot more of our systems, but I think it'd be an overstatement to say that it's integrated everywhere in the same way that OCaml is, 10:30 prawda? Nie cały kod w Pythonie, który piszemy, trafia do kontroli wersji tak samo jak nasz kod w OCamlu, right? Like, it doesn't um not all of the Python code that we write is like checked into version control in the same way as our OCaml code, 10:36 i nie cały kod w Pythonie, który piszemy, dobrze współpracuje z naszym systemem budowania. or not all of the uh Python code that we write works well with the build system that we have. 10:40 I to są realne rzeczy, nad którymi musimy pracować, żeby było lepiej. And this is like real stuff that we have to work on to make better. 05 · 10:43 Od Ruby do OCamla10:43 – Chcę na chwilę wrócić do czegoś, co wspomniałeś o GitHubie: że GitHub był firmą od Ruby. – So, I want to jump back for a second to a thing you mentioned about GitHub, which is that like GitHub was a Ruby shop. 10:47 Wiem, że jesteś poważnym człowiekiem od Ruby — dużo nad nim pracowałeś w GitHubie, jeździłeś na konferencje, dawałeś wykłady. I know like, you know, you're a serious like Ruby guy, and like you worked a lot on Ruby at GitHub, gone to conferences, given talks. 10:54 A teraz spędziłeś kilka lat w zupełnie innym ekosystemie, pracując w OCamlu, który jest o wiele bardziej… Jest oczywiście ta techniczna różnica, że Ruby to And now you spent a few years in a very different ecosystem working in OCaml, which is just like a much more, you know, I mean, there's this technical difference of like Ruby is 11:05 język typowany dynamicznie, a OCaml statycznie, ale samo nastawienie jest zupełnie inne. a dynamically typed language, and OCaml is a statically typed language, but just like the orientation is very different. 11:10 OCaml jako język jest bardzo skupiony na statycznych kontrolach i gwarancjach różnego rodzaju. OCaml as a language is very focused on kind of static controls and guarantees of various different kinds. 11:16 A Ruby — nie bardzo. And like Ruby, not so much. 11:18 To zupełnie inne podejście do inżynierii i zupełnie inne środowisko pracy. It's like a very different approach to engineering and a very different development environment. 11:22 Ciekawi mnie, czego nauczyłeś się w procesie przejścia z jednego rodzaju technologii na zupełnie inny zestaw narzędzi. I'm curious just what you've learned from the process of like having shifted from very much being on one kind of technology but now using a very different set of tools. 11:32 – Tak. Na początek powiem, że kocham Ruby. – Yeah. Uh so I think I since our base thing I love Ruby. 11:36 Nie zmieniłem tu swojej pozycji. – – I've not I've not traded up on my position here. 11:39 Ale myślę, że gdy zacząłem pracować z OCamlem, uderzyło mnie, że czuję się wolniejszy. Um but I do think that uh when I first started working with OCaml uh it struck me that I felt slower. 11:46 Czułem, że wszystko idzie wolniej. I felt like everything was moving slower. 11:48 Myślę, że to prawda, że Ruby i Rails dają mniej kodu napisanego szybciej. Um I think it is true that uh Ruby and Rails results in uh less code written more quickly. 11:56 A różnice tak naprawdę dotyczą tego, jak utrzymywalny jest ten kod, ale też gwarancji, które dostajesz, pisząc kod. Um and the differences feel like they're really about um how the maintainability of that code is, but also about kind of the guarantees that you get while you're writing code. 12:06 Kiedy więc po raz pierwszy słyszysz na przykład o wyczerpujących instrukcjach match, możesz pomyśleć: „No, to nie wydaje się aż tak potrzebne. So when you first learn, for example, about exhaustive match statements, you might be like, "Well, that doesn't really seem that necessary. 12:13 Zawsze dbam, żeby wszystkie moje matche miały właściwe gałęzie”. I always make sure all of my matches have all of the right arms inside of them." 12:16 Tak, ale gdy pierwszy raz popełnisz taki błąd w Ruby, skończysz z błędem — błędem w czasie wykonania. Yeah, so the first time that you make a mistake in Ruby of this type, you're going to end up with an error, a runtime error. 12:22 A w OCamlu możesz po prostu zagwarantować, że taki problem nie istnieje — i to całkiem miła właściwość. And in OCaml, you can just kind of guarantee that this type of issue doesn't exist, and that's a pretty nice property. 12:27 Myślę, że dzieją się też inne rzeczy, na przykład w fazie projektowania: gdy projektujesz jakąś nową funkcjonalność w Ruby, I think there are also other things that happen like in the design space, for example, where when you're designing some kind of new functionality in Ruby, 12:35 prawdopodobnie skończysz, pisząc dokument opisujący, jak różne typy współdziałają ze sobą. what you're probably going to end up doing is you're going to like write a doc describing how all the different types interact with each other. 12:41 W OCamlu możesz zrobić to samo. Uh in OCaml, you can do the same thing. 12:43 Możesz rozpisać, jak wszystkie typy współdziałają, ale z dodatkową korzyścią, że możesz je skompilować i upewnić się, że typy, które You can kind of write out how all the types interact with each other, but with the added benefit that you can you can like compile them and make sure that the types you're 12:49 piszesz, faktycznie się ze sobą zgadzają. writing actually agree with each other. 12:50 – Czy to prawda? – So is that right? 12:51 Czy ludzie myślący w Ruby mówią wprost językiem typów, choć w formalnej definicji języka typów nie ma? Do people who think about Ruby, do they explicitly talk in a language of types, even though there's no types in the actual formal definition of the language? 12:59 – Nie powiedziałbym, że to język typów — raczej język obiektów: mówisz w zasadzie, że ten obiekt ma właściwość o takiej nazwie, – I wouldn't say it's talking in the language of types as much as it's talking about the language of objects, where you're basically saying like this object has a property with this name, 13:07 a szczegół typu prawie nie ma znaczenia. and kind of the the type detail almost doesn't matter. 13:10 Czasem może chcesz powiedzieć, że ta właściwość jest takiego konkretnego typu, ale zwykle po prostu rozumie się, że jeśli coś jest tekstem, Maybe sometimes you're uh wanting to say, you know, this property is um of this particular type, but mostly it's just kind of understood that if something is like text, 13:20 to jest stringiem, a duck typing pomaga, gdy faktycznie jest rozjazd między tym, czego potrzebujesz, a tym, co właściwość naprawdę zawiera. it's a string, and uh you know, the duck typing helps you when when actually there's like a mismatch between what you need and what the what the property actually holds. 13:29 Co, wiem, brzmi jak szaleństwo. To zupełnie co innego. Which I know is like a crazy It's very different. 13:33 – To zupełnie co innego. It's very different. 13:35 I chyba… Co do tego, że Ruby pomaga być zwięźlejszym — myślę, że jedną z rzeczy, na których wielu ludziom od Ruby bardzo And I think I guess So the the the point about like Ruby that helps you be more concise, I think one of the things that a lot of Ruby people care about a 13:44 zależy, są jego naprawdę fajne mechanizmy metaprogramowania. lot is like it has really nice metaprogramming facilities. 13:47 – Tak. – Co wydaje się świetnym sposobem na skondensowanie tego, co trzeba jawnie wyrazić w kodzie. – Yep. – Which seems great as a way of like condensing what you need to actually express explicitly in code. 13:53 Kosztem tego, że pod wieloma względami trudniej o nim rozumować. Um at the expense of being in many ways harder to reason about. 13:57 – Tak. – Ale to, co mnie zawsze martwi, to kwestia utrzymywalności. – Yep. – Um but the thing that I always worry about is the kind of maintainability angle. 14:01 I właściwie się zastanawiam — GitHub to duże miejsce z dużą infrastrukturą programową. And I actually wonder like GitHub is like a big place with a big software infrastructure. 14:06 I zawsze wydawało mi się dość szalone prowadzić infrastrukturę takiej wielkości i skali w języku takim jak Ruby — zarówno z powodów wydajnościowych, jak i ze względu And to me it's always seemed kind of wild to run a software infrastructure of that size and scale in a language like Ruby both for performance reasons and then also for the kind 14:17 na skalę inżynierii oprogramowania, prawda? of like scale of software engineering, right? 14:19 Pod wieloma względami najcenniejsze w systemach typów jest to, że są narzędziem komunikacji między ludźmi, prawda? Like in many ways I think the most valuable thing about type systems is as a communication tool between people, right? 14:25 Ktoś spisuje zestaw typów i to wyraża pewien zamierzony zbiór reguł, inwariantów i struktur w bazie kodu. You like you know, some one some person writes down a set of types and that expresses some intended set of rules and invariants and structures about the code base. 14:33 – Tak. – Ktoś inny pisze kod gdzie indziej, a kompilator przekazuje teraz wiadomość od osoby, która spisała typy, do osoby, która – Yep. – You know, somebody else writes code somewhere else and like the compiler now can you know, conveys the message from the person who wrote down the types to the person who's 14:41 próbuje zmienić coś, co z tych typów korzysta — w sposób, który naprawdę pomaga dużym grupom ludzi skuteczniej się koordynować. trying to change something that uses those types in a way that really helps large groups of people coordinate more effectively. 14:48 A teraz, gdy biega nam po bazie kodu tyle AI — cała masa wirtualnych ludzi — wydaje się, że i tam daje to użyteczne ramy. And now when we have all these AIs running around a whole bunch like virtual people who are also operating in the code base, it feels like it provides useful structures there as well. 14:59 Jestem więc ciekaw — wiem, że GitHub w różnych momentach miał wewnętrzne dyskusje o tym, jak budować własne środowisko programistyczne i jakiego języka używać. So I'm kind of curious like I know like at various points GitHub has had internal questions about how they should build their own development environment and what language they should use. 15:06 – Tak. – I ciekawi mnie, jak dziś patrzysz na to pytanie — czy ma sens, żeby coś takiego jak GitHub w obecnej skali było – Yep. – And I'm curious like how you now reflect on that question and like like does it make sense for something like GitHub at the scale that it's in now to be 15:14 w języku typowanym dynamicznie? in a dynamically typed language? 15:15 A gdybyś robił to dziś sam, podjąłbyś inne decyzje? Or if you were to do it yourself now, would you make different choices? 15:19 – Tak. Jedną z pierwszych rzeczy, które wspomniałeś, była wydajność. – Yeah, I think so one of the first things you mentioned was the performance side. 15:23 I myślę, że to coś, co często się podnosi przy językach takich jak Ruby czy Python. And I think this is something that gets brought up a lot with languages like Ruby or Python. 15:26 To prawda, że jeśli masz jakiś kod nastawiony na wydajność, będzie szybszy nie w jednym z tych dynamicznie typowanych języków. Um it's true that like if you have maybe some kind of uh I don't know, performance-oriented code, it's going to be faster not in one of these um dynamically typed inferred languages. 15:38 Ale realistycznie większość operacji w GitHubie jest ograniczona przez I/O, prawda? But realistically, most operations in GitHub are like bound by IO, right? 15:43 To wywołanie do bazy danych albo do podsystemu Gita. It's like a call to a database or it's a call to like the Git subsystem. 15:46 I tam idzie większość czasu obsługi żądania. And that's where most of the time gets spent in a request. 15:48 Myślę, że większość rzeczy dzieje się tak naprawdę w warstwie widok–kontroler, a większość kosztu… większość problemów, które mieliśmy Um I think like most things that are happening are actually just like happening in the viewer controller layer, and most of the cost is actually like most of the problems that we had 15:59 z utrzymaniem GitHuba na nogach, kręciła się wokół baz MySQL w samym sercu całości. um you know, running and keeping GitHub up, you know, centered around like the MySQL databases at the core of the whole thing. 16:07 Może nic dziwnego — robią się naprawdę duże, a utrzymanie ich w dobrej formie jest trudne. Um maybe not too surprisingly, they get really big and uh you know, keeping them working well is hard. 16:13 – Mhm. – Nawet takie rzeczy jak migracje w tej skali są w zasadzie niemożliwe. – Mhm. – Um even things like running migrations at that scale is like kind of impossible. 16:17 Jest więc sporo narzędzi, dzięki którym nie trzeba robić ALTER TABLE, które grożą zablokowaniem części bazy. So, there's a bunch of tooling for uh making it so you wouldn't have to do alter table statements that are have the risk of making parts of the database locked. 16:25 – Mhm. – Druga rzecz, którą wspomniałeś… A, przepraszam. – Mhm. – The second thing that you mentioned Oh, sorry. 16:29 Jest też masa niskopoziomowych operacji Gita. And then there's a bunch of like low-level Git operations that happen. 16:32 I w GitHubie one w większości nie dzieją się w Ruby. And at GitHub, those mostly don't happen in Ruby. 16:34 Dzieją się w językach takich jak Go. They happen in languages like Go. 16:36 Więc wszystko, co intensywne obliczeniowo, jest schowane w innych usługach. Um so, any kind of compute-intensive stuff is like stuff tucked away in other services. 16:40 – Rozumiem. – Got it. 16:41 Czyli jednym z rozwiązań na „Ruby jest za wolny” jest: tam, gdzie to ma znaczenie, nie używaj Ruby. So, one of the solutions to Ruby isn't fast enough is where that's matters, don't use Ruby. 16:44 – Tak. – Jasne. – Yep. – Sure. 16:45 – Tak. Albo tam, gdzie chcesz mieć pewne gwarancje. – Yep. Or where you want certain guarantees. 16:47 I myślę, że to całkiem rozsądna… – Jasne. And I think that that's that's, you know, a nice um – Sure. 16:49 – …linia podziału. – middle line to draw. 16:51 Druga rzecz, którą wspomniałeś, to utrzymywalność Ruby w dużej bazie kodu czy dużej organizacji. I think the other thing you mentioned was about uh the kind of like large code base or large organization maintainability of Ruby. 16:58 Pewnie nie bez powodu wiele organizacji zbudowanych na Ruby w czasach startupowych później od niego odeszło — i pewnie ma to związek dokładnie z tym, Uh there's a reason probably that a lot of organizations that were built on Ruby in like their startup days moved away from Ruby later, and it's probably related to this exact thing that 17:08 co mówisz, czyli… – I to też powód, dla którego języki takie jak Ruby czy Python dostały doczepione na końcu opcjonalne systemy typów. you're saying is that – And and also a reason that like languages like Ruby and Python have gotten optional type systems tacked on to the end. 17:16 Dlatego Meta włożyła tyle pracy w stworzenie Hacka, który zaczynał jako język z opcjonalnym typowaniem, a z czasem został dokręcony i dziś typowanie jest obowiązkowe. The reason that Meta all this work into creating hack, which started out as an optionally typed programming language and over time has been locked down so it's now mandatorily typed. 17:24 – Tak. Ruby też ma coś takiego — Sorbet. – Yep. Yeah, and Ruby has one of these called Sorbet. 17:27 Ruby ma też własny, wbudowany opcjonalny system typów, zbudowany przez opiekunów języka. Ruby also has its own internal optional type system built by the language maintainers. 17:33 Więc to zdecydowanie jest obecne w Ruby, tak jak w Pythonie — i chyba też w JavaScripcie, z TypeScriptem. – Zdecydowanie. So this is like definitely a thing in Ruby as well as it is in Python and I guess also JavaScript with like things like TypeScript for sure. 17:40 – Utrzymywalność w dużej organizacji to realny problem i myślę, że trzeba zdecydować, ile kosztuje błąd w takich systemach. – The large organization maintainability is a real problem and I think you have to decide how what of a mistake is in in systems like this. 17:49 Przy czym GitHub ma też sporo przestojów i problemów z utrzymaniem dostępności. I mean GitHub has also a lot of like downtime and issues staying up. 17:54 Więc czuję, że to trochę tendencyjne pytanie. – – So I feel like it's a little bit of a loaded question. 17:57 – Tak, zwłaszcza teraz. – Yeah, right now especially. 17:58 Czuję, że to bardzo niezręczny moment. I feel like it's a very awkward time. 18:00 Dosłownie parę dni temu GitHub spowalniał mi moje domowe projekty. – – Just a couple days ago some of my home projects were being flipped down by GitHub actually. 06 · 18:05 Active Record, Petrol i metaprogramowanie18:04 – Jest tu też pewien kompromis, na który idziesz, prawda? – There's also a trade that you're making there, right? 18:07 Za każdym razem, gdy decydujesz się na taki język, decydujesz się też na to, że będziesz wolniejszy. Every time that you're making a decision to you know, to use a language like this, you're also making a decision to be slower. 18:11 A raczej wolniejszy pod pewnymi względami. And what or sorry, slower in some ways. 18:13 Jeden z przykładów: Rails ma ORM do bazy danych. And one like one of that is for example is Rails has a database ORM. 18:21 ORM to mapowanie obiektowo-relacyjne, które przenosi pojęcia z bazy danych wprost na kod Railsów czy Ruby. Nazywa się Active Record. ORM is a object relational mapper which basically maps the database concepts directly onto Rails code or Ruby code in this um It's called active record. 18:31 Pozwala myśleć o bazie danych jak o zbiorze obiektów. And what it lets you do is basically think of the database as a series of objects. 18:35 Relacje między nimi definiujesz bezpośrednio na obiektach. So you actually define on the objects the relationships between them. 18:39 Mówisz na przykład: książka ma jednego autora. So you say like um a book has has one author. 18:45 I dzięki tej jednej linijce nagle każdy obiekt książki dostaje metodę „autor”, a każdy obiekt autora dostaje metodę „książki”. Right? And then just by writing that one single line all of a sudden all of your book objects get an author method and all of your author objects get books as a method 18:55 I to wszystko dzięki jednej linijce, którą dopisujesz do klasy. also. And you can get that all through just like a single line that you have to write on the class. 18:59 Odpowiednikiem tego w OCamlu, a właściwie u nas, jest Petrol. And kind of the OCaml equivalent of that, I guess our equivalent is petrol. 19:04 A w Petrolu sporo jest walki z systemem typów, żeby doprowadzić go do stanu, jakiego chcesz, i to jest trochę nienaturalne. And in petrol there's like a lot of kind of working with the type system to try to get it into the situation where you want it to be and it's a little unnatural. 19:14 To bardzo potężne narzędzie, bo wskazuje mnóstwo problemów, które mógłbyś przeoczyć, ale ta moc ma swoją cenę. I think it is very powerful in that it points out a bunch of problems that you might mistake, but that like power has a cost. 19:21 – Tak, i myślę, że to ogólny problem, zwłaszcza z rzeczami o charakterze metaprogramowania. Wiele z tego metaprogramowania wyrosło – Yeah, and I think this is a general issue, especially with things that have a kind of like meta programming feel to them, which is a lot of meta programmers have just came 19:29 ze świata języków bez typów, Lispa, Scheme'a i podobnych. Tam po prostu łatwiej to robić, a wymyślenie, jak pogodzić metaprogramowanie out of like the untyped programming language world, Lisp and Scheme and the like, and it is just easier to do things in that domain and figuring out how to marry meta programming and 19:39 z typami, jest trudne. Pracujemy nad tym wewnętrznie. types is hard and like we have work on this internally. 19:42 Są lepsze podejścia do metaprogramowania w OCamlu, jest sporo ciekawych badań, ale zbudowanie takich systemów wymaga poważnej pracy akademickiej. They have like better meta programming for OCaml and there's a lot of fun research on this, but like it requires like serious academic research to build the systems to do this. 19:51 Więc jest tu realne miejsce, w którym tworzysz złożoność, która inaczej nie musiałaby istnieć. So there's a real a real spot where you are creating complexity that otherwise doesn't necessarily need to exist. 19:56 – Tak, ale wzięcie tej złożoności na siebie w kilku popularnych bibliotekach może być opłacalne. Bardzo cieszę się na metaprogramowanie – Yeah, it seems like the taking that complexity on in some of the common libraries that people use might be like a worthwhile trade and I'm I'm pretty excited about the meta programming 20:05 w OCamlu, bo może dać nam więcej siły wyrazu tam, gdzie to się liczy, a całej reszcie powiemy: lepiej nie używajcie tych funkcji. stuff in OCaml because maybe it could give us more expressibility where it counts and then we can kind of just tell everyone else maybe don't use don't use these functions. 20:12 To kolejna rzecz, na którą czasem wpadamy: system typów daje ogromne możliwości wyrażania ograniczeń, I think that's another another thing that we sometimes can run into is that you have a lot of ability to express constraints in the type system, 20:19 ale może nie zawsze powinno się z nich korzystać. but you maybe always shouldn't like maybe you shouldn't always use that. 20:23 To kolejne napięcie, które tu istnieje. So that's another kind of like tension that exists. 20:25 – Zgadza się. – That's right. 20:26 Typy to bardzo potężny system wyrażania ograniczeń, można nim robić mnóstwo sprytnych rzeczy, ale zwykle nie należy być aż tak sprytnym. Like the types are very powerful system for expressing constraints and there's a lot of very clever things you can do and you mostly shouldn't be that clever. 20:33 Spryt sam w sobie to raczej zły pomysł. It's like cleverness itself is kind of a bad idea. 20:35 – Tak. A coś, co wydaje się sprytne, na początku jest proste, prawda? – Yep. And something that seems clever, it it starts simple, right? 20:39 A potem okazuje się: dobra, żeby to przetestować, musimy dobudować z boku całą ciężką konstrukcję. And then later you're like, well, okay, in order to test that now we actually have to have this like kind of bulky setup attached to the side. 20:46 Czasem coś wydaje się proste i dopiero później widzisz prawdziwy koszt jego używania. So I think like sometimes something seems simple and it's not until later that you realize the actual cost of using it. 20:52 – Tak, a ostatecznie, projektując systemy, chcesz zachować potrzebną funkcjonalność i jednocześnie utrzymać je naprawdę prostymi. I ta prostota – Yeah, and in the end like the thing you're trying to focus on when you're engineering systems is keeping them having the functionality you need while keeping them really simple and that simplicity 21:02 jest kluczowa. Trzeba uważać, żeby nie oddać jej w zamian za niewłaściwe rzeczy. is critical and like you have to be careful not to trade it away for the wrong things. 21:05 – Tak. Powinienem też dodać, że chyba nie do końca oddaję tu sprawiedliwość argumentom za OCamlem. Yep. – Um I should also say like I I think I'm maybe not giving entirely enough credit to some of the the OCaml points here. 21:12 Często walczę z jakimś irytującym problemem systemu typów w OCamlu i nagle rozumiem, że on mi coś mówi. There are many times where I'm like fighting against some annoying type system issue with with OCaml only to realize that like it's telling me something. 21:23 Przekazuje mi jakąś informację. It's giving me some piece of information, right? 21:25 Mówi: to, co myślałeś, że możesz tu wstawić, jest typu option, a ta funkcja nie przyjmuje option. It's saying like oh like this thing that you thought you could put here, uh you know, it's an option and this function doesn't take an option, 21:34 To naprawdę przydatna informacja. right? That's a really useful thing to know. 21:35 A w Ruby skończyłoby się to po prostu błędem nil. And I guess in Ruby that would have just resulted in like a nil error. 21:39 – Właśnie. Typy to znów sposób przekazywania informacji. – Right. Again, types are a way of communicating things. 21:42 Dobrze, przejdźmy do pracy nad AI, którą tu wykonałeś. – And – Well, let's move on to talk about the AI work you've done here. 21:47 Mam wrażenie, że rola typów i AI splatają się ze sobą w ciekawy sposób. I I do actually feel like this question of like I do feel like this question about the role of types and AI actually interlace in interesting ways. 21:55 – Chyba przez to wszystko robi się bardziej skomplikowane, nie? – Does it make it the whole thing more complicated, right? 21:58 Tak, przepraszam, jeszcze o tym porozmawiamy. – Tak, ale opowiedz o pracy, którą tu wykonałeś nad naszymi narzędziami AI. Like like yes, sorry we're going to talk about – Yeah, but let's have you talk about the the work you've done here like on our AI tooling. 22:04 Nie zaczynałeś z planem pracy nad AI, bo gdy cię zatrudnialiśmy, nie było to oczywiste, ale tym w końcu się zająłeś. You didn't start out with a plan of working on AI stuff cuz like that wasn't the obviously right thing to do when we hired you, but it's what you ended up doing. 22:11 Opowiedz więc, jak w to wszystko wsiąkłeś. So maybe tell me a little of the story of how you got into all this stuff. 07 · 22:14 Trzy dni na JaneGPT22:14 – Dołączyłem z zamiarem pracy nad wyszukiwaniem kodu. – Yeah, I joined with the intention of working on code search. 22:17 Chcieliśmy zbudować coś jak Hoogle, czyli wyszukiwarkę kodu dla Haskella. We wanted to build something like Hoogle, which is a Haskell search engine for code. 22:21 Taki wewnętrzny Hoogle dla OCamla. We wanted to build like an internal Hoogle for OCaml. 22:23 To był główny powód, dla którego dołączyłem. And that that was like the guiding uh reason that I joined. 22:27 Tego chciałem, a właściwie tego wy ode mnie chcieliście. That's what I wanted I guess sorry, that's what you all wanted me to do. 22:29 – I dobry pierwszy projekt. – – And a good first project. 22:32 Nie jedyny, ale no wiesz. It wasn't the only thing, but you know. 22:32 – Miało być naprawdę fajnie. – It it was it was going to be really fun. 22:34 Zacząłem nad tym pracować i może tydzień później, tuż po moim dołączeniu do firmy, wyszedł ChatGPT. So I started doing that and then um maybe like a week into working on that when I had just joined the company, ChatGPT came out. 22:42 To był chyba grudzień 2022. So this was I think like December of 2022. 22:46 Może nie powinienem podawać daty, ale mniej więcej wtedy. Maybe I shouldn't commit to a date there, but sometime around then. 22:49 Zaczęliśmy przyglądać się ChatGPT. Wtedy można było przejść się między rzędami biurek i zobaczyć, jak ludzie wyciągają telefony And we start uh looking at uh ChatGPT and you could actually see it at the time you could walk up and down the rows here and see people like pulling their phones out 22:59 i korzystają z ChatGPT, bo nie mieliśmy jak im go udostępnić. and using ChatGPT because we had no way for them to use it. 23:01 Zaczęliśmy więc szukać sposobu, jak dać wszystkim dostęp do ChatGPT. So, then we started looking into like how to get everyone access to ChatGPT. 23:05 A wtedy działało to tak, że istniały tylko konta osobiste. And uh the way that it worked at the time was that there were only personal accounts. 23:10 Nie było kont dla firm. There weren't pro accounts. 23:11 Więc ścieżka wyglądałaby tak: idziemy do działu zakupów i mówimy: kupcie każdemu osobne konto Pro, każde na inną kartę kredytową, So, I guess the path would have been like go to our procurement department and say like buy everyone an individual pro account with with separate credit cards, 23:20 co… sam nie wiem. which uh I don't know. 23:21 Pewnie by to zrobili. They probably they probably would have done it. 23:23 Ale nie byliby zachwyceni. They wouldn't have been very happy about it though. 23:24 Kolejny haczyk: wtedy każde użycie ChatGPT przez stronę oznaczało zbieranie danych do treningu. Another caveat at the time was that um any use of ChatGPT, the website, was like subject to collecting data for training. 23:32 Ale zauważyliśmy na stronie wyjątek dla API: jeśli korzystasz z API, dane nie trafiają do treningu. Um but we noticed on the website that there was a carve out for the API, that if you use the API that it wouldn't be subject to training. 23:39 Zbudowałem więc prototyp o nazwie JaneGPT. So, I built this prototype that it was called Jane GPT. 23:43 Początkowo był napisany w Railsach, no cóż, byłem nowy. It was actually originally written in Rails, which is kind of you know, I was new. 23:47 Nie znałem jeszcze dobrze OCamla. I didn't have a strong grasp of OCaml. 23:49 Więc napisałem go w Railsach. Um So, I wrote it in Rails. 23:51 Przyszedłem następnego dnia i wszyscy mówili: „Tak, budujmy to”. Uh I came in the next day and then everyone was like, "Yeah, let's build this." 23:55 Dobraliśmy jeszcze parę osób i w trójkę, chyba w trzy dni, zbudowaliśmy pierwszą wersję aplikacji czatowej, której używamy And then we took a couple more people uh and three of us built over, I think, 3 days or something like that, built the first version of this chat application that we use 24:03 wewnętrznie pod nazwą JaneGPT, w zasadzie podobnej do ChatGPT. internally called Jane GPT, uh which is basically similar to ChatGPT. 24:08 Korzysta z niej cała firma. And we have the entire firm use that. 24:11 Wszyscy przechodzą przez centralny zestaw poświadczeń, który utrzymujemy w naszej usłudze. They all go through like a central um set of credentials that we maintain in our service. 24:16 Tak to się zaczęło. And that's how we got started. 24:17 To było trzy i pół roku temu. Uh that was 3 and 1/2 years ago. 24:20 Od tamtej pory ciągle znajdujemy nowe rzeczy do zrobienia. And since then, we've we've continued to find things to work on. 24:24 Do wyszukiwania kodu nigdy nie wróciłem. I've never gotten back to the code search part. 24:26 Ale może kiedyś. – Right. – – But someday, I guess. 24:28 – Chyba inni się tym zajęli. – Tak, to prawda. – I'm I think other people have to work on – Yeah, that's true. 24:31 – Może warto naszkicować, jaką wartość dało nam to, że zrobiliśmy własne rozwiązanie. – – And And yeah, maybe it's worth like sketching out like what the value that we got out of like doing our own thing was there. 24:38 Pierwsza rzecz: gdy wyszedł ChatGPT, oni wcale nie myśleli o nim od razu jako o produkcie komercyjnym dla firm. Like, I guess one point to make early on is like boy, when ChatGPT came out, they were not immediately thinking about it as like a commercial product for companies to use. 24:48 Byli wręcz zupełnie zaskoczeni jego popularnością i skutecznością, a on przemeblował całą branżę. Like, in fact, they were like totally surprised by how popular it was and how effective it was and it kind of reshaped like kind of the entire industry. 24:57 Ale na początku mówili: „Nie jesteśmy jeszcze gotowi na was, firmy”. But early on they were like, "Yeah, yeah, we just like we're not ready for you companies." 25:01 Robiąc własne rozwiązanie, niemal od razu zyskaliśmy większą kontrolę nad naszymi danymi. So, by doing our own thing, we kind of pretty immediately got a thing where we had more control of our data. 25:07 – Tak. – Prawda? – Yep. – Right? 25:08 I mieliśmy sposób, by udostępnić to wszystkim w firmie i ogarnąć problemy z uwierzytelnianiem i zarządzaniem danymi, które z tego wynikały. Uh and where we had a way of deploying it to all of the different people internally and dealing with like all of like authentication and data management problems that came up from that. 25:18 Czy były jeszcze inne korzyści z budowania własnego rozwiązania? Um were there any other benefits that we got from building our own thing? 25:21 – Kolejna korzyść: może kilka tygodni później wyszedł Claude. – Uh I guess another benefit is that maybe like a couple weeks after uh Claude had come out. 25:26 Czyli Claude.ai. So, this was Claude AI. 25:27 Nie wiem, co byśmy zrobili, gdybyśmy dali wszystkim ChatGPT, a teraz chcieliby też Claude'a. Uh and I I don't know what we would have done if we had just given everyone ChatGPT and now they wanted to have Claude, too. 25:35 Pewnie założylibyśmy im wszystkim jeszcze konta Claude'a. I guess we would have just made them all Claude accounts, too. 25:37 Ale dzięki tej usłudze mogliśmy dodać w aplikacji czatowej przełącznik modeli, żeby ludzie mogli przeskakiwać But what we were able to do because we had this service was we were able to add a model switcher inside of the chat application so they could switch back back and forth 25:45 między tymi dwoma. between the two. 25:46 A przy okazji zbudowaliśmy pod spodem warstwę przeznaczoną do programowania. And then while we were doing that, we built a a layer kind of underneath that that was like a made for people to program with. 25:54 Udostępniliśmy ludziom w firmie zestaw bibliotek klienckich. So, you put out a set of client libraries to people at the firm. 25:57 Mogli pisać kod bez zastanawiania się, do którego LLM-a trafiają ich zapytania. They could now write code without having to worry about which LLM they were hitting. 26:01 Fajne jest to, że gdy wychodzą nowe modele i najlepszy model do ich zastosowania jest od innego dostawcy, And what's nice about that is that they uh as new models come out, if the you know, best model for their use case is not from the same vendor, 26:08 mogą go po prostu przełączyć, nie zmieniając całego kodu. they can just switch it without having to change all their code. 26:10 – Właśnie. I wszystko to przechodzi przez te same limity zapytań, kontrolę danych i tak dalej. – Right. And all of that can go through the same set of rate limits and data controls and all of that. 26:17 Jako organizacja zyskaliśmy kontrolę nad własnym losem i własnymi danymi. And just like we got to as an organization have like control over our fate and our data. 26:23 Ale daliśmy też ludziom API, a raczej interfejsy dla ludzi oraz API dla części inżynierskiej, żeby móc używać AI Uh but also give people APIs both like APIs for people and or rather interfaces for people and then APIs for the software engineering part of it so that we could like use AI 26:34 na wiele różnych sposobów, a całość była spójnie zarządzana. in lots of different ways and have like the whole thing be kind of coherently managed. 26:38 – Tak. Wtedy limity zapytań nie były dla nas wielkim ograniczeniem. – Yeah. At the time we we weren't too rate limit constrained, right? 26:42 Budowaliśmy te limity, ale trochę na zasadzie: hipotetycznie nie chcemy sytuacji, w której jedna część firmy generuje So, it's kind of like we're we're building these rate limits, but they're almost like, "Oh, hypothetically, we don't want to be in a situation where one part of the firm is like using 26:50 ogrom zapytań do LLM-ów i zagłodzi inną część firmy. a ton of LLM usage and it's it's a starving out of different part of the firm's usage. 26:54 Ale teraz, w 2026, bardzo się cieszymy, że mamy tę całą infrastrukturę, bo naprawdę nie chcesz, żeby coś, co ktoś dopiero testuje, But like now in 2026 we're really happy that we have all of this infrastructure because it is the case that you know, you don't want one thing that maybe someone's developing in test 27:06 zabierało limit zastosowaniu produkcyjnemu. to take rate away from production use case. 27:09 Może warto cofnąć się o krok i powiedzieć więcej o tym, czym zajmuje się zespół. – Right. – Maybe it's worth stepping back just a little bit and saying like more what the team does. 27:14 Czy to… – Tak, jasne. Is that – Yeah, sure. 27:16 To, czym zespół zajmuje się dzisiaj, tak? Like it's like what the team does today, right? 27:18 Od tego początku minęło kilka lat i infrastruktury jest teraz o wiele więcej. There's been a few years since that like early stop and there's a lot more infrastructure now. 27:22 Dobrze byłoby zrobić przegląd tego, co właściwie robimy. So yeah, it would be good to have a tour of the things that we actually do. 27:25 – Po pierwsze, jak mówiłem, budujemy platformę, na której deweloperzy w firmie tworzą aplikacje oparte na LLM-ach. – So the first thing is we build, like I said, a platform for developers at the firm to build LLM powered applications on top of. 27:31 Obejmuje ona biblioteki klienckie do pojedynczych wywołań LLM-a. So this includes client libraries for making just kind of one-off LLM calls. 27:36 A także możliwość definiowania w OCamlu lub Pythonie funkcji, które przekazujemy LLM-owi do użycia, w tym określania typami OCamla It also includes the ability to like specify functions in OCaml or in Python that get passed to the LLM that it can use, which also includes a ability to specify with OCaml types 27:48 tych typów, które model zobaczy przy wywołaniach funkcji. the types that will be presented to the LLM for the function calls that it uses. 27:53 Przerzuca więc most między typami JSON a typami OCamla. So kind of bridges over you know, the difference between JSON types and OCaml types. 27:58 – Właśnie. To różnica między starą szkołą, gdzie dajesz LLM-owi tekst, a on go dopełnia, a nowoczesnymi przepływami agentowymi, w których LLM – Right. And this is like the difference between like old school, you just like give some text to an LLM and it completes it to kind of modern agentic flows where the LLM 28:08 emituje wywołania narzędzi, ty je wykonujesz i podajesz wyniki z powrotem. Cały ten cykl pozwala modelom działać w świecie. emits tool calls and then you execute those tool calls and feed the results back in and like this whole cycle of things that allows the models to take action in the world. 28:16 To właśnie dają wywołania funkcji. Like that's what these function calls give you. 28:18 – Tak. A na tym budujemy serię produktów, których ludzie używają. – Yep. And then on top of that we build a series of products that people use. 28:23 Jednym z nich jest aplikacja JaneGPT. So one example of that is this Jane GPT application. 28:27 Innym, o którym na pewno sporo pogadamy, jest asystent do kodowania w wierszu poleceń o nazwie AIDE. Another example that I'm sure we'll talk about a bunch is we build a CLI based coding assistant which is called Aid. 28:33 AIDE CLI. Wbudowujemy go też w edytory, a coraz częściej dodajemy interfejsy w takich miejscach jak notatniki Pythona czy – Mhm. – Aid CLI and then we also put those inside of editors and then we've also increasingly been starting to like put surfaces inside of things like Python notebooks or inside of 28:45 interfejs Webs, języka programowania, o którym wcześniej mówiłeś. um, the interface for Webs, the programming language you were talking about earlier. 28:49 To zestaw narzędzi, które robimy dla ludzi. – Right. – And so that's the the set of tools that we make for humans. 28:54 Jest też zestaw narzędzi, które robimy dla LLM-ów. – Mhm. – Then there's also a set of tools that we make kind of for the LLMs, right? 28:58 LLM-y muszą działać w świecie, więc muszą umieć czytać wiki albo uruchamiać polecenia basha na komputerach The LLMs have to like do things to the world, so they need to be able to uh read the wiki or they need to be able to like run bash commands on people's 29:06 ludzi. O tym też jeszcze pogadamy. computers. We'll talk more about that, too. 29:10 Chodzi o wszystko, co robią LLM-y, i o ekosystem narzędzi zbudowany w firmie. Um, but all of the things that the LLMs do and the ecosystem of tools that the firm has built. 29:15 Część zbudowaliśmy my, część inne działy firmy. Some of these are built by us um and some of them are built by different parts of the firm. 29:19 Jest ponad tysiąc różnych narzędzi, które poszczególne działy stworzyły do swoich zadań biznesowych. There are like over a thousand different tools that different parts of the firm have made to do things related to their particular business. 08 · 29:27 Ewaluacje: modele oceniają modele29:26 Nasz zespół zajmuje się też ewaluacjami (evals). – Mhm. – Another thing that our team does is we work on evaluations. 29:30 To w gruncie rzeczy pisanie testów dla modeli: model próbuje wykonać jakąś pracę, a potem go oceniamy, So this is like essentially writing tests for the models where the models try to do uh some amount of work and then we we grade them, 29:40 żeby stwierdzić, jak wypadł w teście. right, to say how they did on the test. 29:42 Robiąc to, po pierwsze dowiadujemy się, jak radzą sobie modele, więc możemy decydować, które z nich domyślnie udostępniać ludziom. And in doing this work, we both get an idea of like how models are doing so we can make decisions about which ones to put in front of people by default. 29:50 A po drugie zyskujemy możliwość ulepszania harnessów, czyli tego, jak wszystko konfigurujemy. And we also gain the ability to make improvements to kind of the harnesses and how we set things up. 29:56 Jak formułujemy prompt, jakie narzędzia dajemy modelowi domyślnie, jakie umiejętności (skills) mu udostępniamy? Um, so how do we prompt it or what tools do we give it by default or what skills do we present to the model? 30:01 – Jasne. I to pod pewnymi względami zderzenie z najgorszym możliwym scenariuszem, jeśli chodzi o testowanie. Bo normalnie spędzasz mnóstwo – Right. And this is like, you know, in some ways like a crashing in of like the worst possible outcome when it comes to testing and that like normally you spend all this 30:11 czasu, budując infrastrukturę testową i bardzo się starając, żeby wszystko było deterministyczne, a tu musimy wpasować proces z gruntu stochastyczny, w którym nie mamy nawet time building testing infrastructure trying really hard to make everything deterministic and then we fill we have to like fit in this uh like kind of fundamentally stochastic process where we don't even have 30:24 dobrych, twardych reguł oceniania. Same ewaluacje są robione, przynajmniej częściowo, przez LLM-y. great hard rules about how to evaluate the evaluate the evaluations themselves are done at least in part by LLMs. 30:31 – Tak. – Robimy więc, co w naszej mocy, żeby testować jak najlepiej, ale z inżynierskiego punktu widzenia to naprawdę trudne. – Yep. – Uh so like we're doing our best here and trying to make the best possible testing, but it's really challenging from an engineering perspective. 30:38 Chciałoby się mieć dobry proces: budujesz produkt, testujesz go, pokazujesz, że działa, wprowadzasz zmiany i sprawdzasz, czy po tych Like you would really like to have good ways of like you build your product, you test it, you demonstrate it works well, and you make changes and see if it's better after those 30:45 zmianach jest lepiej i czy testy nadal przechodzą. Ale mnóstwo nieistotnych drobiazgów może zaburzyć wynik takich testów i bardzo trudno go interpretować. changes and see that the tests keep on working, but all sorts of like irrelevant little details can like perturb the outcome of these tests, and it can be really hard to interpret. 30:54 W tej pracy ewaluacyjnej jest prawdziwy, fundamentalnie statystyczny składnik, którego nie ma w większości innych rodzajów testowania. There's There's actually a real kind of fundamentally statistical component to this kind of evaluation work, which you don't necessarily have in all the other kinds of testing that you do. 31:03 – Robimy też… pewnie pogadamy o tym za chwilę, ale budujemy nawet meta-sędziów. – We also do um well, I'm sorry, we'll talk about this in a bit, but we we we build even meta graders. 31:08 Bo gdy używamy LLM-a jako sędziego, musimy teraz pisać ewaluacje dla samego sędziego. So, like when we use LLM we now have to write like evaluations for the LLM grader. 31:15 Tam też jest cały ciekawy zestaw tematów do omówienia. There's a whole interesting set of things to talk about there, too. 31:18 – Tak, jest tu fundamentalny problem: chcę sprawdzić, jak dobrze agent rozwiązuje jakieś zadania. – Yeah, there's like a fundamental problem of like I want to see how good an agent is at solving some problems. 31:25 Więc z założenia stawiam przed nim coś na granicy możliwości poznawczych modelu, a potem chcę ocenić, czy zrobił to dobrze. So, I'm like fundamentally putting something up that's at the edge of the cognitive capabilities of the model, and then I want to evaluate whether it did a good job. 31:34 Ale jeśli oceniam najmocniejszy model, jaki mam do dyspozycji, i mam drugą instancję mniej więcej równie mocnego modelu, która próbuje ocenić, czy tamten But But like if I'm evaluating like the strongest model I have at my disposal, and I have another instance of a roughly equally strong model that's trying to evaluate whether or not that 31:43 zrobił to dobrze, thing did a good job. 31:44 to jest w tym jakiś fundamentalny problem. It's like there's like a fundamental problem here. 31:47 Może ci po prostu brakować mocy intelektualnej, żeby rozwiązać problem, który próbujesz rozwiązać. You may not just have like the intellectual wattage to solve the problem that you're trying to solve. 31:51 – Tak. Myślę, że jest tu sporo ciekawych kwestii: czy można ufać modelowi, że odróżni dobrą pracę innego modelu od złej, – Yep. Yeah, I think there's a bunch of interesting things here about uh whether you can trust the model to discriminate on the work of another model, 31:59 nawet jeśli nie można mu ufać, że sam ją wykona. even if you can't trust it to produce the thing. 32:01 Często przychodzi mi tu na myśl taki obraz: pewnie nie umiesz zbudować samochodu, ale możesz wyjść na ulicę i powiedzieć mi, czy coś A lot of times the thing uh that comes to mind here is like probably you can't build a car, but like you can go down to the street and tell me if something 32:09 jest samochodem. is a car. 32:10 I to chyba ciekawa analogia, która pomaga sobie wytłumaczyć, dlaczego LLM-y w roli sędziów mogą nie być tak złe, jak się na pierwszy rzut oka wydaje. And I think that that's maybe an interesting uh analogy that's useful to explain to yourself why LLM graders might not be as bad as they seem on the surface. 32:19 – Zgadza się. – That's right. 32:19 Choć mam wrażenie, że w wielu najważniejszych sprawach to jednak nie działa. Although, I feel like for a lot of the most important things, it actually doesn't work. 32:24 Bo w pewnym sensie cały świat jest tak ustawiony, żeby to nie działało. Right? Because in some ways like the whole world is kind of piled up to make this not work. 32:29 Dzieje się tak, bo ewaluacje modeli robimy nie tylko my. Because what happens is it's not just us running evals on the models. 32:34 Laboratoria budujące modele też robią na nich ewaluacje i używają ich w RL, więc modele stają się tak dobre, jak tylko The labs who are building the models are running evals on the models, and they're using them as part of the RL, and so the models are getting like as good as they can 32:42 mogą, w sposób w pewnym sensie ograniczony weryfikowalnością zadania. Może też innymi rzeczami, ale na pewno weryfikowalnością. get in a way that's in some sense bounded by the verifiability, or at least bounded by maybe other things, too, but at least bounded by the verifiability of the task. 32:51 W efekcie to, w czym modele są słabe, leży dokładnie na granicy tego, co modele potrafią rozróżnić. And so, you have this thing with the with the things that the models are bad at are like exactly at the edge of what the models can discriminate. 33:00 I cała ta sprawa ze smakiem w kodzie, z tym, czy model uprawia hakowanie nagrody (reward hacking) i tak dalej… Świat jest zbudowany i zoptymalizowany tak, żeby And so, all of the stuff around that taste of code and like whether they're doing re- you know, reward hacking and stuff like that, it's like the world is built and optimized to 33:09 tworzyć dla ciebie rzeczy, które potem LLM-om trudno ocenić. build things for you that are then hard for the LLMs to evaluate. 33:13 – Myślę, że trzeba znaleźć sposób, żeby zawęzić obszar, w którym LLM wykonuje swoją pracę. – I think you need to find a way to like shrink where the LLM is doing its work. 33:18 Dlatego coraz częściej opieramy się na przykład na rubrykach, czyli listach kryteriów. So, we've increasingly started relying on rubrics, for example, as a way to do this. 33:22 Może da się wziąć problem i podzielić jego ocenę na serię zadań, może bardziej przystępnych dla LLM-a niż samo pytanie: czy ten model Like, maybe you can take a problem and subdivide the grading of it into like a series of problems that maybe are more approachable for an LLM than than just like did this model 33:31 zrobił dokładnie to, co miał zrobić? do exactly the thing it was supposed to do. 33:33 W niektórych przypadkach są też ciekawe, bardziej deterministyczne sposoby oceniania. Um there are also more deterministic ways to grade in some cases that are also interesting. 33:38 – Zgadza się. – That's right. 33:39 Jeśli dasz modelowi zadanie, żeby coś zoptymalizował, możesz sprawdzić, jak dobrze to zrobił. A jeśli masz testy poprawności, You can like if you give a model a task to optimize something, you can see how well it optimized it if you have tests of the correctness, 33:46 możesz po prostu je uruchomić. you can actually run those tests. 09 · 33:48 Własne uprawnienia dla LLM-ów33:48 – Tak. A czasem to, na co chcesz patrzeć, to nawet niekoniecznie ocena. – Yep. And sometimes the thing you want to look at is even not a grade necessarily. 33:51 Czasem chodzi o to, ile czasu zegarowego zajęło wykonanie, ile tokenów zużyło albo ile to kosztowało. Sometimes it's like how long in wall clock time did this thing take to run, or how many tokens did it use, or how much did it cost? 33:57 To również jest ciekawe. – – Uh so, those are also interesting. 34:00 A ostatni obszar, na którym się skupiamy, to bezpieczeństwo. Yep. And then the last area that we focus on is security. 34:04 Jedno trzeba powiedzieć: przez długi czas wszyscy, cały świat, ufali, że ludzie mają dobry osąd co do tego, czy coś zrobić, czy nie. Uh so, the models, I guess like one thing to say is that for a long time, everyone, the whole world, trusted humans to have good judgment about whether they did things or not. 34:16 A teraz wpuszczamy LLM-y do tego samego systemu, który został zbudowany dla ludzi. And now we're putting LLMs into this like same system that was built for humans. 34:20 Na przykład umieszczasz model w notatniku Pythona. Tak, to oczywiście coś, czego od modelu chcemy, ale umieszczając go w notatniku, Uh and so, for example, you put a model inside of a Python notebook, and yes, clearly that's something we want the model to do, uh but in putting it in a Python notebook, 34:29 sprawiasz, że działa w środowisku uruchomionym jako ten człowiek, więc model może na przykład wywołać polecenie systemowe i od razu it's now running in an environment that's also running as the human, where the model can do things like run system and then just immediately uh you know, 34:36 wyjść z Pythona i robić, co mu się podoba. escape Python and do whatever it wants to do. 34:40 Mamy więc proces, który sprowadza się do kombinacji budowania piaskownic (sandbox) i lepszej kontroli dostępu w różnych systemach, tak żeby So, there's this uh process that we've kind of been going about around some combination of building sandboxes and building like better access controls into uh various systems to make it so that the 34:51 modele mogły robić tylko to, co uważamy za naprawdę bezpieczne. models can only do the things that we think are like actually safe. 34:54 I coraz częściej, wracając do poprzedniego punktu, musimy przy tym polegać na LLM-ach oceniających, czy coś jest bezpieczne. Bardzo ciekawa sprawa. And increasingly that also has us relying on uh going back to the previous point, LLMs judging whether or not something's safe, which is a very interesting thing. 35:03 – Jasne. I nie jest tak, że w starym świecie ufaliśmy ludziom bez ograniczeń. – Right. And it's not like in the old world we trusted humans in an unbounded way. 35:09 Faktem jest, że w naszym wewnętrznym środowisku dajemy ludziom dużo zaufania i dużo dostępu, żeby mogli działać, Like I think a real fact about our internal environment is that we give people a lot of trust and we give them a lot of access to do things, 35:16 ale nadal istnieje system kontroli dostępu. but there's still an access control system. 35:18 Jeśli jednak naiwnie użyjesz LLM-ów i skonfigurujesz je bez żadnego zastanowienia, to LLM-y po prostu dziedziczą wszystkie uprawnienia człowieka. But if you just like naively use LLMs and kind of set them up without thinking about the setup at all, then the LLMs just inherit all the permissions of the human. 35:26 – Tak. – A to jest kompletnie złe. – Yep. – And that's super wrong. 35:28 Tego nie chcesz. Like you don't want that. 35:29 Chcesz jakiegoś ograniczenia tego, co LLM może zrobić. You want some kind of bound on what the LLM can do. 35:31 – Mój ulubiony przykład to wykorzystanie mocy obliczeniowej. Um – My favorite example of this is the like compute utilization. 35:35 Mamy ogromny klaster obliczeniowy, na którym ludzie mogą uruchamiać zadania. So, we have like you know, giant compute cluster that humans can schedule jobs onto. 35:40 – Tak. – I oczywiście chcemy, żeby LLM-y też mogły tam uruchamiać zadania, bo część pracy, której od nich oczekujemy, wymaga dużo mocy obliczeniowej. – Yep. – And of course we want the LLMs to also be able to schedule jobs there because some of the work that we want them to do involves lots of compute. 35:49 Żeby dostać się do tego systemu, ludzie muszą licytować czas. And uh in order to access this system, humans have to like bid for time. 35:54 Muszą w zasadzie zadeklarować, ile w takich umownych dolarach są gotowi zapłacić za uruchomienie swojego zadania. They essentially have to say like how much in these fake dollars that they're willing to pay for their job to be run. 35:59 System ma mechanizm wywłaszczania: jeśli pojawi się zadanie z wyższą kwotą, dochodzi do wywłaszczenia. And then the system has kind of pre-empting so that if a job that comes along that is has a higher dollar amount, it gets pre-empted. 36:06 Gdy przychodzi inne zadanie z wyższą kwotą, zadanie z niższą kwotą zostaje wywłaszczone. And if another job comes along that has a higher dollar amount, then the job with a lower dollar amount gets pre-empted. 36:13 – Mhm. – A LLM-y korzystające z tego systemu po prostu nie mają wyczucia, ile warte jest ich zadanie. – Mhm. – And you know, LLMs using this thing they just really don't have a sense for like how much their job is worth. 36:19 Widzieliśmy przypadki, gdy LLM-y uznawały, że ich zadanie jest warte o wiele więcej, niż powinno, i wywłaszczały masę ludzkiej pracy. And we've seen evidence of the you know, the LLMs thinking that their job is worth way more than it should be and thus pre-empting a bunch of human work. 36:25 – Tak. Myślę, że druga ważna i trudna do przemyślenia sprawa jest taka, że do pewnego stopnia trzeba myśleć o modelach adwersarialnie, jak o przeciwniku. – Yeah. I mean I think the other thing that's important and hard to think about here is that to some degree you should think about the models adversarially. 10 · 36:29 Modele jako przeciwnik i hakowanie nagrody36:34 Ludzie mówią o alignmencie AI, zgodności celów modelu z naszymi, jako o wielkim, teoretycznym, długofalowym problemie bezpieczeństwa AI, gdzie, nie wiem, Like, they are not, you know, people talk about AI alignment and it's like a kind of big theoretical AI safety long-term kind of issue where, I don't know, 36:44 „długofalowo” w AI znaczy jakieś trzy lata. Ale to też niezwykle praktyczny problem już teraz, w tym sensie, że modele zwykle bardzo się starają robić to, in long-term in AI means like in 3 years or something, but it's also an extremely practical issue right now in the sense that the models will usually try really hard to do what 36:55 czego chcesz, i zwykle robią to całkiem dobrze, ale czasem zachowują się naprawdę wrogo, tracą zgodność z celem i próbują zrobić coś, co nie jest tym, you want and usually do a pretty good job of it and will sometimes behave really, really adversarially and will be misaligned, will be trying to do a thing that's not the thing that 37:03 czego od nich chcesz. you want them to do. 37:04 Prosisz je o rozwiązanie problemu, które wymaga zrobienia czegoś poza zakresem ich uprawnień, i można by You like, you know, ask them to solve some problem that involves asking them to do something that is like beyond the realm of the things they have permissions to do and you might 37:13 pomyśleć, że dobrze dopasowany model powie: „Chyba nie powinienem tego robić, może poproszę o wskazówki, skoro system uprawnień mnie przed tym think that they that a well-aligned model would be like, "Oh, I guess I should not do this and maybe I should go ask for guidance given that there's a permission system that stops 37:21 powstrzymuje”. me from doing this." 37:22 Ale czasem modele po prostu próbują obejść uprawnienia. But, sometimes what the models will do is just try to work around the permissions. 37:26 To trochę jak psychoza AI, nie ta ludzka psychoza od AI, tylko samo AI wariuje: gdy dajesz AI bardzo długie zadania And this is kind of like AI psychosis, not like the human AI psychosis, but like the AI kind of goes crazy where as when you have AIs that you give very long-term tasks 37:35 i ciągle je naciskasz, żeby bardzo się starało je rozwiązać, potrafi zrobić się bardzo dziwne, robić bardzo dziwne rzeczy, wypluwać dziwne zdania, to and keep on pushing them to try really hard to solve the task, they can just get super weird and like do very strange things and like emit strange sentences and you know, 37:43 dzieją się różne dziwaczne rzeczy. all sorts of bizarre stuff can happen. 37:45 Więc naprawdę trzeba to traktować jak adwersarialny problem bezpieczeństwa, z modelami, które coraz lepiej hakują i obchodzą zabezpieczenia. So, you really do want to treat it as a kind of adversarial security problem uh against models that are like getting increasingly good at like hacking and working around controls. 37:56 – Tak. – To naprawdę poważny problem bezpieczeństwa, którym trzeba się zająć. – Yeah, so it's like it's a really serious security problem that you have to address. 37:59 – Pojawia się to w bezpieczeństwie, ale też w ewaluacjach, gdzie próbujesz ocenić, czy model odniósł sukces, – And that comes up in security, it also comes up in places like evaluations where we're like, you know, you're trying to judge the success of the model, 38:06 ale musisz pamiętać, jak wspomniałeś wcześniej, że modele są trenowane, żeby robić to, co im każesz. but you have to remember, like you mentioned earlier, that the models are trained to get, you know, to do the thing that you're telling them to do. 38:14 I patrząc na ewaluacje, widzimy oznaki hakowania nagrody (reward hacking): model celowo omija reguły systemu, żeby uzyskać wyższy… And when you're looking at evaluations, we see evidence of things like reward hacking where the model is like intentionally skirting around the rules of the system to get higher, 38:23 nie żeby uzyskać wyższy wynik, tylko żeby zrobić to, co kazał mu człowiek. not to get higher scores, but to do the thing that the human told it to do. 38:27 Na przykład model natrafia na jakieś ostrzeżenie. Mamy włączone traktowanie ostrzeżeń jako błędów. So, for example, the model reaches like some warning we have warnings as errors turned on. 38:33 Natrafia więc na ostrzeżenie, które skutkuje błędem, którego nie umie rozwiązać, a jeden bardzo prosty sposób to po prostu wyłączyć ostrzeżenia. So, it reaches some warning that results in an error that it doesn't know how to resolve and like one really easy way to resolve them is just disable the warnings. 38:41 I widzimy, jak modele wyłączają ostrzeżenia, żeby zaliczyć to, co im kazaliśmy zrobić. And so, we see models disable the warnings to try to you know, pass the thing that we're trying to tell them to do. 38:46 – Jasne. Mówiąc o ostrzeżeniach, chodzi o poziom kompilatora: nieużywana zmienna i tym podobne. – Right. And this is when you see warning, this is like compiler level like unused variable warnings or whatever. 38:51 A ostrzeżenia jako błędy oznaczają, że jeśli masz ostrzeżenie gdziekolwiek w kodzie, to się po prostu nie zbuduje. And like warnings as errors means if you have a warning anywhere in your code, it just won't build. 38:55 I mamy w zasadzie w całej firmie, w całej bazie kodu, praktykę, że tak, po prostu musisz rozwiązać wszystkie ostrzeżenia. And we basically have a kind of firm-wide, you know, code base wide practice that like yeah, you just have to resolve all those warnings. 39:02 Tak egzekwujemy ważny podzbiór naszych standardów kodowania. And this is like part of how we enforce a sub important subset of our coding standards. 39:06 Mamy też sposoby, żeby je wyłączać. – No. – And also, we have ways of turning them off. 39:10 I my, ludzie, prawie nigdy ich nie używamy, bo prawie nigdy nie jest to dobry pomysł. And you we, like the humans involved here, almost never use them because it's almost never a good idea to use it. 39:18 Ale jeśli ktoś jest monomaniakalnie skupiony na tym, żeby po prostu spełnić to, co mu kazano, to zachowa się inaczej. But if you're like monomaniacally focused on like I just need to like satisfy this thing I've been told to do, it's like okay, now it's going to behave differently. 39:26 – Tak. Inny przykład: modele często próbują odczytać rozwiązanie problemu z narzędzia, do którego mają dostęp. – Yeah. Yeah, another one of these is like the models will often try to read uh the solution to a problem from a tool that they have access to. 39:36 Szukają kodu, który wygląda jak kod, który same piszą. They'll like search around for a code that looks like the code that they're writing. 39:39 I w użyciu produkcyjnym to chyba zupełnie w porządku. And I guess like in in production use, that seems like a totally fine thing to do. 39:42 Jeśli rozwiązanie twojego problemu gdzieś już istnieje, jak najbardziej powinieneś je przeczytać. If there's a solution to the problem that you're trying to solve out there, you should totally go read it. 39:47 Ale w ewaluacjach raczej nie chcesz, żeby model tak robił. Um you know, but in evaluations, probably don't want the model to do that. 39:51 – A, jasne. – Oh, right. 39:52 To w zasadzie oszukiwanie przez zaglądanie do klucza odpowiedzi. This is basically a way of like cheating by looking at the answer sheet. 39:54 – Tak, dokładnie. – Yeah, exactly. 39:55 Łatwo powiedzieć, że model oszukuje, ale tak naprawdę, jak wspomniałeś, model jest po prostu nastawiony na to, żeby odnieść sukces w zadaniu, And it's like, you know, it's one thing to say the model's cheating, but actually like you mentioned before, the model is just aligned to wanting to be successful in the task that you've 40:03 które mu dałeś. – Uważam, że „oszukiwanie” to całkiem niezłe określenie. given it. – I mean, I think cheating isn't a terrible way of describing it. 40:06 Możesz zajrzeć w ślady rozumowania (thinking traces) i zobaczyć coś, co wygląda jak spiskowanie, prawda? Like you can look at like you can look at like thinking traces and see things that look like scheming, right? 40:11 Model rozumie, o co prosisz. Where it's like try, you know, it understands what you're asking. 40:14 I mówi: „No nie, ale ja chcę wygrać tę grę”. It's like, well, no, but I want to win the game. 40:16 I próbuje obejść twoją intencję. And it like tries to get around your intent. 40:18 Więc powinniśmy się trochę martwić kwestią alignmentu w jej najpełniejszej postaci. So like we should be a little worried about this alignment question kind of in its in its fullest form. 40:23 – Racja. – Naszkicowaliśmy więc kilka różnych obszarów, w których budujemy technologię. – True. – So that's I mean so we now sketch out like a bunch of different areas where we build technology. 40:28 Wejdźmy trochę głębiej w temat piaskownic, bo wydaje mi się technicznie ciekawy. Let's actually dive a little bit more into the sandboxing thing cuz I think that's like a technically interesting one. 40:33 Co próbowaliśmy zrobić w sprawie piaskownic? Bo w świecie zewnętrznym jest mnóstwo rozwiązań sandboxowych, mnóstwo Like what have we tried to do in the sandboxing story and like you know there's like lots of you know there's lots of sandboxing stuff in the outside world with lots of like 40:42 mechanizmów na poziomie systemu operacyjnego. OS level things that exist. 40:43 Różni agenci do kodowania, z których można korzystać, mają jakieś wbudowane pojęcie piaskownicy. – Tak. Various different coding agents that you can use have some notion of sandboxing built in like – Yep. 40:49 – Co my próbowaliśmy zrobić? – what have we tried to do? 40:51 Jak wpisują się w to narzędzia zewnętrzne? How do external tools fit in? 40:53 Na jakie problemy tu natrafiliśmy? What what are the problems we've run into here? 40:55 – Tak. Na samym początku, dawno, dawno temu, próbowaliśmy zbudować piaskownicę, która zakazywała rzeczy. – Yeah. So what we I guess originally way way back we tried to build a sandbox that denied things. 11 · 41:00 Listy zakazanych, listy dozwolonych i bwrap41:07 Czyli piaskownica (sandbox) przepuszczała wszystko, na co nie miała reguły, a resztę blokowała. Meaning the sandbox would let through anything it didn't have a rule for and it would deny other things. 41:12 Była to więc piaskownica z listą zakazanych. So it was a deny list sandbox. 41:15 I jak pewnie powie każdy słuchający nas specjalista od bezpieczeństwa: tak się nie buduje piaskownicy. And I guess like as any uh probably security security oriented person listening would say that's not how you build a sandbox. 41:23 – To po prostu okropne. – That's just terrible. 41:24 – To zła piaskownica. – That's a bad sandbox. 41:26 Piaskownicę należy budować odwrotnie, na liście dozwolonych. Idea jest taka, że jeśli czegoś na niej brakuje, zostaje to – – Uh the way that you should build the sandbox is the other way where you're allow listing and the idea there is that if you're if you're missing something that it gets 41:33 zablokowane. To dobra właściwość z punktu widzenia bezpieczeństwa. denied. That that is a good property for security. 41:35 – I oczywiście tak właśnie robimy z ludźmi, prawda? – And and that's obviously what we do for people, right? 41:37 W pewnym sensie człowiek przychodzi na ten świat bez żadnych uprawnień, a potem z czasem je dostaje, żeby mógł wykonywać swoją pracę. They start out you know in some sense people are born in this world with no permissions and then they are granted permissions over time so they can do their job. 41:44 – Tak. Wdrożyliśmy więc tę pierwszą piaskownicę, ale szybko przeszliśmy na piaskownicę z listą dozwolonych. – Yep. So so we implemented that original sandbox and then we quickly moved to an allow list sandbox. 41:51 Zbudowaliśmy ją z kombinacji narzędzi takich jak bwrap, czyli Bubblewrap. Um and the way that we implemented this allow list sandbox is through a combination of tools like uh Bwrap which was like uh bubble wrap. 42:00 To narzędzie do przemontowywania fragmentów systemu plików, żeby model, a właściwie proces działający wewnątrz It's like a tool for um kind of remounting pieces of the file system so that uh the model or I guess the process in this case that is operating inside of the bubble 42:10 Bubblewrapa, miał dostęp tylko do tych części systemu plików, do których chcemy. wrap um can only access the parts of the file system that you wanted to. 42:15 Używamy też narzędzi takich jak pasta, które robi chyba coś podobnego, ale dla połączeń sieciowych. Możemy powiedzieć: wyłącz wszelką możliwość łączenia się z innymi We also use tools like, uh, pasta, which is I think similar kind of thing but for network connections, so we can basically say like, turn off all the ability to connect to other 42:23 miejscami i dopuść tylko te konkretne. places and only allow these these ones. 42:26 Taka kombinacja narzędzi pozwoliła nam zamknąć wykonywanie poleceń basha w piaskownicy w sposób, który wydawał się całkiem dobry. So, combination of tools like that allowed us to, uh, sandbox bash execution in a way that felt pretty good. 42:35 Pozostaje jednak pytanie, jak ustaliliśmy, co w ogóle wpuścić do piaskownicy. Um, but there's a question there of also like how did we figure out what to put in the sandbox. 42:40 Do tego użyliśmy innych zewnętrznych narzędzi, na przykład seccomp-bpf, które pozwala monitorować: uruchamiasz jakiś proces i przez And for that we used a bunch of other external tools like, uh, seccomp-bpf, which is a tool that let us like monitor, so you can run some process and monitor via a like 42:52 filtr widzisz dokładnie, do jakich plików ten proces sięga. filter exactly which files are being accessed by the process. 42:55 To daje nam obraz: skoro chcemy bezpiecznie uruchamiać w piaskownicy proces X, odpalamy go tam najpierw w trybie monitorowania, And that gives us an idea of like, oh, if we know we want to run process X inside of the sandbox safely, we'll essentially run it in there in like a monitoring mode, 43:04 patrzymy, do czego próbuje się dostać, i mamy listę rzeczy do prześledzenia i dodania do piaskownicy. see all the things that it tries to reach, and then now we have a list of things to go chase down and try to add to the sandbox. 43:09 – Mhm. – Przez jakiś czas tak właśnie działaliśmy: dodawaliśmy do piaskownicy kolejne rzeczy, żeby była użyteczna. – Mhm. – So, we went through this process for a while of trying to add a bunch of things to the sandbox to make them useful. 43:16 Aż w pewnym momencie przestaliśmy nadążać, bo było tyle do zrobienia i tyle rzeczy do dodania do Although at some point we just like couldn't move fast enough cuz there's just like enough stuff that we have to do uh, and enough things that we need to like add to the 43:27 piaskownicy, że nie dawaliśmy rady. I pojawia się inne ryzyko: czy nie ograniczamy za bardzo modeli? – I ludzi, którzy sandbox that we can't keep up with it and you kind of run in into this like other risk of are we hampering the LLMs too much – And we're hampering the people who 43:36 próbują z tych modeli korzystać. are trying to use the LLM. 43:37 – Tak. W efekcie widzieliśmy, że wielu ludzi wyłączało piaskownicę, żeby móc zrobić to, co próbowali – Yeah. And what we saw as a result is a lot of people, uh, maybe deciding to turn the sandbox off to be able to do the thing that they were trying to 43:46 zrobić. A to wydaje się naprawdę groźne. do. And I guess that seems really scary. 43:49 Sens piaskownicy jest taki, że budujesz coś, w czym można uruchamiać potrzebne procesy i co czyni je bezpieczniejszymi, Like, the point of the sandbox is that you build something that can do the processes that you want to run inside of it and make them more safe, 43:56 ale jeśli ludzie ją wyłączają, to z tej korzyści nie zostaje nic. but if people are turning it off then you're not really getting that benefit at all. 43:59 – Racja. I warto może podkreślić, że ten proces iteracyjnego budowania sensownego zestawu reguł, tak żeby piaskownica była wystarczająco – Right. And it's maybe worth highlighting I think that like this process of going off and iteratively building a reasonable set of rules so that you had a sandbox that was like permissive 44:08 otwarta do pracy, którą chcieliśmy wykonywać, w pewnym sensie świetnie się sprawdził dla części zadań. enough to do the work that we wanted to do in some sense worked great for a subset of tasks. 44:14 Dla zwykłej inżynierii oprogramowania był wręcz uroczy, prawda? Like for ordinary software engineering it was kind of lovely, right? 44:18 A to dlatego, że w inżynierii oprogramowania budujemy narzędzia tak, żeby była ona względnie hermetyczna. And that's because software engineering is kind of by like we build tools to make software engineering relatively hermetic, right? 44:25 – Tak, podczas pisania kodu raczej nie mamy testów i systemów, które sięgają do innych usług. – Yeah, we mostly don't have like tests and systems while you're writing software that are like reaching out to like other services, right? 44:32 – Zgadza się. – That's right. 44:32 I już z innych powodów mamy sposoby odcinania i izolowania różnych elementów procesu budowania, bo mamy ten wielki, skomplikowany system budowania, który chce mieć pewność, And we already for other reasons actually have ways of blocking off and sandboxing various elements of the build process because we have like this big complicated build system that wants to make sure 44:43 że wszystko jest deterministyczne, żeby móc efektywnie używać komponentów ponownie. Musi więc odcinać różne rzeczy, żebyś nie trafiał na jakąś przypadkową, that everything is deterministic so it can efficiently reuse components and it just like needs to do needs to like block things off so that you know you're not like hitting some random, 44:53 potencjalnie niedeterministyczną rzecz w świecie zewnętrznym. you know, potentially not deterministic thing in the outside world. 44:56 – Większość dobrych zestawów testów wyłącza dostęp do sieci. – most good test suites turn off access to the network, right? 45:00 Po prostu całkowicie go odcina. Just like turn it off entirely. 45:01 – Zgadza się. – That's right. 45:02 W pewnym sensie przy podstawowych czynnościach inżynierskich i tak musisz znać swoje zależności, a więc kontrolować, do czego można sięgać w trakcie, powiedzmy, So you in some ways for the core software engineering activities you already need to know your dependencies and therefore you need to control what can be accessed during the execution of say a 45:12 budowania. Ale to nie wszystko, co robi inżynier oprogramowania, i bardzo słabo pasuje do pracy kogoś, kto prowadzi badania na dużą skalę w miejscu takim jak Jane build. Um but that's not everything you do as a software engineer and it like really maps poorly on what you do as someone doing like large scale research at a place like Jane 45:24 Street, gdzie odpytujesz różne wielkie systemy danych, których nie masz ładnie ujętych i zasymulowanych w procesie budowania. Street where you are hitting various kinds of big data systems that you do not have like you know, nicely captured and simulated inside of your build process. 45:33 Więc po części stało się tak, że piaskownica działała dla pewnych rzeczy, ale nie obejmowała pełnego zakresu tego, w czym chcemy, żeby modele Right? So part of what happened is like that sandboxing worked for some kinds of things but didn't extend to the fuller suite of things that we want to be able to get LLMs 45:41 nam pomagały. to help us work on. 45:42 – Tak. W pewnym momencie, całkiem niedawno, zdecydowaliśmy zmienić podejście: mamy tę samą piaskownicę z listą dozwolonych i – Right. At some point made a decision and this is like relatively recently to change the sandboxing approach so that we have essentially a we have the same allowed list sandbox and we 45:54 jeśli piaskownica coś dopuszcza, po prostu to przepuszczamy. basically say that if you know, if something is allowed by the sandbox, we'll just allow it. 45:58 A jeśli piaskownica coś blokuje, pytamy klasyfikator oparty na LLM, czy to bezpieczne do wykonania. And then if something is denied by the sandbox, we'll go ask an LM classifier whether or not uh it is safe to execute. 46:08 Klasyfikator może odpowiedzieć, że to bezpieczne, że niebezpieczne albo że trzeba poprosić człowieka o potwierdzenie. And if it is, or sorry, the LM classifier can either say that it's safe to execute, that it's not safe to execute, or that it should ask the human for confirmation. 46:16 Poza samą piaskownicą trzeba było zrobić jeszcze sporo innych rzeczy. So, aside from just the sandboxing, there are like a bunch of other things that ended up having to happen. 46:21 Odpowiednio skonfigurowana piaskownica może powstrzymać usługę A przed wywoływaniem usługi B So, if you think about sandboxing, you might be able to with a sandbox that it is appropriately set up stop maybe service A from calling service B, 46:30 albo dopuścić wywołania do usługi B. or like allow allow calls to service B. 46:33 Ale to, co naprawdę dzieje się w prawdziwym oprogramowaniu, jest trochę bardziej zniuansowane. But if you think about the things that are actually happening in like real software, they're a little bit more nuanced than that. 46:39 Może chcesz wywoływać usługę B, ale tylko niektóre jej endpointy. Like maybe you want to be able to call service B, but only certain endpoints inside of it. 46:44 – Jasne. – A tu piaskownica już ci nie pomoże. – Right. – And sandboxing kind of can't help you there, right? 46:48 Bo działa albo na poziomie systemu plików, albo na poziomie sieci. Cuz the sandboxing is operating either at the file system level or at the network level. 46:52 Nie wie, że w tym pakiecie sieciowym siedzi wywołanie RPC o takiej nazwie w takim polu. It really doesn't know, you know, inside of this network packet there's an RPC call with this name in this field. 46:58 – Tak. – Kolejną rzeczą było więc zmodyfikowanie infrastruktury RPC w firmie, żeby jawnie opisywała, czy dopuszcza – Yep. – So, another thing that we ended up doing is having to make changes to the RPC infrastructure of the firm to make them more descriptive about whether or not they allowed 47:07 wywołania od procesów AI. calls from AI um from AI processes. 47:12 – Właśnie. I to jest w istocie ten problem: trzeba wejść poziom wyżej. – Right. And this is like essentially the problem you kind of have to go one level up. 47:18 Piaskownica to bardzo cenne, niskopoziomowe, precyzyjne rozwiązanie, które twardo blokuje to, co chcesz twardo zablokować. Like sandboxing is this kind of like very valuable kind of low-level precise solution that like helps you hard block all sorts of things that you want to hard block. 47:27 Ale ostatecznie chcesz myśleć o tych modelach jako o osobnej klasie agentów z własnymi uprawnieniami, a decyzje o tym, czy But at the end of the day, you want to think about these LLMs as their own class of agent with their own permissions, and you have to push the decisions of whether or 47:39 dany agent może zrobić daną rzecz, musisz przesunąć gdzie indziej. not a given agent is allowed to do a given thing. 47:41 To nie może być pytanie, na które odpowiada jedna uniwersalna piaskownica dla wszystkich. Like it can't be strictly a question that you answer with some kind of one-size-fits-all sandbox. 47:46 Trzeba móc dostosowywać reguły na poziomie aplikacji. You have to be able to customize things at the level of the application. 47:50 Na niektóre rzeczy chcesz modelom pozwolić, Some kind of things you might want to allow LLMs to do. 47:52 na inne czasem nie. Sometimes you might not. 47:54 Więc musisz zacząć myśleć o przebudowie tego, jak w ogóle działa twój system. Um and so you now have to start thinking about like restructuring how your system works in general. 48:01 I, jak mówiłeś, zejść z tym aż do poziomu RPC. Um and and as you were saying, kind of pushing all the way to the RPC level. 48:05 – A to wciąga mnóstwo innych zespołów, które muszą wprowadzić mnóstwo zmian. – And and that ends up involving a bunch of other teams, and they have to make a bunch of changes. 12 · 48:09 Użytkownicy AI48:10 Inną ciekawą rzeczą było wprowadzenie tak zwanych użytkowników-AI (kont AI), czyli w pewnym sensie alternatywnych wersji każdej osoby w firmie. I I think another interesting thing that happened here was we ended up introducing these things called AI users, which are alternate versions of each of the people at the firm in a way. 48:21 – Zgadza się. – That's right. 48:21 Ja jestem yminsky, ale mam też swojego AI yminsky. So, I'm Wyminsky, but I also have AI Wyminsky. 48:23 – Dokładnie. Kiedy AI robi coś w twoim imieniu, w większości przypadków występuje jako AI yminsky. – Exactly. And when an AI is doing something on your behalf, it is for the most part calling as AI Wyminsky. 48:31 Dzięki temu możemy przypisać to użycie modelowi i zadbać, żeby RPC stosowały właściwy zestaw reguł, bo wiedzą, że Uh and then in that way, we can we can attribute the use to Nole LM, we can make sure that the RPCs apply the right set of rules because they know that the 48:40 wywołującym jest twoja wersja AI. caller is an AI version of you. 48:42 Zbudowaliśmy też inne systemy, które korzystają z tego konceptu AI. It also means that in other places, like we've built other systems that take use of this AI-concept. 48:48 Na przykład mamy narzędzie, które śledzi autorstwo kodu linia po linii i mówi, co powstało z pomocą modelu, Um one example is we have a thing that tracks code attribution on a line-by-line level to say which things are written with the assistance of an LLM, 48:57 a co napisał człowiek. and which things are written by a human. 48:59 A to, co napisał model, jest widoczne jako twoja wersja AI. Um and you know, the things that are written by an LLM show up as the AI version of you. 49:05 Widzimy więc, że koncept AI, który wprowadziliśmy dla uprawnień, pojawia się też w wielu innych miejscach. So, we're kind of like seeing this AI-concept that we introduced for uh permissioning show up in a bunch of other places, too. 49:13 – Tak. I to może szkicuje inny wymiar ewolucji całego sposobu, w jaki AI działa w takim miejscu jak to: – Right. And maybe this like sketches out a different part of the evolution of the kind of whole way in which AIs are working inside of a place like this, 49:24 była wczesna era, kiedy na zewnątrz widziało się, jak GitHub wydaje which is you know, there was this early era where like, you know, you could see in the outside world, like, you know, GitHub released, you know, 49:32 te integracje z VS Code, w całości oparte na autouzupełnianiu. this these integrations for VS Code, which were like all auto complete based. 49:35 Modeli używało się przez Copilota. And the way you used LLMs, right, was Copilot, right? 49:38 Czyli jako wymyślnego autouzupełniania. And the way you used LLMs is you used them for like fancy auto complete. 49:41 – Tak. – I w pewnym sensie na poziomie architektury modele językowe są po prostu niezwykle wymyślnym, superinteligentnym systemem autouzupełniania. – Yep. – Um and that's in some sense at the architectural level, like, LLMs kind of are just like a incredibly fancy, super intelligent auto complete system. 49:50 Używano ich więc właśnie do tego. And it's just kind of using it for that. 49:52 Potem przyszła epoka, w której używasz ich jako interaktywnych narzędzi: pracujesz z nimi, prosisz o coś, a one idą i robią to za ciebie. And then there's this age where you're using them as these like interactive tools that you work with and ask them to do things, and they go off and do work on your behalf. 50:03 A teraz coraz częściej myślisz o nich jako o kolejnej klasie użytkowników, agentach, czymś, co działa w świecie. And now, increasingly, you're thinking of them as like another class of user and agent, a thing that does stuff in the world. 50:11 I chcesz przebudować wiele rzeczy w swoich systemach, żeby móc tych agentów pomieścić, myśleć o nich, mówić o nich i dosłownie ich nazywać. And now you want to like reform lots of things about your systems to like be able to accommodate and think about and talk about and literally name these agents. 50:21 To zaczyna więc wsadzać łapy w najróżniejsze zakamarki twojej infrastruktury. Right. So, it starts to really get its mitts into all sorts of aspects of your infrastructure. 50:26 – Tak. Gdy chcesz nadać im różne osobowości, kazać pracować na różne sposoby albo wysłać do naprawdę długich zadań. – Yeah. As you want to like give them different personalities or ask them to work different ways or send them off on really long-running uh work, 50:34 A przez długi czas, jak wspomniałeś, nie było to możliwe. right? And for a long time this wasn't, like you mentioned, it wasn't possible to do, right? 50:40 Ciągle rozmawialiśmy z dostawcami modeli i prosiliśmy o jedno: więcej wytrwałości. There was we would have calls with the vendors all the time where we were asking them for just we were saying more persistence. 50:45 Chcieliśmy po prostu, żeby modele dłużej pracowały nad problemem. We just wanted like the the models to like work longer on a problem. 50:49 I dostaliśmy, co chcieliśmy. And we got what we wanted, right? 50:52 To otworzyło zupełnie nowy sposób pracy, co jest naprawdę super. And it's enabled this entire new uh new way of working, which is really neat. 50:56 W tej branży od dawna mówiliśmy o agentach, ale praktyczne efekty zaczynają się pojawiać dopiero teraz. I think for a while like we've we've been talking in this industry about agents for like a long time, but really the like practical effects are really only starting to be realized now. 51:05 – Tak. To zabawne: był moment ChatGPT, kiedy ludzie zdali sobie sprawę, że te rzeczy są świetne, imponujące i potrafią robić te wszystkie – Right. Yeah, this is this sort of funny thing where there was like the chat GPT moment where people became aware that these things were great and impressive and could do all this 51:14 niesamowite rzeczy. Ale naprawdę, na poważnie użyteczne w twardej inżynierii oprogramowania stały się w listopadzie zeszłego roku. amazing stuff. But then like they really became useful in a serious way for kind of hard core software engineering in November of last year. 51:23 Więc w dziedzinie, która pędzi tak szybko, mamy naprawdę niewiele doświadczenia z tym nowym światem modeli i tym, jak działają dziś. So, like in a field that's been moving very fast, we really don't have very much experience at all of this new world of the models and how they work today. 51:30 – Tak. Myślę, że gdyby wszystko się zatrzymało i modele przestały się rozwijać, i tak mielibyśmy tu pracy na długie lata. – Yep. Yeah, I think if uh if like everything stopped and there was no more model progress, we would still just have years and years of work to do here. 51:40 – Właśnie. Z tych narzędzi, nawet w obecnej formie, da się jeszcze wycisnąć mnóstwo wartości. – Right. There's still a lot a lot of juice to squeeze to get value out of these things even in their current form. 51:44 – Tak, a jednocześnie widzimy, że modele wciąż stale się poprawiają. – Yeah, and and at the same rate we we still see like the models just like steadily improving. 51:50 Każdy problem, który uznałbym za barierę nie do przebicia… I mean, every every like issue that I would have thought would be, you know, a an un- unbreakable barrier. 52:00 Na przykład halucynacje. For example, like hallucinations, right? 52:02 Jeśli rozumiesz, jak modele są trenowane i jak działają, to nie wygląda na problem do rozwiązania. If you understand how the models are trained and you understand how they work, it just doesn't really seem like a solvable problem, right? 52:08 Skoro generują tokeny, to sposób, w jaki je składają, wydaje się po prostu prowadzić do halucynacji. A jednak jesteśmy tu, It's like um if they're generating tokens, uh the way that they piece them together just seems like it would result in hallucinations, but you know, here we are, 52:17 gdzie jesteśmy, i nie wygląda to już na aż tak duży problem. and it doesn't really seem like it's that big of a problem anymore. 52:21 Jeszcze rok temu, gdy prosiłeś model o skopiowanie fragmentu kodu z jednego miejsca w drugie, It used to be even going back a year that if you ask the models to like copy a chunk of code from one place to another, 52:26 kopiował go, ale po drodze dla zabawy wprowadzał parę zmian. that it would copy it and it would like make a couple changes just for fun along the way. 52:31 A teraz po prostu to robi. And like now it can just change it. 52:33 Potrafi niezawodnie kopiować kod. It can just uh you know, reliably copy code. 52:35 Przez długi czas problemem było też cofanie przez modele własnych zmian. It can even uh one thing that was a problem for a long time is models being able to like revert changes that they made. 52:40 Cofały je, ale nie do końca. They would like revert them but not revert them entirely. 52:43 Tego problemu już po prostu nie ma. It's just not a problem anymore. 52:44 – Tak. Niesamowite, jak szybko nastąpił ten postęp. – Yeah. – Yeah, it's amazing how fast the progress has come. 52:47 Ciekawi mnie, czy możesz naszkicować, jak w tym czasie zmieniał się kształt narzędzi, które dostarczamy ludziom. So, I'm curious, can you sketch out what has been the change of the shape of like the tooling that we deliver to people over this time, 52:56 Pierwsza wersja to strona internetowa wyglądająca jak JaneGPT, a potem ewoluowało to na wiele sposobów. right? Like the very first version of this is like a website that kind of looks like Jane GPT, and like that's evolved in a bunch of other ways. 53:03 Możesz naszkicować, jak to wyglądało? Can you kind of sketch out what that's looked like? 53:05 – Tak. Zbudowaliśmy stronę, a zaraz potem jeden z dostawców przysłał nam kawałek kodu dotyczący wywoływania narzędzi. – Yeah. So, we built the the website, and then right after that, we had been sent this uh piece of code from one of the vendors that was about um tool calling. 13 · 53:09 Wywoływanie narzędzi i narodziny AIDE CLI53:17 Coś tam słyszeliśmy o tym, czym jest wywoływanie narzędzi, ale to był pierwszy raz, gdy powiedzieli wprost: „Wspieramy wywoływanie narzędzi”. And kind of like heard rumblings about what tool calling is, but uh this was the first time they were like, "Oh, we support tool calling." 53:24 Kod, który nam przysłali, to był w zasadzie duży pakiet Pythona z masą promptów w środku — i to było całe wsparcie wywoływania narzędzi. And it's like the code that they had sent us was essentially a big Python package that had a bunch of prompting inside of it, and that was the tool calling support. 53:34 Te prompty sprowadzały się do tego, jak przeformatować rzeczy na tekst, który trafia do modelu; model czasem wywoła funkcję, a „wywołanie funkcji” znaczy tyle, że The prompting was basically like um how you reformat things into text that goes into the model, and then the model will sometimes call the function and by calling the function it basically means 53:46 model po prostu wygeneruje inny tekst, który po sparsowaniu okazuje się wywołaniem narzędzia. the model will just produce some other text that when you parse it it is a tool call. 53:51 To taki specjalny format, którego używa model. It's like a special format that the model uses. 53:53 Dla jasności: tak to działa do dziś. Which should be clear that's how it works still. 53:56 Tyle że w międzyczasie dostawcy zrobili własne API do obsługi wywoływania narzędzi i, co ważne, modele są teraz trenowane na Like that but what has changed in the meantime is that the the vendors have their own APIs for dealing with how tool calling works and importantly the models are now trained on the 54:07 formacie wywoływania narzędzi. format of tool calling. 54:08 Ale w pierwszej wersji nie mieliśmy nic z tego. Um but in the first version we didn't have any of that. 54:11 Mieliśmy tylko tę bibliotekę w Pythonie. All we had was this Python library. 54:13 Modele nie były trenowane, żeby z niej korzystać. The models weren't trained to use it. 54:14 To był raczej dowód koncepcji. It was just like kind of a proof of concept. 54:16 – Racja. Okazało się po prostu, że to własność emergentna. – Right. It like just turned out like it was an emergent property. 54:18 Można było wpisać to w prompt. You could like write into the prompt. 54:21 Coś w stylu: „Hej, kiedy chcesz zrobić XYZ, oto format JSON, który możesz wyemitować, żeby mnie o to poprosić”. You could be like, "Hey, when you want to do XYZ, here's like a JSON format that you could emit to ask me to do it." 54:26 I modele po prostu to robiły. And the models would just do that. 54:28 Były na tyle bystre, żeby załapać wzorzec, a ty mogłeś powiedzieć: „No dobrze, będę patrzeć, kiedy pojawi się JSON, i po prostu Right? They were like smart enough to pick up on the pattern and then you could be like, "Well, I can just look and see when the JSON shows up and then I'll just 54:34 zinterpretuję go jako wywołanie narzędzia”. interpret that as a tool call." 54:35 I tak mniej więcej działała cała ta maszyneria. And like that's kind of how the whole thing worked. 54:37 – Tak. I to nie było niezawodne: czasem model w ogóle nie używał narzędzi. – Yep. And they were like not reliable and sometimes the model wouldn't use them. 54:42 Czasem emitował format inny niż ten, który uzgodniliście. Sometimes the model would emit a format that wasn't the format you'd agreed upon. 54:45 Było więc mnóstwo problemów, ale większość dało się jakoś załatać. So there were all kinds of problems but we could mostly paper over those. 54:48 Jeśli chcesz, żeby model wywołał konkretne narzędzie, a za pierwszym razem tego nie zrobi, możesz go po prostu poprosić jeszcze raz. Um if you want the model to call a particular tool and it doesn't call it the first time, you can kind of just ask it again. 54:55 W takim świecie wtedy żyliśmy. This is like the the area that that that we were living in back then. 54:58 Na bazie tej funkcji wywoływania narzędzi zbudowaliśmy wersję tej biblioteki w OCamlu i postawiliśmy cały ekosystem narzędzi. So on the back of that tool calling functionality, we built an OCaml version of that Python library and we put this tool ecosystem uh in place. 55:06 Zbudowaliśmy kilka narzędzi. We built a couple tools. 55:08 Na przykład narzędzie do pobierania stron. Like we built a web fetch tool. 55:09 Narzędzie do sięgania po treści z wewnętrznej wiki. We built a uh tool for accessing internal wiki content. 55:13 To było przydatne, ale wtedy, jak wspomniałem, modele nie radziły sobie zbyt dobrze z narzędziami, więc nie chwyciło. And this is like useful but at the time like I mentioned, the models are not really adept at using the tools so it doesn't really take off. 55:21 Chyba to ty powiedziałeś, że budujemy żaglówkę, a nie ma wiatru. I think you mentioned that we were building a sailboat but there was no wind. 55:25 – Racja. – Bardzo mi się to podoba, bo właśnie tak to wtedy wyglądało. – Right. – I like that a lot cuz that's you know what it felt like at the time. 55:30 Zbudowaliśmy całość. We we built the whole thing. 55:31 Wypuściliśmy to i myśleliśmy: „No, teraz wszyscy zaczną coś budować”. We put it out there and we're like, "Now there everyone's going to start building stuff." 55:34 I to się nie wydarzyło — nie bez powodu. And it kind of you know didn't happen and for good reason. 55:37 – Tak. Choć jedno trzeba powiedzieć: te narzędzia w pewnych obszarach przyjęły się całkiem dobrze. – Yeah, it's one thing I do think all these tools got a lot of uptake in certain areas, right? 55:45 Sama strona była stale używana przez wiele osób, bo modele do pewnych rzeczy się nadawały, ale miały głębokie ograniczenia. I think like the the website itself was used by a lot of people all the time cuz like the models were useful for some things, but there were like profound limits. 55:52 To było użyteczne, ale nie przełomowe. Like they it was useful but not transformational. 55:55 – Tak. Inna rzecz z tamtego czasu: ktoś zbudował u nas bibliotekę Structured Response, czyli bardzo prosty sposób, żeby napisać – Yep. Yeah, another thing we did at the time is built a library called someone built a library called structured response here, which is basically like you a very easy way to write 56:08 prompt i dostać z niego z powrotem dowolny typ OCamla. a prompt and get back an arbitrary OCaml type from that prompt. 56:12 – Mhm. – Zamienia typ w jedno wywołanie narzędzia, pozwala modelowi wywołać tylko to narzędzie i promptuje go, aż faktycznie je wywoła. – Mhm. – By basically turning the type into a single tool call and letting the model only call that tool and continuing to prompt it until it does call the tool effectively. 56:22 Były więc takie drobiazgi, naprawdę przydatne, ale sam nie wiem. Um, so there are like little things that were were really useful, but I don't know. 56:26 W większości nie było jeszcze pracy agentowej. For the most part there wasn't like a gen tech work. 56:29 Mieliśmy już wtedy w edytorach autouzupełnianie podobne do Copilota — a nasze edytory, trzeba dodać, to nie przede wszystkim… At this point we also were we had functionality for auto complete similar to Copilot in side of our editors, which are, I should say, primarily not, 56:37 no, używamy VS Code, ale sporo osób pracuje tu też w Neovimie i Emacsie. I guess like we we do use VS Code, but we also use a bunch of like Neovim and Emacs here. 56:43 Zbudowaliśmy więc rozszerzenia do tych edytorów. So we had built editor extensions into those. 56:46 A potem ludzie prosili, żeby móc używać modeli czatowych w edytorze. And then people were asking to be able to use the chat models inside of the editor. 56:51 I nie chcieli, żeby te modele robiły mnóstwo rzeczy. And they didn't want the chat models to like do a bunch of stuff. 56:55 Może zedytować plik, ale nikt nie liczył, że zaczną pisać całe wielkie kawałki oprogramowania. Maybe it would be able to like edit a file, but the hope wasn't that they're going to start writing whole giant pieces of software. 57:02 Chodziło tylko o to, żeby zadać im szybkie pytanie w edytorze. It was just that you can ask them quick questions inside the editor. 57:04 Więc to zbudowaliśmy. So we built that. 57:05 Zrobiliśmy rozmowę z modelem w buforze markdown, co moim zdaniem jest całkiem fajne. We built a a markdown buffer version of talking with a model, which is actually pretty cool, I think. 57:11 Coś w tym jest. There's something there. 57:13 – Mhm. – To był w zasadzie dokument markdown: wpisujesz pytanie, a kiedy wciśniesz enter w trybie normalnym, – Mhm. – Uh, it was basically like a markdown document that you type a question into and then when you uh, when you like hit enter in the document in normal mode it 57:21 asystent dopisuje kolejny fragment. would then uh, let the assistant fill in the next piece. 57:24 Zbudowaliśmy to, a w pewnym momencie ludzie, którzy nad tym pracowali, zauważyli, że strasznie wkurza ciągłe restartowanie edytora So we built that and then at some point um, the people that were working on that noticed that it was like incredibly annoying to have to restart the editor over and over again 57:35 podczas pracy nad tym. when working with it. 57:36 Zbudowali więc narzędzie testowe: po prostu podpięli część czatową do narzędzia CLI, poza edytorem. So, they built this like testing tool, which was basically like we will just have the chat part hooked up to a CLI tool, but not inside the editor. 57:46 Tylko po to, żeby szybko iterować bez otwierania edytora za każdym razem. Just so that they could like quickly iterate on it without having to open the editor every time. 57:50 – Czyli chodzi o to, że ludzie pracujący nad narzędziem nie chcieli go ciągle restartować. – Oh, you're saying they had The point is the people who were working on the tool didn't want to have to reboot. 57:57 – To nie problem użytkownika końcowego… – Nie, to problem programisty. So, this is not like an end user problem like – No, this is a developer problem. 58:00 Po prostu wkurza otwieranie tego w kółko. It's just like annoying to have to open it over and over again. 58:02 – Więc ludzie zrobili sobie własną wersję w wierszu poleceń. – So, people just like made their own like command line version. 58:05 – Dokładnie. – Jasne. – Correct. – Got it. 58:06 – I mniej więcej wtedy modele zaczęły trochę częściej wywoływać narzędzia. – And the right around this time the model started calling the tools a little bit more. 58:12 Tylko trochę częściej. Just like a a little bit more. 58:14 A my: chwila, to jest naprawdę przydatne. And we were like, wait, I think this thing is really useful. 58:17 To narzędzie, to narzędzie w wierszu poleceń. This like tool, this command line tool. 58:19 I to jest zalążek tego, co ostatecznie stało się narzędziem AIDE CLI — czymś w rodzaju Claude Code albo Codex CLI. Um and that is the nugget of what eventually ended up turning into this aid CLI tool, which you can think of kind of like Cloud Code or CodeX CLI. 58:30 To prowadzi nas do nowego etapu: to narzędzie rozrosło się na wiele sposobów i dziś jest narzędziem, Um and that kind of brings us into this new part where um you know, the models that new tool has like grown in a bunch of ways and now it is a tool 58:40 którego ludzie używają do kodowania agentowego. that people use for agentic coding. 58:42 A ostatnia rzecz, jaką zrobiliśmy, to bardzo duża zmiana. Uh we've also Oh, then and then then the last thing we've done is we've made this like very large change. 58:50 Widząc, że modele robią coraz więcej, a często ogranicza je to, dokąd mogą sięgnąć, zmieniliśmy sposób orkiestracji pracy tak, Uh seeing the models do more and more and having them often limited by um you know, where they can reach into, we've made a change in how the actual work gets orchestrated so 59:03 żeby LLM-y mogły rozdzielać pracę na dowolny komputer programisty w firmie — i w wiele innych miejsc. that the LLMs can essentially distribute work onto any of the developer machines at the firm and actually a bunch of other places, too. 59:10 A najnowsza zmiana to odwrócenie sterowania tym, jak LLM działa, kiedy próbuje wykonać na przykład And then the most recent change that we've made is we've actually made a change to kind of invert the control of how the LLM uh operates when it's trying to do things like 59:18 wywołania basha. Kiedy używasz czegoś jak Claude Code, piszesz w terminalu na swoim komputerze i wywołania basha też działają na twoim komputerze. bash calls. So, when you use something like Cloud Code, you're typing into terminal on your computer and then the bash calls are running also on your computer. 59:27 To dość proste, bo pętla promptowania i miejsce, gdzie wykonuje się praca, są w tym samym miejscu. And it's like fairly easy cuz the the prompting loop and the place that the work is running are in the same place. 59:33 – Mhm. – Dostrzegliśmy okazję, żeby je rozdzielić, tak by ludzie mogli na przykład z aplikacji czatowej, jak ChatGPT, zlecać – Mhm. – We kind of saw this opportunity to make a change to split those apart so that people could do things like use the chat application ChatGPT to be able to do 59:44 pracę, która faktycznie wykonuje się na komputerze zupełnie gdzie indziej. work that actually ends up happening on a computer totally somewhere else. 59:47 Zrobiliśmy więc centralny orkiestrator, który przyjmuje wszystkie prompty i potrafi rozdzielać pracę na dowolny z podłączonych hostów, So we have made it so that there's like a central orchestrator that takes in all of the prompts and is able to distribute work on to any of the hosts connected to it 59:56 a hosty to z grubsza wszystkie komputery programistów w firmie plus sporo maszyn budujących. where the hosts are roughly all of the developer machines at the firm plus a bunch of build boxes. 1:00:01 – Racja. I to niewiele się różni od kierunku, w którym poszły silniki promptowania w świecie zewnętrznym: chcą wziąć – Right. And this is like not so different from some of the directions that the kind of prompting engines kind of in the outside world have moved in and wanting to like take 1:00:10 tę samą sesję i zamiast trzymać ją lokalnie na twojej maszynie, umieścić ją w systemie rozproszonym, do którego sięgniesz przez interfejs webowy albo z that same session and instead of having it just like sit locally on your box, be in some kind of distributed system where you can access it through a web UI or from your 1:00:18 telefonu… – Tak, choćby ze Slacka. phone – Yeah, like from Slack. 1:00:19 – Ze Slacka czy skądkolwiek. – from Slack or whatever. 1:00:21 Zrobiliśmy to w naszej infrastrukturze, żeby orkiestrować dowolnym modelem, z dowolnymi wewnętrznymi narzędziami Um if we've done this kind of in our infrastructure uh so that we can orchestrate with whatever model we want, with whatever internal tools we want, 1:00:30 i zachować kontrolę nad naszymi danymi. Tak mniej więcej wygląda scentralizowana wersja systemu. and keep control of our data, and that's sort of what the kind of centralized version of the system looks like. 1:00:35 – I to otworzyło nowe sposoby pracy. – And it's enabled new ways to work. 1:00:38 Jeden z nich: mamy coś o nazwie AIDE Mint — system, z którym rozmawiasz głównie przez Slacka, choć jest też kilka innych dróg. Like one way to work is we have this thing called Aidmint, which is a system by which you mostly via Slack but there's a few other ways that you can interact with it. 1:00:48 Mówisz mu, co ma się stać, a on tworzy nowy feature — tak u nas nazywa się PR. You tell it the thing that you want to happen and it goes and creates a new feature, which is essentially our term for pull request. 1:00:55 – Mhm. – Uruchamia w nim build i odpala agenta, żeby wykonał pracę. – Mhm. – It spins up a build inside of that feature and then it kicks off the agent to go do some work. 1:01:02 I możesz to zrobić całkowicie ze Slacka. And you can actually do this totally from Slack. 1:01:05 Mówisz: „Chcę, żeby w tej części bazy kodu stało się to i to”. So you say, "Oh, this is the thing that I want to happen in this area of the code base." 1:01:08 I agent idzie i to robi. And the agent will go off and do it. 1:01:10 Ale co ważne, praca, którą wykonuje, działa jako ty, na twoim komputerze. But importantly, the work that it's actually doing is like running as you on your computer. 1:01:14 Nie mamy gdzieś tam stada maszyn budujących dla AI. It's not like we, you know, have a bunch of AI build boxes out there. 1:01:18 Praca po prostu wraca na twoją maszynę deweloperską. It's just like actually distributing the work back to um your development machine. 1:01:22 – Racja, choć może nie dokładnie jako ty, raczej jako twój użytkownik AI. – Right, although maybe not running exactly as you, maybe it's running as your AI user. 1:01:26 – No tak. – Sure. Yeah. 1:01:26 – I ciekawe w tym ostatnim elemencie, systemie Mint, jest to, że w pewnym sensie wygląda to na zupełną błahostkę. – – Right, and I think the interesting thing about that last piece, this kind of mint system, is that in some sense it seems like totally trivial. 1:01:35 Przecież mogłem sam uruchomić nową pracę: stworzyć feature, odpalić w nim agenta i poprosić go, It's like I could have spun up a new piece of work by like, you know, going off and creating a feature and then starting an agent inside of it and asking the agent 1:01:44 żeby to zrobił. to do it. 1:01:44 To stosunkowo mała zmiana UX: mówisz coś na Slacku, agent to podejmuje, tworzy za ciebie feature i zaczyna And it's a relatively small UX change to make it so that you can just say something in Slack and have an agent pick it up and create the feature for you and start 1:01:55 pracę. Ale ta stosunkowo mała zmiana doświadczenia użytkownika ogromnie zmieniła zachowanie ludzi. the work. But that relatively small user experience change was a really big difference to people's behavior. 1:02:01 Trochę się to zlewa, bo to był też czas, kiedy modele robiły się znacząco lepsze, ale zobaczyliśmy ogromny wzrost użycia i myślę, że It's a little bit like conflated because it's like also at around the time that models were getting significantly better, but we just saw like a huge uptake in this and I think the 1:02:11 ilość pracy, w której to agenci byli autorami, dramatycznie skoczyła. amount of work that was done with agents offering that work like dramatically shot up. 1:02:16 – Tak. Coś około 45% wszystkich wydanych feature'ów, czyli PR-ów tworzonych w firmie, zaczyna się od tego przepływu, – Yeah. Yeah, it's something like like 45% of the total released features PRs uh that get uh made at the firm are start with this flow, 1:02:28 takiego asynchronicznego przepływu z udziałem LLM-a. this like kind of asynchronous uh flow involving an LLM. 1:02:31 Myślę, że w pewnym sensie pomaga to przejść przez problem pustej kartki, o którym mówiłeś wcześniej przy dokumencie. I think in a way it gets you past the kind of blank page problem, like you were talking about before with the document. 1:02:36 Piszesz dokument i: „O, co ja mam napisać?”. Like you're, you know, writing a document, oh what do I write? 1:02:40 Może LLM napisze coś za ciebie, a ty zmienisz większość szczegółów, ale i tak jest wartość w tym, że zrobił ten pierwszy kawałek. It might be the case that the LLM writes something for you and you change most of the details, but there's still value in it kind of doing the first bit. 1:02:46 Warto też powiedzieć, że samo utworzenie nowego PR-a to sporo mozołu. And also like it's worth saying that, you know, there's a lot of toil involved in just creating a new um pull request, right? 1:02:54 Musisz utworzyć gałąź, przełączyć się na nią, ustalić, jakie cele budowania (build targets) ustawić, You have to like go create a branch, you have to switch to that branch, you have to figure out what build targets to put in place, 1:02:59 wymyślić nazwę, poprawnie skonfigurować cały workspace, ustalić, jakich plików dotyczy zmiana, którą chcesz you have to like create a name for it, you have to get the whole like workspace set up correctly, you have to figure out what files are involved in the change you want 1:03:06 wprowadzić — a LLM może przez to wszystko po prostu przeskoczyć. to make, and the LLM can kind of just jump right through all that. 1:03:09 – I kolejna ciekawa kwestia: ile z tej pracy po prostu zostawiasz agentowi, – And I think another interesting aspect of this is how much of the work is stuff that you just kind of let the agent just kind of do, 1:03:16 a ile sztywno przygotowujesz z góry? and how much do you kind of hard set up? 1:03:18 Myślę, że podjęto sporo dobrych decyzji o tym, co przygotować sztywno — nie dlatego, że agent w ogóle by sobie nie poradził, And I think there were a bunch of good choices that were made about what things you just kind of hard set up, not because the agent couldn't do it at all, 1:03:25 ale dlatego, że zrobienie tego z góry było szybsze, bardziej niezawodne i spójne. but because it made things faster and more reliable and more consistent to kind of do them in advance in this way. 1:03:31 – Zauważamy nawet miejsca, gdzie konfiguracja, którą przygotowaliśmy dla agenta, przydaje się też ludziom. – We're even noticing places where like the setup that we've provided for the agent is useful for the humans, too. 1:03:38 Problem, który opisałem — wybór celów budowania odpowiednich do twojej pracy — jest przecież irytujący Like in a way, the problem that I just described of like picking the build targets uh that are appropriate for your work, well, like it it's annoying for a human to do, 1:03:47 także dla człowieka. Te same mechanizmy, które wprowadziliśmy, żeby autorzy mogli powiedzieć: „W tej części drzewa chcę pewnie takich celów budowania”… too, right? So, like the same systems that we put in place for maybe authors to say, "Oh, in this part of the tree, the build targets that I probably want are these." 1:03:54 Kiedy już to zrobimy, korzystają z tego także ludzie. Once we do that work, now humans can benefit from that change, too. 1:03:57 – Tak. Miałem w tym tygodniu ciekawą rozmowę z kimś, kto myśli o problemie vibe codingu w aplikacjach webowych. – Yeah. I I had an interesting conversation earlier this week with someone who's thinking about the kind of vibe coding problem with uh web apps. 14 · 1:04:01 Vibe coding i luka Bonsai1:04:08 Jedna rzecz, którą dziś wszyscy wiedzą: modele są naprawdę dobre w szybkim skleceniu prostego interfejsu webowego. So, like one thing that like everyone now knows is like the models are really good at is like throwing together a quick web UI. 1:04:14 – Mhm. – I to jest właśnie obszar, w którym naprawdę ekscytuje nas vibe coding z prawdziwego zdarzenia, czyli agenci piszący rzeczy, na które może żaden człowiek nie spojrzy – Mhm. – And this is actually an area where we're really excited about, you know, real deal vibe coding, meaning like having agents write stuff that like maybe no human looks at at 1:04:24 w ogóle. A jeden z powodów, dla których to jest przydatne: chodzi mniej o zmianę sposobu, w jaki piszesz kod, który i tak byś all. And one of the reasons why it's useful is First of all, it lets you write code it's less about, you know, changing how you write the code you were going to write 1:04:33 napisał, a bardziej o to, że możesz napisać kod, którego nigdy nie zadałbyś sobie trudu napisać, bo jest to teraz tak tanie, że możesz mieć takie before, and instead let you write code that you would have never bothered to write at all, cuz it's like it's now just so cheap to do that you can have this kind of 1:04:41 jednorazowe narzędzie, które szybko skleisz, żeby rozwiązać jakiś konkretny problem. like disposable tool that you like quickly throw together to solve some particular problem. 1:04:44 Czy jest idealnie poprawne? Is it exactly right? 1:04:46 Pewnie nie, ale to nie ma wielkiego znaczenia. Uh probably not, but it doesn't totally matter. 1:04:48 Daje ci wystarczający wgląd, przydaje się w tym jednym przypadku, a kiedy skończysz, po prostu je wyrzucasz. It gives you enough insight and it's useful for that one use case, and you kind of throw it away when you're done. 1:04:52 I próbujemy budować przepływy pracy, które czynią to naprawdę łatwym i naturalnym. And trying to build workflows that make it really easy and natural to do that. 1:04:58 I okazuje się, że modele są najlepsze w tym, co znają najlepiej. And it turns out the models are best at the things that they know best. 1:05:03 A wiesz, czego nie znają najlepiej? And so, you know what they don't know best? 1:05:05 Nie znają OCamla ani Bonsai, czyli naszego wewnętrznego systemu do budowania aplikacji webowych. They don't know like OCaml and like Bonsai, which is our internal we system for building web apps and stuff. 1:05:11 Więc będą lepiej wiedzieć z głowy, jak zbudować coś w czystym HTML-u i JavaScripcie, niż będą So, they're they are going to like know more off the top of their head how to go off and you know, build something in pure HTML and JavaScript than they're going to be 1:05:21 w stanie zbudować coś, co naturalnie pasuje do naszego wewnętrznego ekosystemu. able to build something that like fits naturally into our internal ecosystem. 1:05:24 I częścią naszej odpowiedzi było: no dobrze, możemy po prostu trochę tego robić. And like part of our answer to that has been like oh yeah, we could just like do some of that. 1:05:28 JavaScript też u nas działa. Like, you know, JavaScript works here, too. 1:05:30 Część rzeczy możemy robić w tym stylu. We can do some things in that style. 1:05:32 Ale ludzie, którzy zajmują się u nas platformą webową, próbują zrozumieć, na czym polega ta luka. But, the people who think about the web platform here have been trying to like think about and understand what's the gap. 1:05:38 Dlaczego zbudowanie aplikacji w Bonsai trwa dużo dłużej niż zbudowanie aplikacji w JavaScripcie? Like, why does it take much longer to build an app in Bonsai than it does to build an app in JavaScript? 1:05:43 I jedną z rzeczy, które ostatnio odkrywają, jest to, że część tego nie ma nic wspólnego z językiem. And one of the things they've been discovering recently is some of it has nothing to do with the language stuff. 1:05:50 Część to po prostu: wcześniej robiłem jeden plik index.html, który miał JavaScript i HTML w jednym, i nie było nic więcej do zrobienia. Some of it is just like oh, before I was just like doing a single index.html that like had the JavaScript and HTML in that one file and there was no anything to do. 1:06:00 Wystarczyło wygenerować tekst i w zasadzie było dobrze. It was just like could generate the text and it was kind of fine. 1:06:03 A teraz trzeba utworzyć feature w Iron, naszym systemie przeglądu kodu (code review). And now, there's like a feature in Iron, which is our code review system, that has to be created. 1:06:09 I uruchomić proces budowania. And a build process that has to be kicked off. 1:06:12 I jest po prostu więcej kroków i wywołań narzędzi w czymś, co w rzeczywistości oznacza jakieś 30 sekund prawdziwej pracy nad wygenerowaniem kodu i tak dalej. And there's just like more steps and tool calls in the thing that actually represents there's like 30 seconds of like actual work to go and like generate the code and all that stuff. 1:06:23 – Pewnie sięgasz po szablon startowy Bonsai, żeby dobrze wystartować z kodem. – like the Bonsai starter template and like get your code and stuff to a good start. 1:06:28 – I tak całość w rzeczywistości trwa 10 minut, kiedy w świecie czystego index.html zajęłaby 30 sekund. – And so, like the whole thing in reality takes 10 minutes when it would have taken 30 seconds in the pure index.html world. 15 · 1:06:32 Agenci jako wieczni początkujący1:06:34 I myślę, że na początku uznaliśmy: może to po prostu cena, którą płacimy za wewnętrzne języki i biblioteki. And I think at first we're like, oh, maybe this is just like the cost we're paying because of like internal languages and libraries. 1:06:41 A tu nie: to może być coś, co da się naprawić, dokładnie tak jak sugerujesz, przez więcej twardej, deterministycznej konfiguracji, żeby wszystko było od razu na miejscu i gotowe. It's like, no, actually this is maybe stuff that we can fix by exactly as you're suggesting doing like more like hard deterministic setup stuff so that like things are just there and ready. 1:06:52 I żeby agent nie musiał od nowa odkrywać, jak używać wszystkich narzędzi. And like the agent doesn't have to go and discover again how to use all the tools. 1:06:57 Jak już mówiłem, agenci są w pewnym sensie niesamowici. As I again kind of like the agents are kind of like amazing. 1:07:00 A jedna z rzeczy, które czynią ich niesamowitymi, jest też jedną z ich wad: są wiecznymi początkującymi. And one of their thing that makes them amazing is also one of the deficiencies, which is they are perpetual beginners, right? 1:07:07 Nigdy nie uczą się obsługi narzędzi. They never learn how to use the tools, right? 1:07:10 Za każdym razem odkrywają na nowo, jak ich używać. It's just they rediscover every time how to use the tools. 1:07:13 Więc cały system trzeba budować wokół tego, że są takimi wiecznymi początkującymi. And so, you kind of have to build your whole system around them being these kind of perpetual beginners, right? 1:07:18 – Tak. Myślę, że kolejna część tego jest taka, że można im wszczepić trochę powtarzalnej wiedzy, pisząc skille. – Yeah, I think another part of this is you can maybe like instill them with a little bit of repeated knowledge by like writing skills, right? 1:07:26 Ale wtedy pojawia się pytanie. Skille, dla tych, którzy nie wiedzą, to takie krótkie dokumenty, które piszesz, żeby prowadzić model w rzeczach, które robi często. But then there's a question So, skills for anyone that doesn't know are these like little documents that you write to kind of guide the model on things that it does often. 1:07:34 Modele też mogą pomóc je pisać i wdrażać, ale napisanie ich wymaga czasu, tak jak upewnienie się, że piszesz je dobrze. And models can also like help you write these skills and put them in place, but it takes time to write them and it takes time to like know that you're writing them well. 1:07:42 A gdy już duża organizacja używa wielu skilli, stają się one też trudne do zmiany, bo zmiany w skillach mogą mieć nieprzewidywalny wpływ na And once you have a, you know, large organization using a bunch of skills, they also become a little bit hard to change because changes to skills might have kind of untold impact on 1:07:50 różne części firmy. different parts of the firm. 1:07:51 Więc to też problem, nad którym musimy dużo myśleć. So, this is also a problem that we end up having to think a lot about. 1:07:55 – Tak. Mówiliśmy trochę o rzeczach takich jak skille. – Yeah, actually, we've talked a little bit about things like skills. 1:07:59 Mówiliśmy o wywoływaniu funkcji. We talked about function calling. 1:08:00 Zbudowaliśmy do tego własne API. There's like we built our own APIs for it. 1:08:02 Są API takie jak MCP. There's APIs like MCP. 1:08:03 – Tak. – Które pojawiły się w świecie zewnętrznym i stały się publiczne i popularne już po tym, jak zbudowaliśmy własną wersję. – Yep. Which you've come up with – outside world, like which we, you know, became public and popular after we'd already built our own version of it. 1:08:11 Skille to kolejny przykład: mieliśmy coś, co zbudowaliśmy pod nazwą context bundles, a potem wyszedł ten publiczny standard skilli. Skills is another example of this of we had a thing that we built called context bundles and then later this kind of public standard of skills came out. 1:08:18 Więc to taki kołowrotek: wszystko ciągle się zmienia. So, this is kind of like treadmill that's going on of like things are always changing. 1:08:23 My coś budujemy, a potem często świat zewnętrzny buduje swoje, i to skomplikowana równowaga. We're building things and then often the outside world builds things and that's like a complicated balance. 1:08:29 Mamy też własne narzędzia wiersza poleceń, jak AIDE CLI. Also, like we have our own command line tools like ACLI. 1:08:33 – Tak. Miła strona posiadania własnych narzędzi – Yeah, one nice part about having our own tools, right? 1:08:36 jest taka, że jeśli widzimy potrzebę czegoś, możemy to po prostu zrobić. Is that we can like if we see a need for something, we can go make it. 1:08:40 Ale czasem trzeba też zrobić coś takiego: dobra, świat zewnętrzny naprawdę ustalił tu swój standard. Um but then there's also this thing you have to do sometimes of being like, okay, well, the outside world has really kind of set their standard against this. 1:08:48 Na przykład skille, a context bundles pewnie nie są właściwą odpowiedzią. For example, skills and like context bundles are probably not the right answer. 1:08:52 Więc jest w tym trochę przyznania się. So, there's like a little bit of acknowledgement. 1:08:53 Złą decyzją byłoby trzymać się swoich wcześniejszych wyborów, nawet gdy widzisz, że świat zewnętrzny zaczyna robić coś innego. You like it would be a bad decision to be stuck to the decisions that you made even when you see the outside world starting to do something different. 1:09:00 Więc czasem trzeba cofnąć własną pracę, co niedawno zrobiliśmy z context bundles. So, sometimes you have to like go undo work that we did, which we recently did with context bundles. 1:09:05 Usunęliśmy context bundles. We've taken context bundles away. 1:09:07 Zastąpiliśmy je skillami. We've replaced them with skills. 1:09:08 – I myślę, że druga rzecz, może nie tak oczywista z tego, co dotąd powiedzieliśmy, to że faktycznie używamy narzędzi zewnętrznych. – And then I think the other thing which which is maybe not as obvious from what we've said thus far is that we actually use third-party tools. 16 · 1:09:12 Własne narzędzia kontra Claude Code1:09:15 Claude Code i Codex to rzeczy, których używamy w naszym świecie, i to też ciekawe doświadczenie: niektóre rzeczy utrudnia, So, Claude Code and Codex are things that we use inside of our world, and that's also been an interesting experience of like it it makes some things harder, 1:09:24 niektóre poprawia. it makes some things better. 1:09:25 Czy możesz powiedzieć trochę więcej o tym, dlaczego zarówno zadajemy sobie trud budowania własnych narzędzi, jak i jednocześnie używamy zewnętrznych? Like, can you say a little bit more about like why do we both like go to the trouble of building our own tools and use external third-party tools at the same time? 1:09:33 – Tak. Myślę, że są tu dwie strony. – Yeah. Uh so, I guess like there's there's two sides of this. 1:09:37 Jedna: chcesz mieć kontrolę nad harnessem, nad tym, jakie modele są używane, nawet łączyć różne modele, żeby dać użytkownikom lepsze doświadczenie. One is like you want control over the harness, you want control over what models get used, even doing things like combining different models to give users a better experience. 1:09:46 Chcesz też, myślę, żeby nasze narzędzia od strony użytkownika były nieco głębiej zintegrowane z narzędziami, których, jak wiemy, ludzie używają. You also, I think with our tooling on the user-facing side, want to have a little bit more uh deep integration into the tools that you know that they're using. 1:09:55 Na przykład na dole naszego narzędzia CLI, to dość drobna rzecz, ale na dole pokazujemy, w którym feature model aktualnie For example, in the bottom of our CLI tool, and this is a fairly minor thing, but in the bottom of our CLI tool, we like show what feature the model is currently working 1:10:03 pracuje, i pozwalamy przełączać się między nimi. in, and we let you switch between different features. 1:10:06 Więc masz model i wiesz, że przestrzeń robocza, w której działa, jest zablokowana na feature, nad którym aktualnie pracuje. So, you can have the model and know that the workspace that it's working in is kind of locked to the feature that it's currently operating inside of. 1:10:12 Model widzi status budowania bieżącego feature i nie są to rzeczy, które musimy mu mówić. The model can see like the build status for the current feature, and these are these are not things that we have to tell the model. 1:10:18 Daliśmy mu narzędzie w rodzaju „kompiluj”. We like have given it a tool that's like compile, right? 1:10:21 Dostaje z powrotem status bieżącej kompilacji. It gets back the status of the current compilation. 1:10:24 Chcemy też używać narzędzi zewnętrznych, bo pod wieloma względami idą w innych kierunkach, a czasem szybciej niż my. We also want to use external tools because, I mean, in a lot of ways they're moving in different directions and sometimes faster than we are. 1:10:32 Ciągle wychodzą z nowymi funkcjami. Um these are constantly coming out with new functionality. 1:10:37 System pamięci w Claude Code wydaje się dobrym przykładem. Uh like um I guess the memory system in Claude Code feels like a good example of this. 1:10:42 Miejsce, gdzie wychodzą z funkcjonalnością, która pod wieloma względami wydaje się bardziej zaawansowana niż to, co my mamy do rozwiązania tego samego problemu. So, a place where they're kind of like coming out with functionality that feels in a lot of ways more advanced than the thing that we have to solve the same problem. 1:10:49 Chcemy pozwolić ludziom używać narzędzia, które działa dla nich najlepiej. Um we want to let people use the tool that works best for them. 1:10:52 Chcemy też się uczyć. We also want to learn. 1:10:53 Myślę, że jedna rzecz pojawiła się wcześnie: czułem, przynajmniej ja, takie napięcie: buduję to narzędzie. I think one thing that came up early on is like it felt, at least I felt this like tension of like, oh, I'm building this tool. 1:11:00 Naprawdę chcę, żeby wszyscy go używali, bo inaczej po co w ogóle je robimy? I really want, you know, this tool to be used by everyone because otherwise, like, why are we even making it? 1:11:07 Ale potem przychodzi uświadomienie, że jeśli twoje narzędzie jest najlepsze tylko dlatego, że sztucznie odciąłeś konkurencję ze świata zewnętrznego, Um, but then there's this kind of realization that if your tool is only the best because you've like closed out uh, competition from the outside world artificially, 1:11:16 to nie jest tak naprawdę najlepszym narzędziem do tej roboty. then it's not it's not really the best tool for the job. 1:11:18 A decyzja, którą chcemy podjąć, to ta, która będzie najlepsza dla ludzi tutaj. And the decision we want to make is the one that's going to be best for people here. 1:11:22 Więc w efekcie dajemy im dostęp do wszystkich narzędzi. So, as a result, we give them access to to all of the tools. 1:11:25 A potem staramy się ze wszystkich sił, żeby nasze było tak dobre, jak to tylko możliwe. And then we try as hard as we can to make ours as good as it can be. 1:11:27 – Tak. Jest w tym forma wewnętrznej, zdrowej konkurencji: to, że widzisz te narzędzia w akcji w naszej bazie kodu, – Right. Yeah, there's a form of just like internal virtuous competition where, you know, the fact that you get to see these tools in action inside our inside of our codebase, 1:11:37 że widzisz, jakie mają przewagi, pomaga nam zrozumieć, co musimy zbudować i jak ulepszać rzeczy. you get to see what advantages they have, and that helps us learn what we need to build and how we need to make things better. 1:11:44 Myślę też, że są w tym prawdziwe wyzwania. Um, I also think there are real challenges to it. 1:11:48 Za każdym razem, gdy wspierasz zewnętrzne narzędzie, są realne problemy, o których trzeba pomyśleć. Like, every time you support an external tool, there's like real problems you have to think about. 1:11:52 Jest sporo kwestii bezpieczeństwa, które stają się znacznie bardziej skomplikowane. There's a bunch of security questions that get significantly more complicated. 1:11:55 – Nie zawsze mają wszystkie właściwe punkty podpięcia. – don't always have all the right plug points, right? 1:11:58 Choćby piaskownica (sandbox). Like, even uh, sandboxing, right? 1:12:00 Wiele z tych narzędzi ma własną piaskownicę. They a lot of the tools have their own sandboxing. 1:12:03 A jeśli chcemy piaskownicy spójnej dla wszystkich, trudno użyć tej, którą one dostarczają, bo nie daje tej samej funkcjonalności, And if we want sandboxing that's consistent across all of them, kind of hard to use the sandboxing that they provide because it doesn't provide all the same functionality, 1:12:11 a mapowanie naszych reguł piaskownicy na ich sandbox to raczej przegrana sprawa. and maybe mapping our sandboxing rules onto their sandbox is kind of a a losing effort. 1:12:16 Więc zamiast tego staraliśmy się znaleźć sposoby, by wsunąć naszą piaskownicę we właściwe miejsca, tak by była używana we wszystkich klientach. So, instead, we've tried to find ways to kind of shim our sandboxing in in the right places so that it uh, gets used across all the clients. 1:12:23 – Tak, właśnie. – Yeah. Right. 1:12:25 I ostatecznie, myślę, chodzi o ekosystem, w którym zarówno staramy się budować naprawdę dobre narzędzia, dopasowane do naszych przypadków użycia i mogące rozwijać się And at the end of the day, I think an ecosystem where we both try and build really good tools that are adapted specifically for like our use cases and can really advance in 1:12:35 w sposoby trudne dla narzędzi zewnętrznych, jak i mamy platformę naprawdę dobrze wspierającą narzędzia zewnętrzne. ways that are hard for external tools to advance, and at the same time, have a platform that's really good at supporting third-party tools. 1:12:42 To taki tryb mieszany. Like, it's a kind of like mixed-mode interaction. 1:12:46 Myślę, że robiliśmy to już w innych miejscach. I think we've actually done this in other places. 1:12:48 Inna rzecz, która czyni nas trochę nietypowymi: jako organizacja wykonaliśmy ogrom pracy, żeby mieć własne centra danych i kontrolę nad Another another thing that I think makes us a little unusual is just as an organization we've done a huge amount of work on having our own data centers and having control over the 1:12:58 fizycznymi maszynami, których używamy. physical machines that we use. 1:12:59 Wspomniałeś o kontroli. Kontrola często wraca, gdy budujesz systemy tradingowe o niskich opóźnieniach i wysokiej wydajności: chcesz mieć dużą kontrolę nad warstwą fizyczną. Like, you know, you mentioned control, control comes up a lot when you're building you know, low latency high performance trading systems, you want a lot of control of the physical layer. 1:13:08 I okazało się, że ta kontrola jest przydatna także, gdy ogromnie skalujemy flotę GPU, którą budujemy. And we found that control to also be useful as we like scale up enormously in the kind of GPU fleet that we build. 1:13:16 A jednocześnie, w miarę jak rośliśmy, odkryliśmy, że bardzo przydatne jest też korzystanie z ofert chmurowych. And also at the same time as we've grown, we found it's also really useful to use cloud offerings. 1:13:21 Po części dlatego, że czasem mają zasoby, których my nie mamy. And like in part because sometimes there are capacities they have that we don't. 1:13:26 Czasem są po prostu lepsi od nas. Sometimes they're just better than us. 1:13:27 Uczyliśmy się na tym: uruchamialiśmy to samo zadanie w chmurze, było o wiele szybsze, i pytaliśmy: co zrobiliśmy źle? Like we've learned things from like we've like run the same workload in the cloud and it's like way faster and we're like, oh, what did we get wrong? 1:13:33 I w ten sposób nauczyliśmy się ważnych rzeczy. And we've like learned important things that way. 1:13:35 Często jest w drugą stronę. Often it goes the other direction. 1:13:38 Ale mogliśmy skalować się, robić nowe rzeczy szybciej, znaleźć więcej mocy obliczeniowej i ogólnie, myślę, lepiej wykonywać pracę na wszystkich frontach, robiąc coś, co wydaje się But we've been able to scale up, do new things faster, find more compute capacity, and just generally I think do a better job on all sides of the work by doing what seems 1:13:49 pod pewnymi względami szaleństwem: czy pójdziemy tą prostą ścieżką, czy tamtą, czy zrobimy obie w tym like in some ways a kind of crazy thing of like, oh, we are we going to take this simple path or that simple path and are we going to do both at the 1:13:54 samym czasie? – Tak. same time? – Yeah. 1:13:55 – I trudno robić obie naraz, ale myślę, że to się naprawdę opłaca. – And it is hard to do both at the same time, but I think there are real rewards to it. 1:13:59 I tutaj czuję bardzo podobnie: ważne jest zarówno budowanie własnych rzeczy, jak i naprawdę dobre wsparcie dla narzędzi zewnętrznych. And I feel very similarly here where I think both building our own stuff and having a really having really good support for using third-party tools is important. 1:14:08 I nie sądzę, że robimy cokolwiek z tego idealnie. And I don't think we do any of this perfectly. 1:14:10 Ani nasze wewnętrzne narzędzia nie są doskonałe, ani nasze wsparcie dla narzędzi zewnętrznych nie jest idealne. Uh I think neither our internal tools are perfect nor is our support for using third-party tools ideal. 1:14:15 Ale myślę, że to właściwa strategia dla pracy, którą tu wykonujemy. But I think that's that I think that's the right strategy for the work here. 1:14:18 – Dość często robimy coś takiego: widzimy miejsce, gdzie ludzie mocno opierają się na narzędziu innym niż nasze. – There's there's a thing that we end up doing fairly often uh where we see – – we see a place where people are leaning heavily on not our tool. 1:14:28 I wtedy wprowadzamy zmiany w naszym narzędziu, żeby odpowiedzieć na to, dlaczego tak robią. And then we end up making changes to our tool to kind of accommodate why they're going to do that. 1:14:34 Zmiany w uprawnieniach to jedna z takich rzeczy. Like the permissioning changes is one of these. 1:14:36 Można pociągnąć tę logikę i powiedzieć: to po co w ogóle to robić, jeśli zawsze tylko próbujecie nadgonić And I think you could follow the kind of logic of that and you could say, well, then why do you do the work if you're always just trying to like catch up, 1:14:45 pracę, którą wykonuje dostawca. you know, to the work that the vendor is doing. 1:14:47 Ale uważam, że to nie jest życzliwe odczytanie. And I feel like that's not the like charitable read on it. 1:14:51 W rzeczywistości jest też wiele obszarów, gdzie budujemy rzeczy, których dostawcy nie budują, albo głębsze integracje, What actually is happening is that there are also a lot of ways that like we're building things that the vendors aren't building, or we're building deeper integrations, 1:14:57 albo szybciej naprawiamy błędy użyteczności, które dotykają konkretnie ludzi tutaj. or we can fix like usability bugs that people here specifically have earlier. 1:15:02 Albo dajemy narzędzia, które naturalniej używa się w naszym systemie. Or we can provide tools that feel more natural to use inside of our system. 1:15:05 A poza tym powinniśmy dotrzymywać kroku wszystkiemu, co dzieje się w tych zewnętrznych klientach. And then also, we should keep up with all the things that are happening in these external clients. 1:15:09 – Tak. Jeśli budując własną rzecz, nie zyskujesz jakiejś unikalnej przewagi, po prostu marnujesz czas. – Yeah. Yeah, if you're not getting some kind of unique advantage from building your own thing, you're just wasting your time. 17 · 1:15:14 Co zostało z rzemiosła1:15:14 – Tak. – Rozmawialiśmy sporo o narzędziach, które zbudowaliśmy, żeby to wszystko działało lepiej. – Yep. – So, we've talked a bunch about the tooling that we've built to make all of this better. 1:15:19 Chciałbym teraz pogadać trochę o samym doświadczeniu programowania. I want to talk a little bit about just like the experience of programming, right? 1:15:23 Chyba każdy w świecie inżynierii oprogramowania czegoś z tego doświadczył, ale ciekawi mnie twoja perspektywa: I mean, I feel like kind of everyone in the software engineering world has experienced some of this, but I'm kind of curious just from your perspective, 1:15:30 co widzisz ze swojego punktu obserwacyjnego, pracując nad całym tym oprzyrządowaniem AI — jak narzędzia zmieniły doświadczenie kodowania? how what have you seen in your from your kind of vantage point working on all this AI tooling about how the tooling has changed the experience of coding? 1:15:38 – Jak pewnie wielu ludzi, zacząłem programować, bo lubiłem programować. – Probably a lot of people I got into coding because I I liked coding, right? 1:15:44 Lubiłem rozwiązywać problemy. I liked solving problems. 1:15:46 Lubiłem nawet to, że czasem rozwiązujesz problem i jest to jak zabawna łamigłówka. I liked even just like, you know, sometimes you're solving a problem and it feels like a fun puzzle. 1:15:52 Lubię nawet ten etap — może jestem szurnięty — kiedy dokładnie wiem, co piszę, i po prostu siadam i to piszę. I even like the part, maybe I'm crazy, I like the part where like I know exactly what I'm writing and I'm just going to write it right now. 1:15:58 To też daje naprawdę dużo frajdy. Like I think that's that part feels really good, too. 1:16:01 – Tak. To jak dzierganie: może nie rozwiązujesz wielkich idei, ale samo rzemiosło układania kodu – Yep. – And like I don't want it to always – Yeah, you're not maybe solving any big ideas, but just like the craft of putting the code out – want it – 1:16:07 kawałek po kawałku, tworzenie go… To trochę artystyczne, prawda? bit by bit, you know, making it it's it's it's it's a little artistic, right? 1:16:12 – Nie chcę, żeby zawsze było tak, że dokładnie wiem, co robię, ale czasami… Czasami to jest jak końcówka – I don't want it to always be I know exactly what I'm doing, but sometimes sometimes I'm just like, – – you know, it's like a it's like at the end of a 1:16:20 gry wideo. Niektóre nowe gry robią tak, że na końcu jest zabawny poziom, gdzie po prostu pozwalają ci video game some new games have started doing this thing where they like at the end there's like a fun level where they just like let you you know, 1:16:27 grać z całkowitą nieśmiertelnością czy coś w tym stylu. you're operating with like complete immunity or something. 1:16:30 Po prostu siadasz i robisz tę właściwą robotę. It's like, you know, you're just you're just sitting down and you're doing the actual thing. 1:16:34 – Mhm. – I wchodzisz w ten przyjemny stan flow, i to jest bardzo dobre. – Mhm. – Um and you can get into this nice flow state and it's very good. 1:16:39 I myślę, że obie te rzeczy są, każda w innym stopniu, sam nie wiem… Um and I think that both of these are like at different levels of like I don't know. 1:16:45 nie takie same jak wcześniej, prawda? Not the same as they were before, right? 1:16:48 – Jasne. – Ta druga, czyli „po prostu to zrób” — wygląda na to, że modele językowe są w tym całkiem niezłe. – Sure. – Like the just do the thing one, the the second one, it seems like LLMs are actually just pretty good at doing that. 1:16:55 Więc jeśli lubiłeś to poczucie, że w pełni panujesz nad systemem typów i potrafisz szybko wprowadzać zmiany, które innym wydają się skomplikowane, Uh so if the thing that you liked was, you know, feeling like you had a full command of the type system and that you could like quickly roll out changes that feel complicated 1:17:02 albo masz cały świat w głowie i chcesz po prostu iść i to zaimplementować — to pewnie przestaje być tak potrzebną umiejętnością. to other people or you have the whole world in your head and you just want to go implement it, that's probably just becoming like less of a needed skill. 1:17:09 Tak to po prostu wygląda. It just seems that way. 1:17:11 A z drugiej strony jest wiele miejsc, gdzie twoim zadaniem jest zaprojektować rozwiązanie problemu — Um and then on the on on the other side, there's like a lot of places where um you know, the thing you have to do is uh design a solution to a problem 1:17:22 problemu w kodzie — i przemyśleć konsekwencje jego wdrożenia; może są tam fragmenty szczególnie wrażliwe na wydajność. I tam twoja praca też trochę się zmieniła, a code problem and kind of like work through the ramifications of implementing that and maybe there's some like particularly performance-sensitive pieces and your job there has changed a little bit, 1:17:31 w tym sensie, że model dużo pisze, a ty głównie upewniasz się, że zrobił to, co trzeba. too, in the sense that the model is like doing a lot of authoring and you're doing a lot of like making sure that it did the right thing, 1:17:38 Patrzysz na kod, który napisał, i gdzie możesz, proponujesz poprawki. W wielu przypadkach twoja rola przesunęła się mocno w stronę right? You're kind of like watching the code that it wrote and offering adjustments where you can um and kind of your role has shifted a lot in a lot of cases more toward 1:17:48 przeglądu kodu (code review). the code review. 1:17:49 No i jest ta trzecia część, która moim zdaniem wciąż jest dość chroniona — choć stoimy na progu zmiany — czyli samo projektowanie oprogramowania. Um and then there's this like third part which I feel like is still fairly protected, although we're on the cusp of is like the actual like software design part. 1:17:58 To znaczy: co zrobisz? The like what uh what will you do? 1:18:00 Jak to zrobisz? How will you do it? 1:18:01 Jakie elementy wchodzą w grę? What are the pieces involved? 1:18:02 Jak będzie się tego używało, kiedy skończysz? What will it feel like to use this thing once you're done doing it? 1:18:05 I to jest miejsce, gdzie ludzie oczywiście mocno używają LLM-ów, na przykład w trybie planowania. Um and this is a place where obviously people are using LLMs a lot to in things like like plan mode. 1:18:11 Ale ta część wydaje się, sam nie wiem, najmniej całkowicie zmieniona. Um but this feels like the I don't know, the least the least like entirely changed version. 1:18:18 W pewnym sensie LLM jest tu po prostu współpracownikiem, z którym pracujesz, a nie kimś, kto robi za ciebie to, co lubisz robić. In a way, the LLM is like just a collaborator that you're working with rather than someone doing the thing that you like to do. 1:18:24 – Racja. Myślę, że wskazujesz na to, że praca ma wiele różnych części, z których ludzie czerpią satysfakcję, a narzędzia po prostu – Right. So, I think one thing you're pointing to is that like there's a lot of different parts of the work that people gain satisfaction from and the tools are just kind of 1:18:33 zmieniają, które z tych części są dostępne. changing which parts of those work are available. 1:18:35 Co właściwie będziesz robić? Like what what actually will you do? 1:18:38 Na co będziesz poświęcać czas? How will you spend your time? 1:18:39 Są części pracy, na które ludzie będą poświęcać znacznie mniej czasu, bo są bardziej zautomatyzowane — i dla jednych to dobrze, dla innych źle. There's like some parts of the work that like people are going to spend much less time on cuz they're more automated and that's like good for some people and bad for others, 1:18:47 To zmienia kształt pracy w sposób, który przestawia ludziom poziom satysfakcji. right? It's like changes the shape of the work in a way that it adjust people's level of satisfaction. 1:18:52 – Tak. Słyszę to dość często. – Yeah. I think I hear this pretty often. 1:18:54 Ludzie, nawet ci, którzy kiedyś byli może mniej techniczni, mówią: „To najlepsza rzecz na świecie. People that are like even people that were maybe less technical at some point are just like this is the best thing ever. 1:18:59 Nagle to, co wydawało mi się zamknięte, jest otwarte”. All of a sudden like this you know this thing that felt closed to me is open, right? 1:19:03 – Mhm. – Ale ludzie, którzy przez większość czasu robili raczej rutynowe zmiany, mówią: „To, co kochałem, zniknęło”. – Mhm. – But then people that maybe were making more rote changes for most of their time are like you know the thing I loved is gone. 1:19:11 Tego drugiego uczucia jest więcej. More of more of that feeling. 1:19:13 – Tak. Jeden bardzo mocny inżynier u nas podkreślał, że charakter jego pracy w pewnym momencie wyglądał tak: – Yeah, one one thing I heard from a very strong engineer here was he just highlighted it like the way the character of how his job worked at some point felt like you 1:19:23 10% czasu to naprawdę intensywne, głębokie myślenie, co zrobić. know 10% of his time was thinking really hard and deeply about what to do. 1:19:27 A 90% czasu to wykonanie — to dzierganie, o którym mówiliśmy: branie tych pomysłów i rozwijanie And then you know 90% of the time is on the execution of that which is the you know this knitting thing that we were talking about of like taking these ideas and unfolding 1:19:34 ich, i uczenie się po drodze z tego procesu. them and like learning along the way from that process. 1:19:36 Ale też wkładanie palców w osnowę i wątek kodu. But then you know kind of getting your fingers into the warp and weft of the code. 1:19:40 A teraz robi te 10%, potem wysyła model, żeby zrobił resztę, potem robi kolejne 10% i znów wysyła model, żeby zrobił Um and now he does that 10% and then like sends the model to do the other piece and then does like another one of those 10% and then sends the model to do 1:19:48 resztę. the other piece. 1:19:50 I pod pewnymi względami to dobrze. And in some ways it's good. 1:19:52 Spędzasz więcej czasu na myśleniu o trudnych problemach. You get to spend more of your time thinking about hard problems. 1:19:54 Ale to też trochę męczące, prawda? And it's also kind of tiring, right? 1:19:56 Jest taki relaksujący kawałek pośrodku, do którego masz po prostu mniej dostępu. It's like there's like a relaxing piece in the middle that you just kind of get less access to. 1:20:00 Druga rzecz, która mnie tu niepokoi, to co to oznacza dla tego, jak ludzie się uczą. Another thing I worry about here is what it means about how people learn. 18 · 1:20:04 Weryfikacja jest trudną częścią1:20:05 Bo myślę, że czas dziergania to też czas, kiedy uczysz się ważnych rzeczy. Cuz I think I think that knitting time is also a time where you learn important things, right? 1:20:10 Po pierwsze, uczysz się ważnych rzeczy o samych pomysłach. First of all you learn important things about the ideas. 1:20:12 Spędzasz te 10% na intensywnym myśleniu, co zrobić, i okazuje się, że wynikiem tych 10% jest to, że się mylisz. Like you spend that 10% thinking hard about what to do and it turns out the result of the 10% is you're wrong, right? 1:20:18 Masz pomysł, który naprawdę mocno przemyślałeś, a on nie do końca pasuje do rzeczywistości. You have some idea that you thought really hard about it and it doesn't really match reality. 1:20:21 – Ile razy robiłeś refaktoryzację, – How many times have you like done a refactor? 1:20:23 przechodzisz przez większość i na samym końcu: „A, to dlatego to nie może działać”. You get through most of it and then you're right at the end you're like oh that's why this can't work. 1:20:27 – Tak. – I wszystko cofasz. – Yeah. – – It's like – roll it back. 1:20:30 – Racja. Inny przykład takiego feedbacku: rozmawiałem z Leo White’em, który dawno temu był w tym podcaście, o nowym rozszerzeniu składni, które buduje. – Right. And another example of this feedback I've gotten to talking to Lea White who has has been on this podcast uh long ago about like a new syntax extension he's he's building. 1:20:42 Buduje nowy system, który w zasadzie zmienia to, jak myślimy o pokryciu kodu testami. He's building a new system for basically changing how we think about code coverage. 1:20:47 Miał pomysł na wysokim poziomie i wysłał agenta, żeby go zaimplementował. Um and you know, he had the high-level idea and you know, got an agent to go off and implement it. 1:20:55 I co ciekawe, czuł, że jest już bardzo blisko końca, bo miał główną ideę, a agent poszedł wykonać robotę. And it's sort of like he felt like he was really close to being done then cuz he had the core idea and had the agent go off and do the work. 1:21:03 A potem pomyślał: „No ale oczywiście to musi być dobre. Um and then he was like, "Well, but of course, it has to be good. 1:21:06 Więc muszę przeczytać ten kod”. So, I have to read the code." 1:21:07 I czytając kod, dużą część pracy, którą wykonałby, pisząc to samemu, musiał teraz wykonać w trakcie And then in reading the code actually, a lot of the work that he would have done in the process of authoring himself authoring it himself he now had to do in the process 1:21:16 przeglądania — w stylu: „O, to zły pomysł”. of reviewing it of being like, "Oh, well, that's a bad idea." 1:21:19 Prawda? Gdybyś przechodził przez kod i sam próbował wprowadzać zmiany, uczyłbyś się tych rzeczy po drodze. Right? And you would have you know, as you went through the code and tried to make the changes, you would have learned these things along the way. 1:21:25 A on zamiast tego nauczył się ich, czytając i dając modelowi feedback, żeby to posprzątał. But instead, he learned it in the course of reading and then giving the feedback to the model to clean it up. 1:21:30 I jest w tym coś niesamowitego: wydaje się, że modele robią za ciebie więcej pracy, niż naprawdę robią, bo weryfikacja jest tak samo trudna jak And it it's this kind of uncanny thing where it feels like the models are doing more work for you than they really are because this verification piece is is as hard as it 1:21:42 zawsze. A może nawet trudniejsza. ever was. In fact, maybe harder. 1:21:44 – Wygląda na trudniejszą. – Seems harder. 1:21:45 – Tak. Modele… – Trudniej weryfikować kod, którego sam nie napisałeś, prawda? – Yeah. – Yeah, like the model – to verify code that you didn't write, right? 1:21:49 – Racja. Chociaż w pewnym sensie zawsze weryfikujesz kod, którego nie napisałeś: jest przegląd kodu i… – Jest przegląd kodu, ale napisał go inny człowiek. – Right. I mean, you're always verifying code you didn't write in the sense that there's code review and like some – There's code review but someone else wrote it. 1:21:55 – No tak. – Właśnie. Right. – Right. 1:21:56 Myślę, że pod pewnymi względami trudniej weryfikować kod, którego nie napisał żaden człowiek. It's hard I think in some ways it's harder to verify code that no person wrote. 1:22:00 – Tak, dokładnie. – Yes, that's so. 1:22:01 – Tak. No właśnie. – Yes. Right. 1:22:02 Kod generowany przez model… The code's generated by the model. 1:22:03 To nie tak, że jest gorszy w jakimś ścisłym sensie. They just like It's not that they're worse in any kind of strict way. 1:22:06 Po prostu ma inną charakterystykę błędów. They just have different error characteristics. 1:22:08 A nasze techniki zauważania, co jest nie tak, i przemyśliwania, co może pójść źle, po prostu nie działają tu tak samo. – Tak, And like our techniques for noticing what's wrong and thinking through what might go wrong are just like they just don't work the same way in a case – Yeah, 1:22:17 czasem widzisz, jak model coś robi, sometimes you see the model do something, right? 1:22:19 i myślisz: „Człowiek by tego nigdy nie zrobił”. And you're like uh well, a human never would have done that. 1:22:22 – To po prostu… – I może się mylić w bardzo subtelny sposób, który nie jest oczywisty na pierwszy rzut oka. – That's just like – you know, and it's not it can It can in like a very subtle way that that isn't obvious when you first look at it. 1:22:28 – Tak. – I chyba część ryzyka w tym wszystkim polega na tym, że niektórzy mogą nie… Kiedy kod już jest, – Yeah. – And I guess part of the risk of all of this is that some people uh might not like it's it's when the code is there, 1:22:35 kompiluje się, robi to, co chcesz — kusi, żeby go nie rozumieć, wiesz? it's compiling, it does the thing you want it to do, it's kind of tempting to not understand it, you know? 1:22:43 I w tym jest ryzyko. And there's a risk in that. 1:22:44 – Tak. I jest tu prawdziwe pytanie: co chcemy rozumieć i na jakim poziomie? – Yep. And there's a real question of like what do we want to understand and at what level? 1:22:51 Ludzie często przywołują kompilator jako analogię: kiedyś, w zamierzchłych czasach, pisało się programy w kodzie maszynowym albo People often bring up the compiler as a kind of analogy in the space of like it used to be, back in the ancient days, people would like write programs in machine code or 1:23:01 w asemblerze, a potem pojawiły się kompilatory, ludzie przestali to robić i było w porządku. assembly code, and then there were compilers, and people stopped doing that, and it was okay. 1:23:08 I myślę, że to zarówno dobra, jak i zła analogia — w tym sensie, że słusznie podkreśla, że nie musimy utrzymywać zrozumienia każdego poziomu And I think that's like both like a good and a bad analogy in the sense that like it it correctly highlights that we don't need to maintain understanding of every level of the 1:23:19 systemu tak, jak kiedyś. system in the way that we did in the past. 1:23:21 Można przejść z jednego poziomu na inny i być z tym w porządku. It's possible to go from one level to another and to be okay with it. 1:23:24 A jednocześnie — o rany, jak bardzo te rzeczy nie są kompilatorami. And also, boy, are these things not compilers. 1:23:28 – Tak. – Nie są deterministyczne. – Yeah. – They're not deterministic. 1:23:30 – Nie są deterministyczne. – They're not deterministic. 1:23:31 Trudno je przewidzieć. They are hard to predict. 1:23:32 Robią dziwne rzeczy. They do weird stuff. 1:23:33 Robią dziwne rzeczy na każdym poziomie. They do weird stuff at every level. 1:23:35 To bardzo głupi przykład. This is super dumb. 1:23:36 Poszedłem w tym tygodniu do LLM-a, żeby zrobił mi małą infografikę z ćwiczeniami, które chciałem wykonywać. Like I went to an LLM like earlier this week to make a little infographic for myself for like some exercises I wanted to do. 1:23:44 I to było niesamowite. And it was amazing. 1:23:45 Poszło superszybko. It happened super fast. 1:23:46 Zrobił świetną robotę. It did a great job. 1:23:47 Z siedmiu ćwiczeń wszystkie narysował idealnie — poza tym na samym dole, gdzie ręce wychodziły z podłogi. Like of the seven exercises, it rendered them all perfectly well, except for the one at the bottom where it had the arms coming out of the floor. 1:23:55 Pomyślałem: „Wow, takiego błędu człowiek nie zrobiłby za milion lat”. – – It was like, "Wow, that's like a mistake a human would never in a million years have made." 1:24:00 I mam wrażenie, że to samo „ręce z podłogi” zdarza się też w kodzie. Um and I feel like that same kind of like arms coming out of the floor thing happens in the code, too. 1:24:05 – Tak. – I z pewnością w obecnym reżimie ludzkie zrozumienie jest tak samo krytyczne jak zawsze, na całej drodze. – Yep. – And certainly in the current regime where we're in, human understanding is as critical as ever kind of the whole way through. 1:24:14 Nie możesz tak naprawdę ufać modelom w żadnym fragmencie, jeśli sam tego nie rozumiesz. Like you can't really trust the models to do any piece of it without you understanding it. 1:24:19 – Racja. – Więc myślę, że kluczowe jest wymyślić, jak używać modeli jako narzędzi ludzkiego rozumienia. – Right. – Um so I think it's really essential to figure out how to use the models as tools for human understanding. 1:24:26 I mam wrażenie, że ludzie to robią. And and I do I feel like people do this. 1:24:29 Rozmawiałem z ludźmi, którzy mówią, że przegląd kodu stał się łatwiejszy, bo można użyć modeli do odpowiadania na pytania. Like I hear, you know, I've talked to people who talk about how code review has gotten easier because you can use the models to help answer questions. 1:24:36 Przechodzisz przez kod i widzisz: dlaczego ta osoba to zrobiła? Like you go through and see this like, why why did we why did the person do that? 1:24:40 Co w tym API sprawia, że tak się dzieje? Like what about the API would make that happen? 1:24:42 I oczywiście wciąż są halucynacje. And of course, there are still hallucinations. 1:24:45 Mniej, ale wciąż są. There's less, but they're still there. 1:24:46 Wyjaśnienie może być pewne siebie i błędne. The explanation might be confidently wrong. 1:24:48 Oczywiście, jeśli powiesz modelowi, że się myli, odpowie: „Tak mi przykro. Of course, if you tell the model that it's wrong, it'll be like, "I'm so sorry. 1:24:52 Masz całkowitą rację”. You're totally right." 1:24:53 Jest bardzo uległy, ale popełnia błędy. It's very compliant, but it does make mistakes. 1:24:55 A mimo to myślę, że może być naprawdę potężnym narzędziem do rozumienia. And yet, I think it can be a really powerful tool for understanding. 1:24:59 I ciekawi mnie: jak bardzo widzisz to „narzędzie do rozumienia” — zarówno w tym, co ludzie w firmie sami budują, jak i w tym, co ty chcesz And I'm curious, how much do you see this like tool for understanding thing both in the things that people are like off building in the firm and in the things that you want 1:25:06 budować w przyszłości? to build in the future? 1:25:07 – Przegląd kodu to dla mnie duża część tego. – I see code review as a big part of this. 19 · 1:25:12 Narracyjny przegląd kodu1:25:11 Wygląda na to, że mamy tu jeszcze dużo pracy, ale są możliwości, żeby na przykład rozbić funkcję czy PR, który przeglądasz, na Um, so it seems like there's a lot more work we have to do here, but there are opportunities to do things like break up the feature or pull requests that you're reviewing into 1:25:20 fragmenty, które w oryginale być może w ogóle nie występują w takiej postaci. chunks that actually maybe don't appear in the original in the form that they are. 1:25:25 Przykładem narzędzia, które w tym pomaga, jest Diffractor — w zasadzie narzędzie do przeglądu kodu, które pokazuje ci One example of a tool here that's been helping uh along these lines is a tool called Diffractor, which is basically a code review tool that shows you um, 1:25:34 fragmenty kodu ułożone tak, by wyjaśniały zmianę, ale każdy z oglądanych fragmentów niekoniecznie pochodzi z oryginalnego diffa. you know, pieces of code laid out in a way that explains uh the change, but each of the chunks of code that you're viewing is not actually necessarily from the original diff. 1:25:46 Można rozbić zmianę tak, że kolejne diffy nakładają się na siebie i razem dają oryginalny diff, In a way, like you can break up the change in a way that the diffs apply on top of each other to make the original diff, 1:25:52 ale przy tym opowiadają trochę więcej o tym, dlaczego ta zmiana została wprowadzona. but kind of tell a little bit more of a story of like why why this change was made. 1:25:57 – Jasne. Może warto przy tym powiedzieć, jak działają nasze zwykłe narzędzia do przeglądu kodu. – Right. And it's maybe worth saying a little bit like how does our ordinary code review tooling work? 1:26:01 W Ironie, gdy zabierasz się za przegląd jakiejś funkcjonalności, dostajesz pliki jeden po drugim. And so, like Iron, you go to review a feature, it shows you each file one at a time. 1:26:07 Pliki są przy tym uporządkowane w kolejności definicji, bo OCaml, jak się okazuje, ma dość ścisłe pojęcie o tym, w jakim porządku rzeczy się dzieją — porządku, który It actually has the files ordered in the kind of definition order cuz OCaml it turns out has a kind of strict notion of like what is the order in which things happen that 1:26:16 odzwierciedla strukturę zależności między plikami. are kind of the that respects the dependency structure of the files. 1:26:21 – Tak. – Co jest o tyle przydatne, że widzisz definicje, zanim zobaczysz ich użycia. – Yep. – Uh which is kind of useful because you can sort of understand like the definitions before the uses of the definitions. 1:26:26 – I testy na końcu. – Właśnie, właśnie. – like the tests at the end or – Right, right. 1:26:29 I testy na… – Choć nie zawsze to jest trafne. And the tests at the – it's not always right though. 1:26:31 To znaczy… – Nie zawsze w takiej kolejności chce się to czytać. I mean like – It's not always the order you want to do things. 1:26:34 – Nie zawsze w tej kolejności. – not always the order. 1:26:35 Gdy pracowałem w GitHubie i myśleliśmy o przeglądzie kodu, często rozmawialiśmy o tak zwanym narracyjnym przeglądzie kodu, When we're at GitHub and we're thinking about code review, a lot of times we were thinking we we were talking about these things called narrative code review, 1:26:41 czyli, nie wiem, czy zamiast pokazywać na stronie PR-a opis, potem listę identyfikatorów commitów, których większość which are basically like I don't know, could we instead of showing for example on a pull request page a like description and then a series of commit like commit IDs that most most 1:26:51 ludzi i tak nie czyta, a potem panel z diffem — czy nie moglibyśmy użyć commitów, żeby ułożyć z przeglądu kodu coś w rodzaju opowieści, people don't read and then a diff pane, could we instead use the commits to lay out more of like a story of a code of code review, 1:26:59 prawda? Jak użytkownik przeszedł od pierwszej rzeczy, którą chciał zrobić, do zmiany, która ostatecznie trafiła do PR-a? right? How did the user like go from the first thing that they wanted to do to the change that eventually ended up in the pull request? 1:27:06 A to wówczas wymagało sporo pracy od programisty, który napisał tę zmianę. And that at the time requires like a lot of work on behalf of the developer who wrote the change. 1:27:12 Musi tworzyć osobne commity, pisać ładne opisy, robić rebase, gdy wprowadził zmianę, która nie trafiła do wersji końcowej. They have to like write individual commits, they have to write nice descriptions, they have to do things like rebase when they make a change uh that didn't end up being in the final. 1:27:20 Chce poprawić historię tak, żeby miała sens i żeby opowieść ładnie się rozwijała. They want to like make a change to make it like historically make sense so the story plays out nice. 1:27:24 – Czyli programista musi opowiedzieć tę historię od początku. – So the developer has to tell the story from the beginning. 1:27:27 – Właśnie. – A ta historia niemal nieuchronnie jest kłamstwem. – Correct. – And often and that story is almost inevitably going to be a lie. 1:27:31 To nie jest prawdziwa historia tego, co się wydarzyło, bo prawdziwa droga programisty do spójnej funkcjonalności to mnóstwo pomyłek i zawracania, które nie są częścią It's not like the real story of what happened cuz the real developer's journey towards getting a coherent feature is like many mistakes and back and forth that you don't that are not part 1:27:39 tej objaśniającej opowieści o ładnej rzeczy, do której doszedłeś na końcu — bo po drodze popełniłeś wiele błędów. of like the explanatory story of the nice thing you got to at the end cuz you made a lot of mistakes along the way. 1:27:44 – Narracyjny przegląd kodu opowiadałby więc historię diffa od początku do końca. – But the mistakes are um so the narrative code review would tell a story of the diff end to end. 1:27:49 Ale jest tu kilka kwestii. Um but there's a couple things there. 1:27:50 Pierwsza: jak mówisz, programista musi odwalić tę robotę. One is like like you said, you have to the developer has to do the work. 1:27:54 To wygląda więc na całkiem ciekawe zadanie dla modelu językowego. Mhm. So that seems like a pretty interesting thing for an LLM to do. 1:27:57 Co, jeśli dałoby się uzyskać tę samą korzyść — zmianę ułożoną chronologicznie — ale tak, żeby Like what if you could get the same benefit of it laid out kind of chronologically um but laid out in a way that uh you know, 1:28:04 człowiek nie musiał wkładać w to dodatkowego wysiłku? the human didn't have to put in extra effort. 1:28:06 A druga rzecz… – Chronologicznie, czy w jakimś porządku, który po prostu ma sens? And then another thing that happens is um – chronologically or like in some order that just makes sense. 1:28:13 – W porządku, który ma sens. – order that makes sense. 1:28:14 W takim porządku, w jakim chciałbyś to czytać, żeby zrozumieć, dlaczego zmiana została wprowadzona. So like in some order that is the order that you would want in order to understand why the change was made. 1:28:19 – Można by zacząć od: oto docelowe API, do którego chcieliśmy dojść, prawda? – Mhm. I you might start off with like here's the end API that we wanted to achieve, right? 1:28:25 A teraz pomówmy o elementach, które się w nie wpasowują. And now let's talk about like the pieces fitting into it after. 1:28:28 Byłoby to, przynajmniej w pewnym stopniu, odwrotnością tego, co domyślnie robią nasze narzędzia: zaczynają od liści i idą It maybe doing at least in a limited way the opposite of what our tooling does by default, which is to start like at the you know at the at the leaves and go 1:28:36 od nich przez całą resztę. all the way from there. 1:28:37 – Tak. Ginie też informacja o wszystkich commitach i kierunkach, w które ludzie poszli, a z których musieli się wycofać, – Yeah. There's also information loss in all of the commits and directions that people have gone down that they ended up having to back out of, 1:28:46 prawda? – Mhm. right? – Mhm. 1:28:46 – Czasem, gdy patrzę na jakiś PR, mówię sobie: „Aha, dokonałeś takiego wyboru, ale dlaczego właśnie takiego? – So sometimes when I go to, for example, a pull request, I'm just saying to myself, "Oh, you made this choice, but why did you make that choice? 1:28:53 Dlaczego nie poszedłeś tą inną drogą?” Why didn't you go this other way?" 1:28:55 A informacja, że autor próbował tej drogi i uznał, że nie zadziała, byłaby naprawdę bardzo cenna, gdyby ją wydobyć. And well, the information that they did try to go that way and then decided that it wouldn't work would be really, really useful to surface. 1:29:02 Oczywiście mogę pójść zapytać człowieka, a on spróbuje sobie przypomnieć, ale najlepiej byłoby użyć LLM-ów do budowy narzędzi, które lepiej wiedzą, jakimi And of course, I can go ask the human and they can go try to remember, but ideally we could use LLMs to build tools that have a better sense of like what kind 1:29:10 drogami ten człowiek szedł. of ways the human went. 1:29:11 W najprostszej postaci: bierzesz pierwotną sesję z LLM-em, w której użytkownik tworzył funkcjonalność, i udostępniasz jej log innemu In its simplest form, if you take something like the original LLM session that a user used when trying to develop the feature and make kind of the log of it available to another 1:29:21 modelowi, któremu recenzent zadaje pytania, dlaczego podjęto takie a nie inne decyzje — wydaje się, że to już byłby duży krok naprzód. LLM where the reviewer is asking questions about why certain decisions were made, really seems like you could get a lot of the way there. 1:29:27 – Wiesz, jak działa sam Diffractor? – Do you know how the Diffractor tool itself works? 1:29:31 Jakich informacji używa do analizy? Like what information does it use for analyzing? 1:29:33 – Nie wiem. – I don't. 1:29:35 Nie. – To zresztą dobrze pokazuje pewną fajną cechę tych narzędzi: charakter pracy zmienił się między innymi tak, że wszyscy wszędzie No. – I mean, this actually highlights like a nice thing about these tools, which is one of the ways in which the character of the work has changed is that like everybody everywhere 1:29:45 o tym myślą, a narzędzia wyrastają ze szczelin w chodniku. is thinking about this and there are tools bubbling up, you know, between the cracks in the sidewalk. 1:29:49 Ludzie tworzą rzeczy szybciej, niż jakikolwiek centralny zespół jest w stanie je wchłonąć. Like people are just like creating stuff faster than any centralized team can like totally absorb them. 1:29:56 A celem centralnego zespołu jest wtedy wymyślić, jak zbudować narzędzia, które ludziom w tym pomogą, And then I think like the goal of the centralized team is to like figure out like how can we build tooling to help people do that? 1:30:02 i jak wziąć najlepsze pomysły, które się pojawiają, uczynić je solidniejszymi, użytecznymi w całej firmie i w pewnym sensie standardowymi. And how can we take the best ideas that come up and make them more robust and more usable firm wide and kind of make them more standard. 1:30:09 – A tam, gdzie nie ma jednego najlepszego — jak budować narzędzia na tyle modułowe, żeby ludzie mogli podłączyć swój własny element? – And in the cases where there isn't a best, uh how can we build tools that are like modular to the fact that people want to plug this particular piece? 1:30:17 Mamy na przykład sporo systemów, które używają LLM-ów również do przeglądu kodu. Like maybe they we have a bunch of uh we have a bunch of systems that use LLMs to do to do code review, too. 1:30:24 Czyli model językowy patrzy na kod i ocenia, czy są w nim błędy, luki bezpieczeństwa albo czy może w jakiś sposób spowodował regresje. So an LLM this is an LLM looking at code to determine if it has bugs or if it has security issues or if uh maybe it's like caused regressions in certain ways. 1:30:33 I wygląda na to, że raczej nie będzie jednego, który jest tym właściwym. And it seems like there's probably not going to be one of those that's right. 1:30:37 Chcemy więc zbudować małą warstwę z wtyczkami, do której ludzie mogą wnieść własne rozwiązania, dzielić się nimi, a my zobaczymy, które radzą sobie najlepiej. So in a sense we want to build like a little pluggable layer where people can kind of bring their own, share them, and we can see which ones do best. 1:30:44 – Jasne. To niemal z konieczności zależy od dziedziny, prawda? – Right. It's it's almost necessarily domain specific, right? 1:30:48 Wskazówki, które chcesz dać modelowi, gdy próbujesz przeanalizować fragment kodu i sprawdzić, czy są z nim problemy, będą zależeć The advice that you want to give the LLM when it's when you're trying to like analyze a piece of code and figure out if there are issues with it is going to depend 1:30:57 od tego, gdzie w bazie kodu on leży, jakie są standardy i jakie cele ma konkretna grupa ludzi, którzy go budują. on where in the code base it is and what are the standards and what are the goals of the particular group of people who are building it. 1:31:02 Część tego to więc po prostu fundamentalna różnorodność, którą chcesz mieć w systemie. So like some of the stuff is just like fundamental diversity that you want to have in the system. 1:31:06 – Są też po prostu różne podejścia do tego zadania. – There are also just different approaches you can take to this. 1:31:09 Jedno może polegać na stworzeniu małego zespołu agentów. So like one approach might involve you creating like a little team of agents. 1:31:13 Mamy coś takiego jak „review squad”, co działa mniej więcej w ten sposób. We have this thing called review squad that kind of works like that. 1:31:16 Inne: agent po prostu patrzy na kod i szuka problemów, ale widzi też poprzednią wersję kodu. Or one might be like an agent just kind of looking at the code and looking for problems, but it can also see the previous code as it was. 1:31:23 Jeszcze inne: pozwalasz agentowi działać w pełnym środowisku, gdzie może wprowadzać różne zmiany w kodzie albo dodawać testy i patrzeć, jaki Or another might be that you actually let an agent like run with a full environment where it can like apply different code changes or add tests and see how those tests like you 1:31:34 dają wynik. know roll the result. 1:31:36 I nie jest dla nas oczywiste, które z tych podejść jest najlepsze. And like it's not obvious to us which of those approaches is best. 1:31:39 A wielu ludzi chce eksperymentować. And there are a lot of people interested in experimenting. 1:31:41 Nasza praca sprowadza się więc do tego, jak umożliwić eksperymentowanie — sprawić, by wszystkie te różne próby mogły współistnieć. So our job kind of turns into like how can we figure out how to make experimentation possible, make it so that all of these different attempts can kind of like live together. 1:31:50 – Jasne. Czyli częściowo budujecie konkretne narzędzia programistyczne dla ludzi, – Right. So part of what you're doing is trying to build concrete developer tools for people. 1:31:54 a częściowo platformę, na której ludzie zbudują własne narzędzia programistyczne. And part of what you're doing is building a platform for people to build their own developer tools. 1:31:58 – Tak, zgadza się. – Yep. That's right. 1:31:59 Przez pewien czas myśleliśmy o tym głównie jako o narzędziach, które dajemy modelowi, ale coraz częściej chodzi o takie rzeczy jak harness i sposób jego działania, And for a while we thought about that mostly as the tools that we give to the LLM, but increasingly we're thinking about it as things like the harness and how the harness works 1:32:07 jak podłącza się narzędzia do przeglądu kodu albo nawet… mamy system monitorowania całej pracy LLM-ów wykonywanej w twoim imieniu i or how you plug in uh code review tools or even like um you know, we we have a system for monitoring all of the different LLM work that's happening on your behalf and 1:32:20 zbudowaliśmy własny interfejs pokazujący wszystkie te trwające zadania modeli, ale zbudowaliśmy też zestaw API — API do monitorowania — we built our own interface for showing all of those different LLM things in progress, but then we also built like a set of APIs that are like a a monitor set of APIs 1:32:30 na którym wiele innych osób zbudowało własne narzędzia. that a bunch of other people have built their own kind of tooling on top of. 1:32:33 – Mówiliśmy trochę o AI jako narzędziach do rozumienia; przegląd kodu to jeden obszar i ta fajna myśl, że model mógłby opowiedzieć swoją historię, – So, we talked some about AIs as tools for understanding and code review is like one focus and this nice thing of like, oh, we could have the LLM tell its story, 1:32:42 prawda? Może zdecydować, jak zorganizować diffy, jak ci je przedstawić i jak wykonać pracę rozłożenia pojęć w right? It can like decide how to organize the diffs and how to present it to you and how to kind of do the work of laying out the concepts in an or in 1:32:50 porządku łatwym do zrozumienia dla człowieka. an order that's easy for the human to understand. 1:32:52 To wygląda świetnie. That seems great. 1:32:53 Ale jest to też pod pewnymi względami bardzo tekstowe, a to ograniczenie, którego w zasadzie nie powinno być. But it's also in some ways kind of very textual and that feels like a limitation that kind of shouldn't be there. 1:33:00 Jedna z rzeczy, które moim zdaniem powinny być wszędzie, to wykorzystanie tego, że AI naprawdę dobrze tworzy wizualizacje — do budowania Like one of the things that feels to me like it should be all over the place is leveraging the fact that AIs are actually really good at minting visualizations to build more like 1:33:10 niestandardowych, doraźnych, jednorazowych wizualizatorów, które pomagają zrozumieć różne problemy techniczne, w tym to, co dzieje się w kodzie. custom ad hoc one-time-only visualizers to help people understand all sorts of technical issues including understanding what's happening in their code. 1:33:20 Ile tego widziałeś i czy to jest ważne? Like how much of that have you seen and like like is it important? 1:33:24 Czy powinniśmy coś robić, żeby było tego więcej? Should we be doing things to generate more of it? 1:33:26 – Osobiście nie widziałem tego wiele. – I haven't seen much of that personally. 1:33:28 Ale uważam, że to niezwykle ekscytujące. I think it's extremely exciting though. 1:33:30 Mówisz o tym, żeby model rysował małe diagramy układu kodu albo tego, jak różne elementy ze sobą współdziałają, żeby wyjaśnić ci jakąś So, you're talking about like having the LLM maybe make little diagrams of how the code is laid out or how different pieces interact with each other so that it can explain a concept 1:33:39 koncepcję? – Tak, albo: jest problem z wydajnością. to you. – Yeah, or like, you know, there's a performance problem. 1:33:42 Możesz zbudować mi własną wizualizację tego, co się tam dzieje? Can you like build me a custom visualization of what's going on there? 1:33:45 Bardzo mocno opieramy się na świetnych narzędziach do wizualizacji. Like we lean a huge amount on on great visualization tools. 1:33:49 Często są to narzędzia wysokiej jakości, proste i wielokrotnego użytku. Um and I think often very like high-quality simple repeatable tools. 1:33:56 Ogromnie korzystamy z Perfetto od Google, mamy własną, przerobioną wersję Perfetto z kilkoma usprawnieniami So, we've gotten a huge amount of use of Google's Perfetto, and we have like our own hacked-up version of Perfetto that has like a few different improvements to it, 1:34:04 i podpięliśmy ją do naszego magic-trace i innych narzędzi do analizy wydajności. and we've hooked it into our magic trace and other kind of performance analysis tools. 1:34:07 Ale to jest skupione na jednej, dość wąskiej klasie wizualizacji, a jest mnóstwo innych sposobów, w jakie chciałbyś zrozumieć, co technicznie dzieje się w bazie kodu, But like, it's really focused on one relatively narrow class of visualizations, and there's all sorts of other ways that you might want to understand what's going on technically in a code base, 1:34:18 i wydaje mi się, że powinno być mnóstwo dobrych przykładów, jak to robić. and it feels to me like there should be lots of good examples of ways of doing this. 1:34:22 Ale nie widziałem tego tyle, ile moim zdaniem powinno być, i zastanawiam się, dlaczego nie ma tego więcej — But like, I haven't seen quite as much of this as I feel like there should be, and I kind of wonder wonder why we don't why we don't get more of it, 1:34:30 zarówno u nas wewnętrznie, jak i w świecie zewnętrznym. both like internally, but also like in things in the outside world. 1:34:33 Mam wrażenie, że, nie wiem, pół roku temu widziałem więcej opowieści na ten temat, ale mało przekonujących przykładów. I felt like, I don't know, 6 months ago I was seeing more stories about this, but like fewer compelling examples. 1:34:38 I zastanawiam się: może to jest mniej dobre, niż mi się wydaje, może trudniejsze, niż myślę, a może po prostu jeszcze nie jesteśmy na tym etapie. And like, I'm wondering like, maybe it's less good than I think it is, or maybe it's harder than I think it is, or maybe we're just like not there yet. 1:34:44 – Myślę, że to wraca do tego, co mówiłem wcześniej: gdyby modele przestały się rozwijać, i tak mielibyśmy pracy na wiele lat. – I think it's it goes back to the point I was saying earlier about like, if the models stopped their progress, we would still have multiple years of work to do. 1:34:51 Wiele sposobów, w jakie dziś stosujemy modele, to albo odbicie tego, jak proces tworzenia oprogramowania wyglądał przed modelami — czyli po prostu wtykamy je w That like, a lot of the ways that we apply models now are either reflections of how the software process existed before the models were around, meaning we're just trying to plug them into 1:35:03 miejsca, gdzie człowiek wykonywałby dokładnie ten sam proces, tylko teraz pomaga mu w tym LLM — places where a human would do exactly the the process, but we're having an LLM help with it. 1:35:07 albo odbicie tego, jak działa interfejs modeli. Or they're a reflection of how the the models interface works. 1:35:13 Chodzi mi o to, że wiele naszych interfejsów do pracy z modelami przypomina czat, bo tak działają API dostawców. What I mean by that is that a lot of the interfaces that we have for interacting with models, they feel like chat, because that's how the APIs work for the vendors. 1:35:20 A mam wrażenie, że dopiero teraz zaczynamy naprawdę dostrzegać, że czat może nie być właściwym interfejsem. And I feel like we're just now starting to really get into like, maybe it's chat's not the right interface. 1:35:27 Może to, co naprawdę chcesz pokazać ludziom piszącym kod, to raczej drobne notki o konkretnych zmianach, które wprowadziłeś. Like, maybe this thing you actually want to present to people when you're writing code is something more like little tidbits about the exact code changes that you've made. 1:35:36 A czat to raczej… owszem, chcesz mieć ten log na wypadek, gdyby człowiek zapytał, dlaczego model coś zrobił, And maybe chat is almost like, yeah, you want to have the log there in case the human has a question about why the model did a thing, 1:35:41 ale może nie jest to główny artefakt, który chcesz pokazać. but maybe it's not like the primary artifact you want to show back. 1:35:44 – Myślę, że to trochę artefakt tego przejścia od pracy z jednym agentem do pracy z wieloma agentami. – I think this is a little bit of a artifact of this kind of move from interacting with a single agent to interacting with multiple agents. 1:35:54 – Tak. – Prawda? – Yeah. – Right? 1:35:55 I myślę, że dotyczy to zarówno naszego świata, jak i tego na zewnątrz. And I think we're this is like both inside our world and outside of it. 1:35:59 Jest coraz więcej wsparcia dla pracy na poziomie orkiestracji: owszem, do pewnych rzeczy musisz rozmawiać z agentem, There's like more and more support for these kind of orchestration level work where yeah, like you're you're you need to talk to an agent to do some things, 1:36:06 ale chcesz też móc wizualizować, ogarniać i zarządzać — a właściwie zlecić modelom zarządzanie — pracą wielu różnych agentów. but you also want to be able to like visualize and absorb and manage and have in fact have LLMs manage for you the work of many different agents. 1:36:16 – Tak. Jest też druga strona tego medalu. – Yep. – Um – And there's a flip of that, too. 1:36:18 Chcesz, żeby nie pracowały tylko nad jedną rzeczą. You want to have them not just working on like one one thing. 1:36:22 Ciągle mówimy „artefakt”, więc staram się tego słowa unikać… Nie chcesz, żeby pracowały tylko nad jedną… – Jedną zmianą kodu. – Jedną zmianą kodu, jednym One one I we keep saying artifact, so I'm trying not to say you don't want them just to work on one – one code change, one – one code change or one uh 1:36:31 diagramem czy jednym badaniem. diagram or one research study. 1:36:33 Chcesz, żeby pracowały nad wieloma naraz. You kind of want them working across multiple at once. 1:36:35 Jest więc i ta druga strona. So, there's the the other side as well. 1:36:37 To relacja wiele do wielu. It's like a many-to-many. 1:36:38 – Ciekawi mnie, co według ciebie będzie dalej w tej kwestii. – So, I'm curious what you think is coming next in this regard? 20 · 1:36:43 Zespoły agentów i co dalej1:36:42 Co powinniśmy budować, żeby lepiej wspierać taki ekosystem wielu agentów pracujących nad różnymi problemami i komunikujących się ze sobą na różne sposoby? Like what do we need to be building to better support this kind of ecosystem of like many different agents working on various different communicating with each other in various ways. 1:36:52 Z punktu widzenia odtwarzalności brzmi to dość przerażająco, ale nie wiem. Like seems kind of like horrifying from a like reproducibility standpoint, but like I don't know. 1:36:57 Jakie rzeczy powinniśmy wypróbować, z czym eksperymentować? What do what do we what are the kinds of things that we need to like try out and experiment with? 1:37:01 – Tak, świat zaczął się przesuwać w stronę koncepcji zespołów agentów. – Yeah, the world has started to move more toward this like agent teams concept. 1:37:05 Wygląda na to, że wciąż sporo pracy przed nami, zanim ustalimy, jak mają przekazywać sobie informacje. It seems like there's still a lot more that we need to do to be able to figure out how they pass information back and forth to each other. 1:37:11 Jest cała masa technik: czy mają wspólny kanał rozgłoszeniowy, w którym wszyscy rozmawiają? There's a bunch of different techniques about like do they have a broadcast channel that they can all talk in? 1:37:16 Czy mogą rozmawiać ze sobą jeden na jeden? Can they talk one-on-one to each other? 1:37:18 Gdy mają pytania o to, co robi ten drugi, When they have questions about what the other one's doing? 1:37:21 czy mogą zajrzeć do logu sesji tego drugiego, czy muszą go zapytać? Can they like look at the session log of uh another one that's happening or do they have to ask it a question? 1:37:27 Trzeba tu podjąć sporo decyzji o tym, jak mają działać. And there's like a bunch of decisions here to make about how they work. 1:37:30 A do tego jest wiele miejsc, gdzie nie domknęliśmy pętli, jeśli chodzi o to, co faktycznie mogą zrobić. And then there's a bunch of ways that um we haven't kind of closed the loop in terms of things that they can actually do. 1:37:37 Bardzo się staraliśmy, ale wciąż jest sporo miejsc, w których model dociera do granicy możliwości wcześniej, niż powinien. Like we've tried really hard, but there's still a bunch of places where the model maybe reaches the end of what is possible earlier than uh than it should. 1:37:47 Widziałem niedawno... to może zupełnie na marginesie. I saw the other day this is a total aside maybe. 1:37:50 Widziałem niedawno, że ktoś, chyba po raz pierwszy, podłączył model do Blendera. I saw the other day that someone went for the I think first time and hooked a model up to Blender which is like this yeah. 1:37:58 I model całkowicie przejął kontrolę nad Blenderem i zbudował w zasadzie wirtualny świat, a przy tym widział zrzuty ekranu, więc... And and the model like just totally took control of Blender and started and like built essentially like a virtual world and it was able to see screenshots and it kind of like so 1:38:07 zrzuty ekranu z Blendera, prawda? it was screenshots of Blender right? 1:38:08 Więc widzi, co buduje, w trakcie budowania. So it can see what it's building while it's building it. 1:38:10 I stąd pytanie: nad czym jeszcze nie daliśmy modelowi kontroli, a z czym radziłby sobie naprawdę dobrze? And it's kind of this idea of like what other things have we not given the model control of that it could do really well with? 1:38:18 – Tak. Mnie szczególnie ekscytuje oddanie modelom pełniejszej kontroli, od początku do końca, nad testami, których używamy. Myślę, że już dziś jest tak, że – Yeah. One thing I'm actually really excited about is giving more thorough kind of end-to-end control of the kind of testing that we use and I think it's already the case that like 1:38:31 proste podstawowe testy, które piszemy: drobne testy jednostkowe, integracyjne, testy expect, których dużo używamy wewnętrznie, czyli the simple entry tests that we do where you just like write you know some kind of like small-scale unit test, integration test, the expect tests that we use a lot internally which are 1:38:41 takie testy w stylu zrzutu ekranu, które przechwytują wyjście these kind of like screenshot style tests that like capture output from – Mhm. 1:38:45 z uruchomienia programu, to wszystko modele już potrafią i to świetnie. – the run of things like they can already do all of that and that's great. 1:38:48 Ale jest mnóstwo innych testów na większą skalę, które pod wieloma względami musimy robić sami, bo modele nie są do tego dobrze przygotowane. But there's lots of other larger-scale testing that I think in many ways like we end up having to do because like we the models aren't well set up to do it. 1:38:59 I jest ten problem: nie chcesz stać się asystentem asystenta. Uh and there's this problem where like you don't want to become the assistant to the assistant. 1:39:04 Chcesz, żeby więcej pracy trafiało w ręce asystenta. You want like to be able to get more of the work in the assistant's hands. 1:39:07 Więc fajnie byłoby mieć dobre ścieżki, w których ta sama konfiguracja, którą wdrażasz na produkcję, służy też do wdrażania testowych wersji aplikacji, z którymi modele So I feel like having nice stories where the same setup you have for like deploying your stuff in production can also be used for deploying test versions of your application that the models 1:39:17 mogą potem bezpośrednio pracować i je testować. can then like directly interact with and test out. 1:39:20 Do tego inne rzeczy, jak testy oparte na własnościach czy fuzzing, które chcesz uruchamiać na dłużej i które nie są częścią zwykłego środowiska deweloperskiego, Um I think other kinds of like you know property-based testing and fuzzing tools that you want to run like for longer periods of time that aren't part of like the ordinary development environment 1:39:30 ale w pewnym momencie chcesz je odpalić, a mogą trochę potrwać. but at some point you want to like spin up and run those and they could take a while. 1:39:34 Uruchamiasz Antithesis i wyniki mogą wrócić po 12 godzinach. You spin up antithesis it might come back in 12 hours with your results. 1:39:38 Więc takie długotrwałe wdrożenia na większą skalę i testowanie całych systemów. So these kind of more like long-term larger-scale deployments and testing system of systems. 1:39:45 Myślę, że oddanie tego w znacznie większym stopniu w ręce modelu może poszerzyć zakres mozolnej pracy, którą model zautomatyzuje za ludzi. Like, I think having that much more in the hands of the model, I think can like extend the amount of drudgery that the model can like automate away for people. 1:39:53 – Można też wziąć pętlę rozwoju oprogramowania i rozszerzyć ją w obie strony, prawda? – You can also take the development loop and extend it kind of in both directions, right? 1:39:57 Zanim napiszesz kod, jest sporo planowania. Before you're writing code, there's a bunch of planning that you do. 1:39:59 Po napisaniu kodu jest obserwowalność i alerty, gdy coś idzie nie tak. After you're writing code, there's a bunch of like observability and like alerting when things go wrong. 1:40:04 Czy model mógłby wiedzieć, że po wydaniu czegoś dana właściwość w metrykach powinna się zmienić, i tego pilnować? Could a model um know that a particular property is expected to change in the metrics post something being released and then watch for it? 1:40:12 Wydaje się to dla niego zupełnie rozsądne zadanie. Seems like a totally reasonable thing for it to do. 1:40:14 Coraz więcej osób używa modeli językowych do wsparcia przy obsłudze incydentów. Um more and more people are using LLMs to um help with incident response. 1:40:19 Czy LLM, który zna cały kod, zna status incydentu i może zajrzeć do wszystkich systemów... Should an LLM that like knows about all of the code, plus knows about the status of the incident, and has the ability to like look at all the systems? 1:40:26 czy nie powinniśmy korzystać z tego częściej? Um like, should we be using those more? 1:40:29 Mam wrażenie, że większość czasu spędzamy na środkowej części, a w obu kierunkach jest naprawdę dużo ciekawego. I feel like we're kind of like spend most of our time on the middle part, but there's a really a lot interesting in both directions. 1:40:35 Czy LLM-y powinny pomagać nam planować, jakie zmiany w ogóle wprowadzać? Should LLMs be helping us plan um what kinds of changes we should be making? 1:40:40 Można uznać, że to obszar, w którym nie powinny działać, ale z drugiej strony, nie wiem, LLM-y proponujące pomysły na badania brzmią całkiem ciekawie. This may be like kind of think that's an area that they shouldn't be working in, but in in a sense like I don't know, LLMs proposing ideas for research sounds pretty interesting. 1:40:50 – Tak, i warto powiedzieć, że są rzeczy, w które włożyliśmy wysiłek, budując konkretne narzędzia, i są rzeczy, które ludzie naprawdę robią, – Yeah, and I do think it's worth saying there's like the things where we've spent effort building concrete tools for, and there's the stuff people are actually doing in, 1:40:58 no wiesz, w praktyce, w całej firmie. you know, in real life across the firm. 1:41:00 I mam wrażenie, że... co oni robią? And I feel like, what are they doing? 1:41:01 Robią wszystko, prawda? They're doing everything, right? 1:41:03 Każdy eksperyment, jaki można sobie wyobrazić, ktoś już w jakiejś wersji prowadzi. There's any kind of experiment you can imagine, someone is running some version of it. 1:41:06 A my mamy ograniczony czas na budowanie narzędzi i skupiamy się na tym, co naszym zdaniem daje największą bezpośrednią wartość. Um and, you know, we have bounded time to like focus on building tools, and we focus on what we think of as like the highest immediate like value things that we can build. 1:41:16 Ale myślę, że wiele z tych rozszerzeń jest badanych w wielu różnych miejscach. Um but I do think a lot of these extensions are being explored in lots of different places. 1:41:21 To ekscytujące, a przy tym daje nam mnóstwo sposobów, by uczyć się, jakie są kolejne ważne rzeczy do zrobienia. Uh and so it's, you know, I think that's exciting, and also gives us like lots of ways of learning what are the next important things that we need to do? 1:41:28 Bo żaden pojedynczy zespół nie wymyśli wszystkiego, co trzeba zrobić z naszymi narzędziami. Cuz like, there's no one team that's going to figure out all of the things that we need to do with our with our tooling. 1:41:34 A ta intensywna eksperymentacja, która dzieje się wokół, musi być częścią tego, jak to ustalamy. And and the kind kind robust kind of experimentation that's happening out there has got to be a part of how how we figure it out. 1:41:38 Rozmawialiśmy trochę o tym, jak ta praca stała się pod pewnymi względami trudniejsza, w niektórych elementach emocjonalnie mniej satysfakcjonująca. So, we talked some about ways in which maybe the the work is made like harder in some ways, like, you know, emotionally less satisfying in some components. 1:41:50 Ciekawi mnie, co myślisz o drugiej stronie medalu. I'm curious about like what you think about the flip side of that. 1:41:53 W jaki sposób obecność tych wszystkich agentów sprawia, że praca jest bardziej satysfakcjonująca, przyjemniejsza i lepsza w innych wymiarach? Like, what are ways in which having these agents running around makes the work more satisfying and more fun and and, you know, better in other dimensions? 1:42:01 – Tak. Myślę, że od dawna nosiłem w głowie wiele pomysłów, które nie doczekały się realizacji. – Yeah, I think there are a lot of ideas that I would have in my head for a long time, but wouldn't actually see uh realized. 1:42:09 Jeden z nich, o którym ciągle opowiadam ludziom, to tak zwany tryb loosey-goosey, czyli tryb „na luzie”. Um one idea I had for a long time is this thing I keep talking about with people called Lucy Goosey mode. 1:42:15 Idea jest taka: jesteś w edytorze i możesz wejść w ten tryb, tryb loosey-goosey. Um so, the the idea here is that um you're in an editor, you can enter this mode, Lucy Goosey mode. 1:42:23 W zasadzie przechodzisz do trybu wstawiania (insert) i zamiast prawdziwego kodu piszesz pseudokod. – – You um you essentially go into you go into insert mode and you type pseudo code instead of real code. 1:42:30 A gdy wychodzisz z trybu wstawiania, bierze twój pseudokod i zamienia go w prawdziwy kod. And then when you exit insert mode, it takes your pseudo code and it turns it into real code. 1:42:34 Tylko ten mały fragment; może edytować właściwie tylko obszar, który wpisałeś, a nie resztę bufora. Um just like that little area, and it can only edit really the area that you typed in and not the rest of the the buffer. 1:42:40 Zbudowałem prototyp dawno temu, gdy LLM-y były jeszcze w powijakach, ale nie działał zbyt dobrze. And um you know, I built a prototype of this back when LLMs were kind of nascent, but like it wasn't very good. 1:42:49 Niedawno znów o tym pomyślałem i uznałem, że bardzo by mi się to przydało. And recently, I thought of it again, and I thought this would be really helpful to me. 1:42:53 Zleciłem to LLM-owi i 30 minut później miałem rozszerzenie działające dokładnie tak, jak chciałem. I had an LLM do it and like 30 minutes later I had an extension that worked exactly the way that I wanted. 1:42:58 Więc ta możliwość szybkiego prototypowania i wypuszczania narzędzi dla samego siebie wydaje się dużą, przełomową zmianą, która już nastąpiła. Um so, this idea this ability to like rapidly prototype and get out tools for yourselves seems like a a pretty big transformative thing that has happened. 1:43:07 To wydaje się świetne. So, that seems great. 1:43:09 Chyba kolejna rzecz to... To właściwie mój ulubiony przykład. I guess another is That's really the That's my favorite one. 1:43:12 Tak, chyba kolejna rzecz to nieprototypowa wersja tego samego: możesz szybciej przechodzić przez te bardziej rutynowe Yeah, I think that's Um Yeah, I guess another thing is like, you know, the the non-prototype version of that, too, that like you can move more quickly through like the uh more rote 1:43:26 części pracy, by skupić się na ciekawych kawałkach. parts of your work so that you can focus on the interesting bits. 1:43:28 – Tak. Inna rzecz, której ludzie się boją, ale w której też widzę realny plus, to problem slopu od AI, czyli byle jakiego kodu generowanego przez AI: – Yep. I think another thing that that people worry about, but that I think also there's real upside to, is people worry about like the AI slop problem of like, 21 · 1:43:33 Slop i umowa społeczna przeglądu kodu1:43:39 mówiliśmy o tym, że przegląd kodu, code review, jest pod pewnymi względami trudniejszy, you know, we talked about how code reviews in some ways harder – Yeah. 1:43:41 czasem naprawdę trudniejszy intelektualnie, a czasem po prostu emocjonalnie. – and sometimes like really intellectually harder, sometimes just like emotionally harder. 1:43:46 I jeden z możliwych skutków jest taki, że powstanie dużo przeciętnego kodu, który nie uwzględnia w pełni tego, co ważne, Um and one of the results you could imagine is just like there's going to be a lot of like mediocre code that isn't like fully informed on what's important you know, 1:43:54 pisanego przez LLM-y, które robią duże skoki jakości przy nowych wersjach, ale nie uczą się przez długi czas twojej dziedziny problemów, twoich standardów i written by LLMs that like get better in big jumps when new versions come out, but don't get better by learning over long periods of time about your problem space and your standards and 1:44:05 tego, co trzeba robić, by rozwiązywać problemy w tej konkretnej domenie, w której działasz. what you need to do to solve problems in this particular domain that you're in. 1:44:08 I z czasem będziemy mieć coraz gorsze, bardziej zagmatwane i trudniejsze w utrzymaniu bazy kodu. And and then we're just going to have like over time like worse and messier and harder to deal with code bases. 1:44:14 Ale uważam też, że LLM-y są narzędziem, które ułatwia zmiany, i można ich używać do podnoszenia jakości baz kodu, i But but I do think like the LLMs are also a tool that makes change easier and you can use them as a way of like improving the quality of code bases and of 1:44:22 ten refaktor, który wydawał się nie wart zachodu i za trudny, może teraz da się zrobić, bo stał się po prostu znacznie łatwiejszy. like that refactor that seemed like not worth it and too hard, like well, maybe now you can do it because it's just like much easier to achieve. 1:44:29 Nawet w kontekście przeglądu kodu, gdy ktoś daje ci coś do przeczytania, a ty myślisz: „Chciałbym to mocno poprawić przed wydaniem, And you know, even in the context of code review where like someone give you like something to read and you're like, "Ah, I would like to make this much better before releasing, 1:44:37 ale trzeba to też domknąć; może po prostu upewnię się, że jest rozsądne, i wypuszczę, choć nie jest w idealnym kształcie”. but also we should get it done and maybe I should just like make sure it's reasonable and get it out even though it's not in an ideal shape." 1:44:42 Jeśli jednak znacznie łatwiej jest wziąć te zmiany i ulepszenia i wprowadzić je w życie, to w efekcie dostajesz kod wyższej jakości. But if it's much easier to like take those changes and improvements and like turn them into a reality, then you can end up with like higher quality code that comes out of it. 1:44:52 Więc uważam, że wiele z tego, co wyjdzie z tej technologii, zależy od tego, co z nią zrobimy. So I do think like a lot of a lot of what comes out of all this technology depends on what we make out of it. 1:44:57 – Tak, i od tego, jak na nią zareagujesz. – Yeah, and and how you respond to it. 1:44:59 Jeśli boisz się slopu, jednym ze sposobów ochrony jest dalsze trzymanie kodu na stosunkowo wysokim poziomie. – I mean like when if you're worried about slop, one way you can kind of protect is like holding your code still to relatively high standard. 1:45:06 Możesz podjąć taką decyzję. You can you can make that choice. 1:45:08 I może nie chcesz jej podejmować konsekwentnie wszędzie. And maybe you don't want to make that choice everywhere consistently. 1:45:10 Może w pewnych miejscach powiesz: „Okej, tutaj jesteśmy dość tolerancyjni wobec slopu”. Maybe some cases you want to say, "Okay, we're like pretty tolerable of slop here." 1:45:14 A w tym innym miejscu już nie. And in this other place we we don't want to be. 1:45:16 Jest jeszcze inna rzecz związana ze slopem: czy w ogóle uznasz funkcję za wartą zbudowania. There's like another thing related to slop, which is whether or not you deem a feature worth building. 1:45:23 To kolejny ciekawy temat, bo myślę, że granica przesunęła się w stronę „tak, warto to budować”, ale może w sposób, który wywołuje u ludzi dyskomfort. This is like another interesting one where I think the line has like moved more toward like yes, it is worth building, but maybe in a way that's making people feel uncomfortable. 1:45:33 Muszą sobie zadać pytanie: jeśli wcześniej nie zamierzałeś tego budować i nie chciałeś poświęcać na to czasu, Where they kind of like um have to raise this question of like if you weren't going to build it before and you weren't going to put your time toward it, 1:45:40 a teraz masz LLM, który potrafi to zrobić, to czy faktycznie powinieneś? and now you have an LLM that can like do this thing, should you actually do it? 1:45:44 Czy powinieneś kazać LLM-owi wykonać pracę, którą zamierzałeś pominąć? Should you have the LLM go do this uh piece of work that you were uh going to skip. 1:45:49 To bywa trudne też dla ludzi budujących narzędzia, bo, nie wiem, może twój użytkownik chce czegoś, co według ciebie nie powinno istnieć, Mhm. This is also uh hard for people making tools sometimes cuz it's like the um I don't know, maybe your user wants a thing that you think shouldn't exist, 1:45:58 ale teraz nie przychodzi do ciebie z prośbą, przychodzi z kodem. but now they're not coming to you with like a request, they're coming to you with with code. 1:46:02 I społecznie jest trochę trudniej powiedzieć „nie, nie chcemy tego”, gdy to, co pokazuje, jest w zasadzie gotowym produktem. And it feels like a little bit harder socially to be like no, we don't want it when the thing they're presenting is kind of a finished product. 1:46:09 – Zgadza się. – That's right. 1:46:10 Samo istnienie agentów AI w pewnym sensie złamało umowę społeczną wokół przeglądu kodu. Kiedyś, gdy ktoś przynosił ci Like there's there's a way in which the whole like existence of AI agents has kind of broken the social contract around code review, where it used to be when someone would hand you 1:46:20 funkcję, miało więcej sensu pomóc mu doprowadzić ją do końca, bo włożył w to dużo pracy, a feature, like you were, you know, it made more sense for you to like help get that thing over the line because like they put in a lot of work, 1:46:29 dużo własnego potu, żeby to stworzyć. a lot of sweat equity that went into creating that. 1:46:31 A teraz wystarczy prompt i marzenie, i za darmo tworzysz coś, co wygląda wiarygodnie. And now like all you need is like a prompt and a dream and like you can like for free create a plausible-looking prompt. 1:46:36 Ale weryfikacja, czy to ma sens, to wciąż ciężka praca, a nie chcesz dodawać do systemu mnóstwa rzeczy, które jako całość uczynią go zagmatwanym i skomplikowanym. But it's still hard work to verify that it makes sense and like you don't want to like add lots of things to a system that will make it overall like messy and complicated. 1:46:46 Nawet jeśli kod jest dobry, może sprawić, że budowany system stanie się koncepcyjnie skomplikowany dla użytkownika końcowego. Even if the code is good, it may be that it makes the system that you're building conceptually complicated for the end user. 1:46:51 Prawda? Jeśli każdy dostanie każde pokrętło, jakiego chce, pokręteł będzie po prostu za dużo. Right? If everyone gets every knob that they want, like you just get too many knobs. 1:46:56 – Tak. – Więc ustalenie, jaki sprzeciw jest właściwy... kształt tego problemu jest po prostu inny. – Yep. – And so yeah, figuring out like what's the appropriate kind of pushback, like and it's just like the shape of it is different. 1:47:05 Z takimi pytaniami zawsze trzeba było sobie radzić, kwestie priorytetów zawsze były trudne, ale teraz pojawiają się w innej postaci i myślę, że to coś, do czego Like you've always had to deal with these kind of questions, prioritization questions have always been hard, but they now just present themselves in different ways and I think it's just something that we 1:47:13 musimy się po prostu nauczyć dostosować, w zasadzie na poziomie kultury. have to like learn to adapt to basically at a cultural level. 1:47:16 – Tak, zgadzam się. – Yeah, I think that's right. 1:47:17 Pomocne ujęcie, które niedawno usłyszałem: pomyśl po prostu, że przychodzą do ciebie z kodem. One framing I found helpful that I've heard recently is just think of like they are coming to you with code. 1:47:24 Pewnie włożyli w to trochę czasu. They probably put some time into it. 1:47:25 Traktuj to jak prototyp, a potem i tak porozmawiaj o tym, czy ta rzecz jest uzasadniona. Think of it as a prototype and then just still have the discussion about whether or not the thing is warranted. 1:47:30 Kulturowo, w całej organizacji inżynierskiej, musimy czuć się swobodniej z tym, że: tak, Yeah. It's like as culturally, you know, at a, you know, for the whole engineering organization, we need to be like more comfortable kind of understanding yes, 1:47:39 to jest kod, warto na niego spojrzeć, bo wtedy mamy przed sobą to, o czym rozmawiamy, ale porozmawiajmy raczej o wartości samej zmiany. that is code is useful to look at so that we have the thing that we're talking about together, but like let's talk about the merit of the change instead. 1:47:45 – Zgadza się. – That's right. 1:47:45 A prototypy potrafią być niesamowite, prawda? And the prototypes can be amazing, right? 1:47:47 Ktoś ma pomysł, co zrobić, i są prototypy, które ci wręcza, ale najlepsze są te wszystkie prototypy, które wyrzucił. It can be like someone has an idea of what to do and there's like the prototypes they hand you, but the amazing thing is all the prototypes they threw away. 1:47:54 Spróbował czegoś i stwierdził: „Tak, to jest do niczego”. Like they tried a thing and they're like, "Yeah, this sucks." 1:47:56 I się tego pozbył. And they get rid of it. 1:47:57 Jest realna praca w doszlifowaniu pomysłu i jego przedstawieniu, a potem może implementacja nie jest dobra i nie chcesz jej użyć, It's like, you know, there's real work in refining the idea and presenting it and then, you know, and then maybe the implementation isn't good and you don't want to use that, 1:48:05 ale ostatecznie uważam, że to potężny nowy sposób wspólnej pracy i wymiany pomysłów, i to jest naprawdę ekscytujące. but I do think at the end of the day it's a powerful new way of people to work together and exchange ideas and and in the end I think that's really exciting. 1:48:13 – Zgadzam się. – No dobrze. – Agreed. – All right. 1:48:14 To chyba dobry moment, żeby skończyć. Well, maybe that's a good place to stop. 1:48:16 Dziękuję ci bardzo za rozmowę. Thanks so much for joining me. 1:48:17 – Dziękuję za zaproszenie. – Thank you for having me. 1:48:19 – Pełny transkrypt odcinka wraz z notatkami i linkami znajdziecie na signalsandthreads.com. – You'll find a complete transcript of the episode along with show notes and links at signalsandthreads.com.