Introduction and Podcast Idea
00:00:15
Speaker
quite well. Welcome to Dรฉphin. Hello Ray. Hi. Thank you. How are you? I'm really good. Yeah. It's a Sunday evening in Belgium. Yeah. It's Sunday evening here in the Holland too, for some reason.
00:00:31
Speaker
All right. So should we say who we are and what we're doing this crazy idea for? Of course. So perhaps you want me to start? So yeah. Okay. So I'd like to introduce myself. My name is Vijay and I've been a closure enthusiast and I've been programming closure for I think nearly five years on and off. Not doing my day job though. And I'm also an organizer for functional Rotterdam. And I work in Rotterdam for a company called Lunatec.
00:01:01
Speaker
And I'm also a co-organizer for Dutch Closure Day. We recently had our event in March in Amsterdam. Oh, that was awesome. Yeah. And I'm very interested in closure. I've been following with the developments in the closure world. And that's why I wanted to be part of this thing. And of course, thanks to you, and now I'm part of this.
00:01:26
Speaker
Well, I think it was a really, both of us want to do it, so that's really good. Because like you say, we're both big enthusiasts. I have just recently started to help with the Belgian closure meetups and we had our first meeting this year, this last week.
00:01:47
Speaker
Like you, by day, unfortunately, for better or worse, I'm not programming Closure yet full-time. But I am at night looking at Closure and Atomic and all kinds of interesting videos on the conferences. I just think the whole Closure world is fascinating. It's a beautiful language to write in. It's full of innovation.
00:02:10
Speaker
The people that are doing it are super friendly. Whenever I go to the conferences, I have a great time. And yeah, it's a very interesting and innovative, exciting field, I think.
Motivation Behind the Podcast
00:02:25
Speaker
So I think we should probably discuss why we wanted to do this podcast. Yeah, of course. I mean, I'm trying to be a strong advocate for closure, or at least advocate for closure.
00:02:41
Speaker
I gave a talk at Devox about white closure and I would like to help or at least do my part in making the community better and get more people to know about closure and possibly.
00:02:54
Speaker
get exposed to the awesomeness of Closure. Yeah, I mean, we absolutely share that passion. I think that's clear that we're both very keen advocates of it. And also, there's only really one or two podcasts around Closure. There is the CogniCast, of course, from the CogniTech guys. And then there's functional geekery.
00:03:16
Speaker
But really, the Closure podcast world is pretty sparse, so I think one more podcast can't do any harm. And it would be nice to see several Closure podcasts, so hopefully we're in at the start. We can make a bit of an impact, but I think anything and every option to discuss Closure is a good one as far as I'm concerned.
Purpose and Goals of the Podcast
00:03:39
Speaker
Indeed, yeah. But I should probably warn if there is somebody listening to this one that I'm very new to podcasts and there's the podcast. We're both starting out on this one. This is our first podcast. So yeah, let's hope that people treat us with a little bit of patience. Yeah. So you've been warned if you're listening to this.
00:03:58
Speaker
Yes, and the good thing is where we're looking for feedback, we've got various ways to communicate, we'll put some information out about that, about how you guys can give us feedback and follow up and that kind of stuff.
00:04:13
Speaker
So maybe we should talk a little bit about what we're going to do with the show. Obviously, we're going to talk about Closure and Closure Script. And our idea was to try and discuss various features of a language, have another 25 minutes, half an hour kind of feature discussion of some type in a podcast. So this first one, we'll just talk about Closure and Closure Script in general about why we like it, what the motivations are, why we think it's an interesting technology.
00:04:43
Speaker
And then also maybe after that we'll discuss a bit about events that are upcoming, blog posts or news in the community. Just feature that a little bit to give people some shout outs for changes that are happening.
00:04:58
Speaker
Yeah, yeah, certainly. And of course, as you said, I mean, we'll pick some topic that we'll be discussing. I think we'll have sometimes difference of opinions that should make the show more colorful, I hope. Not too much. I think hopefully we can we can be civilized without a difference of opinions, at least. Of course, of course.
00:05:18
Speaker
And as you said, I mean, let's try to keep it like less than an hour. And then every two weeks we try to do this thing again and then publish it and then get the feedback from the people and what they think about it. As you said, we'll also try to get, because I follow a lot of closure news and obviously you're also doing that as well. So we'd like to share some things in case people are not, people miss something, then we'll try to get that into the light.
00:05:47
Speaker
Absolutely. Yeah. Good. So, OK, so that's the introductory and background stuff out of the way. So should we crack on with this week's topic?
Understanding Closure and the REPL
00:06:00
Speaker
Yeah. Which is just what the hell is closure? Exactly. And why should somebody pay attention to closure? So there are two different things that we would like to discuss today, I think.
00:06:13
Speaker
So what is Clojure? So Clojure is essentially a Lisp that runs on JVM and JavaScript platforms. And well, that should say a lot in terms of what Clojure is because Lisp is one of those languages that has been there forever. And since the beginning, apart from Fortran, since the beginning, or at least, you know, beginning in terms of the reasonable languages to code in.
00:06:36
Speaker
And so the closure is currently running on Java VM, the JVM based closure and also on JavaScript, which is called closure script. And there are some unique selling points of closure, first of all, because it's a list, it's a dynamic language and a dynamic but compiled language compared to the other dynamic and interpreted languages.
00:06:59
Speaker
And the REPL is one of the major feature of LISPs. Maybe we should just explain a bit about what the REPL is. Because I guess there's some people, hopefully there's some people who don't know much about Clojure or ClojureScript who are listening. So maybe we should explain a little bit about what a REPL is. Of course, of course. So I think a REPL essentially means R-E-P-L, which is read, avail, and print loop.
00:07:28
Speaker
So there are distinct stages of a program. When you write a program, when you write it into a repo and the forms are read and there is a reader step and then they are evaluated. So at the reader level, the code that you type them, which is the text which is converted into like a track syntax tree or a form and then eval is the step where it actually evaluates whatever the form that you put in into the program.
00:07:51
Speaker
And then there is a print, so because you want to know what happened to the thing, so it's going to print and then this thing goes in a loop. So this is essentially how you build your program. You put the forms in, they are read and they are evaluated and you get the feedback in terms of the printing and then this is basically a loop.
00:08:06
Speaker
So in some languages, essentially these days every language, and even Java from Java 9, they are going to have a REPL, I should say, quote, unquote, REPL, because there is no reader step in them. So that's essentially providing some sort of interpreter level.
00:08:24
Speaker
So that is what I think, you know, REPL is. Do you think that I'm missing? No, I think what's interesting about Lisp though is that, I don't know about you, I mean, but for me, I find that if I programming like Java or Node or some other language, excuse me, I very rarely reach for the REPL by default.
00:08:50
Speaker
You know, whereas with Clojure and ClojureScript and these kind of languages, I'm always in the raffle. It's such a different way of programming, actually. Yeah, that's true. It is much more organic.
00:09:06
Speaker
Actually, I would like to quote from the Joe F. Closure. In the other languages, you have this long thought code feedback loop. So there is a lot of lag between, OK, I thought of some idea. Now I'm going to write the code. And then I need to get the feedback by running the code. And then I see whether it worked or not. And then I go back to thinking again.
00:09:27
Speaker
There is a lot of lag in other languages when you're compiling the code, when you're running it, and you're waiting for the results, and then you go back. But in terms of REPL, that lag is very minimal. REPL-based languages, like especially LISP or Closure. So that is one of the interesting facts or interesting things that we have in Closure that other programming languages are still trying to cover. So nowadays, I mean, other languages have REPLs, but they are fairly limited in my opinion, at least, on my experience.
00:09:55
Speaker
Yeah, I think also what's interesting about closure
Functional Programming in Closure
00:10:00
Speaker
and lisps in general is that you tend to write sort of one or two line functions, which the REPL is very good for. So, you know, you can experiment with forms to say, okay, I want to read this data structure in, I want to do some filtering or some mapping, apply some logic to it. And you can normally achieve that within like one or two lines, three lines. You know, if you're crazy, you go five or six lines in a function.
00:10:24
Speaker
But you can kind of write that at the REPL, get some feedback. It's almost like test-driven development, but that seems a bit overkill because it's like this REPL-driven development where you're just putting in some basic data in a list or a vector or a map or whatever. Then you're just kind of iterating through it with your functions.
00:10:49
Speaker
And then you can eventually, once you're kind of happy with that, you can bake that off into a file somewhere and then compose it with different functions. But you can do all of this kind of stuff through the REPL, which is, I think that's really, I don't know, it's kind of the kind of thing which is a bit surprising because it feels so different to other languages where you have to go through this, like you said, compile, run,
00:11:18
Speaker
loop and you have to wait all this long time until you get your feedback. Whereas in the enclosure and in lisps in general, everything tends to be very quick. Yeah, very organic. Very organic. Yeah. And that's a kind of unusual aspect to it. But it's hard to know we're talking about it now, you have to kind of do it to feel it as it were, you know, it's a bit like like driving a car or whatever, you know, the feedback loop is there straight away, you're live, you're in it.
00:11:47
Speaker
And I think it's interesting we talk about it as the first thing because it is definitely the first thing you see about closure. You can just get started with Hell or World in two minutes in the raffle and you're getting productive, you're getting feedback. You don't have to
00:12:04
Speaker
There's not a lot of syntax with it, and you can just get going pretty quickly, I think. And the REPL really favours that kind of organic. I love the word organic. This is a key aspect, I think, for closure and closure script.
00:12:19
Speaker
Yeah, that's true. And also the other features that Closure gives us when compared to the Lisp, you know, one of the major themes behind Closure is that it's functional and also immutable by default in our language. So the data structures that we have in Closure that gives
00:12:34
Speaker
all the persistent data structures which are immutable by default. So you don't need to reach for, is there an immutable version here? I need to use it here. And that makes the program very safe in terms of you can just pass the data around without even worrying about if somebody else is going to pull the rock under me.
00:12:55
Speaker
Yeah, that makes it more predictable, doesn't it? It makes it more, you can think about what's actually going to happen. You can be, yeah, I think predictability is the word, isn't it? You know that if you're safe, you know that things aren't going to change underneath you, they're very stable. But that's a kind of, again, a bit of an odd thing for many programmers, I think, this concept of like immutable persistent data structures.
00:13:20
Speaker
Yeah, yeah, completely. And then there is the functional programming aspect of it. Obviously, these days, functional programming is the holy grail of getting ready to the parallel world. So the functional programming, which makes functions as the primitives, and everything is a function enclosure, which makes the whole simplicity of writing code and writing and structuring the program that makes it super powerful as well.
00:13:51
Speaker
all the higher order functions and the way you structure the code is different and also there are some lazy evaluation implosion as well. The definition of functional programming varies between different languages. Every language has their own way of
00:14:07
Speaker
defining what is functional programming and what is not. But in my opinion, as long as there is functions as the first class things available in the language and also a little bit of immutability, I think that's the fundamental things that you need to have in a functional programming language.
00:14:25
Speaker
I think you're right to mention laziness though as well, because that's the, you know, the daddy of all programming, all functional programming languages today is Haskell, isn't it? And one thing to emphasize is laziness so that, and again, but I mean, I look back at the history and I look back at, I don't know if you read the SICP or saw the videos for SICP.
00:14:51
Speaker
But going back to SICP, they're always about laziness in their processing as well. So Haskell certainly didn't invent that. It was actually from Lisp. I don't know if it was from Lisp, but that's the first I heard of it anyway. But there is this interesting thing about simplicity these days, because I read recently about Gerard Sussman who wrote the SICP as well, and he was talking about nowadays programming is more about
00:15:19
Speaker
programming by poking. You don't have anything. You're not building from the smaller tools anymore. I mean, you don't need to know about what is there and underlying layer. Nobody knows about the processor architecture or nobody's worried about how this is going to be translated into the native code because we are at least seven or six levels removed from the abstraction. There are so many abstraction levels.
00:15:44
Speaker
And you're essentially writing JavaScript that runs on V8 VM or something, and then there is another level of abstraction. And these days, the simplicity is one of the key things. You need to write simple programs, but it is very difficult to express. It's very difficult to explain, because every programming language comes up with a lot of boilerplate. And there is a lot of incidental complexity. You have to do this thing. You have to start with.
00:16:13
Speaker
huge class or whatever and then well not not at the cobalt level you know at least we have better things these days but that is one thing that is very attractive in terms of closure I think it makes the right trade-offs in my opinion in terms of being flexible in terms of being powerful at the same time and the concurrency primitive that is something that is very interesting in closure as well
00:16:36
Speaker
Yeah, but I think you're right is that it's certainly
Big Data and the Onyx Framework
00:16:40
Speaker
patterns of usage of closure which are stripped down. So keep it simple, keep it doing one thing, keep it composable, keep it based around data rather than APIs. These are the kind of things which are important to make things easier to understand what's going on at the foundation.
00:17:05
Speaker
And I think that's something which we really see in things like Java shops and .NET shops is that you get a lot of code generated for you. And they claim that that's easier. And in some respects, of course, they're true. It is easier. You just push buttons, you press next, next, next, and hey, you press so you've got a thousand lines of code. The problem is you don't understand what the hell those thousand lines of code do.
00:17:31
Speaker
Yeah, I mean, you can't reason about such a big system in terms of that one. That's what I think you're focusing, you're pointing out the right thing, like the composability and data-centric programming. So it's not just about defining how to connect these pieces, but also data is the biggest thing in Clojure. You first think about the data and then how you interact with other systems is essentially with data. And probably,
00:17:58
Speaker
We should explain how we use Closure and what are the use cases that are most important right now. Yeah. Actually, it's funny enough. I think I mentioned at the beginning that I'm doing this Belgian Closure Meetup and we had a meetup this week to talk about Closure Script and Closure Defaults and so a lot of the stuff we're talking about now.
00:18:23
Speaker
And one of the questions came up was about the use cases. What is the niche for closure? And I think it's interesting that some of these languages like JavaScript tends to have been the browser. But I don't think that's necessarily a niche. I think that's just an accident of history. But I think
00:18:44
Speaker
Scarlett and Python seem to be the big data languages. And yet I would say actually, although it's still early days, I would say Clojure has got a great chance to become a big data language.
00:18:57
Speaker
Yeah, I agree. Because as we were discussing, data is the central point in enclosure. Because you are essentially, I think there is one code that says it's better to have 100 functions working on five data structures rather than the other way around. So I think closure's fundamental philosophy of data being the central point of the language and of the programs. I think it makes sense that it would pick up in the big data processing a lot. And there is toolkits like, there is frameworks like ONIX, for example.
00:19:27
Speaker
which is one of the competitors to storm and like batch processing and stream processing and how do you process big data and I would like to see more adoption enclosure in big data world and that because that is the right like it's like a globe or something.
00:19:43
Speaker
Yeah, I think what's interesting as well now is that the Onyx team really is a team. They're actually going full time on it. I think in the past a lot of these items like Kaskalog and stuff like that have been
00:20:00
Speaker
you know, bits of sugar over Hadoop frameworks, not really rethinking stuff from a closure perspective. But if you look at Onyx, Onyx really is, screw this, we're doing a closure first take of big data, which is I think really exciting. I mean, I've got a lot of respect for Michael Dragalis and Lucas Bradstreet. Those guys are doing really well. They're building another team around them as well.
00:20:29
Speaker
and so they've got a lot of contributors. I've chatted online to these guys as well and they're always very polite, very respectful, very helpful.
00:20:40
Speaker
I think they've got a great future in that framework. I think that really is a data first framework. And so fingers crossed, if we can get a bit of adoption of that one, then we can start to see Closure really as a big day to use. Sorry, we can see Closure as a good fit. I think I see it. I think you
Closure in Web Development
00:21:00
Speaker
see it. Obviously, the Onyx guys see it. Fingers crossed we can make a bit of a splash with that one.
00:21:07
Speaker
Yeah, that's true. And also, there is the standard web development stuff, which has been a pretty interesting field in Clojure-related things. So initially, there was this whole discussion about why there is no Rails in Clojure. And because as a community, I think, Clojure feels more like driving towards a smaller library-driven things instead of just making a big bank frameworks.
00:21:35
Speaker
But there is a ring and composure. Well, ring being a bit more low level and composure. And you can always pick the right pieces together and build your own framework. But there is also some nice guidelines or nice templates like Luminous, for example. And that's already good enough for building a decent web application's enclosure. And the work that plasmatic guys did with different tooling and built their entire
00:22:01
Speaker
application enclosure and then with the circle CI and there are a lot of successes building closure applications in the web world and there is this arachne, right? Yes, but actually just going back to a point you made there earlier on about the prismatic guys, again that's hitting on the kind of data aspects and the dynamic aspects of closure.
00:22:26
Speaker
because obviously the whole, they've got this prismatic schema thing. They've got a whole bunch of frameworks, of course, you know, plumbing and graphs and stuff like this. But their big one is, or the big one that's been adopted by many people in the community, I think, is this prismatic schema. Actually, it's changed the stem, hasn't it now? Isn't it called something else? Yeah, I think it's called something else because, well,
00:22:48
Speaker
Well it was technically a very interesting company but I think they moved on to different things now. I think they're pivoting towards business news or something. Anyway, but the point is that whatever this scheme of thing is called, it's prismatic or something else. Those guys are
00:23:05
Speaker
What they're really doing is they're allowing you to say, okay, if you've got a complicated piece of data that you're passing around your program, we can validate it. Now, I don't know if you've done much with it, Vijay, but I was comparing it about a month ago to JSON Schema at work because they were talking about validating things with JSON Schema versus not validating things.
00:23:28
Speaker
And Jason's scheme is absolutely terrible compared to Prismatic. It's so clunky. Whereas Prismatic's scheme is so sweet. It's so easy to describe things. It's so easy just to add on and to test. Everyone was sort of falling over themselves to look at this thing. But again, it's difficult to accept the whole language just for this one thing. That's true, yeah.
00:23:56
Speaker
But there are multiple things that drive picking a language. Of course, there are different languages for different people, obviously. It depends on how you think. And I think one of the major things that I like about Closure is that because I programmed in Java for a long time, almost 10 years now. So it changes the way you think. So first time when I opened, I think back in 2010, I think, when I was trying to do my first Closure program,
00:24:25
Speaker
I'm so used to these classes and stuff because that ceremony has been part of how I start a program. There is a ritual, dancing around fire that is needed before I need to start a program or something.
00:24:41
Speaker
So then the simplicity of the closure is that you use these tools and then you slowly reach out for the libraries that make more sense and the whole static typing versus dynamic typing thing. And in closure, it makes more sense to describe the data and then validate the data schema rather than just giving types there. So that is one thing that I really like about schema.
00:25:04
Speaker
Yeah, I think you're right is that one of the things you don't need is you don't need a whole lot of ceremony up front. You don't need to design object hierarchies or all the kind of data transfer objects and all this other crud. You can just get on with programming stuff, putting data into maps or into lists or whatever is suitable.
00:25:25
Speaker
maps inside of lists, inside of vectors, inside of whatever, the kind of usual complicated data hierarchies. It becomes a bit tricky when you want to share those structures with other people. Obviously that's the advantage of something like schema and of types in general is that they're really for other people.
00:25:45
Speaker
for communicating and at some point it's good to do that but often you want to just get on with things and feel your way, feel your way towards the solution, be able to do the grapple thing where you can play with forms, play with data, play with structures and not be constantly having to change the hierarchy or the types, it's just that the ceremony is so flipping annoying. Whereas with closure you can just get on with things, change the way things are organized, change the way things are looking
00:26:13
Speaker
you just rerun the program and off you go. And then gradually, as things stabilize and solidify, then you can start to add this kind of documentation that is actually executable around your functions.
00:26:27
Speaker
And then, well, I don't want to make it like I'm purely brainwashing people to use closure or something. Oh, that's exactly what we're doing. Come on. I mean, there are so many nice things that I
Asynchronous Programming with Core Async
00:26:40
Speaker
think that draws me to a closure and then working on it. For example, the whole asynchronous workflows of closure, the way you write asynchronous programs, especially with core async.
00:26:53
Speaker
Well, there are different ways. You can use an actor-based concurrency, or you can just go very low level and then use the track-based concurrency, or then you can switch to the channel-based concurrency, which is the CSP, communicating sequential processes stuff. And I think the closure channels are one of the interesting features that have come up recently, and that is also one of the nice use cases.
00:27:17
Speaker
Especially, I'm not completely sure whether that is the right way to do in ClosureScript world yet, but that is also one of the things that has been adopted in ClosureScript as well, because you don't have threads, you don't have all this multi-threaded stuff that you have access to in Java, for example. So Core Sink is really interesting thing to try, at least, in Closure. So that's what I think. Maybe we'll pick up one show and then get good.
00:27:48
Speaker
I think that would be really, really good. I did that myself a little while ago because I'm getting
00:27:57
Speaker
I'm getting very interested in the whole event stream world at the moment with Kafka and all these other big data frameworks. You start thinking about graduating out of process channel type things into these larger distributed systems, but obviously
00:28:19
Speaker
If you can carry on with the simple stuff, the longer, the longer, the longer, the better. And chorusing gives you tons of mileage, and it gives you really good ways of thinking about things.
00:28:32
Speaker
But I think, yeah, we'll dive into that. Definitely one of the future episodes where we'll go deep into Core Air Sync because there's a hell of a lot to talk about there. I mean, I think it was, I don't know if it was really just because Node.js took the world by storm that they started thinking about Core Air Sync. But I think it was partly motivated by Node.js and by the Go programming language. Both of those were basically saying, hey, you know what?
00:29:00
Speaker
we can be a lot more efficient on a single thread and serve a lot more requests with this async model than you can in your threaded world, which is the sort of traditional closure JVM world. This has been well proven now with Node and Nginx and Go. You can have millions and millions of channels of processes.
00:29:25
Speaker
communicating processes on a single CPU with very little overhead. So I think it's a very, very interesting world. And maybe we should, in a future show, we can talk about the various options around it. Because there's obviously some positives and some negatives. Of course, yes. Well, it's with every technology. But it's like knowing the trade-offs makes you better. So you know which tool to use at what point.
00:29:51
Speaker
But you brought up a very interesting point, like the closure script world, why it is picking up and why. More and more I see people getting attracted to closure because
ClosureScript and React
00:30:00
Speaker
of the closure script. So that is also something that brings more people into the closure world because of the way that the developer tooling is set up in closure, for example. We were talking about Fig Wheel some time ago.
00:30:17
Speaker
Yeah, I think Bruce Harmon there has done an awesome, incredible job. Props out to that guy because he's doing great work. We've seen a few of his presentations now at the various conferences. And obviously, David Nolan has been a total star in terms of getting the JavaScript
00:30:35
Speaker
community fired up for ClosureScript advocating out there on all these various conferences and those guys are doing a great job and Mike Fikes of course in the native world exactly he's bringing the ClosureScript to Mac and even iPhone and it was super awesome because last time at a meetup I was just showing
00:30:54
Speaker
Closure on an iPad now, thanks to him. Actually, so was I. I demonstrated that exactly this week. Because I've got an iPad Pro, so I was showing how to edit Closure using this Textastic, which is an iPad app that has Closure syntax highlighting. Then you can just copy and paste side by side into the replete REPL that Mike has done. Yeah, and it's really fantastic.
00:31:23
Speaker
I mean, of course, it's not really going to substitute for your desktop development environment yet, but it's a great proof of concept. It's a great proof that if you want to write stuff at a REPL on an aeroplane, it's totally possible now. Of course. And if you see the way ClosureScript has adopted the whole React framework from JavaScript, which has become like a more de facto standard for ClosureScript right these days, and there are tons of wrappers for React or the libraries that use React.
00:31:53
Speaker
especially being ohm and then ohm has been rethought again and that is the I don't know the trailblazer or the frontier or I don't know what you call that the first ever pioneer probably that's the right word so pioneering the react wave and then there was this reagent and then a lot of other libraries which are using react and then bring bring closure power and then
00:32:17
Speaker
bring it into the React world. I think that is one of the major attractions for ClosureScript right now in terms of the libraries.
00:32:27
Speaker
Yeah, I think, actually, as well, what's really interesting is the impact that Om and Omnix and really David Nolan, I think, has had on the ClosureScript world. Because obviously, there's him and then there's the Elm guys as well. But they're really making the React guys and the Facebook guys and the whole kind of JavaScript community think again about what it means to do big apps in JavaScript.
00:32:57
Speaker
And what's interesting to me, I don't know if you have followed the kind of, obviously Facebook have got this immutable JS now as well, so they've got their own version of persistent immutable collections that's based around the stuff that David Nolan did. But they've also got this language called Flow. Have you seen this? Yeah, I think I read
Alternative Frameworks in ClosureScript
00:33:20
Speaker
about it, I think two, three weeks ago or something.
00:33:23
Speaker
Yeah, but I mean, it's kind of weird to me because it's kind of like, well, actually, you're not no longer just using JavaScript anymore. They're trying to do this typing thing. But at some point, I think.
00:33:38
Speaker
the whole React ecosystem is really coming so close to ClosureScript that you might as well just take ClosureScript because it's got everything already. It's standard. Like you said earlier, it's the default for many things. Many things in the ClosureScript world are defaulted to be good.
00:33:57
Speaker
Whereas if you're adopting the whole React, Redux, Flow thing from Facebook, well, that's great. But as a team, it's a dangerous place to be because that team can start to bring in all kinds of weird and wonderful JavaScript stuff. And you're having to enforce
00:34:18
Speaker
good discipline on the team at all times, whereas if you go with ClosureScript, then the kind of discipline comes out of a language. Yeah, that's true. You can just get on with stuff. Yeah. And also the other types of frameworks like Hoplon and there are some... I'm a big fan, a big fan of Hoplon. Nice. Well, I didn't play with it though. I was more looking into the React related things most of the time.
00:34:44
Speaker
Well, I mean, I've done a few things. I even committed a few examples to the Hoplon repository. And those guys are doing incredibly good work over there as well. They're taking a very different approach to the React guys. They're going more multi-atom. So they're going spreadsheet style. So you can have this concept of a formula cell where you
00:35:10
Speaker
a value cell where you put information and data, then you have these formula cells where you essentially watch the data cells and you put functions in the formula cells. You can have this properly reactive programming model and you get these dependency networks.
00:35:29
Speaker
It feels like you can really build Excel style spreadsheets or complex workflows on much smaller pieces and in a different way than with React.
00:35:41
Speaker
Yeah, I think that's the availability of different kinds of libraries and different kinds of thinking. That's pretty awesome. And also as you're pointing out, there's like lists everywhere. So everything is just basically list driven. And yeah, they're really, they're really thinking about the the designers as well. So you can actually write, you can just use HTML, actually, you can you if you're a programmer, you can you can write
00:36:04
Speaker
HTML as Lisp, but Hoplon also will just consume HTML. So if you're a designer and you're just doing HTML and CSS, then you can still use those tools. But if you're a programmer and you want to extend the DOM, then it's more kind of, I don't want to say it's Angular style-y because it's not really like Angular, because I'm not a big fan of Angular, but in the sense that you can extend the DOM with Lisp.
00:36:30
Speaker
then it is a bit like Angular. But I find that odd kind of comparison. But certainly the concept of being able to just put functions and
Closure Community and Developer Appeal
00:36:40
Speaker
just add components in where you want them and extend the DOM as you wish, then this Hoplon H Lisp, it's called, is really incredible. Thanks.
00:36:53
Speaker
And of course, we need to talk about the latest developments as well. As I was mentioning to you the other day, there is this Electron, which is you can use it to build desktop applications. That is the core of Atom that is in JavaScript. And nowadays you can build
00:37:10
Speaker
even a desktop application and closure script because there is so that you can use closure as we were pointing out the use cases you know for big data and building the standard web applications and if you want to write a nice concurrent program you can use that for that too and then there is web applications obviously using completely closure scripts with sparse or single page applications you know very rich internal applications and using OM and Reagent and also now you can build
00:37:38
Speaker
complete pure desktop applications because the more and more I see every application is now written in the web application especially and they have a native application which is essentially a wrapper around the web application so you can reuse the same code. There's no trace basically. Exactly. So Slack and HipChat and all these sorts of applications nowadays there is a lot of
00:38:02
Speaker
applications built using the electron shell and the code that drives it is essentially JavaScript. That means you can use ClojureScript to build desktop applications now, which is pretty interesting. Actually, as an aside, you just reminded me there of the blog post I saw a few months ago actually, which was that, do you remember the AWS Lambdas? Yeah, yeah.
00:38:22
Speaker
these are these are a thing of beauty i've got to say we've been we've been using them at work for for actually since they've been since they were in beta even because there's such an exciting concept but what's interesting about them is that you know their first instance was running node and now of course you can actually
00:38:41
Speaker
like you say with Electron, you can also write your closure script and deploy your closure script to the Lambda as well. And that's actually a nicer use case than for the Java VM because your Lambdas are smaller and faster and lighter weight.
00:38:55
Speaker
Yeah, so I think there are lots of use cases now. I think we have plenty of libraries to talk about in upcoming shows. Absolutely, absolutely. Yeah, it's going to be great. I think there's a lot of great stuff. But what we should do is we should just quickly talk about the community because I think that's the one thing that sells closer to a lot of people. I think that
00:39:18
Speaker
I don't know about you, but I've been involved in other programming languages community for a long time. And I've never really had a more friendly, welcoming community than I've experienced with ClosureScript and Closure.
00:39:30
Speaker
Yeah, that's true. I mean, I've been idling on, not idling, essentially. I mean, I've been on IRC channels since the beginning, well, most of the time. And then I see the way people interact with each other and helping each other. And there were a lot of questions that I had in the beginning and the way they talk to each other. And even the closure community here in the Netherlands, you know, when I interact with them,
00:39:53
Speaker
It's a completely different experience. I think you can see that in the way people think, in the way they interact with each other and the mailing list of course.
00:40:02
Speaker
There is still, I don't know, I like the languages which have this, you know, BDFL sort of thing, like benevolent dictator for life, you know. So you're fine with pearl, are you? Well, I don't consider Larry well to be a dictator type of person, though. At least it's not a comedy. And I've been on pearl mocks, you know, that was a long time ago.
00:40:26
Speaker
And Perl is another interesting language and it turned out to be something pretty new these days with Perl 6. But anyway, it's not about Perl though. So I mean, from the community point of view, I think it's really great. The way the conferences are organized and of course all the work Alex Miller is doing with the Euroclosure and all the closure conferences there, it's just fantastic. I completely agree with you.
00:40:50
Speaker
Yeah, I think it's really interesting to also you can have it with other languages as well, but you see these conferences where people are standing up and the variety of talks and the amount of innovation that's going on in closure is just incredible, I think.
00:41:07
Speaker
You know, people are looking at all kinds of things to do with typing systems, to do with data structures, to do with live coding. Like you said, it's a very complete end-to-end solution. And what I find also interesting is you've got an interesting mix of kind of practical and academic research going on at the same time.
00:41:27
Speaker
It's definitely Closure and ClosureScript, to me, are very, very practical languages, which is somewhat unusual for a Lisp, actually, I think, which have tended to be quite academic, quite locked in their AI world in the past. And I think what's interesting about Closure is bringing that kind of stuff out of the AI wardrobe and applying it to more, I wouldn't say banal, but more straightforward use cases. Yeah, 90% of the programming.
00:41:56
Speaker
Yeah, I remember seeing a talk a while ago, years ago actually, at a conference in London, where one of the guys from Nokia was talking about web programming and how you fill out a form, you put some gist in a form,
00:42:14
Speaker
You do some trying to get off the net, store it in a database and then get it back out again. And you look at the kind of frameworks that you've got in Clojure, in Java to do this kind of stuff. And it's like thousands of lines for every stage of that particular pipeline. And you can do it in a hundred lines in Clojure. And then suddenly it's wow, it's fantastic. You know, these kind of things are
00:42:39
Speaker
are actually achievable by standard people. So Lisp is no longer this kind of elite, rarefied thing, you know, it's actually accessible. I think that's what I find anyway, because I'm not some kind of towering genius.
00:42:55
Speaker
I mean, I mean, it's the same. You shouldn't say of course that. You should say, yeah, you are really, but you know. What I meant was, of course, it's the same situation for me. You didn't let me finish that. But yeah, I mean, that's the nicest thing with Closure that I find it fascinating that the simplicity is not just for the demo programs. The simplicity scales up if I say it right. I don't know how to say that. It can still be simple when you're being built large programs.
00:43:24
Speaker
which is very, very interesting. Actually, you make a good point there, because I think what's interesting is that a lot of people with various languages, they show you these kind of demo programs. Exactly. It doesn't go beyond that. Actually, what you learn in the demo is not applicable more broadly. Yeah.
00:43:43
Speaker
So you kind of like, oh, right, I know I do this in a demo, but what generally did I learn? And so actually what's interesting about Closure as a concept and Lisp in general, of course, is that, yeah, everything that you learn in your demos, you just take it further. You just take it further because it's essentially all the same. The syntax is very similar, very consistent. And then really you're free to riff on libraries and stuff like that.
00:44:11
Speaker
Right, okay, so I don't know. I think that was a bit of a whirlwind introduction. Do you think that was probably enough? Yeah, I think so. I think we at least expressed our passion towards Clojure and why we think Clojure is important for us. Hopefully, from the next shows, I think we should deep dive into different libraries or perhaps what is happening around Clojure. So maybe we should explain some practical things like where are we going to put this up?
00:44:37
Speaker
right okay so yeah there's a there's a few moving parts isn't there but uh so we're going to have a website yeah we've got deafen.audio um which has uh well that that will have a link to the to the podcast of course with the show notes and stuff like that i mean i say show notes we we kind of
00:44:57
Speaker
I don't know if we'll have any for this one. Yeah probably I will just add some summary you know what we discussed but most of the time I think we'll try to add if we discussed a specific blog post or if we discussed specific library we'll just post the stuff there and we can't actually read out the code during the show so if we
00:45:19
Speaker
So it will be something like Parastasis, Death and Hello World. That would be stupid. But otherwise, I think we'd like to post the show notes with links and interesting stuff that we discussed about. I think that would be the central point of people getting in touch with us.
00:45:39
Speaker
Yeah. Also, I think we, we've created a Twitter account as well. So Deaf and podcast, we can have Twitter and I think it would be great to have some conversations there. Um, that's probably going to be the easiest place for people to give feedback actually. Um, maybe it's on Reddit also. We'll see. I'm going to close your Reddit and then see what, what, what, what people think. If any of you guys are listening, um, this is the first time we're doing this or at least, you know, I'm doing this. And I think the same, I can speak for Ray as well.
00:46:09
Speaker
Absolutely. Yeah. I think we'd love to get more feedback on this. I understand this episode is more kind of a very bird's eye view level stuff, but we hope to get into, as we explained in the show format, we'll make it much more interesting in the coming episodes, deep diving into. And we'd also probably join Slack, the Closure in Slack. If you don't know it, there is a huge community more than I think even 4,000 members now on Slack right now.
00:46:39
Speaker
Yeah, definitely. It's getting beyond the Slack limits. I think that's why people are getting frightened about that now. Exactly. I think it's a 10,000 limit or something on Slack. Yeah, I think so. Well, at least for the messages, we cannot go back to the history. Of course, there is IRC always.
00:46:55
Speaker
We will be there on Slack and slacking. Slack's turning out to be a bit of a nightmare, I think. I mean, it's a beautiful thing, but it's actually annoying that it's limited in terms of its messages and its sort of funding of open source and these kinds of things.
00:47:13
Speaker
So maybe we'll see how that works out. But yeah, you're right, we should post something on there released. Obviously as well, this thing's going to be on iTunes. We're going to post it on SoundCloud to do the hosting and then we'll link that through to iTunes so that people can get it on their favourite podcasters or podcatchers, whatever they're called.
00:47:33
Speaker
But just a shout out to guys, it would be really good if you do get through iTunes and you can go to the store and rate us because my understanding from other podcasts is that if you rate the podcast in iTunes, then that puts us up the lists. So that gets the word out a bit more strongly.
00:47:49
Speaker
Yeah, of course. And we'd like to give the feedback. I mean, of course, we sometimes we have our own personal opinions, so that will slip through the things. And we'd like to know what you guys think and let us know your feedback. And as Ray was saying, it would be nice if you can give us some rating and give the feedback in the upcoming shows and follow us on Twitter at DeafN Podcast. I think that'd be an awesome opportunity for us to learn from you guys as well.
00:48:17
Speaker
Yeah, that'll be really good. Okay, so I guess we should just wrap it up finally with what we're gonna talk about next. And we're gonna do a bit of a deep dive into something that I think is maybe a bit odd, but we started the program with the REPL, and that was one of the first things that I think both of us were really strong in saying that the REPL is a key to closure. And the foundation of the REPL is this, the reader.
00:48:45
Speaker
So I think next week, next week, next fortnight, next whenever, we're going to have a discussion about the Closure Reader and what it is, what it does, what the various implementation options are, how it's used around the various libraries, and maybe there's also some general controversies around user-defined reader macros and how they've
00:49:11
Speaker
you know, what the history of those are in. And so a general more of a deep dive into one particular feature of closure. Yeah, so next week, it will be the reader. So that'll be the first, probably the first deep dive. So four point cast, I think. Yeah, yeah. All right. Well, thank you very much. Thanks for listening, everybody.
00:49:36
Speaker
Thank you, Vijay. I think it's been a good episode. We're 45 minutes in now. So I think we've given enough content for this one. Like you say, we'll try and keep it under an hour. So next time around, in a few weeks, we'll have a discussion about the reader, maybe some follow up to this first episode, see what people are saying out on the various social networks.
Conclusion and Future Episodes
00:50:03
Speaker
And that's it. Any last words from you, Vijay? That's it. I'm actually looking forward to doing this every two weeks. Hopefully, we'll keep this up. And next time, we'll discuss about reader. And maybe I'll have some reading to do. Oh, I see what you did there. So that'll be fun. So hopefully, people who are listening to this, we'll see you next time. All right. Cheers.