Hi Steve. That's me. That's my Twitter handle. I sometimes wear cowboy shirts. I'm blonde. I'm from Canada.  That's a picture of actually it's right beside the pond I used to play in as a kid. I'm looking back at my town so there's nothing there. There are cowboys. So this is a website that some friends in Canada sent me this week which I think is amazing. FarmersOnly.com. This is actually the town that I went to university. These are people looking to marry farmers or who are farmers looking to marry farm girls. This is pretty sweet. I'm not a cowboy. I'm a smug lisp weenie. I'm not a particularly good smug lisp weenie so I don't really know what this is. I did a Google image search for smug lisp weenie and it gave me a cute bunny and I know you're supposed to include one cute animal slide. So there it is. I've worked these places so I worked at adx studio ThoughtWorks and DRW trading which is in Chicago. DRW is where I've done all my closure so far. So introducing closure into an environment is kind of difficult so we started with just a t-logger.  So we just had an old application that was written in JRuby that would connect to this thing and dump all the messages out to a file. So we figured yeah that thing is like 50 lines of Ruby. We re-write it in closure. So we got that in 12 lines of closure. That was a start. Then we moved on to a market data republisher which is also boring. So it basically gets a data stream from an exchange and broadcast it back out to the rest of the company so that not everyone needs to connect to the exchange all at once. It was a little bit more interesting because we had to deal with Java interop and things like that. It was 300 lines of closure and then the last thing that I wrote before I left was a web application in the service. So it was basically your standard RESTful web service in behind what would normally be kind of a Rails app so we're using composure and stuff for that. That was about 2,000 lines of closure. It was actually kind of cumbersome because it was also speaking LBM in addition to HTTP. Okay, people are tweeting at me so I'm just going to... No KIA phones, they're amazing. So the last thing that was written just as I was leaving was our trade capture and position management system. So this was an application that we'd taken from 60,000 lines of C-Sharp down to about 5,000 lines of Ruby and the code samples that people were sending me after I left and joined C42 made it look like it would probably go down to about 3,000 lines of closure, which is pretty cool. So now I work in C42. I'm their token white guy. They can only have one until they hire a hundred more employees according to Indian import white people from Canada laws. So I work on Rubymonk, so I've inherited a pretty sweet code base from Jossam and Kitty and ClosureMonk is definitely coming. It's not there yet but I will build it, I promise. So this is what we're going to do. So we've basically got this broken up into two chunks. One through four is going to go really fast so I can kind of do the Zed shopping and maybe ask everybody not to be that guy. We can leave questions for the end but this is a pretty tight talk so we might not have time for questions. I'm totally happy to stop by like the coding room and hack with you on closure if you actually want to try something out after the talk this afternoon or tomorrow. So we're just going to baseline stuff, give you a quick introduction to closure, talk about list history. I think the curiosity is joy. It's the whole reason I'm a programmer. Quick introduction to functional programming as it pertains to Ruby, at least one of the kernels I think for me. And feeling good because that's also why I'm a programmer. Pro writing code makes me feel good.  So baseline, really quickly, how many people have read about closure? Anything at all, okay? So a lot of people, how many people have tried closure? Download, line again, get a REPL running, okay? So about like 20% or something. All right, how many of you have read some list literature? Sick P, Lisp in Small Pieces, anything? That's about half, all right? Do you believe this? Closures equals objects. Hands up. This is a serious one. Wow, nobody? All right, I'm screwed. Okay, so we'll do a quick introduction to closure, but maybe I need more material than this. What is this? Just shout it out. Okay, what sort of expression is it? S expression? Okay, that's technically correct answer. That's a function call. Assuming the stretch isn't a macro or a built-in special form. What is this? For anybody who's actually played with closure, you should know this one. Sorry? Conditional special form? A special form is a good guess. It's actually a macro call, which is totally awesome. So check it out. This is the macro that defines when not, which is basically rubies on less. So you have a language element defined as a macro in one freaking line, rad. Okay, so this is a bastardization of a rich Hickey quote. Basically, he says, if you want a new for loop, you can, should be able to read it yourself. You shouldn't have to wait for the compiler or the interpreter implementer to come up with Java 1.8 to do some new fancy for each. What's this? Yeah, okay, string. What's this? Keyword, read on. Some people, what's this? Symbol, right? Okay, so basically in closure, like one of the things that's going to screw you up is keyword and symbol are more or less reversed. Not exactly, but it helps to think of them that way. What's this thing? I apologize for the yellow brackets, but list, array, vector. I think I heard vector. Okay, so it's a vector. So you can write vectors and any really S expression in closure, either of these ways.  You can just smatter them wherever you want. They don't matter. So what's this? Close. Okay, so it's a map. Sometimes they're implemented with hashes. Sometimes they're not. So don't get that confused with this map. Two different maps. One's a function. One's a data type. Okay, what's this? This is a list. Right. In closure, it's called the seek. So that's how you pronounce SEQ is not seek. So what's this? Oh, right. Silence. That's actually good. So that's garbage, right? So single quotes in closure stop evaluation of whatever you're looking at, right? So that's not technically garbage. It actually evaluates to something valid. It just evaluates to something really kind of weird and ugly and you probably don't want to write code like that, but those are not strings. Strings are always double quoted. If you're writing Ruby and trying to write closure on the side, just start writing double quotes and all your strings and all your Ruby code because it's going to screw you up. And believe me, you don't want to spend that half an hour wondering like, why is everything not working? My strings, it's because you're writing too much Ruby. Okay, history. 1958. This guy made this guy write the first Lisbon turban on holy crap, that thing. It was mostly conceived within the span of a few years to solve the AI problem because back in those days, people had huge goals of building computers that could replicate people. They didn't really achieve that. They had instead the AI winter, which was a big disappointment for all of these guys with these big dreams, which is sad and Lisb sort of went with them to a great degree. In 1970, give or take, we got garbage collection. So there were languages that people were actually using sort of kind of with garbage collection. Memory management is awesome.  I mean, arguably scheme for academics and common Lisb for like the Lisb weenies that came before I did. So why another Lisb? Why now? I'd say two really big things. The literature in the Lisb community is amazing. Sikpi, Lisbin small pieces, the reason schemer, like these are some of the best computer science books I've ever read. They're incredibly concise. They're packed full of information and they're often like absolutely profound like bring you to the beginnings of the universe profound. Homo Iconicity, so it didn't give us robots that like wash our cars and solve all our problems, but it is this pretty powerful idea, this idea of we all really understand this in the Ruby community, right? Programs that write programs, it's awesome. Okay, so why closure specifically? Why not any of those other Lisps? Why didn't they succeed? So you might have heard this in the last few years. Concurrency is the new memory management or STMs are the new garbage collection. I think that's largely true. How many of you have a laptop in the room and how many of you with those laptops have multiple cores in the laptop? Right, friggin everybody. So this is a problem, right? Time matters. So this is I think cute, maybe not everybody thinks so. This is a clip from The Man from Earth, which is a pretty good movie that Sudhu showed me. This is where they're talking about the fact that this guy doesn't die. So he's a cave man that's lived for a lot of years. And this guy's trying to explain why that's why that's a big deal and what the deal is with time. Oh, yeah, it would help if I plugged in speakers, huh? Is there one? It took me like seven hours to carve this out of the movie, so I really want to show it. FFM Pig is hard. Actually, thank Kitty for this one. I didn't do any of it. I just watched him for seven hours. All right, so the reason that's awesome is because he's talking a lot about this idea of becoming.  So we as programmers understand already the time matters, right? We had subversion. We had one timeline centralized somewhere and then we'd check out the end of that time or maybe some chunk from the middle of that time. But then we get the snapshot, then we mutate that and then we checked that back into the timeline. And then when Git came along, well, really, GitHub. I mean, GitHub is what we love. We don't love Git. There's a terrible interface. But so GitHub came along, Git came along, HG came along, whatever. And all of a sudden, you had timelines everywhere, right? You have a timeline on your own laptop. You track your own timeline, you follow it along, and then you push that back up into the central timeline if you want or it to someone else's timeline. However, RigDB Migrate, right? This is time management. This is state changes over time. It's your database schema, but it's really one of the most important state changes, right? When I first found out about database migrations, it was like mind blowing thing for me. It didn't happen with Rails, but so even my mom cares about time on computers now, right? Facebook timeline is actually really interesting because they've basically taken what people thought were snapshots over time and just compresses, like, smush them all into this big long timeline and say, like, ta-da, everything you've done for the last four or five years is now really, really public. And aren't you ashamed? So the solution to this problem of time in closure is closure reference types, right? Otherwise, it's concurrency and locking and Java util concurrence and stuff like that in closure. And I'm really not going to explain these are really like I've watched two hour talks explaining closure reference types and how they're built on tries and stuff like that. I'm not smart enough to explain these to you.  And atom is basically a variable. Closure does not have variables. It has these things. So it allows you to perform an atomic operation to change this thing that you can view from any thread for free and safely. So it's basically thread safe variable. A ref is a little more complicated. It's more like a database table. So a do sync starts a transaction and alter is effectively like mutate that table. Your transactions can be retried, rolled back, etc. So that's kind of neat. And then an agent is this is a bastardized description and one that someone who's better at closure than I am would probably yell at me for saying but if you know Erlang actors, or if you've used event machine before this asynchronous messaging to another thread that knows how to manage itself. So the call to send to there where you're telling the agent, go mutate yourself with that function returns immediately and the agent builds up a queue of instructions and executes them on its own time. So yeah, so I wasn't going to explain this code anyway. It's filling off the screen. I apologize. You can still use Java util concurrent, right? So if you're using like volatile and locks and stuff in your Java code, I don't want to work with you. But Java util concurrent is really, really good. These are amazing classes that are well thought out and like built on real math and real smart people have built them. So you can actually wrap them. So this is a wrapper for linked blocking queue that just turns the link blocking queue into a seek. And so you pull things off to the end. I mean, a seek sort of looks like a queue. So makes sense. If nothing else, immutability promotes healthy teeth. And so even if you're not worrying about concurrency, I find that most of the bad code that I write is stateful code. And it's the states, the different states and the changing of states that makes it confusing. And that's when I grind my teeth. And certainly it's better for teeth and test driven dentistry. Curiosity is joy. So the whole reason I'm a programmer, I like to play, I like to experiment, I like to look for something new, right? So how many people came to Ruby and had never used a REPL before and never used an interactive prompt, IRB changed your lives? Okay, if you, what about Rails console, which is like a fancy IRB? Okay, a few more. So if REPL is so joyful, let's get one. If every anybody has a laptop, you can do this. I seriously recommend it like you can do it. The hotel internet is actually pretty solid. So create a bind bin directory in your home directory. If you're going to do this, start doing this now. W get this is good line again, move line again to line, make it executable. Are you remembering this? Okay.  Line again is a shell script. It'll download line again. It'll install it. And then it'll add by default a dependency of closure one three. So it'll go and get closure for you as well. And it'll install that. And you can run line REPL inside of that project. And you have a REPL. Hey, neat. Okay, is anybody still looking at the side? Or can I move on? Yeah, take pictures. That's a good idea. Okay, so if you want to hack with me after like tomorrow, I'm happy to help you get set up and stuff if you want to get your editors set up as well. Okay, emacs. So related to Oh, yeah, okay, I can't see that. That's not it. Forgive me. Oh, it's because it's not full screen. When somebody shouted me. Alright, sweet. We don't need this. Oh, demos. They're such a good idea. Okay, so I have a few things in here. The first thing is not REPL related. I just wanted you to get a REPL set up so that if you wanted to follow through any of the actual closure examples, you could. So there's this thing you can't quite see it on the right hand side par edit mode. It's been ported to Java. So you can use it in Eclipse. They haven't put it into IntelliJ yet, but I wish they would. It basically makes editing s expressions awesome. So inside of this s expression, if you can see that's an s expression ending in Z. So I can do basically control per end.  So the editor understands the structure of my code, which is neat. So I can also do split, and I can join them back up. So I can like move my s expressions around. And the first time that I started doing this reminded me of the first time that I used IntelliJ, which I mean might be sacrilege a little bit here, but if you've ever used IntelliJ, it's an amazing piece of software. It understands everything about your code, not just Java, right? It understands XML, it understands JavaScript. I felt a loss of that with Ruby. Like editing Ruby and Vim is just like an endless stream of characters that Vim doesn't understand at all. It gives you like some sort of fake like completion and stuff like that, but it's not great.  It doesn't really understand what the code is doing. But so the other things that you can do here, I've got a little REPL running on the side here. Come on, mousing skills. So the other things that you can do are you can compile this file. So yes, please save. Okay, so I've compiled the file. Now I've got my cursor at the end of this S expression. I can send that S expression to the REPL. And so there it is down there. Democore organizers. And so I'm sure I left out some organizers. I apologize. This isn't like a definitive list. I was just stealing names off the website. So now I can execute this as well. And so it's executed on that REPL and it's showing me the result down there. The other thing that I can do that's pretty neat is Ctrl C, Meta P, package demo core. Boom. So now over in the REPL, I'm actually in this file effectively now. This is like the easiest way to think of it. So now my REPL is inside the file. So I've moved inside that namespace and I can like play around in there without referencing demo.core slash slash slash, whatever. So the editing environment's pretty neat. And that was it. So this I think is the first proof that you have that S expressions and parens aren't evil. They can be used for evil things. But Lisp is not one of them. Functional programming, higher order functions, real higher order functions. So functions that can take functions as parameters and return functions back to you. Okay, so you can see most of this code, I apologize. So here are some cliches of Canadian culture. I'm mapping over them and up casing them. So I'm shouting. You can turn that into map, ampersand, symbol, upcase, right? This is a special thing in Ruby. This is not consistent syntax. This is a special way of getting to two proc. And it requires a little bit of a detour. So what if we have an object that we want to pass into this, this map that we're doing, and we want to call a method on that object with our object that we're mapping over. Well, now we have to go back to the block form, right, we can't use to proc anymore, which means that we've effectively like taken our fake higher order functions and turned them back into like explicit lambdas, which still works. But it's not quite as cute. So enclosure, you wouldn't generally write code that looks like this, you don't write a lot of object oriented code and close you write some but the majority of your code is going to be built out of much smaller pieces than full on classes. I'm just doing this to maintain parity with a Ruby code. So enclosure, I can say, so this is a interface basically on the top protocols are more powerful than interfaces, but it's not worth explaining why types are basically like classes. So I've got to like type Canadian, and I create Stephen Harper is our terrible, terrible Prime Minister.  So Harper is Canadian. And say as Harper, I can actually construct a new function that I can pass in as a parameter to map. And this is really powerful, not in this example necessarily, but when you start piling these things up on top of each other, you stop needing to do do and do and do and with lambdas cascading like you do in Ruby. The spectrum of functionalness. So the first time that I came to Ruby, I thought it was really, really awesome that Ruby returns the last expression by default. That is awesome. It's really awesome because it's a functional concept, right? Every method you write returns a value, which encourages you to write functional code. But it's not quite as functional as forcing you to return only one value from every function and making the purpose of every function to return a value, right? And then if you go further down the scale to Haskell, then you can't do any mutation at all. And the only reason ever to write a function is to return a value. And I'm sure Haskell is very awesome. And one day I'll experience that for myself. But yeah, this is how I tell you that I don't know any Haskell at all. So I think the reason for this maybe is because that Ruby was written in Japan by this adorable fellow and the Japanese like Sushi. And so that is squishy. And Ruby is squishy. And so the difference being, sorry, the thing about Ruby here is that all of these things, these innocent looking statements are squishy, right? They're potentially mutating things. They're potentially changing state under the covers. So potential mutation, potential mutation, that last line is definitely mutation, right?  So closure was written in America, America, by this guy, who is a scientist and a philosopher. And so closure tends to be sciencey and philosophy. So you end up with stuff like this. You have let bindings, but they are not assignment. Once you assign that value to general sales tax, general sales task is like that forever. It's not entirely true. You can define general sales tax as dynamic if you need that to escape out of your safety zone. But most of the time, you're never doing that. And all list functions have a single return point. So you're taking that idea that the last expression you evaluate it is your return value and just like taking it to the next level, you're saying the purpose of these functions is to return values. Feeling good.  And like I just want to make sure you're awake. So how many people have read this book? All right, a few. How many people have read this book? Discipliningly few. Okay. How many people have read this book? Right, most of us. How many people think that this was the original design patterns book? Right. This is the original design patterns book. And probably there were white papers before that. But I mean, this is kind of like the canonical work. So I went to go read this book and I read the forward, which is written by Christopher Alexander, who's an architect who had all his ideas stolen about design patterns from architecture, which is like a legitimate field. Or so he says, as opposed to software, which he's like, I don't really know if you guys have design patterns. So his forward basically bashes software and says like, architecture has been around for thousands of years. We have patterns that have come up that have emerged out of humanity. Software is not quite there yet. So it's like, you know, his forward is pretty well written. I'm going to go read his books. They're amazing. Like better than any software book I've ever read better than almost any other book I've ever read. So he has one book of pattern language, which is almost 300 patterns of like how to design human spaces, how to design buildings. So he's got things like no building over four stories tall. He's got things like plants in the windowsill. He's got things like old people everywhere. It's a beautiful, beautiful book. I would really recommend you read it. And he comes up with this notion, the quality without a name. Something that you like, something that you're attracted to, that you can't point to and you can't label and you can't name, you can't identify, but you can feel it. I think the French call this je ne sais quoi. And in this book, he asks explicitly, so this was actually written after a pattern language, but it sort of was a prequel, what feeling do you have about a building? So once a building serves its purpose, how do you feel when you're in it? How do you feel when you're outside of it? How do you feel in any environment? So how do you feel about this code? Does anybody use Mailbox? JRuby, Mailbox? Nobody? Okay. So this is cool. I'm introducing this to you. So a good buddy of mine, Patrick Farley, and actually another good buddy, Joel, wrote this together at DRW. So mail slot, it's more powerful than this, you can mark it up, you can tell where to put the exceptions and stuff like that. But mail slot basically says, when you call this method, cross the thread boundary, start a new thread up, or you can use an existing thread, but basically return immediately from the call to log and this thing will run on another thread. This is friggin beautiful, right? On the outside. I mean, it's two lines of code and you've added pretty safe concurrency to your Ruby application as long as you're using JRuby, caveat. So I feel pretty good about that code. I think it's awesome. So that was the first thing that I was looking at there. Mailbox. So this is the inside of Mailbox, right? This doesn't look like Ruby to me and it doesn't make me feel very good, because this is Ruby metaprogramming. It looks like Python to me, maybe, but I don't really know Python, so that's like not fair. But it's got like a lot of these double underscores to make sure you don't collide with anything in like a different namespace that you're being imported into and it's doing a lot of like construct strings and then turn them into symbols and then send them to something else. A lot of like kind of like dangerous feeling garbages stuff. And it works. It definitely works. It's well tested, but we're looking at that code specifically doesn't make me feel good. So I mean I don't know how you feel about it, but it's an open question. So metaprogramming, right? Metaprogramming enclosure. How much time do I have? Alright, like barely any. So here's like a really sort of canonical example for me, because the first time I ran into this I was actually trying to do this. I was trying to define a method with define method, which is itself took a block. Which is a block taking a block. In Ruby 1.8 this is impossible, right? You can't do it. So at the time I was using JRuby and we were using Ruby 1.8 standards because it was safer. So it was literally impossible. There was no way to construct this. So Ruby 1.9 it still doesn't let you do yield. So you get the local jump error. Ruby 1.9 does allow you to name the block and then call it explicitly. So that's an improvement, right? But the reason for this I think is inconsistency of syntax, right? So they're all just lambdas. They're all just functions. But for some reason we have all these different ways of coming up with this. And I think that this sort of thing is what gives Ruby grammar dependency. You can't really see that very well, but it's Ruby's grammar dependency graph and yes part of it is what makes Ruby powerful, but it's also kind of scary to look at. So this is how you define a function enclosure. There's only one way, fn. So fn in square brackets, your parameters and then your code and it'll return a value. Pretty simple. So if you want to give your function a name you def the name and attach it to a lambda. Or you can use def n which is just a function that does exactly that. So here's a little bit of metaprogramming enclosure from the outside. So like mailbox we're like looking at the consumption of our metaprogram code. So def project is just a map, not a hash, a map. So name and path pretty straightforward. And then we've got this thing that's just like a cascading series of functions, right? And it looks pretty lispy and pretty annoying with a lot of parentheses. And if you haven't written lisp before, those are going to be scary to you, or at least they were to me and they look kind of bad. And so what closure has is this thing called the threading operator, which is dash greater than. And so it basically just flips that other form inside out, right? So instead of like the innermost parent is the thing I do first and then I go out and I call a function on that and then I go out and call a function on that. Instead I just say thread and take that object project and just pass it into the first function colon path so that will actually extract path out of the out of the map. So lookup path and then it'll take the return value of that and pass that into the next thing. So pass that into IO file, take the return value of that, pass that in the list files, etc, etc. So what's interesting is you get to the end and you can actually use half formed functions, right? So ends with JPEG is not a valid function. It's missing a parameter. That parameter is the first parameter which is the result of everything else that's going on there. So actually if you do macro expand on this arrow operator, you get the thing up above that's a little bit uglier. So you have the same code but it just looks a little different. This is def macro the threading operator. So the first one just returns itself. The third one is just doing was a little bit of recursion. Ignore the width meta there. That's just some metadata is like a closure thing so that you can make programmer constructs like hash code orthogonal to everything else. So it doesn't mess up your your code that you're actually trying to use for users. So this is basically just take the first form, take your result from the last thing, X, stick it as the second item in that list and then do the rest. So that's pretty sweet. That's like what five lines that's pretty powerful. Right. So you can't get there from here in Ruby. You can't do this. This is a new language construct. Ruby can come pretty close with blocks and do cute things where like you with something and you start a transaction and you close it automatically once the block is done. But that's kind of the extent of it. So there was a really great talk at Closure Conj and I'm coming like dangerously close to the end of my time. But given by Christophe Rand, if you don't read his blog, I would recommend it. The guy is brilliant. He's the guy who wrote the wrapper around Java util concurrent link blocking queue. So he gave this talk to the first closure Conj basically saying DSLs are not macros. Right. This is the mistake that everyone makes when they come to closure for the first time. They're like, Macros are super powerful and I can do everything and like, yes, they're super powerful just like Ruby Meta programming and they're dangerous just like Ruby Meta programming. And so what you really have is this spectrum of APIs, right? APIs, DSLs, same thing. Just less trendy. So at the end, you have compilers. So if you really need to define some new language syntax, you need to make your code smaller. You write a compiler. You can do that. Or in a language like Lisp, you can use a macro or in any language, you'll have hopefully a function available to you. And at the very bottom, you just have raw data, right. And so he says, push that down as far as you can because that makes things simpler, easier to manipulate. And so basically the opposite. Yes, Macros give you infinite power almost, but try not to use them. So this is a little snippet. It really did the code doesn't matter. It's just a function from the closure script compiler. So all it's doing is saying, take in some closure and emit a string that's JavaScript that means the same thing. And it's fine. We all understand how compilers work. They're boring. Okay, Macros on the that's nice. It fills over. So macros core dot match is probably my favorite closure library right now. David Nolan is a JavaScript programmer for the New York Times. When he came to closure, and he started reading papers about predicate dispatch and was like, oh, matching libraries are neat. And closure doesn't have one. It has multi methods, which are way more powerful than type based type based dispatch, but not as powerful as full matching. Right. So Erlang, OCaml, these languages can match things as you enter into a function and dispatch on whatever crazy rules you want to come up with. So he's like, we're just going to read about all these different languages and read a bunch of white papers. And I'm just going to build the matching library that I want. And so he writes core dot match, which does this. So it takes these values. X is true. Y is true. Z is true. And it filters them through this thing. And it figures out which thing you want on the right hand side. Okay. And so you want four. So this example is pretty boring, right? Because you could write this with a plain old conditional or any other way that you wanted in, in Ruby wouldn't matter. But you get here. And so now you have this supercharged conditional that doesn't require conditionals. And we've got all sorts of dangerous stuff on the right hand side. Right. So if you tried to write this in code with a function, all these things would execute because they'd be evaluated. The macro stops these from being evaluated and makes sure is that you only kill the thread. You only do the last one. The way to do this in Ruby would be to delay execution with lambdas, right? But you couldn't get this concise syntax. It's super cute. And it's 1761 line. Like he's basically taken the best features of Erlang and OCaml pattern matching, smushed them into closure in a library, no less an optional library in less than 2000 lines. That's nuts. Yeah. So do we navigate disappointment? Do we choose design patterns that get around the limitations of our language? Or do we choose a language with fewer design patterns and more powerful constructs? Or do we just eliminate disappointment all together? So these are macros, right? These are things that, okay, I'm becoming really close. I apologize. I might have to skip the last bit. I don't know when I get cut off or they start ringing the bell or whatever. But so all these things you would think of as part of a language, part of the compiler, part of the interpreter, they're not enclosure. And so like four block comments, start a transaction, while loop, these are all macros, but get to the bottom to find a function to find a lambda is a macro. Awesome. That's super awesome. So that thing again, I picked up this book off of Tim Bray's blog. It was one of his recommended books of last year. It's a hilarious book. Whether you speak Arabic and what other languages he uses or not. Docher basically, I think I'm pronouncing his name correctly, docher. He basically takes himself to task in coming up with an explanation for how we have language as we have it, how his language emerged. And he talks about when he was a kid and thinking that some guys got together in a room and designed all the languages and like, okay, now we'll go out and prosper or whatever. And he comes up with this conclusion that inevitably languages evolved, right?  They have lifespans. And I think that this applies to programming languages as well. We, oh, sorry, I don't have another slide for this explanation. We don't know now what we will know next week, what we will know next year, right? So why program in a language that confines us to the decisions made in the past? Why not give ourselves a language that allows us to change the language as we learn new things? Give us, give ourselves an evolutionary language. So functions. Really quickly. So this is Ring. It's loosely based on rack, so it's basically a rack inspired rack equivalent. It's not even really a library. It's just a consistent form. It's, it's just a, what do you call it in Rails? That other word that starts with Z. Convention. That one. So it's basically define this function handler. It takes in a request and it returns you back a map that's going to be turned into the result that you passed back to the browser. And then it's got this function or a series of functions that look like this. The middleware, right? They take in the handler and then they return you a function which takes in a request. And so the function you're returning is basically of the same signature as that primary handler function. And it just allows you to keep cascading these functions on top of one another and look, arrow operator allows us to pile these things up on top of one another in a very like succinct way. I think that's very cute. And so I just wrote one as an example there. It just says if you send me a get, I send you a teapot. Really helpful. So data structures. Once you get to the bottom of that chain, Christoph, Christoph Grand's chain, you get to this, right? A lot of Ruby libraries that are meant to be declarative are written in functional style with a lot of lambdas. Time? Or really time? Okay. One more minute. Okay. Really? I only have one more thing. Okay, okay. So the bottom is the data structure that represents what we're using lambdas for in Ruby. We could do the same thing in Ruby, but I don't see people doing this a lot of the time, right? Just saying we have a bunch of arrays inside of arrays and they represent the HTML that we want to output. So this is just data, right? You can manipulate that however you want. Messaging concurrency. So nobody's used mailbox, but people are probably used event machine, I'm guessing, for passing things off. Okay. How about if people want to see this demo, you can grab me. We'll go to the hacking room or whatever. So I was basically just going to show how agents work with a little thing, but that's mostly boring anyway. So if you want to know what to do next, if you're as excited as I am about closure or getting there, I'd say that Relevance's lab repl is a great place to start. It's a really, really easy way to get into closure and by the end of the lab repl, you've built a web application, you've done all sorts of crazy stuff. The joy of closure is the only book on closure you need to read, but you'll probably need to read it about seven times and here are some things that I think are important and I apologize, but we don't have time for questions. So thank you.


Hey everyone, this is Mike Kramer from Mock Capital with a weekly check-in. Today is Tuesday, September 19th It's around 6.15 New York time and US markets are closed Of course tomorrow is a big day with the FOMC meeting The statement is released at 2 p.m. Eastern followed by a press conference at 2 30 Eastern And so I think that the most important thing tomorrow Is that the the market is not expecting the Fed to raise rates They're expected to skip the signaling and most of the telegraphing and speaking that came out of the Fed prior to the blackout period also suggested that many of the Participants and were in favor of a skip and really what the focus is going to be I think shifting towards going forward is Not necessarily how many more rate hikes there are But really it's going to be how high our rates going to have to stay and for how long There is certainly the possibility of an extra hike being priced in at some point down the road But as of the June meeting the expectation was was for one more rate hike before 2023 was over and what's most interesting about This whole meeting tomorrow is the shape of the Fed fund futures curve and this is an extremely important Because we can see that the market is seeing a peak terminal rate somewhere around five and a half percent And then you can see rate cuts being priced in for next year But what's important here is that the rate cuts even though they're being priced in only bottom out at around 4.1% and so what this means is that the Fed fund futures curve is telling us that Nominal rates are not going to go below four percent For the next five years potentially and that's really important, right? Because this is you know a big difference over where it was a month over a month ago when It was expected that rates would come down Below 4% and if we were to even go back six months ago now, which was in the spring You can see that rates were looking to go below 3% and so this is dramatic shift in how the market is now thinking about Not only the terminal rate of where the Fed peaks Interest rate policy, but really it's more becoming about Where the Fed is going to be a year from now two years from now and what this yield what this Fed fund futures curve is Telling you is telling you that Fed funds rates are not going to be below 4% anytime soon now obviously this can change over time because economic data changes and this and Scenarios change but this is what the pricing is as of this moment and also what we look at is the real yield curve And we can see real yields the lowest rate here 1.98 percent And what this is telling you also is that the markets expecting real yields to stay elevated for some time And if we think that the Fed has a two percent inflation target What this is also implying and telling you is that if you take and it will add two percent inflation to this number Nominal rates are going to be above 4% for the foreseeable future And this is really important because that means that when we when we get this dot-plot tomorrow While this may number may not change at 5.6 percent It's possible that it does go up But the more likelihood is that we're likely to see this number for 2024 Go up to reflect something more like how the market is pricing in and the big change could come in 2025 With this number potentially going up to about 4% and then of course the longer run rate Could potentially move higher as well in fact at the last meeting we already saw that the central tendency Had moved from 2.4 to 2.6 range to 2.5 to 2.8 So certainly this is a number that can also move higher. So the bond market seems to get it In terms of rates really being higher for longer and understanding that when the Fed means higher for longer It means that interest rates are going to be staying in this four to five percent range for potentially a very long time And I think that's really important because Again when we just start looking at things like the two-year treasury yield That's moved up, you know again towards the upper end of the range here As of today in fact we were as high and we closed that Essentially 5.09 percent, which is really the upper end of the range In fact when we look more closely you can see that this was actually a New closing high for the two-year yield going into tomorrow's meeting. So Obviously the two-year right now is positioned again to potentially move higher With really the next big level of resistance somewhere around five and a quarter percent To see that you really need to go all the way back to this point in time here where this was basically June of 2006 and then after that you'd have to start looking at rates in the year 2000 so right now rates are on the cusp of being at levels They haven't been at since 2006 at the front of the curve And certainly if you begin to think that you know Fed funds rates next year are going to be you know closer to five percent then it certainly begins to make sense to think that the five the two-year rate can begin to move higher from here and Even when you look at the five-year rate today Had a big move up when we look at it on the daily chart The five-year rate today made a new closing 52 week high Again, it looks like the five years breaking out and if we go back and start looking at you know How high the five year can go? It becomes clear that you could be looking at a five-year that moves up to around 515 if if indeed we get a market That breaks out here and certainly when we look at the 10-year the 10 years already had a big move the 10-year also made a very big Close today also closing at a new 52 week high and The 10-year could very well be on its way to four and three-quarter percent while the 30-year could also be looking at You know higher rates to around four and three-quarter to four point eight percent And then when we start looking at things like the dollar index the dollar index has had a really big move It's had you can see you know one two three four five Six seven eight nine weeks in a row of closing higher This would potentially be the first week if we were to finish lower that we've seen in a very long time I mean right now the to the dollar index really has some room to move up a little bit more to around 105 60 or so But again, we can see that the dollar index is getting you know very stretched at this point So would some more sideways consolidation be warranted? Sure. Absolutely But again what we're kind of watching here not only is the dollar index But you know really the price action of the euro which Had a move higher today got up to resistance tested it at 107 and then reversed and moved lower and Again, this is your big downtrend that just seems to be in the way So as long as the euro continues to drift lower You have to think that the movement for the dollar index is to test this 105 60 area in the short term The Japanese yen is also important to watch because it looks like right now it's stalled out around this 147 80 region Which again is a big level and really what we've been seeing here is now you have this potential shift Where you're gonna have the Fed potentially going on hold for a while while threatening You know rates to be really high for a very long time While potentially we have a big boj meeting coming up at the end of this week that could also Result in movements in the Japanese 10-year rate, which has also been already been moving up up to 70 one basis points yesterday almost 72 basis points and You know if you get a hawkish Fed tomorrow That's very clear that rates are going to be staying at above 4% for a very long time Closer to 5% for the next year to year and a half You're talking about a Japanese yen that can easily move back up to 148 75 to 149 And maybe even surpassed this 150 level the big question obviously is once you start getting up to 150 When does the Japanese you know government the monetary authorities? Start stepping in and conducting intervention and that's really the big key here because that makes things a little bit more challenging in terms of You know again how fast and how high this this yen can weaken to and then of course when we start thinking about you know equity markets You know we've seen that the NASDAQ Solidating here the NASDAQ 100 has basically been trending lower now for some time It had an uptrend that was clearly broken today And yesterday and we can see right now. We're sitting on support at 15,000 and 30 You know if you get The one thing to keep an eye on tomorrow is clearly going to be what happens at you know around 230 when pal starts talking because typically what we see following You know pal is you get this VIX crush and so the VIX today really didn't have a very big day But again typically around 230 you begin to see implied volatility levels come down and that could result in the NASDAQ 100 actually getting a rally at some point tomorrow Depending upon you know how high that VIX is going into the meeting Obviously the more implied volatility goes down the bigger the rally can be But the the key level here for the NASDAQ at least over the short term is this 15,000 to 10 level with the next big area of resistance up here around 15,000 to 90 or so and clearly your support level here 15,070 with a break of that level really setting up something more like 14,960 or so and we move over to the Dow. It's the same story. It seems like now for several months the Dow Again got up to and tested, you know, 35,000 Sveiled came back down below 34,600 Today it It went below the trend line You know for the first time we can see that the Dow Did close below the uptrend. There was one other instance here so what this tells us is that if the Dow doesn't snap back tomorrow really quickly and You know take out, you know, not only This high but then also get above this high here at 34,630 anything short of that You know, you're really running the risk now of the Dow being in a broken Failed breakout attempt with a break of this low with 34,300 Starting what could be a significant decline potentially taking you back to around this 33,000 range to start and That's really all we have for today. Hope you have a great day and good luck tomorrow. Bye


Hi everyone, Joe for jaspyscasebreaks.com coming out to a 2020-2021 Panini select basketball hybrid edition It's a four-box break number four one spot gets you three random teams each and I think I think all there's not too many cards in here all cards will ship in this big. Thanks to this group here for getting in on it There's one there's two and there's three. Let's triple you up All 30 basketball teams are in let's roll it randomized names and teams three and a two Five times for names and teams one two three four and Fifth and final time You got Joshua down to James Three and a two five times for the teams one two three four and Fifth and final time after five. We've got the Pels down to the Hawks All right, Joshua with the Pelicans Marlin with the Lakers and Spurs they played each other tonight I guess the Lakers I was paying attention to the World Series game But apparently the Lakers edged them out in the in overtime Joshua with the Pistons Marlin with the Suns and Cavs Matt with the Hornets James the Jazz Robert with the Celtics Matthew with the Rockets Robert with the Kings Matt with the Knicks Marlin with the Magic bow with the Bucks Matthew with the Bulls bow with the Mavs Josh with the Pacers bow with the Heat Joshua with the Warriors Robert with the Blazers James with the Thunder Joshua with the Wizards Matt with the T Wolves Joshua Raptors Grizzlies Nuggets Matthew with the Clippers Joshua with the Nets Marlin with the Sixers and James with the Atlanta Hawks We're gonna alphabetize this by team and we're gonna pause the video and give you a chance to trade if you want And when we come back, we'll have the break stick around Alright, welcome back ladies and gentlemen. No deals were done here in this hybrid break I posted the last four boxes of this case in the store jazzy's case breaks calm So if you're watching live right now, if you want to run this back Only need only need 10 people to buy a spot each. Remember one spot gets you three teams Four packs per box six cards per pack. I've got John Marant on the front Looking for all the different exclusives here Let's see what we got Good luck everybody Robert Woodard is our jersey and autograph Two color patch auto Kings Robert Flores with Sacramento Kayla Martin rookie silver. We got a Yanis In the hybrid design disco pattern nice one for Milwaukee that's gonna go to bow Isaac Acoro rookie silver Patrick Williams and the disco pattern as well This will be for Matthew chariot and the bulls Bulls starting 4-0 on the season people telling me that's that's their best start in a couple decades Silver Coro going to Marlin. I've got a Tyrese Maxi rookie and a Capazzo gold 10 out of 10 that card is gold Oh Denver Joshua with the nuggets. What's that guy gonna do Ben Simmons? This guy not being around Probably help this guy though Tyrese Maxi sixers Marlon give him some more playing time next box Wait Rex, so are you going to this thing this card show in Rosemont in November? Is that what you're telling me this? What else are they gonna have there? How long is how many days is it gonna be is that the Rosemont John Z. Stevens Steph Curry and his teammate James Weisman rookie silver. It's James Weisman Is he Healthy, I feel like he's not I guess he's still recovering from that knee injury He had a little while ago. I don't we'll see but Warriors be the Thunder 106 98 tonight This is for Joshua in Golden State. There's Steph Curry as well Steph Curry 23 points tonight six rebounds forces It was Alex Caruso Dante Devin Chenzo That's the 25 25 out of 25 for Milwaukee Gonna go to boat Yeah, it's kind of odd that they would have a show so close to Christmas in November I guess maybe people do Christmas shopping there. I've got a couple Luca. Don't you just here don't shy look at the plural Octopi octopuses Octopi Don't shy That's a court side Dallas, that's for bow and this is a I think this might be concourse Make a nice quick little set right there with the other ones Another James Weisman base this time for Joshua and the Warriors Next two boxes Damian Lee had 20 points tonight for the Warriors Wiggins with 21 points with the Warriors Jordan pool 10 points two rebounds seven assists There's one active NBA game happening right now. Jazz are leading the Nuggets 195 with about nine or so minutes left Nick's beat the Sixers 1 12 to 99 Mavs beat the Rockets 116 to 106 In my Lakers and overtime beat the Spurs 125 to 121 Think Anthony Davis 35 points 17 rebounds West broke with 33 points 10 rebounds Malik Monk was 17 points Austin Reeves 10 points nice that card is gold De'Aaron Fox 1 out of 10 Robert Flores with the Sacramento Kings a Fox in the box There's been Simmons 48 out of 49. What happens to him? Where does he go? What does he do? See Luka Donchich tonight in a winning effort 26 points 14 rebounds seven assists two steals a block He's pretty good. He needs a little help on that team though. I don't know I Guess it poor zingas can kind of turn back the clock a little bit. It could be pretty interesting All right onwards Thought I saw a Lamello ball there is base version of Lamello ball Matt Lieber with the Charlotte Hornets He started off the season pretty strong Picking up where he left off nice Anthony Edwards. Let's think that's the premier level Matt Lieber with the T Wolves nice Got randomized couple of the big teams good draw Premier level and the exclusive pattern Obi-Toppin premier level and silver Nice, that's Matt Lieber with the New York Knicks Nice, how did the Knicks do today Knicks beat the Sixers 1 12 to 99 Obi-Toppin show me Obi in 12 minutes Still got nine points in 12 minutes nine points four rebounds to assist two steals and a block It's pretty active for 12 minutes. It's hopefully Get some more minutes As the season goes on there's Malcolm Brogdon 14 out of 49 Killian Hayes and Marvin Bagley and there you have it boys and girls I'm Joe for jazby's case breaks.com. That was 2020 2021 Panini select basketball hybrid edition four box random team break number four Break five is the final four boxes of this case that we popped open I don't think we have any more after that.  I'm Joe. See you next time for the next one


Wy collecting the Wheel of the cetera On the top of the TV, it is the Everton News Daily. This video is sponsored by One Football. One Football as that makes it possible to keep up-to-date with all the latest scores, transfer rumors and stats all in the one place. To download the One Football app, simply click the link in the description below. Let's get into it Marco. Silva has given his press conference pre-Wolves press conference, was obviously briefed about Adrissa Garnagai, But do gorfod fel gweithio. Ac rwy'n credu, yn dweud, y dylai eich gwneud y byddai yma mae'r ffordd Fylgiag y Llewyddi ac Ieddymina ac mae'n gweld o'r gwneud cael y gallai allan gyda ni. Felly mae'n gweithio yma fe'n gwneud y test yn yma ar gyfer gan, a oedd yn gweithio mae'n gweithio. So, mae'n gweithio ar gyfer gweithio. Mae'n gweithio. Mae'n gweithio yma i John Jo Kenny. Mae'n gweithio wedi gweld o'n byddai'n gweithio a gweithio ar y gweithio. yw'r gael y llyw pan angen and. Mae'n dweud yn siel iaith yn cyfryd wedi f�ir. A cyfnodd y bys. Mae'n dda i'n eu byb yn ymddangos ar y dyfodol. Felly mae y ddefnydd y gŵr hyfforddi, gyda siarad gyda'r llyw ar y bwysig. Mae'n ddim yn mynd i gweithio. Mae oherwydd mae'n gofioall. Lle o bethau'n gysylltu i'i gyddau'i gandd, mae'n ddu lettero ar gyfer gaf. Ond oaf ychydig fod yn i'r llyw, gyda Garnir i Paarysanjfan. Dyna bod yn dwi'n cael ei bod yn ei gael i gael i Garnir, ond rydyn ni'n gwneud ei wneud o'r ffordd. Ond rydyn ni'n gweithio'r ffordd a'r ffordd. Rydyn ni'n gweithio'r ffordd. Ond rydyn ni wedi gael i gael i'r ffordd. Rydyn ni'n meddwl i'r ffordd o'r lleol, ond Mark O Silver yna sy'n cael eu gweithio. Rydyn ni'n gweithio'r gweithio'r ffordd.  Mae'n cwrs oed yn ddod yn meddwl. Rydyn ni anod i chi, mae'n cymaint o'r ddweud o gandau hynny. Mae'n gweld ni'n ddweud o'r penderfyniad, ond mae defnyddio myfyrdd yn yr hyffordd fel hyffordd yn mewn gwirio. yna y dyfodol, ond mae'n gweithio i amddangos yn ymddangos y dyn nhw. Yna yw'r ddweud, oherwydd. Mark O Silver dweud o'r potensiol cynyddiadau. Felly mae'r ddweud o'r Mitchie Batraig, ond mae'n dweud o'r ddim yn gweithio. Mae'n ddiweddio yn amser, mae'n ddysgu'r ddechrau. Mae'n ddweud o'r potensiol. O'r ddweud o'r olygu'r Fyllaf, mae'n ddweud o'r ddweud o'r ddweud a gyda chi'r cwmaint yn dadodol i fynd yma. Mae cyd-dweudol wedi ei fawr … … rwy'n rhaid i gafodd y Bwyllfa Sellod, ac Wachos Silver dyna erbyn yna ddiweddmiaethau… … mae'n ddweud gan'r yr hyn wedi eu cyfarwyddon… … ac hi'n dweud yn llwyd gan'r pwbl Casffordd yng Nghymru… … yn gyfin oedd yr ysgol… … pan yn cael eu gwerthod yn oed yn gwneud… … ac eich rhaid i g ymwneud yr oed, ac fydd yn dweud… Waite, are we all like to bring players in you know? I'd have liked batch wire, I have to say it. I know that a lot of people say no thank you and all that. I would have liked them because he's a specialist forward. I think he's probably better than what we have. He's mobile, bought the numbers for them in the end. OK, see you later lad, thanks. I can't fully understand why. You know, it's always good to freshen up the squad at the end of the window but that's the way it is. You know, they worked on getting players out the door ac mae'n ersgol eich cwestiynau i'r squad er mwyn i gael ei ddefnyddio i directio'r higliad ysgol. Mae'r ddefnyddio y bydd y cyflug yng Nghymru, ac mae'r ddefnyddio i'r ddeibnod ag y Llywodraeth, ac mae'n mynd i gael gyda'i ddisgu gael'u ddau ac mae'n bach wiresaidd i'r Fearnod. Mae gennym ei ddim os y ddefnyddio i'r byw fÙg. Mae'i fednod o'r brakep o'r dairylawn. Mae'n ar quarantine a gwneud eich bwysig Mae Kevin Morales has moved permanent that didn't happen and then obviously there was loans for the likes of Benny Benningamy who went off to Wigan, Callum Connolly who came from Wigan and went out of Bolton and Anthony Evans who went to Blackpool on loan. So good for those young lads, get out there, get some game time, be interesting to see Benningamy, I think you know his brother orad, he plays for Wigan doesn't he's made his debut in the first team as well but I think for Benny Benningamy I think it'll be a really good test to get in that division you know and play every week. He's been he was injured which probably didn't do many favours in pre-season, he got injured while he was in Austria and he didn't recover till probably October time or something and he missed obviously the pre-season and he missed those games where you can really make an impression on Marco Silva so he needs to go out and play games now, yes he's been training with the first team, I think he's only played two 90-minute games for the 23s since he's been back so quite clearly lacking match practice so it'll be good for him, go for Anthony Evans to go out you know he's been doing really well at 23 levels so going to league football you know get a feel for it and obviously Callum Connolly was excellent in IPTwitch last season and come back in and went back out, went to Wigan and was in and out the team really for him to go off to Bolton, obviously Joe Williams is at Bolton as well he's another player who ever didn't want to lose in this window so we'll have to see what happens with all of those, Marco Silva did say he anticipated very tough games and Wolves were really good on the counter attack, they are, they use a low block and break really quickly so Evan's going to have to watch that, have to watch Reuben Nevers with his long passes into channels and they get in behind you so it'll be a very tough game and again the reason why we need Leighton Bain's fit really but you know what that what'll be, will be, won't it and finally just want to talk about the speed cycle, this is a charity event that's been set up by Everton and the family of Gary Speed, Gary Speed's mum and dad, the aim is to raise £65,000 for Everton in the community, mental health for the people's project, people's place project you know and obviously the goal for that is £1 million the fundraising but they're trying to raise £65,000 for this because Gary Speed played 65 times for Everton, basically going to start up at St James's Park, ride through Ellen Road, Leeds United, then ride to Sheffield United, then ride to Bolton and then finally finishing at Gullison Park, Everton are looking for, there's 20 places available but you need to raise a minimum of £2,000 sponsorship so good luck if there's 20 people out there that want to go and do it, it's fantastic, Everton in the community incredible charity we should be all proud of and this is a really really important thing you know to try to get this mental health people's place project up and running you know obviously Gary Speed himself suffered you know with mental health unfortunately resulted in taking his own life so if we can do any little bit of that anything then it might just be sponsoring someone might just be giving a couple of quid that you've got then it's a fantastic thing because we should be really really proud of Everton in the community that is it if you haven't subscribed please do so only takes a second if you want more videos get over to patron and let's hope it's a three point weekend for the blue she later on soffitiv.


What's up everybody? Jason here for jaspyskatesprac.com 2021 flawless collegiate football just sold out with this one box break Pikachu number 15 random number block that Features these Steelers chargers dolphins falcons packers Eagles Broncos Rams Saints and Titans pay a fracture the price to get a piece of all These teams in that break here, and we go by the first number on the left side of the serve number dash And of course any one of ones go to spot one and any redemption go to spot zero Etc. Etc So here you go here's the dice really as a customer names Rota down to Kyle and we got zero through nine Roll the dice and we got ourselves a two and a four six times one two three four five six Bo Josh at the top down to Josh at the bottom Those are the teams that are part of the random number block six times one two three four five Five down to one All right, so Josh you have five six nine Zero mark with eight Kyle with three Josh with four Ryan with H a ran each with Ryan with a ran each with seven Rota with two and Josh One's for any one of ones there. So again guys I'm gonna end this video upload it and then the separate video guys will start the break itself. Good luck everybody


Everyone, Basil, everyone, this is the Tiger Financial News Network, 11am update, and this is Basil Chapman, just finished my show, the Tiger Conditions Hour, got my webinar coming up this afternoon. For if you want to go to the front page of TFN, check it out. We're looking at the Dow, up 150 at 35,408 now, just 230 years, so points away from an all-time high. It's amazing how it broke out, look at the weekly chart, nice action, got really good support in the 35,200, if anything, untoward should happen later today, yes, we do remain along the diamonds. We're looking at the S&P, S-P-AX.X, we're looking at the S&P doing another one-to-one to the upside, very nice, up 26 at 4,512. Having gone into the 4,500 areas is really important because 45,45.85 was the all-time high and it's breaking out in the weekly chart. This is really good action, QQQ's even on moving, look at this, you've got Google finally poking up after coming down in the winter above the Chapman Wave inside track repellent zone, so Google's up 13, this is a good action, you want to see some of these fang stocks come back to life again, so the QQQ's very strong action up at 37, 374, 85 up 2.20, if it doesn't make a one-to-one to the upside, shoddy into the 376s by Wednesday or Thursday, we're going to be watching this really closely, 371 is good support at the moment, short-term, IWM is just being dragged up 29 cents at 225.31, it's got too many stocks that are involved in the weakness that we're looking at, but if you're looking at gold, the gold is trying to rally, it's up seven, silver's the one that had the bigger move, silver is the one that is up 74 cents, holding in leg D very strongly, so keep an eye on that, high-grade copy, yes it's getting to the double top area, but it hasn't double top yet, but it's acting really well so far, Crudo is the one we're going to be watching because there's a lot of evidence that suggests it's just starting to slow down its upside move unless it suddenly cracks into the 85, that'll be amazing for Crudo to do that now rather than to have a little bit of a pullback and then do that, TLT is what you're watching, look at this, TLT pulls back, yields are going up again, this is something very important, so all I can say is the DAO is up 153, if this afternoon, after two, two-thirty, somewhere around there, the DAO is still up over a hundred points, it's going to be forcing people to buy it into the close, so we're going to be watching that closely to see what happens, there are certain areas that are being bought and that's important, stay tuned, you've got Larry Pizavento coming up, you've got Thinkerswerp, then you've got Steve Rose, Dave White, Tom O'Brien, I'll be back with Tom O'Brien this afternoon, don't forget my webinar at four o'clock for subscribers, you can become a subscriber, check out the front page of TFNN, see you later, have a great day.


All right, if Veronica doesn't come back, one thing I forgot on the quarterly, or the agenda is an EMS update. But if she doesn't come back, we'll forego that part. All right, so I guess we're gonna start with the budget reviews, and we can go with the fire department, have most of you had a chance to look at the fire department budget? I mean, we seem to be on pace with where we should be, and I don't see any glaring. Some lines are over budget, some lines are under budget, but it appears to be balancing out well. I don't know if I have an extra on me here. One, because we break out the repairs now per vehicle, used to be just in a general category, but on our rescue truck, that's abnormally high, and that's more of an anomaly than a norm. We had to have some work done on it, had to go back to basically the manufacturer, and in the process of trying to get the seat repaired, and the light tower repaired, which we thought was just a light bulb replacement and a bad shock, it turned out that the light tower had the motherboard and the base unit go bad, and the light head was discontinued, and we could not get a replacement light head, and so then the option was to go to LED, but then you can't mix and match LED and non-LED. So basically it was a light head upgrade and a brand new scene. And so those two items alone were close to 10 grand at repair, and then there was also the bodywork, which was caused by tire chain failure. So that's not normal, but it's at 17,000 right now. Yeah, just. So any questions on the fire? See anything? Issues? All right, I'm gonna look at the ambulance one real quick. I know all the bills have gone out, but I think here I see that at least as of March, it could have came in. These are all these numbers are through March. Callis still has a chunk of money and Marshfield has a chunk of money, and whether it came in yet, I don't know, because we present numbers that the board has reviewed and we stopped at the end of March. About three quarters of the way down, the two transfers from capital to operating and from ambulance to operating? Those are, we do that every month. All of our ambulance income comes in and then we split it 25, 75. So 25 goes to pay ambulance billing, paramedic intercepts, and what's the other one? I've drawn a blank and then the rest goes to capital. All contingency, I take that back. Contingency, that's right. We pay all the other stuff first, then what's left gets split 25, 75. Once contingency hits its max, then we no longer can contribute to contingency and it all goes to capital. No, actually both of those are contingency. No, actually both of those are transferred to operating. Right, because we pay for paramedics. So that's a 25%? Yes. But that money comes out over the top, but we have to transfer it from ambulance savings to our checking account to pay for paramedic intercepts, ambulance billing, and that's it. Yeah, right? Yeah, make sure our contingency's up. Yeah, paramedic intercepts and ambulance billing get paid off the top and then what's left gets split 25, 75. So I think what you're looking at is the transfer. You're saying they're from ambulance revenue to checking? I'm looking at 4980 and 4990 and they are labeled transfer from capital to operating and transfer from am to opera. Right, so the transfer from capital to operating is when we make a motion to purchase whatever it is, new computer printer, $4,000 and we make that a capital expense, all of our checks get written out of operations checking. We don't have a checkbook for capital or any other thing. So we then have to move the money over to cover those expenses. Okay. And so like as an example, one of them that we picked up on last month that we noticed we didn't make the transfers, we made them on paper but we physically didn't move the money from one account to the other. And so like donations as an example, that number is high right now but there are things we paid for with the holiday gift drive we do and that kind of stuff that was paid for out of operations checking and now the money has to move over to take its place. So moving along I guess, to date this year, the ambulance has brought in 145,655 dollars, I should say since last July, not calendar, fiscal. Through March 31st, early into March. Or technically March 26th. Then on the capital plan, I was waiting to get one last price to be able to close out what it was that I got. And I know I'm cutting it close to that 25,000 that we're allowed to spend for capital every year. And it might be a little bit over that but I don't have that number. And it's really because of the radios. I purchased two radios last May or even before May thinking they would be in for last year's budget. Well, they didn't come in until this year's budget. So that, you know, it's when we get the bills is when we got to account for it, unfortunately. So that, I know I'm getting close exactly where it's gonna fall, I don't know but I know I gotta technically come and see you folks if I exceed 25,000. And then on the call review, I did something different. I tried to go back to fiscal year and present two years because I know they wanted to see like historically last year to this year. So I tried to do the same time period, July 22 to March of 23 and then July of 23 to March of 24. And so you can see the side by side comparisons of where we are with going to Calis, East Montpelier, Woodbury, Cabot, wherever. And then I also broke it down separately just for the first three months of this year which I think Veronica was gonna kind of just mention it. So you could see where we are this year today. And for this calendar year, we've had 132 medical calls and 63 fire calls. And some of the fire calls, there's an increase between Calis and East Montpelier and it's primarily driven by us helping them more with lifting and just being there to support them and get stuff and help them where we're doing that more often and they're also gonna reciprocate by coming with us more to fire calls because we all recognize that fire fighting is a very dangerous occupation. And usually when the fire department goes out, the ambulance doesn't always come along. And I'm looking to try and change that and have them come out because I hate to say accidents can happen and it would be nice to have an ambulance there to be ready in case one of us gets hurt. Any questions on the call logs? Okay, next item, new truck update. I'll let you talk about that one, Paul. Well, okay, we have good news and bad news. Bad news is we wanted the truck here for tonight's meeting but it didn't get here. The truck is coming Tuesday at two o'clock. It's coming Tuesday, two o'clock and it will be delivered and we'll be practicing with it Tuesday afternoon. But if anybody, any of the members want to come in when it arrives, you're certainly are welcome to come down. But at two o'clock, around two o'clock, he's driving it up from the Albany way because it'll be up here in the afternoon. It's coming Tuesday. There's two parts. There's two little brackets that they're waiting for. I told them today, we gotta get it up here. We're gonna be tracking it on Google Maps or something so we can see what it shows over the border. They're all asking, they're all asking, yeah. I'm sure it won't get a good response. Yeah, but anyway, that's the update because it's a nice looking truck. I can show pictures of it, actually, if you're interested in seeing it. The eclipse tied it up, the eclipse tied it up. Yeah, right, yeah. They tried to get out, yeah, that's right. They tried to get out on Monday, but the roads didn't allow it. So that's all I got for that. Okay.  And we paid for several things to fix on this building that we found out later should have been brought to East Montpellier's detention and that there's funding to support some of these repairs with this building in particular and how that works with Calis East Montpellier and Fire Department. I've never seen anything that says 60, 20, 20 or 100% East Montpellier and we're 80. I don't know how the breakdown works, but we do have a, I think it's a decent wood pallet repair coming up where the firebox is totally burned out. And it's the estimates we got are $4,000 to $5,000. And we just want to know how to proceed. I mean, we're gonna make arrangements to have it fixed, but then who's funding what share and how that's gonna take place. If we can figure that out even moving forward for future projects along those lines. Why isn't it the 1-3-2-3? Doesn't it fall into the 1-3-2-3? Exactly, okay, all right. I mean, as far as I know. Right, but do we help, what do we contribute a portion of that to? And I don't know, that's, so I bring it up as more of a question. So we know. Tell you about the firebox. What's that? Yeah. Holy Calis is involved. Well, they own the building. So you own part of the building? Yeah, yeah, that's why I thought we paid a third of the expenses for the upheaval. So you're, you're not quite. I'm not sure. Okay. That's why I was on the show. I've been here for two years, I've been here, it hasn't come up, so I'm not sure. Pretty sure. That is my, that's my hot take on it. And we've seen from recent events that it's a good idea to go back and look at the documents and see what they say. And since we are moving right along and I know EMS is not going to be here to give any kind of update that quick. I know there's been discussion about the interlocal and possibly revisiting that again. And I don't know if there's still talk about doing that. Yeah, I do think that thing needs to be fixed, but we seem to be getting along. Could we put, just put it off to the next meeting. I'll try to pay attention. I'm trying to remember what the issue was. It seems to me we need to have one process for if somebody wants to get out of the agreement and another process for if somebody wants to change the agreement. But I didn't think much beyond that. When's our next meeting? August. So, would it help if I wrote something up and made a proposal for that meeting? For a few, I don't even remember the details of the interlocal in my head. I'd have to go look it up. But there's that window that you have to make your claim that you want to open it, count backwards whatever it is, two months, three months, I forget. I'm sorry. I could be wrong, but I think I remember from the last meeting was that this was going to be something that each slug board worked on independently, independent slug board meetings, and then brought to each other. You made your memories much better than mine. I think that's as familiar. I don't think that's familiar. No. And my memory is that what you were wanting to modify and was to change back, I think, a modification that Callis had asked for some years ago to originate the agreement just continued unless somebody said we want to change it. And now it's worded so that it has to be approved by the slug boards to continue in force every once in a while. And then the question is, well, what if we forget to do it?  My concern was that when they changed the line, which I wasn't there, so I don't know, but it looks like they mush together two processes that should be separate. One is we'd like to propose a change to the agreement. Let's talk about it. The other is we quit. In that case, you want a process where we give you several years noted or at least a year's notice if not more and how that works. And I think those are two different processes. But somehow when this got written, they pushed them together. And I think we had a regular part saying, let's go back to the old process for how if you want to leave the agreement, that I thought worked well. And come up with a different process for how if we want to make a change to you. Okay. And in terms of the timing of the discussion, yeah, you're absolutely right that there's a window for making the modifications. And I don't think there's anything to keep us from discussing how we want to modify it well ahead of that window opening up so that we're prepared when that window opens up to go forward with something that we're real. Okay, well, I'll make a commitment to put it on an agenda and we'll work on it. Will you please do the same? Does it make sense with the way I told you that? I'm happy to try to write something up for you guys to react to. That would be better. So why don't we take the ball then? Thank you. And we'll give it to you. Thank you. Anything else to come before us? Nothing? Just a clarification, asking to open up the contract.  You ask to have the contract open and then throw that at us that moment. That opening the contract, there's a timeframe from the time you ask us that you ask to have this opened and there's a period of time before that can be opened. And I think those changes I think have to be, I think they just can't be thrown at us or we can't throw stuff at you at tonight's meeting. Hey, we wanna change this. How all of a sudden we... Oh, agree, great. I mean, we're all three of us are partners and if we wanna make a change, yeah. I think it's the ability to open that, the notice that you wanna open that contract is a timeframe that has to be met. That's the key, I think. But right now without that contract, I don't think anybody knows what it is. I'd like to see the three entities form a committee work together on it. Everybody's on the same page, their ideas and so we know what you see each other's time. Can the committee's kind of make board meetings more effective? Yes, that's just my personal opinion. Are you volunteering? I'll volunteer as a select board member. All right, I'll volunteer. Are you asking the fire department to have representation too? Yeah, okay. I'm sure we'll find three people to sit on that. Well, I think the board's gonna decide it. Right, right. They wanna do that. Yeah, our select board needs to decide on that. Yeah, right. So you're taking two people from each select board and two people from the fire department? Can we just take one from each? One, one, that's fine. It doesn't make any difference. That's good to me. One is because they're just representative from all three groups. I just think it's a better dialogue all around. Make it an official at a select board meeting. I'm gonna reach one of those at the board meeting. Fire department, so be it. So we'll put that on our agenda for the next board meeting to bring that up, see if that's possible. But the board accepts that, which I don't know why they wouldn't buy that. You mean it accepts the formation of a committee? Right, right. We can't just form the committee and work on it at the time. I would not commit the fire department to that. No, the board would have to be the one to do that. I would like to see that they would. However, I can't. I don't see us not doing that. Right, that way. But the board's gonna be the one to vote on that. Fire department board. Right. I see. We meet on Wednesday before the first Tuesday. The last Wednesday of the month is your board meeting. Yeah, so it'll be Wednesday. Because that's a big change from what we've done. It'll be the first Wednesday of May. And I don't wanna just jump into this thing. Jay may have some other opinion and other board members may feel they wanna speak at a board level rather than here on something like that. Don't you want something to react to? But the thing that is all we're talking about is bringing an idea. Yeah. Two of the three boards. I don't think there needs to be a motion officially from any of the organizations to do it just unofficially form a committee. We're just talking about creating something that everybody can react to. I think it's good for us. Well, I think, and again, if you do that, you gotta open the contract. I believe that the language that we're talking about changing doesn't change the terms of the length of time for notice that, I don't think it would affect opening the contract or the length of time of notification. I think the languages would not, is that correct? And the prior to the notify, that there would be some sort of individual understanding that this was the thing that we were hoping to do and that we could stretch the whole process. We start the process once we at least have something that we can talk about, something concrete to talk about and that they're proposing just three of us getting together to come up with something that we can just give to everybody and say, what do you think? Let's use this as a starting point for the discussion. If you folks as a select board on your own want to sit there and discuss the interlocal and things that you want to see changed, that can happen in anything. You can have your little discussion. Make up your list. When it's called in a question, you bring your list. We might have changes we want to see at this point. And then East Montpelier has their own changes and we hash them out and come to an agreement. You know, that's when meetings are worn. But yeah, I mean, there's no reason why you can't discuss on your own what things you'd love to see changed with the interlocal and when the time comes we have a meeting and hash it out. The committee of three can probably get it done and then just present it to the main units. It's like one for Calus, one for East Montpelier, one for the party department.  Well, I mean, I want to stress that it's important that all three groups sit down when decisions are being made. Because one of the things, sometimes we feel like, you know, I hate to say it, but the deck can sometimes be stacked against one group or another based on whether it's separate meetings or private agendas. And all of a sudden two groups get together and say, this is what we're doing. And then it gets force fed on the third group. And you know, we want to make sure that we all agree with the changes and what they are so that we're all happy and not where all of a sudden I'm working with East Montpelier saying, you know, we think Calus should do this.  But I think all you're describing would prevent that. That's exactly what I'm prescribing so it would not happen. Right. So we come up with whoever it is, comes up with some language, disseminates it to everybody, gives everybody lots of time to think about it, talk about it, and then we all come together and talk.  Right. I mean, I knew now that inter-local agreement had some language that was kind of confusing. And it's getting more and quite sure, when does the date start? How long, you know, so clarifying a lot of that stuff would be up. I think it's, I guess, we done? Want to make a motion ahead of the meeting? Sure. Well, we don't have the ambulance people here, so I think the lesson could do right now. Yeah. All right, thank you for coming. Okay. I know what the question is. We're preparing all this. Walk us through it. Thanks for preparing all this, and walk us through it. Yeah.