John's Remote Work Journey
00:00:17
Speaker
Welcome, John. We are glad that this is actually a distance and remote thing because you started coughing already. Yeah, we're pre-configured for remote work as well.
00:00:29
Speaker
Yeah. Yeah. Well, I've been quite lucky. I haven't really been affected too much about the virus because I mean, I've been working remote for ever since around about, I guess, twenty twenty twenty ten mostly. I think I had a year and a bit where I was just over a year when I was working in a bank when I was I couldn't do remote.
00:00:54
Speaker
But yeah, like one year out of the last nine, no, one year out of the last 10, I've been remote. Although that did include a lot of traveling, so... Which... You were literally remote at that point. Literally very, very remote, yeah. Traveling all over the world. Every time somebody wants you somewhere, you just escape from there and go to some other place to be remote. Yes, hopefully, ideally, yes. Although... The closure pimping out.
00:01:21
Speaker
If you're not careful, you end up being on call 24 hours a day. If you go the wrong way around the world, then you're always available. If you go the other way, then it's a lot easier.
COVID-19 Impact in the UK
00:01:34
Speaker
How's the situation in the UK now? Which place? I'm still in the UK. I'm still in London, which is a hotbed for the cases in coronavirus cases that have been reported.
00:01:49
Speaker
So yeah, I mean, we're doing quite well. We're keeping up with America, so we're doing an impressive amount of keeping up with cases and going out and ignoring social distancing. Although in the last few weeks, people have finally actually realized it's a worldwide pandemic and actually starting to take it a bit more seriously now.
00:02:11
Speaker
I thought it was the other way around because I'm thinking when it started, people were a bit serious, but later I think this slowly getting complacent or annoyed and then things became much, much worse. Well, when the sun came out. Oh yeah, that's the problem for most of you people, you know. And as you can see on the webcam, I've been out in the garden. I certainly haven't been on for very long distance rides or anything, but I've been out in the garden. But yeah, as soon as the sun comes out, then people start talking about wanting to
00:02:41
Speaker
to go and lift the curfew, lift the lockdown, as if it's some kind of punishment rather than actually protecting your life. But I've been doing quite a bit of help for neighbors and going around to neighbors, helping them, donating my excess supply of cat food to neighbors that couldn't find them as well. I still think we have the massive toilet paper shortage.
00:03:09
Speaker
I guess you've got cats though, so you can always use them. I use the cat litter. The actual cats. They do lick themselves clean. Exactly, they'll all work out. So they will cut down the cat food as well. Yeah, I'd have to catch them first, and I think once I don't eat them, I'd never see them again.
00:03:36
Speaker
But i guess i was already quite prepared because i'd already stocked up for brexit anyway so it's kind of helped me. Yeah i've been prepping for the end of the world already so before the end of the world actually happened. It's two end of the world's for you isn't it really. I mean one end of the world is being slightly put off now by this rona virus but you know the it's still apparently it's still coming you know they've got to make the decision in june i think.
00:04:05
Speaker
Well, they'll both come back by the end of the year, so it's just which comes back first to kill off more people.
Brexit and UK Politics
00:04:15
Speaker
I think people are being more sensible now. Haven't they started to break it already, though? They didn't join the ordering with the EU.
00:04:24
Speaker
Oh yeah, yeah. It's being completely incompetent. I mean, we've kind of unnecessarily put people in danger by not getting resources that we could have got just because they're from the EU. And we'd rather import things from Turkey, which is ironic because that's exactly the last thing they wanted to do when they wanted to do Brexit. Yeah, I know. What's going on there?
00:04:50
Speaker
Well, it wasn't meant to make sense, John. I mean, you know, I mean, they made a huge big thing about a plane and then people started out and they claimed there was like this amount of stuff in the plane. But then like people looked at the pictures of the plane and actually that plane only carries half can only carry half the amount that they were claiming that actually came into the country. And it's only enough for like a day. It's like a day's worth of supplies. It's like, what is the point of that?
00:05:19
Speaker
Um, but, uh, there we go. Yeah. So, um, I guess 10 years of love. Yeah. People still love the idiots in charge. So, uh, that's weird though, isn't it? I mean, yeah, 10 years of consistent cutting of the health services.
Cycling Adventures in the UK
00:05:34
Speaker
But you're John, you're like a super cyclist, right? So how are you keeping up with the cycling and your health? Well, I wasn't. Because you don't see the top part of me. I tilt the camera down, then you can see I'm a bit rounder than I used to be last year.
00:05:50
Speaker
Yeah. I mean, last year it was great because I did, um, I did a ride across Britain. So I did, uh, literally rode from, uh, Lanza into Johnna Groats in nine days, which is how long is that? How many kilometers? It's like a hundred miles every day, which is about 170, 175 kilometers. In, in, in, in proper terms, like kilometers. There's like 175 kilometers we were doing on average a day. Cause it's just, it was just over a hundred miles every day.
00:06:19
Speaker
It's like 109 miles every day and 175 kilometers. Okay. But UK is not like Netherlands, right? We have like plenty of gradient and everything. In Netherlands you just sit in one end and then just pedal for a couple of times and you're in Belgium, you know? Yeah. I did live in Amsterdam for three years and I enjoyed the flatness of the country. And then you have to go to, I think you have to go to a mass drift and then you find a hill.
00:06:46
Speaker
It is one hill, yes. And yes, it was quite a revelation when you go from, you go on the train from Amsterdam into Germany. I see all these castles on these big hills. It was like, it was really nice. I just just stuck my head out of the train for like three hours and enjoyed, whoa, hills. I used to have these. It's great.
00:07:05
Speaker
Yeah, but aren't you using something like I saw a couple of people who are into cycling, they have like this digital thingy that you can just bike with other people virtually remotely or something. Yeah, it's like, I guess it's like these massive online video games, but for cycling. And yeah, there's a lot of
00:07:23
Speaker
hype around those as well. They've been around for a while, but obviously now there's a big thing. I just, I just, I have a little, what you call a trainer for the bike and it's just like a little stand you put your bike in, so it just lifts the back wheel off the ground and you just sit there and just pedal. And I don't really do the games, but I'll watch, I got Disney, so I'll just watch the Star Wars movies.
00:07:45
Speaker
I do exactly the same thing, John, actually. I've got it in the garage for the laptops. I tend to watch which hickey talks because I'm a suck ass, you know. Well, that's an idea, actually. Yeah, I've kind of watched. I've nearly all I've watched all the Mandalorian or the first seven episodes of that already, which I really enjoy. And yeah, I've still got the I've still got a couple of movies I haven't watched and they still got the very latest movie to come out, like the the ninth Star Wars movie.
00:08:15
Speaker
Yeah. The last, you know, the rise of Skywalker or something. Yeah. Yeah. So that's that's not, by the way, it's recorded. Yeah, I know. But yeah, it
Introducing John Stevenson
00:08:27
Speaker
We haven't said welcome to Deafen and this is John, by the way. Oh, yeah. Hello. Welcome to Deafen. This is episode number 59 and we are talking with John Stevenson. So I think we should get started with, well, we already got started, so fuck it. So I think we should just say the most important question to close the podcast. E-Max are some other shit, John, so we can shit on Raynow. E-Max is my life. That's why you were invited on to the show. Now I understand.
00:08:57
Speaker
Well, I should clarify that. I mean, I wasn't entirely convinced with Emacs at first, and it did take me a while. I think I picked it up at university, but then I think it was when I started learning Clojure, I decided to learn Emacs at the same time.
00:09:14
Speaker
And I didn't really get too far away. It was really useful. I liked it. It was nice, lightweight. Did a lot of useful things. But I didn't really fall in love with it until, to be honest, until I started using Space Max.
Embracing Emacs and Productivity Tools
00:09:27
Speaker
And that converted me over to the other dark side of Vim. And so now I'm happily using Vim and Emacs together in the happy land of Space Max.
00:09:38
Speaker
Yeah, I think I really like the distribution space max. I'm trying with different things like Doom and a couple of other things, but I've been using space max forever or since the beginning.
00:09:49
Speaker
And I don't know, I think the shortcuts and everything, muscle memory, and then, fuck it, I'm going to switch to this one. So it's a bit wonky with all the developed branch constantly. But otherwise, it's super awesome, though. Do you spend two or three hours a day configuring Emacs, John?
00:10:10
Speaker
Well, this is it. Because I use Space Max, I do not have to at all. In fact, I actually set it up so that if I'm going to install it from scratch, I'll install the usual Java enclosure stuff for closure development, install Emacs, and then I've just got to
00:10:34
Speaker
And then I've just got two Git commits and then I've got everything set up exactly how I want it to. One Git clone is the Spacemax repository and then I've just got my own configuration which is based on the Spacemax configuration with a few extra things.
00:10:55
Speaker
And it just works, and it's all set up for broadcast, so it's all nicely, it's a nice white background, so it's easy to read, it's got a nice big font, so it's easy to read on small devices when you're broadcasting as well. And it's got all the extra bits I put into Space Max, although most of those are actually, I've just done those as pull requests into the project.
00:11:19
Speaker
So it's nice to be able to be a contributor to that project that I'm using every day as well. And it's also, I keep getting more and more into org mode as well. So I just, uh, yeah, finally, it's just mental.
00:11:36
Speaker
I see you've got a whiteboard with all kinds of things on the background there. Is that usually, is that a kind of like 2D version of Org Mode, is it? Yeah, I've got a whiteboard and then the walls have got paint on as well. So I've just cleaned the wall. Well, I've cleaned those walls, but I've got these walls as well, which has got all my... So you can write there. Yeah. Nice. We've got fancy paint. OK. Yeah, paint it all on. I've got that ages ago. What kind of paint is that, by the way?
00:12:08
Speaker
The one that you can write on. Is it just a standard gloss? No, I think I just Google for it and you can get special paint that's just basically you paint it on the wall and it turns the wall into a whiteboard. Right. Nice. But yeah, I think you can also get a plastic covering as well. Yeah, I got that one. You just stick it on, which probably better. It's easier.
00:12:28
Speaker
I think we had this standard typical, you know, Ikea, what you call like a poster thingy in every home. So so we had that one. I just covered it with this whiteboard making foil, whatever that is called. OK, so so I turned one of the quote unquote paintings with photos with the thing. That's that's that was pretty well, actually. So maybe slightly less effort than painting the whole thing.
00:12:56
Speaker
Yeah, it did take me a while. And I guess with painting, also, if you do it after you've set your desk up, then you have to move all your desk out of the way. Yeah, you can't move the desk around into a different room and then you lose your whiteboard. Well, that's true. I was thinking of moving my desk into another room, but I just haven't got around to it. My whiteboard is here, so everything is set up to this little tiny room, which is fine during the winter because it's nice and cool, but it does get a little bit warmer in the summer.
00:13:24
Speaker
Yeah. But I guess it encouraged me to actually get some work done before like four o'clock in the afternoon when it starts getting warm and then I could just watch Star Wars for the rest of the day. Excellent. Excellent.
00:13:39
Speaker
Yeah, I mean, coming back to Space Max things, I think it became really like a nice distribution, I think. The first thing, I only have one contribution, which is basically starting the closure layer, and then I just disappear, and then I keep using it. So that's my one contribution there. Well, two actually, because I also fixed some Latin
00:13:58
Speaker
word somewhere in the thing. I have like two contributions in Space Max and that means, yeah, I'm done. I peeked my- You corrected the spelling of this ex machina.
00:14:10
Speaker
Yeah, something like that. No, it's about something like the Lord, something like a Trinity, whatever. Okay. And then I fixed that one. And then I love the way that I got a special mention in the contributor thing saying, I don't know, Latin language, whatever. Ah, nice. I think Guy or something. Yeah, yeah.
00:14:29
Speaker
I think I've done about 30 pull requests being accepted in there as well. They're all in the changelog as well. A lot of them are fairly simple key bindings, user experience stuff. There's a few things. I've still got to
00:14:47
Speaker
I guess the the benefit and the limitation of Space Max is you don't really end up writing that much E-Lisp, so I haven't really done that much. But it does allow me to do it. It's like it's a classic definition of standing on the shoulder of giants. You get to do so much more than you would do otherwise.
00:15:06
Speaker
Well, I noticed that this is becoming like a bit of a sort of PR waving contest now. Yeah. Well, I haven't raised that. I haven't started talking about my book yet. So which is is we shall send you a free copy. Oh, obviously. So it's along with everybody else because it's on the Web. So we'll put a link in the show notes. Excellent stuff.
00:15:30
Speaker
Most of the people, they do say that learning Emacs for beginners is pretty difficult. But you've been doing all this beginner screencasts and book with Space Max. So how is it working when you're teaching other people all this stuff? I think it's really interesting, because I guess I used to do consultancy many, many years ago, like when I first came out of university back in 97, given my age away there.
00:15:58
Speaker
Yeah i was thinking so too then i really liked kind of helping people understand things and speakers i learned so i can learn so much from doing that i don't always feel like i'm learning a huge amount of stuff or i feel like i've got a lot of gaps when i'm just sitting down coding.
00:16:15
Speaker
But when I'm actually encouraged or even forced to go and explain things to people, then I tend to pick up a lot more things or at least I know where the gaps are. And it really does help. I think it's really helped grow my own understanding certainly over the last few years. And so I do a lot of
00:16:35
Speaker
yeah writing down trying to explain how to use things simply because i forget things i think well how do i know i did that and i get really annoyed when i've done something and i just can't remember how to do it i can't be bothered to think about how i did it again i just want to know how i did it last time.
00:16:51
Speaker
So that's why I started doing blogging, just to write down all the things I've kind of done. And then that turned into
Teaching and Technology
00:17:00
Speaker
books. And then I started doing presentations and conference talks. So you end up writing stuff down there as well. And that all merged into doing, I kind of got a bit bored of doing talks. So I ended up doing workshops. And I think I found that people
00:17:17
Speaker
Fewer people submitted workshops so they're actually easier to get into conferences if you actually submit a workshop around the talk. And I found them more fun as well because you can kind of do you can do all the work upfront in a workshop and then when you actually give the workshop you kind of point them at a web page and kind of walk through a few things and it's a lot easier actually on the day.
00:17:37
Speaker
Um, but, uh, when I was doing, I used to do something called hack the tower, which is a Saturday day. Uh, and it was kind of like an all day, it's all day hack day, uh, like a really long dojo kind of thing. And we just, um, I just spend the day learning how to do closure. Um,
00:17:57
Speaker
And it was great fun. There was ways to get people from the London Java community and the Scala community and the closure community to come along. And we'd all break up into groups and go off and do our little projects. And I was doing a little kind of closure workshop during the day and making most of it up as we were going along.
00:18:18
Speaker
Unless I could find a really, usually I found a really good tutorial on the way in to actually run the event or the night before.
Functional Programming Exploration
00:18:28
Speaker
And then we'd kind of walk through the tutorial and trying to figure out how it works and I'd try and explain how it all worked to everybody else. And it was a great learning experience. I learnt so much more about Closure by doing those things than anything else I was trying.
00:18:43
Speaker
So how did you see the people receiving it? Because you've been teaching for, I don't know, how long ago? Oh, God. Well, I started running the Scala Dojo back in 2009. That we shall not speak about. Well, Scala was my gateway drug into closure.
00:19:02
Speaker
Yeah. Well, I suppose that's not entirely true. Just a brief step back. My gateway drug into functional programming was Haskell. Maybe you should start from the beginning. Yeah, come on. That would be a nice... Yeah, I could do that. We've got time. We've got time. Everyone's at home. It's okay.
00:19:21
Speaker
This is going to be the longest podcast ever, isn't it? Of course. Just go and text my wife to get me into the video. Hang on. We'll just start streaming. It will never end. It's like a public address system. It just keeps on going. Close your propaganda.
00:19:37
Speaker
I could once I get going, I could talk forever. Yeah. Yeah, I guess the the peak of interest into the functional programming, I guess, was the the catalyst for getting me into closure. And that all started with I think mostly with Haskell University. And I think it was because it took me three months to actually figure out like 10 lines of code in Haskell and actually understand what they meant and actually be able to write my own bit of Haskell.
00:20:03
Speaker
But then because it was a university course like you do three months and then you move on to the next subject. And so I didn't really I kind of felt like that kind of got buried in the back of my brain somewhere.
00:20:16
Speaker
And I think we did actually do a little bit of this, but it was taught so badly that I didn't really, I'd kind of forgotten it. I think I blocked it out of my mind. And then I ended up doing Java for a living because it was at that time. It was a normal human being, basically. Well, it was the coolest thing to do. Everybody wanted to do Java. And this was in, this would have been in 97.
00:20:44
Speaker
I was excited to do it because it was so much easier than using C++ and C because you had this huge, great big API to use and it just did stuff for you. It had the incident built in, which was, I mean, yes, it did. Yes. And then we put XML on top of it and kind of scared everybody.
00:21:05
Speaker
We put XML everywhere. Yes, but you talked about that last time as well. I don't think there's any XML in Java though, is there? I mean, apart from the API. I don't think you have to do any XML in Java. Yeah, that's true. I was just around the early 2000s where it was just everywhere. People were getting obsessed with it. I remember, was it EBXML? Which is enterprise XML.
00:21:35
Speaker
And that was from Sun, so it was the same team. There was a fix ML, wasn't there? Because I think you were in banking at that time, maybe around that time, because fix ML was the big language for financial services.
00:21:52
Speaker
OK, I seem to vaguely remember. I didn't really do much financial stuff until recently, actually. But but yeah, it was like I was well aware of all the stuff like the big enterprise stuff that they were doing. And I actually did like EJBs at one point. But I kind of I'm a little the session beans, John, they weren't too bad.
00:22:18
Speaker
Yeah, I think session means were OK. They were often the least used ones there. Oh, yeah, absolutely. The stateful session beams with container managed persistence. Oh, yes. Yes. Yes. Take you back there. CMP means. They were they were guaranteed job for life doing that because nobody could figure out. Why are you only getting three transactions a second? Yeah, OK. You got three transactions a second.
00:22:51
Speaker
Yes, I think I lived in the world of Java for until about 2010, so it was quite a while. And I think I just got completely bored of Java. I felt there was something missing because you're just doing the same things over and over again. And I guess everybody kind of gets this who's got a long career in this. Even if you do different things in the same language, it's more interesting, but you tend to end up doing the same things in the same language.
00:23:20
Speaker
It just gets you want something to refresh your own motivation. Do you remember, I don't know if you were, it was probably around that time where there was a bunch of Lambda proposals for Java. And there was one big kerfuffle where Lambdas were proposed by some three or four like luminaries of the Java world, but it was killed.
00:23:41
Speaker
Um, and then eventually it came back, but some, you know, some, a different proposition came back, but that that's the, for me, that was the first time I'd kind of thought, Oh, you know, this, this program was just lacking something, you know? Oh yeah. That's what it is. It's lacking these lambdas.
00:23:57
Speaker
Yeah, I think around around I can't remember when Java 7 came out, but I remember a lot of discussion around then about all the things that people would like to put into Java. And I think that's when I think it's around about when people started thinking about other languages on the JVM and not just seeing the JVM, the Java virtual machine as a as a vehicle for just the Java language and people experimenting with things like JRuby and other languages.
00:24:24
Speaker
And it was interesting because I think it was just happened sometime after that. And then Microsoft came out with their .NET platform, which supported all their different languages. And I think it opened people's eyes out to. And I think it made the industry a huge.
00:24:41
Speaker
a huge boost for the industry, actually, because I used to live in a world where it was, oh, you either did Microsoft or you did Java. And that was the end of this discussion. And it was kind of boring. And now you've got every few months, oh, we should use this language. Oh, we should use this language. We should use this language. And yeah, I mean, I appreciate it. It's very confusing for
00:25:05
Speaker
people who are starting developing now but it's actually it gets developers to think and engineers to think about what's the right kind of thing to use for the thing that we're actually building and you don't always get that decision right because you don't always know everything but it's you've got the opportunity to actually build the right thing in the right language.
00:25:28
Speaker
Don't you think the fact that you've got choices is also in itself a kind of educational process in the sense that
00:25:37
Speaker
in the past with Java and Microsoft or whatever, or Java C-sharp, they were the only games in town for serious programmers. You didn't know what the trade-offs were. It was just basically, it was kind of a religious war almost. It wasn't a kind of, there was no rationale around it. There was no, oh, because of this feature and that function and that. So that, I think actually, that to me is why it's been such a good thing.
00:26:05
Speaker
this sort of blossoming of the language scape, because if you want to call it that, because you suddenly got choices and you've kind of got to think about, well, what are the trade offs exactly in fact?
00:26:17
Speaker
Yeah. And to me, that is what the job of a software engineer is all about. I mean, it's not, it's not being able to program, not being the world's expert on a particular programming language. It's being able to understand the constraints you're actually working in, both technical and business and financial, and actually producing a solution that doesn't make your company go bust. And hopefully it actually makes, keeps your business at least sustainable.
00:26:46
Speaker
and helps either the company do more or the people using the software do more and therefore generate more revenue.
00:26:54
Speaker
Do you think there's such a direct correlation there, though? I always feel like the choice of programming language is often, especially in a corporate world, completely disconnected from those business discussions. I know you're laughing, but that's almost like the day one conversation with the business people. I don't give a fuck what it's written in. Just make it do this. Isn't the major reason of businesses failing is not just the technology, right?
00:27:24
Speaker
So it's not like just because, oh, they picked C, so we're going to die. And usually that's not the problem. Maybe 5%, I don't know. Yeah, the choice of language is usually the least effect of a business to fail. Maybe it takes a lot of stick, though. It's a kind of victim. It's a kind of scapegoat that's easy to point at. Oh, yeah. Oh, totally, yeah. Because they wrote everything in closure, so we're dead. Yeah, exactly.
00:27:51
Speaker
Yeah. Yeah. I've seen that so many times, like we have to use this language and it's usually down to like the choice of language for a lot of companies is down to hiring. Yeah. The perception, or should I say the perception of hiring, because it's if, if they feel that they can't hire somebody for a language, they'll, they'll not accept it to go into production because how are we going to get somebody to do this? Oh my God. Oh, it's not as if somebody could actually learn how to use a language. And most of the time, even if you know a language,
00:28:21
Speaker
It doesn't guarantee you actually understand what somebody else has written, especially if they made a right hash of it. But isn't that the other part of it, though? I think you're right about there's a HR aspect to it, but there's also a kind of who in the technical community is in a position of authority. If those people
00:28:45
Speaker
actually know about languages, then they will tend to be more open to different languages. And if those people in authority are, you know, they're just Java people or, you know, they're just C sharp people, however, they're just like in a kind of like a zombie state in terms of languages. Maybe it's not as in their own intellect, but in terms of their perception of where languages are in terms of like the impact of a language
00:29:13
Speaker
good or minus, they will tend to just think about the hiring aspects of things and not actually anything to do with the intrinsic nature of that decision. Yeah, I think there's such a diverse amount of people inside the industry. It's like everybody's got lots of different concerns and constraints that they're worried about.
00:29:35
Speaker
I think the nice thing is that in general, the developer community is more aware of the fact that there are different languages out there and more keen to experiment with them and also more able to experiment
Programming Languages and Development
00:29:49
Speaker
with them as well. I mean, I think you could even claim that Git and GitHub has actually made languages more accessible because people are sharing example code.
00:29:58
Speaker
And you can download that code and try it out, which I think is also a huge enabler. Without that, I think it would have limited the amount of languages that people are prepared to go and try and go and try out. I still think some people are always going to go and try the latest thing. I mean, I know there's plenty of consultancies. They've gone out and they've gone to a company and then
00:30:23
Speaker
whoever's lead on that has decided, oh, we'll use this language because I want to understand how to use this language in a project. And that's a little bit risky. I mean, it's interesting for the people on that project, but as long as the company, the consultancy backs them up and actually will help them implement it if it all goes wrong in some other language, then that's okay. But
00:30:45
Speaker
Yeah, it's about managing risk. And some people do that better than others. And some people understand what the risks are more than others. And some people just say, well, let's do it. And I think with startups, there's a lot more startups these days as well. So they're much more open to trying different languages as well. I worked with quite a few startups using Clojure. And yeah, it's really served them well. I mean, there's usually somebody who's kind of realized
00:31:14
Speaker
the benefit of using that particular language for the startup and where it fits and where it doesn't fit in. So if you look at companies like USwitch, which are a big closure shop in London, but they also use other technologies for certain other parts of it. So there's a lot of the backend is all in closure, but some of the front end is still in JavaScript because they're not quite as confident
00:31:39
Speaker
as using ClosureScript in there because they haven't got the experience and they'd rather kind of put something that they're more confident in on the front end than risk like something that's a bit more unknown to them. Although if they had like a bunch of developer, if I had a JavaScript developer team that was very comfortable with ClosureScript then that would be a lot easier choice for them.
00:32:03
Speaker
It's a funny one, isn't it, with the front end, because I often think that, you know, you think about context to some extent as well, in the sense that if you're just thinking about everything as a programming problem, then you will tend to choose the language that suits that thing. But often there are like the designers or there are other people involved in that process that maybe are more familiar with JavaScript or more familiar with certain
00:32:29
Speaker
like UI frameworks or whatever that are conducive to an environment where JavaScript sort of wins. And in that case, it's not just those developers per se, but it's like everything, everything around them is like a JavaScript friendly or JavaScript ecosystem. So you change in that language is a much more complicated thing than just
00:32:53
Speaker
It's picking out a janga break you know it's like it's very difficult if you just pick up to change language unless you've got everything kind of that can play nicely in the ecosystem and you've got a problem.
00:33:05
Speaker
Well it does seem to be that i mean at the moment you could view the world as like, give me a javascript give me a jason api and i can change the world it's i think that is the case because it's just love it or hate it i mean jason has become like an ubiquitous,
00:33:24
Speaker
a way to throw information around that's fairly lightweight. It's not perfect in any sense of the word, but it is common. It's known to people. It's fairly easy to pick up. Although if you start looking at really big GeoJSON files that I've been looking at then, that's one way to slow down your REPL.
Data Formats and Performance
00:33:46
Speaker
Isn't that another world, the data formats world? I mean, not to get too far off topic, but anyway, everything's on topic today. There's a topic? Remind me of the topic. Yeah. Obviously, we started talking about XML before, then everyone's gone to JSON. But of course, Google said, no, we don't want to do that. We want to use protocol buffs. And then there's all this Avro stuff.
00:34:11
Speaker
And then, actually, I'll tell you something, and you've probably never heard, I don't know if you've even heard of this, but it has been going for a while. We're using a data format at work now called CBOR.
00:34:22
Speaker
Which is actually quite nice. It's kind of like a combination of... Is it a proprietary thing? No, no, it's a proper standard. It's an ITF standard. It was a shock to me, but it's something that cryptocurrency people use quite a lot. And it's basically a sort of binary format of JSON. Essentially, you can write... And David Nolan has written a sort of parse of a Clojure script for this as well now.
00:34:52
Speaker
But why not transit or something then? Well, because you want to address things like C, where there isn't a good transit library for C.
00:35:08
Speaker
Yeah, but everything's the other way around. Everything's got a sweet spot, dude. I think it's the same with- When your entire stack is closed, you're closed, you're on closed script and all that stuff, then it makes sense to use transaction. The ecosystem is often IoT environments, which are very small and they only have C. Getting a transit, a compiler, you'd have to write it from scratch.
00:35:33
Speaker
Yeah. But Min, you did write something from scratch or David wrote something from scratch for that format enclosure script. Well, not really. He just made small adaptions to a JavaScript library. So it's actually quite a small thing. It was just a very small shim on top of the thing that was existing there. But I'd look into it anyway because CBOR is very interesting. It's a standard protocol, but it's very lightweight and it integrates very well with Eden and other stuff like that.
00:36:03
Speaker
So just a little. That's interesting. Yeah, because I worked at a bank. I'm not going to say which one will figure it out. It was it was the world's biggest bank to protect the guilty innocent.
00:36:18
Speaker
And it was fairly recently, so I did have the pleasure of actually using Closure. I mean, that is, that's the reason I took their job is because it was a, it's a Closure team and some of the Closure, there was, we're also using, we're also working with Juxt as well. So it was an opportunity to learn from them as well. And it was, it was really good. It was, but there was a lot of legacy architecture and design. So we basically, we re-implemented
00:36:43
Speaker
an application that had been written in C++, which I had heard some very interesting stories about how successful or unsuccessful that actually was. And it wasn't quite doing the throughput that they were expecting. I think one of the stories was that the team that was managing the previous application would ring up
00:37:06
Speaker
the other developers that were using it to store, because basically an application that stored data from a whole range of different systems written in a whole different bunch of languages. And this team that was managing the previous application would ring all the other developer teams up to say, well, could they stop sending them data? And this is in production.
00:37:30
Speaker
which is not good. And so, yeah, so it was like, it was a reimplementation of that in Closure. And it's pretty good. And we were getting, I think we were doing something like 30 million transactions a day. And I think we were using about 0.03% of the CPU. So definitely Closure can perform quite nicely. Certainly better than the implementation of the previous one.
00:38:00
Speaker
Just to go back to your journey topic again, so you started doing some Haskell or not commercially? No, I was at university. Yeah, so Haskell University, then Java commercially, and then I wanted to get back into functional programming. So at the time, I think it was around 2008, 2009, then
00:38:24
Speaker
everything was about Scala, because they got some funding from the EU. And maybe I should get some funding for the EU. Well, I've still got a chance. I've got six months. And I think I even actually went on to a two-day training course by Martin Odersky himself. And the most important lesson he taught me was, complexity is bad.
00:38:52
Speaker
Unfortunately, I don't think that was the lesson he was supposed to teach me. Well, he didn't learn that lesson himself, that's for sure. And talking for the next 10 minutes while your sample program compiles. So complexity, bad thing.
00:39:08
Speaker
Yeah, so that was the that was kind of the experience we would get at the dojo. So I started running a dojo and sort of coding dojo once a month. That was around 2009. And yeah, because we'd because there's like lots of talks I didn't really I kind of
00:39:26
Speaker
understood bits of it on Scala, and lots of people were keen on talking about Scala. But I actually wanted to use it. And so we did the coding dojos. We'd go there, meet up on an evening for an hour and a half, decide on a problem, and then try and code that in Scala. We'd all get into little groups of like three, four, five people and then show what we created at the end. And a lot of it looked like Java, to start with.
00:39:54
Speaker
But that was the appeal, right? So you could write Java in Scala. Yeah, you could basically write Java without the semicolons. Yeah, exactly. That looks kind of sort of like Python, so you can get away with that.
00:40:09
Speaker
Yeah. But yeah, it was like the compile time was just really slow. And so we kind of, we all huddle around, like, because the first of all, we started with just like two people at the keyboard and they do something and then we just sit there and wait for it to do something. And then like a minute later we do it. And we were all excited about SBT, which is a build tool because you didn't have to write XML for the configuration. So that's quite nice. Remember what that used to stand for, John?
00:40:37
Speaker
Uh, simple, simple built. Um, but the, but the, um, I started, I run that for about a year. Uh, and then I managed to delegate that to somebody else, but I didn't know anything about going to a dojo. So I started going to the Python and closure dojos. Uh, and the first time I went to a closure dojo, I thought, what is this language? It's like, it's like alien technology. It's like, I don't understand it, but it was like, I did find it fascinating and.
00:41:07
Speaker
I think after about a year or so, I kind of started to really kind of appreciate it and start to understand, oh, it is quite interesting. And then I kind of had the kind of moment, like this clarity of moments that, oh, I just write deaf and deafened and that's it. And like everything else is like, oh, I just put a list in here and a map in there. And so did you notice at the door jaws that every the turnaround time was different?
00:41:31
Speaker
Um, we certainly got a lot more done in the closure one. That's what I mean. I mean, where people are using the REPL more in that one or where people still compiling and running things. How much of a REPL driven experience were the Dojo's giving you at that time?
00:41:46
Speaker
I think when I first started going to the one it was it was a little bit slower because everybody was using everybody was trying to use emacs and slime and so slime was the lisp version of the repel but it just being tweaked for closure.
00:42:02
Speaker
It wasn't until CIDR, All Hill, Lord and God Buzz, who created the awesome project to actually make Closure really work very well with Emacs. And then people really started using the REPL all the time. In fact, a lot of people were just doing things in the REPL initially and then
00:42:23
Speaker
remembering to save their code out. And then people moved into actually just writing code in the source code file and then evaluating that as you go along. And I think that was around about the time when Lighttable came out, people could realize they could just write a source code file and just evaluate pieces of that source code file. And that really did kind of push the whole REPL-driven development stuff, so that was quite nice.
00:42:48
Speaker
Yeah, but you're also running the closure bridge now, right? Or you have been running it for a long time now.
00:42:55
Speaker
I seem to have run everything. I've been trying to delegate that to everybody else, but maybe I'm just a bit of a tyrant when it comes to running events. I don't know. I've got people involved, people help. But I think in terms of driving them, then I do a lot of work around to just make sure things happen. The coding dojos have been going on forever.
00:43:21
Speaker
USwitch and ThoughtWorks have been running a coding dojo for, I don't know, well, ThoughtWorks has been running one for, I think it started around 2009. And there's a bit of a gap. So they've been doing it for like nearly a decade. And I think USwitch were doing one early two tens like that.
00:43:42
Speaker
2010, 2011. And they started doing the closure bridge. We did a closure bridge at Closure Bridge London at U-Switch in around, I think it was 2014.
Closure Bridge and Community Learning
00:43:55
Speaker
And we were completely clueless. We had no idea what to do. And we turned up for a meeting of the organizers like I think about a week before. And yeah, we didn't have a night. I didn't have any idea what to do. There's lots of documentation, but kind of didn't really say an awful lot of what we needed to do.
00:44:14
Speaker
we've evolved it a lot since then so i've re-written around curriculum as well which also kind of led into me like writing more more more tutorials and workbooks and so on but yeah it's been great i mean we've done that i think we've done about 13-14 events and it's kind of our
00:44:36
Speaker
kind of our Rolls Royce, our kind of like flagship event. We make a lot of effort to make it more than just, here's a bit of pizza, a bit of cold pizza, and let's do some code. So it's more of an experience because it's geared to, for those people I don't know, I mean, Closure Bridge is geared towards underrepresented groups. And so the one we usually support the most is for women.
00:45:02
Speaker
And so we get, so it's a women first policy that we get a whole bunch, we get students to sign up. And if you're, if you're a man, then you obviously need to be invited by a woman that helps kind of start introducing small balance into the kind of like the, the audience in general in the closure community. So that's been really great.
00:45:23
Speaker
And the first time I think we run it, we got nearly 40 people turning up. So it was really enthusiastic. And we've had around about 25 to 30 students reach one of those as well. But we do get some nice food. We've had like curries and all sorts of stuff like that. So really, really tasty food and not just pizza. So it's a really nice experience.
00:45:48
Speaker
But what do you see when you're looking at these people who I'm assuming they don't have any previous programming experience, right? Well, we get about 50-50, so like 50% of people have got almost no programming experience or maybe a little bit of HTML and they've kind of dabbled with like an online JavaScript.
00:46:08
Speaker
tutorial and then there's other people so the other 50% are kind of doing their first language but they're only in like their first year and a bit of doing that. So it's still fairly new in the environment. But what did they struggle with? I mean, especially with closure.
00:46:28
Speaker
Yeah, I think the part of the problem initially was we were just giving them too much information. And so we banned all talk about macros.
00:46:42
Speaker
First, first, first rule of closure. Don't talk about macros, because there's so many interesting things. And I think it's about setting perceptions of the the coaches as well. One of the nice things is we always had like several coaches, well, a lot of coaches that volunteered. So from the community. And we got to a place where we're getting one coach per student. And so you could get like one on one coaching help.
00:47:10
Speaker
from that student as well. It's a bit like we've got something called Code Bar that runs regularly here that do the same thing, but for all sorts of different languages. And that really helped kind of everybody work at their own pace. Whereas if you're in a bigger group, then you have to keep up with everybody else. Some people will get one explanation. So we used to do a lot of getting students to explain things to each other, which really helped as well.
00:47:40
Speaker
But yeah, it's I think there's a lot of easy things you can introduce in terms of closure. If you start at the right place, if you start trying to do all the theory behind it, I mean, if you start talking about category theory, I mean, like you've just lost everybody as well. Including me, probably.
00:48:04
Speaker
But yeah, I mean, there's a lot of really simple things in Clojure. I mean, you have a list and a vector and a map. And those are fairly easy kind of modeling constructs to take. And you want to give a map a name, so you've got def. And then there's lots of functions you can use. So you start introducing a bunch of functions.
00:48:27
Speaker
but it's coming up with some good analogies as well so things like map and reduce i mean they're kind of the bread and butter of closure and they're quite hard to understand and quite hard for some of the. Some of the volunteers to actually explain some of the coaches to explain that so we did things like the the map reduce sandwich.
00:48:47
Speaker
which is a nice visualization of what map and reduce does. So like with map, with the map reduce sandwich, you kind of map a function called knife over all your ingredients and then you get sliced ingredients. So you get sliced bread, sliced tomato and so on. And then you reduce those ingredients to make a whole bunch of sandwiches. Nice. And things like that kind of like, Oh, I understand it. But if you just kind of show sometimes just showing things that are repl can help as well.
00:49:16
Speaker
And just doing simple examples and then kind of building up to bigger examples as well. So a lot of the things we did were just really, really simplistic stuff. Stuff you would find in the first like 10 or 15 kind of exercises of foreclosure.
00:49:32
Speaker
which also is a really good learning tool. We use a lot of foreclosure in the coding dojos. It's a great way to get people on board because you can do, if people are motivated, they can do at least the first 24 closure exercises in like an hour and a half. And it gives them a great sense of
00:49:55
Speaker
Go on, sorry. Even the interface is also really easy to... And you don't have to install anything. Exactly. I mean, it's useful to have like an editor to kind of play around with when you get further along, but for the first 20 or so, I mean, you can just play around in the foreclosure itself on the web page. I was just going to say, I know it's all about inclusion and helping under representative groups, but what
00:50:21
Speaker
What do you, what do you, in terms of like follow up, like you, so you do, people do this like day of closure, which is really good. Um, and I can imagine people get pretty buzzed because they get a lot of feedback. They, like you said, they've got a lot of grit, like one-to-one stuff. What's the follow-up look like on that? And what do people do after it? What, what's the stories?
00:50:42
Speaker
Yeah, sure. Well, obviously, everybody has a Sunday off because their brains are just throbbing with all the information they've done. It's quite a long day because we do a little warm up on a Friday just to make sure we've got something installed if they want to keep on doing closure afterwards. And then the whole day Saturday is like 10 till 5 with a few breaks.
00:51:07
Speaker
So there's a lot of kind of stuff that they can get through, but they don't, very rarely, there's so much information in there, so many tutorials now that we've added, it's not possible to do everything. So there's a lot of stuff they can do to continue on from that. But the more rewarding things were actually seeing people come to the other events that we were running. So the Closure Bridge London events, we do maybe one, two, three of those a year.
00:51:34
Speaker
but then we were doing two, three, four events a month. Um, and so it was great to, so it was like a drop in the ocean compared to all the other events that we were running, uh, with like things like hack the tower and, uh, and the two dojos and the used to do like a week, a monthly presentation as well. And we do, we would get people who came to closure bridge London to actually come to those events as well, especially the hack the towel one where they could just, again, it was like another day.
00:52:04
Speaker
where it was open to everybody where they could come along and try out stuff and work with other people and continue on their learning as well. So we got quite a lot of people coming to that event as well, so that was really good.
00:52:18
Speaker
Speaking of these events, I think you're also involved with ReClosure. Oh, yes. Well, I'm trying not to be. There's not that there's anything wrong with it. It's just that I spent several years organizing the Closure X, which is the Skills Matter conference. Very good, by the way. I went to the last one that you had.
00:52:43
Speaker
Yes. Didn't you speak of the last one? I did, yes. Thank you very much. You called it something. An event, an activity, an action or something. You described it in some way, but it wasn't at all. Were you singing at one point? I was, yes. Probably. And then Bojidhar, the cider man, was doing press-ups for some reason.
00:53:09
Speaker
I think it was certainly the most memorable one of that as well. I think the videos are actually back up again because somebody actually put some money into skills matter because they went bust. So that's the reason we had reclosures. I think about, I think it was only like three or four weeks before the conference, there was an announcement that
00:53:31
Speaker
Skills matter had gone bankrupt, had gone into administration. And so nobody knew for a few days what was actually happening with the conferences. And then we kind of realized that, yeah, they're not going to happen. So I think it was Renzo and Alex and a few other people got together. And I just advised them, really.
00:53:56
Speaker
and just made sure that they covered all the basics, which they had done mostly. I mean, I didn't really have to do much. But yeah, just helped them out where I could. And yeah, so we're going to keep on doing that re-closure thing. But one of the ideas was that we want to try and make it a conference in a box. Obviously, there's not much point at the moment, because nobody's doing conferences. We'll have these conferences in a box. Not in a box. In a box, it could be possible, yeah.
00:54:26
Speaker
But the idea was that you could just open the box and then you could run your own conference anywhere in anywhere you wanted to. But yeah, there's I think the fact that it's a community conference, it was it was a free conference. So even if somebody bought tickets, they could come to that. But I mean, because there was no chance of people getting tickets back, I don't think. And yeah, it was a it was a conference for everybody to come along. And we got I think it was one of our
00:54:54
Speaker
One of my most popular turnouts, I think, in terms of people actually being very motivated, the one to come, we kept because we put a limit of I think we put a limit of like 100 tickets initially. And then people were asking us all, can we come, can we come, come, come? And there's so many people interested in coming along. It was great. And we managed to get some of the speakers from the previous conference. They had agreed to come to this conference as well. Obviously not the ones that we had to fly in. So
00:55:24
Speaker
because we didn't have any budget for that, unfortunately. But yeah, it was a great experience. And we had Malcolm Sparks from Juxt closing out as well. We're giving a really interesting talk about data formats and how we should probably use Eden or some form of binary JSON. That was really cool. See, see more. I do have some idea of all the difficult work that you need to do for the conference.
00:55:50
Speaker
I think I was part of the Dutch Closure Day Free Conference, especially Free Conference, means it's mental, whether you're going to pull it off or not. Because I mean, some of the speakers were very kind. I mean, they don't need travel expenses or something. But still, we want to make sure that everything is done a bit.
00:56:05
Speaker
But the venue and those things are not free. So we have to put in a lot of effort to get that kind of shit done. Yeah. And I was really, really looking forward to attending Dutch Closure Day this year because I stopped being the I took a step back and this is too much work. So I'm not going to do too much work because I'm too old for this shit. So I'm going to sit, sit, sit back and then listen to the talks now finally. But this whole coronavirus shit happened and everything is now
00:56:34
Speaker
upside down. I do appreciate from both sides, as an attendee, and also I've seen the side of organization. It's a fucking really hard work. Yeah, I was getting a little bit burnt out with, because I was organizing the meetups, like the presentations. The dojos themselves have been pretty much automated, so it's only when we're losing a host or something like that. Yeah, yeah.
00:57:03
Speaker
But, I mean, ThoughtWorks has been really great. They've always found somebody else to host it as well. So, Yolina was hosting it for like many years and she's got a changing circumstances. She just had a baby. Congratulations. And she found somebody to take it over and he's doing a great job. Otherwise, well, until the coronavirus kicked in and he's been doing a great job on that as well. Yeah, something like that.
00:57:30
Speaker
And I've got USwitch, there's like a team of four people at USwitch that take in turns to organize and run the dojo as well. So they're all doing what I used to do.
00:57:43
Speaker
I finally managed to delegate, so that was great. Nice. So you're distilling all this years and years of experience, Java closure, of course, a bit of Scala, and then you're now distilling all these things into multiple books then.
Writing and Educational Resources
00:58:00
Speaker
So what are you writing these days? Bring it up to date, John. Well, the one thing I'm definitely not writing is a book on Scala.
00:58:10
Speaker
Not that there's anything wrong with books on Scarlet. Well, I do have a signed book from Matt Nodersky. If anybody wants that, I'm open to offers. It's a physical book that's been signed by the man himself. The 800 page one. Yes, and it's unread as well, so it's in pristine condition.
00:58:34
Speaker
Hey, if only you have read that thing, you know, you could be an amazing scholar programmer by now. Yeah. If I couldn't get his two day workshop, then I'm not going to get his book. So there we go. But yeah, I've been, I've been doing books for a while. Well, the books started off as workshops for conferences. So there was like a closure one to start with. And then.
00:58:55
Speaker
There's a Closure web apps, so specifically like building, like ring and composure. I used to use that quite a lot at the, I use both of those at the Hack the Tower event. So like we just spend a whole day working on it and developed things from there as well. And then I decided I could do front-end development and started writing JavaScript. Because one of the interesting things about ClosureScript is it actually convinces you that you can actually do front-end development.
00:59:24
Speaker
even if you've never done it before. Because it's so much easier than doing it in any other language I've tried anyway. It's certainly a lot easier to do that in JavaScript, to a certain point anyway. It's certainly like your first website. I mean, my practicality website is written in ClojureScript. Although a big part of that is just choosing the right CSS framework to help you make it look pretty.
00:59:48
Speaker
But it makes it so much easier to do things, I find. Especially if you know a little bit of Clojure, it's actually quite simple to actually build a front end. So I've been trying to codify my learning into the Clojure script book. That needs an awful lot of work, I think, still. But I was very lucky to just receive some funding from Clojureists together.
01:00:15
Speaker
Yeah, congratulations. I was about to talk about that stuff as well. So come back to that in a second. But yeah, so I've got those three books, then there's a Space Max book. And because I've been doing a bunch of data science things in my broadcasts recently, then I've started a data science book as well. It's got no competition to things like the Dragon's books on data science. They are really amazing.
01:00:42
Speaker
But just some basic data visualization, the extract and transformation side of things. So basically, it's more like a basic data science enclosure for dummies. Because I'm not a data scientist either. But it's kind of shows me. It's data science for you, basically. It is, basically. Well, all my books are for me. It's just other people find them useful. So that's really good.
01:01:07
Speaker
But where can they find them or us? Where can we find them? Well, there's a special offer at the moment. They're all available absolutely free on the Internet. And so if you go to practicali.github.io is the main website and all written in ClosureScript.
01:01:26
Speaker
And all the books are on the front page with links to all the videos as well. All the videos are on YouTube, so people can subscribe to my YouTube video as well. I've got over 400 people in there and more joining all the time. Also, it's quite nice. And yeah, all the books are on there. And then I've got a GitHub Practical.ly organization with all the code in as well. So yeah, it's fairly easy to find. You can also go to practical.li.
01:01:54
Speaker
Um, I was trying to find a nice, I was trying to find practical, uh, something, uh, and the only one that was available was Lichtenstein. That's why it's a lie. It was also considerably cheaper than a few of the other options as well. I think there's one that was about 300 pounds or $300 a year. So.
01:02:12
Speaker
That was not quite, I don't quite make that amount of money for the books. So tell us about the closures together thing that you're going to do or you started doing already. I haven't actually started yet. The Avengers just announced it.
01:02:29
Speaker
I've got the contract yet, but I expect that any day. We'll hold the podcast back a little bit. No, it's been announced, so it's out on Twitter. I think I'm planning to start in May, sometime the first week of May. I think that's when I...
01:02:49
Speaker
The very basics of it, so you get you get some funding, which goes over the three months. And so you do some reports on what you're doing so that the closureists together community can understand what the what they're getting from that investment as well. So it's, yeah, they're fairly simple. But I do have I've been as part of the process for applying it, you basically have to let people know what you're actually getting the funding for.
01:03:17
Speaker
And so I've laid out kind of like an overview of each of the books and what I want to deliver from them. And so with this funding, my aim is to get all of those books up to scratch. I think the web apps one is probably more detailed one. And so that starts with things like Ring and Composure, going to Composure API.
01:03:42
Speaker
And then we're doing things like luminous and pedestal and HTTP kits for performance and so on and then yada and bitty and read it and components frameworks and and then finally wrapping up with duct and things like duct and into edge as well.
01:03:59
Speaker
So it'd be quite sick, because one of the things that people struggle with is like, I want to build this, what do I use? Because Closure gives you a function. And quite a lot, well, 600 functions, if you look in the Closure core. But people liked, people were very used to using frameworks.
01:04:20
Speaker
but there's usually a library for that and then which libraries do I put together for this particular situation. So that's why I'm trying to give somebody like a basic journey of like the most common kind of approaches people take for building web apps or doing something like that. So that's what I'm aiming to do. So it's like a cookbook type thing. Yeah, with lots of very practical exercises and so on so you can build
01:04:49
Speaker
websites and trying to do a few different things in each of those things, each of the different libraries and give some commentary on why you would use them, some positioning really. So it's trying to do, I guess in a way it's doing marketing, but like the proper developer marketing where you're actually explaining why you would use this library. So it's how you would, if you were a lead developer, how you would explain to your team why you're making decisions over certain libraries.
01:05:15
Speaker
and include a lot of that stuff as well. And it's not just my opinion. I'm sourcing a lot of the information from the Closure community as well and kind of taking an opinionated view of everybody's kind of feedback on that as well.
01:05:30
Speaker
But how do you see, because, of course, plan for the book and also writing the book and also experience and teaching people, because there is this discussion around closure always comes back on when somebody's starting, it's like, there is no framework, there is no one thing, there is no... So how
Frameworks vs Libraries Debate
01:05:47
Speaker
do you see this? Because if I see that book, for example, and there are like...
01:05:52
Speaker
everything is a library, different things and how they work together. If I start with Rails, it's just Rails generate or something. I mean, it's been a long time since I used Rails, but you get the idea. So how do you see this argument for framework versus no framework?
01:06:07
Speaker
Yeah, I don't really like framework. I don't like frameworks. I think frameworks have a very hard constraints usually. Whether you're looking at Rails or you're looking at Spring, there's an even like the EGB framework. You've got some very hard kind of constraints. You can do XYZ in these frameworks and everything works fine. You can do them really quickly.
01:06:32
Speaker
If you want to do ABC, you're just fighting against framework over and over again. And then when somebody decides to redesign the framework completely, like you go from play one to play two in Scala, then you have to rewrite your application anyway. I mean, XYZ is essentially someone's view of what is legitimate.
01:06:54
Speaker
ABC is someone's view of what is not legitimate that's why this is why it always that's why for me a little bit is because they're kind of saying this is the right way of doing it that's why our framework does this if you're trying to do something else then you're by implication at least wrong.
01:07:14
Speaker
Yeah, I think I think in a way it's also worse than that because you're you're delegating a decision to somebody else so that you're delegating all like a lot of decisions usually space the bigger the framework, the more decisions you're delegating away to somebody else and not and maybe not even thinking about them. And so we have to do this because we delegate a whole bunch of things already. We don't we don't kind of build an operating system.
01:07:43
Speaker
We don't build a desktop environment. We don't kind of do, uh, build all our tools and stuff. We do delegate an awful lot of stuff, but you can't delegate everything. You have to make some decisions yourself. And sometimes is makes perfect sense to go off and use a framework. But if that's your only decision, then I think that's massively flawed. And I think that the nice thing about closure is the one thing that everybody complains about it saying, well, there's no framework. Yeah. Because then you have to think.
01:08:13
Speaker
And you have to kind of at least think about even if you go off and just use a template like luminous Which is a great example of putting things together But then you're not tied to those decisions that you make you can pull things out and change things around And you can grow into making some of those decisions later on but it encourages you to actually make those decisions in the first place and it
01:08:40
Speaker
I think it's a little bit unfair to call people lazy, but it's having that decision. They've just delegated that decision without really necessarily thinking whether they should do or not. Yeah, I've heard some discussions like that. Yeah, closure would be great if there was only a Rails framework. I think that that would be not great. I don't think it would be bad, but I think if that's where everybody
01:09:10
Speaker
started. And that's what everybody thought Closure was about. I think that would be very bad. And I mean, in a sense, we've already got that anyway. I mean, if somebody wants to build a website, a back-end website, we've already got a Rails framework. It's called Ring and Composure. It's because it's what 90% of the people use to build a back-end website.
01:09:35
Speaker
But looking at all this from the landscape, what is your favorite pieces to pick to compose your framework? I think we normally call it a stack, don't we? A stack, yes. Sure. Let's call it a different name now. And that would be, yeah, I think a framework is a very contentious kind of word. And sometimes it is a simple case of just, well, we changed the word.
01:10:04
Speaker
Oh, we don't talk about it. I think people have used micro frameworks and things like that, but it's still a framework. But I think it's a decision that you're making, and that's what it comes down to. What is the decision you're making? I like building. I do like the simplicity of building a website in using Ring and Compotion.
01:10:24
Speaker
And it's so easy. And doing the, like, composure APIs. I mean, there's nothing simpler than building an API with the composure API template. And it includes Swagger, OpenAPI, as it's called now. And it just works. And Metasyn have done a really nice packaging of some decisions, which they do explain. I mean, if you read the read me in the project,
01:10:49
Speaker
The project explains a lot more about some of the decisions behind it. And then you start looking at some of the like component frameworks with it as well. Because there's no, I mean, how many frameworks have you used where you can just come in and change like the component lifecycle with just like one line of code. And being able to do that, having an appreciation that you can come in and do that is I think that's an important part of learning closure. And if we take that away from people,
01:11:18
Speaker
I think we're doing in them a disservice because I think one of the things that makes closure special. It's a quite long list, but one of the things I think is important is it gets people thinking. And it's not just hammock time. It's about, okay, it's my responsibility for this design of this application.
01:11:38
Speaker
what am I going to use? Not just what does the thing, how can I just get this thing out the door working? And I think part of that is because there's a lot more kind of experienced people using Closure, so there's a lot of that in the community discussion. But I think the community itself just encourages, because you've got all these different libraries you can use,
01:12:01
Speaker
there's a discussion that's inherent in having choice. And if you take away that choice, then you lose the discussion. The way I liken it to is kind of like, what's your favorite music? You know, it's like, well, okay. You know, uh,
01:12:18
Speaker
Great question. It will change week by week and it will change year by year. And maybe I like jazz, maybe I like classical, maybe I like rock, maybe I like pop, maybe I like fork. And actually when you get a framework, you're stuck on fork and you bet, you know, if you don't like it, you can fork off. Oh, sorry. I just thought about that one. Carry on.
01:12:47
Speaker
I was a pun worthy of the closure podcast. No, I mean, it's it's deaf and level humor. Sorry. Yeah, you should submit that to the closure design podcast. They love puns. I actually really do like the they actually I'm probably going to borrow a lot of the learnings from the closure design podcast. They've just covered
01:13:10
Speaker
a recent series on doing web application development and some more really interesting stuff there as well and it's a really nice podcast to listen to actually. Yeah I think these guys are doing really good work I got to say because
01:13:26
Speaker
At first when I listened to the first one or two episodes and I was thinking, you know, I was thinking what the fuck to be honest, you know, what are they doing? They're basically talking through code on a podcast. As if we know what we're doing. No, no, no. But I mean, I thought that the whole conceit was ridiculous, you know, but actually it turns out that they're really talking about what you're saying about John, which is they're talking about design decisions and they're backing it up with sort of examples and pipelines and stuff like this.
01:13:55
Speaker
So it turns out, I think, you know, yeah, kudos to those guys. I think, uh, it started off being a bit, a bit weird for me. I didn't, they didn't really get it at first, but persevering with it. I think that they are doing a great job here.
01:14:07
Speaker
They did some nice sections on things like laziness and also the recursive functions as well. That was really good. I really enjoyed that bit. It might be because I was doing some stuff at the time. I quite like this idea. I don't know if they've discussed it or not, but they gave me this idea of this closure abstraction mountain, which is a bit like Kilimanjaro rather than Mount Everest.
01:14:33
Speaker
And you can start off with simple functions and then you start going up and you might do a loop recur or a recursive function and then you got reduce and reducing functions and then you got things like sequences, abstractions and you got all the way up to transducers and so on. And it's quite a nice visualization. So I want to try to find a way to actually visualize that and make sense about that. And one of the things I want to do in the Closure Book is try and group
01:15:01
Speaker
functions into families of like, I want to do this, what are my options? Because like the Closure Docs website is really good if you know roughly what you're looking for. And because even if you don't find the right one, it's got links to other ones.
01:15:16
Speaker
But it's kind of like grouping things together. I think, you know, like these little functional families inside Closure Core. Right. Yeah. And then you can kind of know, well, if I know one, then I can go and go and look at the its relatives and see what kind of similar kind of things it does. Might not be exactly the same, but it's a taxonomy type thing.
01:15:33
Speaker
Yeah. Isn't that dangerously close to Haskell way of thinking? Oh, is this a functor? Yeah, that makes sense. Yeah. Oh, is this a monad? Yeah, that makes sense now. It's more about its purpose rather than its design kind of thing. So things like
01:15:51
Speaker
Yeah, partition and group by and sort by and stuff like that. Yeah, it kind of like is is these are the kind of the different flavors of crisps you can buy in it. So you buy buy an all sorted packet of crisps and these are the different crisps you can get. Yeah. And that kind of thing. But yeah, I'm I don't need to talk about types or anything. There won't be any types in my book apart from the part from the type function. That would be probably the only thing I could. Yeah, yeah. Yes. But I'm I'm a bit.
01:16:19
Speaker
curious if there is such a taxonomy somewhere that describes these computations or. Groups them well there must be something you know that there is something to find out of the podcast there was a.
01:16:33
Speaker
uh, the repl podcast with, um, uh, Daniel, Daniel. Um, yeah. Second. Come on. We've had it. Sorry, Daniel. Sorry, Daniel. Yes. Uh, yeah. If you're listening to this very, very good.
01:16:56
Speaker
But he had he had another firm favorite of ours on there. Mr. Mikael Borkant, Bork dude. Oh, yes. He's my other hero. Top lad. And he was talking about refined, which is this thing he has, which is where you can specify like the inputs and the inputs of an argument and it will find the thing that you're looking for. That could be, you know, something to play into your to your world there a little bit, John.
01:17:25
Speaker
That is linked off my practically closure book if you go to the side links. But yeah, that's really, really useful. Although every now and again, I know it's useful because when it doesn't work, I don't know what to do now.
01:17:40
Speaker
I have to think. I can't bork, do you think, for me? Yeah, I quite like that. It has to be quite a lot of thinking for you in fairness. It's a huge amount, yeah. I mean, it's like, especially CLJ Condo. It's one thing I don't know how I'm actually programmed before without it. It just tells me all the things I do wrong, and it's great. And in a way that's not annoying as well, so it's quite nice. Because it's like having a code review without the pain and embarrassment.
01:18:12
Speaker
Anyway, but enough of him, but, uh, yeah. So yeah. Cause I could spend a whole hour and a half talking about bulk dude. Yeah. Yeah. And I still wouldn't have covered half of it. Well, not even know like 1% of all the things he's written at recently. No, he's on fire. He's on fire. That's for sure. Uh, but Bashka is our current favorite, but anyway. Yeah.
01:18:35
Speaker
Yeah. So, John, I remember going back in the day when I first encountered you on the internet was when you were with JBoss, I think, and you did this, what was the framework thing that you did actually? It was a framework back in the day, wasn't it? Immutant. Immutant? Immutant. I'm trying to remember that. No, maybe it wasn't Immutant, but it was something where you basically programmed closure and it ran in JBoss.
01:19:06
Speaker
It was Toby. I don't think that was me. JBoss people. That wasn't me. I'd like to claim credit if I can. Well, if Toby is not listening to this stuff, we can just say, Hey, John made it. It does remind me of one of the things I did try briefly, but I didn't really, I don't think I really published it because I used to work for Salesforce. And it's quite interesting because they use Java. I did try and convince them to convert over to Closure, but I was probably about 10 years too late.
01:19:37
Speaker
In all fairness. And they were really great. They were very supportive of the Hack the Tower events we were running as well. But they had a platform. They had a massive framework, a massive platform. I mean, it was so big. The framework was so big, we called it a platform.
Salesforce Architecture and Clojure Challenges
01:19:53
Speaker
And that was all written in Java. It's a Java virtual machine. But it also had a web container in the front end. So you could basically just drop in JavaScript. And then, oh, if you can drop in JavaScript,
01:20:05
Speaker
I can write closure scripts and put it in there as well. And everything around it was like an API. And they did a really interesting, I mean, the architecture of Salesforce is really interesting from an architectural point of view. I mean, it doesn't matter that it's written in a particular language. I mean, the design of a very scalable system is a really interesting read. And you can get, there's a white paper that they've got as well, which is quite interesting. You can just download it for free that explains the architecture.
01:20:33
Speaker
But yeah, just putting, being able to put something into the web container, running that and just calling the APIs. Yeah, it was great fun to be able to do that.
01:20:42
Speaker
So maybe just because we covered a lot of ground, raising everything about closure. So if you take a critical look at closure, so what would you think the challenges or problems or places where we can improve from the language point of view or anything related to closure?
01:21:05
Speaker
Yeah, I think there's no massive, big problems. I think in ClosureX, not last year, I think in 2018 we had a few people raising their pet peeves about things. But they're all quite niche. It's when you're hitting the niche areas of computing.
01:21:30
Speaker
that I think you start to see some of the rougher edges. Because I think it's hard to find fault with closure because it's the oldest young language out there. Because most of it is from 1958. And so it's already been, so I mean, I appreciate Rich Hickey spent two years thinking about it, but it's already had like a few decades as well as that.
01:21:57
Speaker
I mean, he kind of really did an amazing job to bring it to a platform, well, to bring it to not just a platform, to bring it to so many different platforms as well. Because I mean, that's a nice thing. I always think of it as a sort of Blackbird. It comes in and just lays its eggs wherever it wants to in other people's operating systems and virtual machines and so on. A cuckoo, isn't it? A cuckoo. Oh yes, a cuckoo, yes.
01:22:22
Speaker
Blackbirds, one of those things, one of those birds that does that. But I think, to be honest, I think the biggest challenge is the challenge with any language, and that's like learning it. And I guess that's what my books are there for, to help people. And it's, you can never do enough.
01:22:43
Speaker
And I think with languages that are very targeted at a specific area, I think you take like Elm, which is a great language for doing front-end stuff. But if you want to do anything else, then it's, yeah, you don't, basically. But because they're working on a very specific problem, then it's very easy to write very good documentation just for that. But when you've got a general purpose language, like which is what Closure is,
01:23:09
Speaker
How do you write the definitive guide for a general purpose language? I mean, it would take longer than my lifetime. But there is a lot of really useful stuff. I think this is really highlighted with, and still in a way it's highlighted with the Clojure script side of things.
01:23:25
Speaker
I think when it first came out, it was so horrible to use. I mean, if you didn't, if you weren't an expert in JavaScript, you couldn't really use ClosureScript. If you didn't know kind of like the environment, then it was, because we did, we tried, we did a Dojo with Closure1, which is a web framework that some, which is a sample project that somebody came out with.
01:23:48
Speaker
Oh, yeah, yeah, yeah, I remember. Yeah, we spent I think there was about seven groups of about three or four people. And we spent an hour and a half. I think two groups got something to work. And the rest of them just felt so stupid. But and I think for the first couple of years, there wasn't really a huge amount of stuff out there. It was quite difficult to do ClosureScript. I think there's still a challenge around ClosureScript.
01:24:13
Speaker
If you don't know JavaScript, if you're not familiar with the JavaScript landscape and you don't know what all the different MPMs you should be using are, I think that's still very difficult. One of the nice things, I mean, unless you, if you're trying to do it by yourself and just try and Google the internet, there's not a huge amount you can only get so far. I think as a closure script, the person who does the closure script podcast,
01:24:39
Speaker
He's written a really great tutorial around reframe. Yeah, check. Yeah, yeah, check. Yeah. And that's something that is ideal. I mean, I'd love to be able to write something of that kind of quality or to be able to have the experience to write something of that quality as well. But I think that's kind of the limiting factor is it's kind of like there's not enough kind of guides that are up to date.
01:25:05
Speaker
But I think that can change now because, especially with Clojure, Clojure has become, well, somebody said Clojure was dead, so that means it's mainstream. So we've established Clojure is a viable language to use in companies now because somebody said it's dead. Because that's the mark of knowing when you can use a language and not be fired for it because somebody says it's dead. Because that worked for Clojure. So it worked for Java and it worked for Kerbal. It's still working for Kerbal, I think as well.
01:25:35
Speaker
But yeah, because most of the libraries aren't changing very much. There's a lot of new libraries that are coming out. But I mean, there's not been huge amounts of changes in ring and composure. And so that's why I mean, the book I wrote on the web apps stuff, I mean, a lot of that is like two, two, three years old, and it hasn't changed much at all, apart from a few point numbers in the libraries. Everything just works. And it's the nice thing about Clojure being backwards compatible. I mean,
01:26:02
Speaker
Things don't change that much so you can write some really useful guides to help people bring them into the community and get them productive and get them thinking about stuff and then. Then it's a lot easier a lot more accessible it seems like less like alien technology more like just a general purpose language that.
01:26:21
Speaker
we should just come and have fun with.
Clojure's Evolution and Future
01:26:24
Speaker
But yeah, I mean, there are issues, people complain about things like Core Async, which I think is really nice, but I haven't really used it in anger enough. When we used it at the bank, I mean, we used it fairly simply to basically just, that we use Core Async to basically push through 30 million transactions a day onto Tipco, and it worked flawlessly. But then we weren't trying to do anything complex with it.
01:26:51
Speaker
and weren't trying to do like futures and promises and so on. And so I think trying to just capture the experiences that people have, because we got a wealth of experiences on the community is trying to get capture that and codify that. And that's, I guess that's one of the motivating things I have, I've often go through the closure in Slack and the Zulip chat.
01:27:13
Speaker
and just copy bits in and stick them in my Kanban board and see that's a really interesting topic. We'll try and expand on that as well. And so I just want to capture that and expand on that as well. And I think that's one of the reasons why I wanted to do books for free because I don't want to put these behind any kind of firewall. I want people to be able to learn this and also give me feedback as well on this as well and continue to improve it that way.
01:27:37
Speaker
But I'm afraid I can't really think of anything terrible to say about closure, except for why didn't I use it when Rich Hickey released it? Well, maybe not when Rich Hickey released it, but maybe version. Yeah, maybe a bit later. Maybe like the year afterwards. Yeah. 2008. But John, I mean, you know, not to maybe want to force you down a controversial path, but I don't think.
01:28:02
Speaker
Well, I mean, there's something happened in 1.10, which I think was like spectacular, which was the change in a way that they reported errors. This was truly magnificent, what they did there.
01:28:23
Speaker
I still think that the exception processing, the error handling processing, to me, it's not an Achilles heel anymore. They've definitely helped a lot. Things have improved tremendously in the 1.10 release. But it still strikes me that knowing what went wrong in a closure program is definitely tricky.
01:28:47
Speaker
Yeah, I think that like, yeah, JavaScript traces were always kind of weird. And there always was kind of some, when things go wrong, then having some experience of the Java platform was quite useful. And it's still, in a way, it still is quite useful, especially in terms of deployment. It's always useful to kind of know a little bit of stuff about like how to, yeah, how to run things in the Java virtual machine.
01:29:15
Speaker
Uh, but yeah, like when, when things do go wrong and your normal tools, like, I mean, I do rely on a lot of tools like, uh, the cider inspector and, uh, I think that, but they're more for kind of logic errors. Like I get a result, but it's not the right result.
01:29:29
Speaker
But when it just goes bang, yeah, that's that's a bit more tricky. And yeah, that there is it would be nice to have more tooling around that, more support around that. But yeah, I guess I've got used to those things. I kind of turned a blind eye from that more specifically. But I think the one thing I would I think the one thing I would like to
01:29:54
Speaker
Uh, I mean, the one thing I missed really from closure was this idea of spec. I think that kind of brought back this idea of, um, defining contracts around my, uh, code and also my designs, my designs in terms of like the data structures that I was creating. Uh, and so I guess I am a little bit concerned as to the progress of spec two. Uh, in some ways I'm confident that they're actually thinking about that, but obviously then
01:30:23
Speaker
There's a part of me that wants the new shiny kind of new version that's like even better than like spec one. And I think it does stop me a little bit in kind of adopting spec wider, but I think it's just the fact that it's still quite new for a lot of people as well. So they're kind of, because people know that like there's another version coming up that's going to be different, then it kind of stops to stop the adoption of spec a little bit, I think.
01:30:50
Speaker
Yeah, it's a very good thing, Noah. I mean, it's definitely... Oh, yeah. That's the problem with it. It's like, it's alpha, but it's beautiful. It's very addictive sugar though, you know? Yes. Yeah. We want that sugar.
01:31:03
Speaker
Well, I remember when I was at university, I built a bit of tool. It was like an object oriented modeling tool. And it also had contracts, because contracts are something that's like ages, like from the 80s, really, I'll probably even earlier. But I discovered it from like the Rumba's, OMT kind of, OO kind of.
01:31:23
Speaker
certainly was deep in the OO object-oriented and license-designed world at that time. The idea of having contracts around that as well was just an obvious thing to use with the closure as well. When you also compare that to having a type system as well,
01:31:42
Speaker
you've got a lot more flexibility with your contracts than you would with types, but it's still doing the same or possibly even more confidence in your code because of these contracts.
01:31:57
Speaker
Why don't feature? Are we going to start to wrap up now? It's an hour and a half. And I mean, John could go on all night, but all of the streets are getting dark. He's a cross-country cycling dude, so he can continue. Yeah, my cycling rides when I was riding across Britain, they were between 9 and 10 hours long. So yeah, I can go a bit longer. Certainly. We don't want the listeners to get saddle sore, though.
01:32:27
Speaker
That's why I'm standing up. I'm a bit self-suffering yesterday. Okay, so I think we are almost, let's put a comma here. So we can catch up again. And good luck with all the books, John, I think, especially all the stuff that you're putting out there. I know a lot of people are complimenting on that one already on Slack and
01:32:52
Speaker
I think on Reddit and everywhere, especially you're making space max driven stuff so people can see what is possible and how quickly they can get started with this stuff for all the contributions. I think you need to change your name, by the way, to John prolifically, you know. Yeah, I think so instead of practically. Well, I would probably change it to John nearly as prolific as Borkdude.
01:33:22
Speaker
Hey, that should be as easy to get with a .de, probably cheaper. Of course, because putting all this volunteer work, running Closure Bridge and different conferences and Dojo and bringing people in into
01:33:42
Speaker
into the community. That's really, really appreciated, I think. Thanks a lot. Thank you very much. Good luck with all the books. The closest together thing is for three months, right? Yeah.
01:34:01
Speaker
Yeah, well, I'm going to use it. So I mean, it's it is quite it's more than I've earned for the rest of the year. So I'm going to use it as well. I'm going to lose obviously for the next three months. And then, yeah, unless somebody gives me a job, I can refuse. I'm going to keep on doing it until I've got the least those those books finished. And
01:34:22
Speaker
I mean the spacemax one's actually pretty up to date. I think I'm more or less finished that now. There's always, I do have like 150 issues in my Kanban board for other ideas I want to add to it. But most of it is there and it's just like improvements. So it's more than usable now.
01:34:40
Speaker
I know I make sure that all the books are very usable and it's all as open as possible so people can actually see what other ideas they want to do and obviously contribute as well. I've had some contributions from that as well, not just spelling mistakes, but there was a few in the early days when I was rushing things. I think the biggest investment for this is to create some really nice video content as well.
01:35:10
Speaker
for this that really does add to the extra dimension of these online guides as well.
01:35:18
Speaker
Nice. So is there any Patreon or GitHub sponsor stuff as well that people can contribute to you? I did have a Patreon page, but I never really worked out how to use it. But yeah, there's, I do have GitHub sponsorship. So if you're paying in dollars, you want to do that as well. There's a PayPal me, people have contributed as well. So I appreciate everybody has done that as well. So you can pay that in any currency.
01:35:45
Speaker
there's just subscribing to my video channel as well that's always a nice video nice boost and i'm gonna set up a libra pay and a few others as well but yeah the the biggest boost i've got really is the uh and i have the biggest thanks for uh closures together for for voting for me as well i know there's a lot of different really excellent projects there so i really want to make the most out of this funding as well
01:36:08
Speaker
Yeah. Fantastic. Thanks, John. Thanks a lot for sharing your time and all the hard work. So I hope you'll be staying healthy and safe in this tricky times. Yes. Yes. It's interesting times, but I'm really excited to see what I can do in the next three months.
01:36:29
Speaker
Nice. So that's it from us, I think. Um, so stay safe and, uh, tell if you know somebody who is trying to drink bleach, tell them not to. Oh my God. So, uh, I hope, you know, I hope you don't know somebody who's going to do that kind of shit, but even Trump's pause. Yes. Please don't take the Donald Trump challenge. Exactly. Don't, don't, don't listen to bullshit from people who are not qualified. Uh, that's why we have guests mostly. Hold on. Hold on. Hold on.
01:37:01
Speaker
You're doing it with a plot. I really appreciate being on here as well. It's a great opportunity to talk for an hour and a half about all the random stuff that's in my head. I'm sure I'll put a lot more stuff out there on the blogs as well. It's been really enjoyable. I like this format of the podcast. It's a great way to have a good chat between developers and just have to be recorded and shared on the internet for everybody to laugh at.
01:37:33
Speaker
That's what we bring, laughter and joy. Excellent. And a few swear words. A little bit of closure. A little bit of closure. Who the fuck told you we have swear words on this fucking podcast? I had to tell a certain person that the Closure X was a family show.
01:37:52
Speaker
He did a good job. I don't think he swore at all, actually, so I was amazed. That's not on the stage anyway. Maybe he just did it quietly. I swear he was, actually. I was so much off the stage, you know. Yes. Anywho, that's it from us for this episode. Thank you and stay safe. Thank you very much. It's been a pleasure. See you next time.
01:38:17
Speaker
Thank you for listening to this episode of DeafN and the awesome vegetarian music on the track is Melon Hamburger by Pizzeri and the show's audio is mixed by Wouter Dullert. I'm pretty sure I butchered his name. Maybe you should insert your own name here, Dullert.
01:38:35
Speaker
Wow, sir. If you'd like to support us, please do check out our Patreon page and you can show your appreciation to all the hard work or the lack of hard work that we're doing. And you can also catch up with either Ray with me for some unexplainable reason you want to interact with us. Then do check us out on Slack, Closureion Slack or Closureverse or on Zulep or just at us at Deafened Podcast on Twitter.
01:39:03
Speaker
Enjoy your day and see you in the next episode.