 It is the last day. It is day four. It is the second talk this morning in the blue saloon. Well, I just realized a circle is kind of closing. Manuel is once wrote Nima a couple of years ago about, hey, let's get together. Let's do some hacking, programming. How we can have some goulash? It was 22, 25 something years ago. He is an old, we call them entropies. This is the German word Opa, which means granddad. He is an entropie, an old entropie member from Karlsruhe. It is a circle closes. I am amazed. He lives in the States right now. He is working, living and is here for the GPN. He is talking about open source software development and finding new ways of doing this, of thinking and kind of culture. I am very, very curious how it goes. Manuel, applause for Manuel and take us away. Cool, thank you. The talk, the description, I have been thinking a lot about what I want to talk in this presentation. It is kind of confusing because I want to talk about everything. I have kind of boiled it down to some pretty tight slides, but I have written long ranty handout that will be amending. The future in this one, the handouts have tons of blood posts I have written about this subject. For me, it is all interconnected. If there is any area that I will try to go through the talk fairly quickly to get to a demo hands on part that maybe is the most suited for a hacker event. I might go a little bit fast. If I am going too fast, please tell me. Am I speaking slowly enough? All right. All the illustrations I asked a friend to do, all these beautiful illustrations for the talk. You can find them on master. Did you all get the URL for the handouts? It is pretty wild, but it has a lot of links. All right. Here are a couple of links where you can find me. You can find me on Hackaderm. You can find me, my blog is the scapegoat dev blog. On GitHub, I am Vazen, and I am Gogo Golems as well. I like programming and machines. I like all programming languages. Well, I do not understand Ruby, really. Or maybe Ruby on Rails has put me off. I really like common list. I have not used it professionally or even for hobby in ten years, but it influences the way I think. I really like systems. Everything is like things connected and you have to think in a bigger picture, in a bigger picture, in a bigger picture, which is why reducing things down to a single talk is pretty hard. I have really been enjoying large language models. I like making music and drawing, and I like thinking in shapes and forms. Most importantly, especially in my professional work, I really like working with end users, so figuring out how a tool can help end users do their job. I work in a small family business, so I end up talking to a lot of people and building the software exactly for them. A lot of this is influenced by this kind of thinking. What is this talk about? Which is... I don't know. The first thing is about... I call it writing software with a vision. I'm a little bit... What's the word? Disappointed by the software out there? It's great compared to 20 years ago, the amount of open source software and the quality of it, out there is pretty amazing, the communities are great, but I'm missing... It's all bland and the same, so I'll present how, for me, I also had a moment where I was like, it's my software, I can do whatever I want with it, and then started thinking more about this. I have a second part, which is a bunch of tools and techniques that I've developed over the years that I think more about software and write better software by not writing software or writing a lot of software. And then, the last part is going to be how to regain personal freedom using large language models as a developer, which is... I hate the public discourse around this stuff right now, because I think it's missing what's actually, at least for developers, it happens. If that happens again, it's Linux, I've got a backup macOS device just for safety. I'm really interested in showing you that part because I think it's something that needs to be shown. It's not something you can really write about that easily, and reading chat GPT transcripts is just, like, horrible. But I'll start with software with a vision and I'll start my timer as well. So, the thing that I think happened, and this might be a little bit US-influenced, I'm not sure what the landscape is in Germany because I know there's just a lot more less commercial thinking in Germany, a lot of the open-source development that I encounter is usually backed by companies. Projects are either run by the company pretty much or they have such a strong influence that everything is tainted by it. Another great example, my language of choice being Go right now is the Go tool chain. The Go tools are all Google, and Google doesn't really care about not Google. You can see that if you look at the pages of some pretty big open-source things right now, it's like, it looks like this, it looks like this. They're all the same kind of concept, right? It's like download a package and this is this tool that releases and here's the GitHub. Which is great, right? This is how you bring a lot of people together, kind of like Java brings a lot of people together and the enterprise. But it also kind of pushes you into this way of thinking that this is how you should do open-source software, right? You have to have a pull request workflow. People are going to be like senior engineers or staff engineers and they're going to have an open-source evangelist in the company that makes talks and conferences that are sponsored by companies. Everybody uses kind of the same languages and frameworks and people argue if React is better than View or whatever, which kind of doesn't really matter, especially when you can write your own framework. People argue about best practices, like do you want to have trunk-based development or do you want to have that? All the practices are designed to work well in a commercial environment. It doesn't mean that that's how I should be writing open-source. If I write open-source with my three buddies, like do we want to have trunk? Do we just want to have zip files on the server? Who cares? All the blog posts kind of are the same kind of thing. Either it's like a personal project that has nothing to do with work, except that that's what you do outside of work. Or you have like, oh, this is what my company is doing and I'm kind of like the evangelist. Everybody has kind of the same Twitter bios. That might be a little bit more of the thing in my professional circle in the US. We all attend the same conferences. Again, kind of different in the US because there's not much in conferences like Defconn or even Strangeloop are strongly corporate-influenced. So I think there's a much more insidious aspect to that is that it makes us forget what software can be. We think that a software has to be a binary that you can deploy to the cloud to have a config file. It reduces everything to something that can be used in a professional workflow instead of saying, well, software could be like a whole OS with a development environment that's what we build. Or I don't know, it could be a video game that I use to actually build applications in the real world by moving things in the 3D world. Like all of these things don't work in a corporate environment but they're very viable for smaller groups. And it took me a while to realize that when I was writing open source or getting back to writing open source I was kind of thinking this mindset. I'm actually going through this pretty fast, which is cool. Is this too fast? All right, well then I'll branch out a little bit because this is a good moment to show you how I started getting away from this kind of thinking. So when I left my last job I said, oh, I'm going to run a blog and I'm going to create some kind of public persona to get more jobs. And I decided to write a blog post on this DevTO thing which is kind of cool because it's really geared towards beginners and a diverse audience. And I wrote this article here which was kind of collecting all my experience building command line tools over the years at work. And it has the clickbaity title, which works well. And then it had a bunch of things where I was like, well, to make good command line tools there's a bunch of things that really make a difference which is like Python tools don't really work because you have to like set up a VM and no one wants to do that while if you just give people a binary then things are great. If you have to look up documentation somewhere else like why not make it part of the tool where you can just like query the tool to get all the documentation you need. Having examples, like all of these things it's a blog post that has a lot of thinking behind it because it's like 20 years of building these things. But I was writing it clearly towards like an audience that is interested in getting jobs or building better tools at their work like these kinds of thinking or even the concept of like command line tools is already kind of tainted. So I wrote this blog post that was in May took a sabbatical over the summer where I went to the recur center and thought some more about this mostly about like the technical side of things and then in October I just like started building it I started building a library that was called Glazed which kind of builds all these things like it has a help system and it has like examples in the help and it looks pretty has like structured data output and has like all these features and all these flags and it's a great library you can just drop it into your project and use it it has like a read me and it has like pull requests and issues and like all this stuff and you know I left it there it was like I did what I wanted to do I have like here it starts to get messy but I'll get to that later so I built this library and it was like you know it was very much in the in the thing that I was lamenting about it's like very like it has releases and it has like binaries you can download like all this stuff and then I started building tools using it and I started realizing like actually the power is in the tools you build with it and the reason all these flags and command line tools are important is because they are for the user and the user in this case being like the developer the person using these things so I started thinking more about these aspects and then realized like I had a bunch of tools together they started getting like weirder and weirder and flow in here remembers all the weird stuff we used to do and then I realized you know I had this where can you do it like I've built all these like little tools because Go is really like a productive language you can just like bang stuff out and so I had to do a lot of accounting at work and I built this tool called Skeleton which allows you to just like query things and get them as like templated data and had a funny logo for it which was starting to be like you know it's starting to find my sense of humor back and then I realized I can actually literally do what I want with this software and I created this organization called the Google Golems that you know built software for the better humanity so I started writing documentation upper caps because I like you know I like caps lock and then I started making like little logo little slogans for these for these Google Golems I started writing still have to finish that like all the documentation there was some kind of like obscure manual that was found but the tools themselves are like very it's stuff I need for work it's like doing accounting and creating Excel tables but I realized like there's no reason why I can't just like invent a whole world around it of why these these little creatures that go Google Golems like write code and build applications and that kind of not only it became really fun and it can use like all these weird AI tools to build a little world around it but actually to be right better software Gage just gave me a lot of ideas of what I can build how I build it how they all integrate together like because there's a big concept behind it so the talk was originally just going to be about like you know how these things work I don't think that's actually that interesting but if you like Go if you like command line tools I'm pretty proud of at least the concepts I also like cryptic because I realized I don't want anybody to contribute at least for now they're great to use though they're really useful especially exkeleton and excuse me in Gepetto there are ways to build applications by just sharing YAML files so it's really easy to turn little YAML files into whole programs and for example just to show you an example Gepetto is my GPT wrapper and then Gepetto has a command line tool called Pinocchio that you can use to talk to GPT because GPT you know makes stuff up and for example to generate these little slogans I made an app that's called chat 2 which looks like this so it describes a bunch of command line flags a bunch of settings for OpenAI it has a name it has a flag that's called body Gepetto's not that interesting as a framework and then it has the prompt at the beginning it has the prompt in here which is just a template right if you've done some prompt engineering this stuff is just like weird as hell I get more into prompt engineering and how this like all fits together this is a very early prompt that I did so it's probably not that great but what you can do when you call Pinocchio right it has like all this rich help system here that tells you it has like tutorials and applications and examples and if I now call Pinocchio mine go go I get the list of all basically these YAML files in here so it's reloaded you know we share it with my colleague so we have the same applications always and then if you call this thing with someone tell me a sentence that will turn into little slogans I'll just make stuff up make stuff up I don't know if uppercase prompts are that great actually this all kind of matters so you know I just put this in and it's like my little command line tool and then so you can build little things like that so this is kind of fun but I actually have a bunch of really useful prompts for work where I say like you know given this description just generate like SEO titles because no one wants to do SEO titles I have a bunch of stuff which yeah I'll get more into this like you can build some really useful stuff like ZSH YAML it's basically you can pipe your bash history into it and like say or like not your bash history but the content of your terminal window and it will just like say what you should type in so you can just like type I don't know mirror the display and then it will just like complete it which is it's pretty cool actually does this work cool thing about language model program is you can just as you talk just type these things in I don't remember how it works so I'm going to use the help system and it just has request so I guess my ZSH request is that a argument yeah mirror the display using X renderer and then it will just like give me a list of possible completions it's supposed to like take the whole thing so I will always like add a couple of boring like if it has no context it will just like add some boring commands but you know it's pretty useful you can pipe it through through a little menu thing I don't have this set up on Linux but anyway so going back you know this all kind of derived from this like I wrote a blog post that's kind of boring has a clickbait title to suddenly building whole world of little tools and then you know starting like building little yamels for everything and realizing because I picture this is like all these like little golem workers that built unfinished apps I build a lot of unfinished apps which which has really gotten pretty excuse me is one for elastic search because elastic search querying drives me absolutely bonkers oak is the one I'm most interested in which actually wraps tree sitter the grammar generator and you can formulate queries as YAML files that say for example like give me all the class names in my repo and then it just like outputs them which is which is great for like prompt engineering for example so going back to the talk this was me breaking away from this stuff right like it's it's I can write the software that I want I can write it the way I want and if it's the way I want to think about software then that's how I should do it because it will lead to better software for me there's a bunch of other insidious things that company priorities do which is because they're so involved in developing what creates our infrastructure ultimately the Linux kernel like deployment architectures, Kubernetes all of these things companies are interested in putting in the features that they need to run their business which is usually automating the workflow for a lot of contributors instead of actually building software for users so this gives us you know like a lot of boilerplate because every company wants to have every option in the software to do things there's like complex architectures there's like some pretty arcane and like vendor specific deployment practices where it's like oh here's the AWS stack and like this is built for Lambda thing and like all these kinds of things React as much as I love React kind of has the same things as well which is like there's so many commercial companies using it that all tooling around it is for example things that I really enjoy like storybook and chromatic are really just like built for the sake of automating a workflow using freelancers and stuff like that poor infuriating documentation that's really true for the go tooling drives me absolutely nuts but that's because Google doesn't care like they don't want to spend a developer building like really nice documentation if they already know how it works and then all of this leads basically you as a developer even if you build an open source you have to like learn and remember and then discard all this like knowledge that no one cares about like I don't really care about OAuth you know all the details of OAuth and how to click a thing in the Google console to get my app running I don't care I don't want to remember that so this leads us to like gluing all these APIs together that are giving to us by companies is pretty much mindless work it's really exacting work like it's really tiring to do that you can't just like you know just like you can just like slap it on the table if you make a mistake all your app crashes and the the effect of that is that it leads to burnout right like if you have to do boilerplate all time under pressure and we don't get anything for it it's um that's a the show way for burnout and the bigger trap is like it hinders you to think about the software that you write like if you're deep in the details of like the Terraform documentation for some kind of US resource you're not thinking about your user you're like why the heck do I have to like deploy type 4 gate like all this all this noise and that's the trap that I fell into for a lot of time where it's like so focused on like integrating things to make them work really smoothly that I didn't realize that you know if you think about the user first there's a lot of shortcuts for example you can do or there's like a whole different world of software you can build so it doesn't have to be this way and the way I started doing this and this is something I developed over the last year but also kind of reconnect with my past at Entropia for example or inside the Keras computer club it's like thinking about the big pictures like why do I write software and for whom and if I consider myself as kind of an artist writing code like what's my legacy gonna be is it gonna be like an AWS glue shell script like you look at this in 20 years and you're like cool or is it gonna be like you know the go go golems organization even if the tools don't mean anything anymore at least there's something there that tells something about what I do and what I cared about so I think those questions are like worth asking yourself like there's no real there's no real answer it's gonna change all the time but I think just asking these helps you well be more content with life but also write better software I'm gonna skip the centering the user part which is about like I haven't put the thought that I think it needs but basically talk to your users and check your programmer brain in like it's easy to listen to users and like picture the system that's gonna implement the stuff that the user's talking about but that's actually not what's important what's important is actually making it so that the user has control and fun with the work that they do and they're just as much caught in the trap of being shaped by the technology they use than you are building a technology they use so I have a lot of things to say about that but I think there's a bunch of things in the handout there's been quite a few blog posts about it but really I think the best thing you can do as a developer is just like try to listen realize that often doing software halfway is maybe the best thing you can do like there's a lot of things where manual work to complete the technical workflow is actually what brings joy and control to users because there's especially in like logistics or like retail there's gonna be so much mess at the edges that if I encode this as a form suddenly all this fuzziness disappears and people just like bang their head and then you're just gonna go back to putting post-its on the display and make errors which is frustrating as well so you know technologies in a vacuum is neutral but as soon as you build technology for people you have to think about why you're doing it are you constraining their world and demanding it alright here's how much time do I have left because I really want to get to the large language models alright cool so here's this is just like tools that I've developed over the last 20 years that now have kind of for me come together to really allow me to quickly get to interesting spaces when thinking especially about software there's a bunch more details in here I've written about some of it on the blog as well if you if you want to get deeper into it and those are very personal right like they kind of work for me this is not I'm not telling you like you should do this it's just like showing how people work and the stuff that they don't show the world for me one of the very interesting things like it's easy to look at the results and say this is amazing I think it's even more interesting to see how people build these amazing things so I've been keeping a lot of sketchbooks this is from my last sketchbook and it's like a big crazy chaotic mess and I don't know how I can zoom in to this oh my god lindex help me anyway I've learned drawing a while ago and I've put a lot of effort into bettering my handwriting and just like being able to do clean diagrams because it like suddenly turns your notes into something that people want to use that you want to look at back instead of like scribbling it on you know a little piece of paper and then this allows me to what I do is I just like layer my notes so this page has it started with the drawing and then I started like looking for space to put notes about software that was writing and then I started like doodling a zoom call on the left and then I added like arrows on top of what I had written before and then I went back in with watercolors and put titles on it and like it just builds over time but all these ideas that I put in kind of germinate so I don't know it's something I really like because it allows me to you know even the drawing kind of looks like maybe something that's not that relevant to software building but actually it's the logo of my tool called Cleopatra which is like a unit testing tool for command line tools like the most boring stuff but now to me it's connected to this image so you know doing like golden testing of command line tools which is capturing the output and diffing it is now for me part of a whole ecosystem linked with like tons of ideas so I got a lot of value out of that I have a couple of tricks I use very small sketchbooks you know 40 pages or 60 or so because then I can finish them quickly and it's like oh yeah made a hundred sketchbooks but they're all very small it helps me like I like drawing software like I think in shapes and forms I think in systems and so a lot of my software writing is actually just drawing things out and then one day I'll just like sit down and write it and then it kind of works which doesn't work in a corporate environment because everybody thinks you're just like a slacker doing menial stuff because it always works took me a while to realize that can't do that pretend you're doing a lot of very hard stuff one thing is like I'm not precious about my sketchbooks like if I spill water on it or like if I go in with a marker or like if I rip off a page I don't care that's not the important part there's a downside to sketchbooks at least for me is like it's really hard to search in them so whatever I write in them I'll usually not reuse in the future if I don't put it into digital and putting it into digital is a lot of work like I can't just like snap a picture and put it in I actually have to go over and like figure out like what the heck did you even write here or like what is this and then transform it into notes that I can use so that's kind of the next part this is something I've developed over the last two three years when I started writing and I used this methodology called Settelkasten which for German speakers is like what everybody has a Settelkasten but it has like I'm using it in like the English influencer kind of way there's a German like sociologist who because he didn't have a computer like started doing like hyperlinks and tree structures on paper using some super clever notation thing but the core idea is that when you have ideas like fruitful ideas or concepts you put them into atomic notes that you can then link so the little thoughts that you formulate you can like start cross-linking them and then over time they build and the more you link them the more you get like interesting callbacks to a really interesting shower thought you had three years ago and then you realize how this connects to this this works really well for me because I'm just like and I think one thing I've seen people do is like they get lost into the details of the system I just started writing markdown files and then one day I had too many markdown files and was like oh maybe I should like start organizing them a little bit better so what I do is just like optimize for fun as long as it's fun the workforce fine right like it's when it starts to not be fun that maybe a better organizing system is needed so if you look I've linked my vault it looks like very kind of complicated workflow stuff and there's like all parts this has all grown over time like I didn't sit down and devise like a crazy numbering system or so it's just like one day I had too many it was like gotta do something about it and the last part I think this I learned through drawing and music more so than software is like it's dedicating some time to practice and thinking in this case for example so every Saturday I go to the coffee shop and I do all this weird stuff but it's it's not I'm not looking for results it's just like time that I reserve to do this stuff I don't need to act on any of these ideas that I have I don't need to like limit myself to the current project is that I just sit down and do whatever and if I'm not inspired I can I what I like doing is just like putting up some stupid react tutorial on YouTube and like copying it because at least I'm you know maybe I'll pick something up like maybe I'll have some inspiration in the worst case I just like what's YouTube for a morning learn some some ideas shortcuts or something and so I call it creative practice because that's like a pretty common word and the art world here's a couple of more things reading is great not reading books is even greater like having just like a ton of books ready on your bookshelf for when you need it and just read the table of contents pretty nice I'm actually serious like I can buy a book about ebpf and I can read it from beginning to end and then like in two months it's just like as if I had just read the table of contents so that like there's no point in reading the book anyway it's actually worse because I'll just have wasted two months of my life on something that's deprecated now so having a lot of books that you haven't read or like there's so many ways of reading a book that I wrote a blog post about it that anytime you can snag up a book that looks like high quality enough just get it you can always look at them beforehand laser printer and ring binder is like my demise because I print out I don't know hundreds of pages a week and don't read them I read some of them and so I'm going to skip writing because there's so much writing on the internet so this is the workflow I'm going to skip that as well like optimize for fun I think is the one important thing like if you're having fun doing something creative then just continue doing it because you're having fun and this routine thing like doing it every week things build up way quicker than you think they would like if you just do an hour of note taking a week in four months you'll have like a huge stack of notes and you just like how did this happen like now and you can really live a long time on these notes like I'm still digesting notes that I took during a month in the summer last year like this is where this all still derives from alright now the cool part we just like at 30 minutes but at what time is it exactly 22 alright so questions are going to be in 10 minutes right if we want to have 50 minutes of questions alright cool I'll show you a few things why large language models about which you hear so much weird stuff out there are really really cool for programmers and so mathematically like one thing I really criticize OpenAI about for example is that no one explains to people what these things kind of really do and like have like examples and you know exercise and all that stuff but really a large language model just like computes the probability for every word that exists given a context so already chat GPT or even GPT API like really really restrains what a language model does because they only give you a couple of tokens based on probability you can't like sample for every token which is interesting in some cases but that's all a language model does and you know they've all been trained like predicting the next token which is also like a decision and it's kind of amazing that you know this kind of stuff comes out of such a simple formulation and such a simple training method I'm not going to go into too much detail but and because it's language people kind of want to see in these models what they want to see and it's really hard to convince people otherwise because it applies to me right like I only see in these things what I want to see one thing that really annoys me though is when people call it intelligence because like not only are these things like numbers on my GPU which you know Fortnite is as well but they don't reason well anyway like they kind of suck at doing any kind of like the things that people pretend they can it just doesn't work that well I like the definition of Seymour paper which I've read just like pass a few books around just so you can see how I take notes in books but there's a quote I found where he says that you know AI as a field is basically concerned with augmenting machines to do things that if a human were to do them it would be considered intelligent but doesn't mean that the computer is intelligent so back in the days everybody was amazed that a computer could play chess because chess was like the pinnacle of human intelligence it still is chess players are just as intelligent as they used to be but no one thinks the computer is intelligent it's just like oh now they can play they can play chess who cares so I think this is kind of happening with language models right now but it's so mesmerizing because it's language like we can't read into it whatever we want to read I'm gonna not be able to do a demo if I continue doing this but my mental model is basically there are like kind of probabilistic macro engines with packages so you can like write some kind of macro call and then it will expand it using whatever has been trained on and adapt it to the shape of the context you want to give it the grammar of the question doesn't really matter you can write some python code and then you can just say write in javascript and it will generate javascript that matches whatever you asked it and the way I think of that is it's kind of like spatial compression so I call it spatial because there's regions you can explore so if your prompt goes into a region it doesn't really matter if it's like python syntax or javascript if I want to know about futures and promises that's kind of a region in space and it's a compressed context that I will then uncompress into go for example I've linked a bunch of videos where I just like mess with stuff to see how far you can go how small you can make prompts and alright but so what do I think is really great about large language models that they eliminate this assembly line work that gluing APIs kind of requires is like they're really good especially if you prompt them in context they're like this is my API this is what I want to do just like do it and if it's boring transformations like boring macro expansions they do really well and the best way to play with that is just like make up APIs like stuff that definitely hasn't seen in training and let me so I've stopped using how do I make the font bigger oh my god Linux I have to be in this I've started using Emacs again after 10, 15 years so I use org mode with org.ai because it's just like more relaxing I've got a couple of prompts in here you can set the system prompt so this is for example my go system prompt you just say like use these libraries use this stuff like anybody has an idea do you guys have like a sensor or like some kind of like shitty API that you've been dealing with no like a website with an API I don't know I should have prepared that I'm 58 temperature sensor is that a temperature sensor alright let's let's just take something like this let's look at some kind of like protocol device functional modes was there i2c commands where's the register map this doesn't look great I should have prepared that yeah let's do that and it was lm75 alright let's look at the datasheet for this one and where's the datasheet there alright cool specifications blah blah device functional mode register map so right so this is horrible this is what you do when you do embedded engineering it's just like you do implementing that stuff all the fucking time it's just like mem copy and complicate it um this is not really interesting is it but I'm gonna do it anyway so I want to write an API for this right I really don't oh my god copy paste in pdf as always alright so I'm just gonna be like I want an API for this so I'm gonna go write an API for this and then I just like please write me an API for this right and so while I'm doing this I'm actually not in this like exacting mode where I can't think what I'm just like looking what is byte 15 on this register or whatever it's just gonna do stuff which is actually very consistent and pretty clean because it has seen a lot of cleaning consistent APIs and it's trained to be consistent to itself and it will generate this and I'm gonna go either continue drawing on my breadboard on my whiteboard or just like looking at other temperature sensors and stuff while it's like building this it has seen like I to see in the past like all this stuff is pretty I don't know if I to see bus exists or not but I can write it like I'm an engineer I don't care if it's like register three or four because I can look it up but this keeps me in the brainstorm me kind of mode and I'm gonna interrupt it here but the next step you can do that again saves a lot of time is like write a CLI tool to query the LM 75 using that API and I'm like you know writing a little tool to play with my sensors it's like yeah sure I'll do that even uses you know the flag library that told it to use we'll do all that stuff you can refactor it using these things you're like oh well can you you know make a flag for the device address so this is where your knowledge as an engineer comes in because you know you know you want to have a flag to do stuff so you can do add command line flags for dev add and bus num and you know in polishing this a little bit like that's actually fun to do as a developer so at some point I just stop and be like okay well this is enough boilerplate now I want to have some hands on the keyboard time I think this is amazing you can go even further we can be like write a web application that falls temperature over web sockets and displays a graph so here prompt engineering starts to be a little bit more important like you want to give it some libraries maybe some API's that you should use instead of just like fetching stuff that might be out of date or doesn't exist if an API doesn't exist I actually like it because it usually means like maybe you should write that API because it looks pretty good and so probably with some bit of thinking you know in an afternoon of work drinking coffee and doing some messing around with my colleagues I'll actually have a command line tool a library an API a web graph socket thingy some nicely written documentation and I'm not even tired in the evening it's like it's done so this to me is like the liberating aspects of it it's like any kind of API I don't even go to documentation anymore it's just like recorded in Chrome and then I paste a Chrome log in there and so like built an API and it works like in an afternoon I built like APIs for archive.org these like paper sites even if they don't have APIs it's just like recorded in Chrome I wrote a proxy for chatGPT by recording chatGPT asking it to write the chatGPT proxy which was pretty funny as well so that one I haven't put up in open source because I don't want to get a takedown request but that was pretty funny alright so there's so much more that I want to show about large language models but I hope that that showed you a little bit what's like what's possible for developers where they're great like I don't care that this stuff doesn't exist or doesn't work right off the bat like I want just the boilerplate and if you prompt it in context with the right APIs for which I wrote oak right to have it like concise and fast and updating then you usually get really good results because nothing about this involves any reasoning it's just like macro expansion alright so I had a final part about all of this but the message here is that all these things that previously you wouldn't build on your own just because you have to interface with the world of like corporate software you know and you don't want to on a Saturday you don't want to like read sheets and be like why is byte 16 like this thing or why like what's the graph library scripted interface like I don't care now you can spend your Saturday morning building a whole home automation graph system you just be like cool it works and the next time an API comes out you just be like can you update this for this API and just like paste a PDF in there and that allows you to basically build your own vision without being blocked by by the vision of companies I think I'm going to stop here let me go back to the slides maybe have something cool that I forgot about and then I'll open it up for questions yeah so I think for me the most important is like I'm not tired in the evening and when I want to do open source I know that within an hour I can actually really knock some stuff out like I can make an archive API in an hour and then just go get dinner and very important like they used to be as concerned like only open has the money to train them once the Facebook models leaked this has been pretty much proven wrong I've tried a little bit of these models and they are able to do this macro expansion pretty well like I don't care if they can reverse every third word or every fourth or you know pass the bar exam I don't care just expand my PDF alright there's a bunch more but you know this is basically the conclusion here I'll continue updating the handouts and I'll probably like do a couple of like follow up talks where I actually talk about the Google Golems ecosystem then some more hands on LLM shenanigans there's a bunch of videos that are pretty cool in there I wrote while eating breakfast I wrote like a Go Stack Trace Handler that explains why you crashed and tells you how to fix it which actually works really really well there's a video on how I build it in there and the last part which is dear to my heart is like logistics and accounting software is actually really really cool and is really really subversive actually but that will be for another day and that's it I'm blown away seriously it's super inspiring and gave me so many ideas my brain is constantly working on ideas we have roughly 10 minutes Q&A I hope you have a lot of questions there are not many people but I hope you have some questions I once read a blog post called the moral economy of gophers where someone argued that go is so mechanical so repetitive that developers aren't able to express any sort of style but I wanted to ask what do you think of it because it really makes sense to automate this using tetra PTO stuff like that if it's so mechanical I think go works really well with these tools because it is so annoyingly boring so I don't know if you use co-pilot for write and go but you know it's like I type error return and then if I type error message so I can just type complete and get nice error messages that match my error message style I don't know how to change the size on this I don't know if it's good to expand it but the structure and also the fact that the tooling is so opinionated there's one way to do fuss testing there's one way to do unit testing there's one way to do command line tools kind of works very well because your training corpus is very consistent unit tests so the approach I do and there's a lot to be said about prompt engineering but I write an API API's interface is very like there's one way to do it and that's it, there's one way to do context and cancellation there's one way to do concurrency so it is really good at just like writing a dramatic code if you try something like what's the language that's all over the place Python Python will just be one time it will do async like this and then it will do async like that like a 10 year old library followed by like the modern stuff Go actually works great for for just generating boilerplate right and it was conceived to have in a big company people write consistent thing except now I have my own company that writes my go code for me like that's the way I think about it is like all this like AI stuff right now is actually giving individuals the power of a whole corporate workflow and resources right like even for artists now they can say like generate me a thousand thumbnails of this asset for my video game and they don't need the resources of a whole asset drawing team to do that and then the people who have to spend their time drawing like a thousand swords just to get them dismissed they are now free to do their own video game so that's my utopian view of all of this and it applies to developers in exactly the same way did that answer your question oh it's great to do this as well like I want documentation for this and usually it's good right so now all my all my software usually has some decent at least consistent documentation and if I want to update right like if I update the API I just do this and I say well please generate it again and I was like okay when my internet goes down and I like I have this like delay where I'm just like wait 200 millisecond and press tab like that's gone and I'm like oh I really have to do this myself any other question I have the feeling you fried some brains I hope it wasn't oh man I broke everything but this means that I as a hardware developer who has basically no idea this LM75 thing made a huge click you have to see it to be like oh okay I'm a hardware developer I love my ultimate designer it's an hate and love relationship um but now I have a way it gets easier for me to interact with the with the electronics with the microcontroller with the sensor whatever without me having to know how to write C or C++ or whatever and makes it easier so things you know especially if you use Altium and you work like an embedded corporate kind of structure things you can do as well which works really well it's like everything that's kind of like DSL I think of them as like domain specific languages right it's like export this is JSON and you can prompt it with your JSON schema and then you know if part of your tooling is just like generate documentation stuff like that you can you can basically take all your disparate vendor data sheets and select them please put it into our format like Altium library generation automatic so think about like macro expansion everything that's structured language you can either expand or contract and transform so that stuff works really well and if I had prompted it with the JSON schema I would probably have generated the right thing and if it's like slightly off then I don't care I can fix it and then just play with this like language transformation thing instead of asking it to do things just like ask it to to transform language basically is what's really effective some questions still Brian Fry I have one last thing to show and maybe we can close just I thought about it so one thing that models do really well right like I could paste a bunch of data in here a bunch of numbers and then say like ask your questions like what's the operating range of this answer and then just paste it in and like paste it in and then more often than not it will just like return nonsense because that's not stuff it has seen like especially if it requires some reasoning of like knowing what's an operating range where can I find it what does it mean it will like find a temperature and was like oh this dude asked for temperature so I'm just going to output a temperature that I've seen it's like it has like it's wrong it's it's like not what you want it's dangerous because it looks plausible so this kind of like I don't know if this is true or not it might be true because it just has seen that sense of way more often but the better way to do this is instead of asking it a question rate that has an answer what you can do is you can transform this to JSON no create a JSON create a struct to represent this and write a program that computes the operating range and so that it actually can do because it's just like language transformation right it's like a table and then you have to look at the third column and then you look at the range so now you have a program that's deterministic that you can debug you can turn into a tool that actually gives you not just the answer for the question you ask but the answer for every follow up question and now you can put all your data sheets in there export them as JSON so like give me the operating temperature as a JSON as a command line tool with a web interface and then you go home and you you know work on your open source calculate or write a program to calculate the DC-DC converter that has a maximum output ripple of 10 millivolts and a precision of and this and that and want to have 10 amps this kind of stuff and if the formula is wrong you know it's fun to fix the formula it's the stuff around it that you don't care about so yeah so ask it to write the program to solve your problem is usually much much better than asking it to solve a problem yes I think this is a good this is a good this is a perfect conclusion and this is a perfect final and there's a talk where someone actually has negative takes on language model so let's let's go see what that is about yeah applause Manuel thank you very much I'm inspired um good to have you here well thanks yeah thanks for coming on a Sunday on a Sunday morning