Opening & Past Meeting Joke
00:00:15
Speaker
I think we can start now. Well, for just 20 minutes, record time, I think, to figure out the plan. Right. So... It's always the way, by the way, and also the most... What should we say? The people who have the most experience with the sound setups often have the most complications. That's true, that's true.
00:00:45
Speaker
I don't know. You set everything up for yourself and not for this context. Are you talking to me? Actually, now I'm confused because we are three. Anyway, I'm happy to see you and I want to ask you if you know that we met in last summer.
00:01:11
Speaker
because I have a suspicion you don't. But I do. Well, we're in the celebrity now. So there are a lot of people meeting us. So it's very difficult to remember all the fans that we have. So when did we meet, Daniel? We met at the nice conference from Arnaud
00:01:37
Speaker
Oh, okay. Yes. The heart of closure. Heart of closure. I was sitting next to you, Vijay, at one point. I was wondering, is this Vijay? I can't believe me. I have many other Indian people that I send as my... Why, you were like the same?
00:02:06
Speaker
You were not there? No, I was there. Does sitting next to him count as meeting him now?
Daniel's Background & Name Clarification
00:02:17
Speaker
Not really. Well, I talked to you, Ray. I said hello. Yeah, okay. Guilty.
00:02:30
Speaker
No, you were very nice. I think we should just flip this. So why do you think we invited you for the podcast? This is because we never met at Father Flow, do you remember? Not exactly. We're following up. Come on. So this is episode number 61 with Daniel. I'm going to try to pronounce your last name. Smolovec.
00:02:57
Speaker
Yeah, I mean, I have no... What do you say now? Well, in here we say Schmulewitz. Schmulewitz. So the tone is a bit different. But in Europe, people butcher Polish names all the time and I don't know Polish myself.
00:03:25
Speaker
So I'm very used to hearing my names in all kinds of creative ways. Schmulewitz, you can try to say Schmulewitz. Yeah, Schmulewitz. Because I thought it was a Polish name. And of course, when usually, if you see C and Z together, it's usually Polish, I think. It is. And it means son of soul. It's like MacDermot, the son of Dermot, right?
00:03:54
Speaker
That's right. Yeah. Irish version of it. Yeah. OK. Nice. But you are not in Poland right now. I was never in Poland. Yeah. I was born in Belgium. And I live in Israel since 1986, seven. Wow. OK. Yeah. So what are you up to
From Journalism to Programming
00:04:20
Speaker
there? So what do you do there? Maybe a quick introduction.
00:04:25
Speaker
A quick introduction. We obviously know that we met at Heart of Closure. We know a lot about you, but we want our audience to know more about you. Exactly. Exactly. So I'm an accidental programmer, basically. I never decided to be a programmer, but just one day I saw that writing code for living
00:04:53
Speaker
But what I actually wanted was to write. So I saw myself as a writer, and I had a couple of years of working as a journalist. And then I decided to be a novelist, which is some kind of upgrade. And I went, I hit the road, and I traveled for a couple of years writing travel novels.
00:05:22
Speaker
I published a couple of them. And then I saw that it was very poor. And I picked up programming during my time when I was writing because I was using a computer. So as a journalist also, I was exposed to a cultural movement in the 80s.
00:05:51
Speaker
End of 80s, beginning of 90s, the wide magazines hyping up the future. I was attentive. There was no internet yet. But they talked about BBSs and all kinds of stuff that could happen. I bought a computer, and I started a BBS.
00:06:21
Speaker
At one point I started to sell internet connectivity.
Project Highlights & Language Evolution
00:06:26
Speaker
I was calling people and saying, maybe you want to connect to the internet? And they would say to the what? I was too early. Yeah. But you were at the beginning of like, robo calling. Absolutely.
00:06:49
Speaker
Actually, the BBS was called Robo BBS or something like that. I don't remember exactly. So I'm used also to small programming communities. I was writing Rex code in my first job ever. And Rex was a small scripting language that shipped with OS2.
00:07:19
Speaker
And the reason I was using OS2 was it's very upset with Microsoft Windows 3.1. And I was an enthusiast, early supporter of OS2. And I discovered the scripting language. I was using a word processor also where I was writing my novels in something called describe.
00:07:48
Speaker
Word processor, very good word processor. Way ahead of its time compared to the early alternatives on Microsoft. And from then on, I was always interested in these exotic small program communities. I did Rebel for a while.
00:08:18
Speaker
I don't know if you know that. Rebel is a general purpose programming language. Is it like R-E-B-O-L, right? Yes, yes, that's what it is. Yeah, Rebel, yeah. Like a punk version of Cobol, isn't it? System. Sorry? It's like a punk version of Cobol. It's a punk version of something. Yes. I'm not sure of Cobol. I think it's a...
00:08:48
Speaker
It's a lispish in nature. It has a lot of going for it, or it had, because one of the complaints was that it was not open source. At one point, the community fractured, and there was another project called REDD, which was the open source version of Rebel. Same ideas and same people also.
00:09:18
Speaker
And I would say that defining characteristics was that it was a very small footprint. I think 300K or something like that. And it did everything. It did GUIs passing web stuff. It had a very big core library. And it was one guy, basically. Somebody who was involved in the Amiga,
00:09:49
Speaker
And he retired early because he could. And he decided to grow vineyards in California and do wine and do a little programming language on the side. And he got it, followers. And it was nice. It was nice.
00:10:17
Speaker
So when people tell me that nobody knows what programming language I'm using, I'm used to it. So how did you end up in a closed world then? I was always looking to use list languages.
00:10:44
Speaker
I was continually looking into Common Lisp or Scheme, and I never could find the impetus to jump. I was afraid of being left out when doing web development or stuff like that. And probably, I could have been more intrepid, especially with Common Lisp, because Common Lisp has everything.
00:11:15
Speaker
But I didn't do the plunge. At one point, I suppose that when I was ready to do the plunge, I heard about closure. And then I jumped. And I didn't look back, actually. So what type of? So obviously, you started from journalism and then being an author or novelist. And so do you know?
00:11:45
Speaker
work professionally as a programmer or is it still like a side gig for you? No, I was in the industry for too many years. I did everything. I was an engineer in a team. I was independent as a consultant. Unfortunately, I know what an office looks like.
00:12:16
Speaker
But at some point, I got lucky. And one of my side projects started making money. And as soon as I had the chance, I quit all my jobs.
Choosing Clojure Over Ruby on Rails
00:12:30
Speaker
And now it's been something like five years that I run with my own projects. And I have two projects.
00:12:40
Speaker
that make money and that bring food on the table, not alone, but just enough to have a small belly. And one is Etsy app or e-commerce app that allows merchants to automate the publishing of tweets based on the inventory.
00:13:10
Speaker
And I have integrations for Etsy, Shopify, Weebly, and Equide. And my second project, which I started three years ago, is a solution to circumvent censorship in China. Cool. OK. My wife is Chinese. And I have family. And I go to visit. And I had the need for.
00:13:40
Speaker
solution. And when I found one, I was happy with it. I started to build a service around it. And I would say that what defines my service is that it uses proxies instead of VPNs. So it's more lightweight. It's based on open source. And the audience is for power users. Yeah.
00:14:10
Speaker
So is that a proxy that runs on the laptop or on the desktop then? Because otherwise the proxy still lets the ISP look at stuff. Excuse me, can you say this again? If you have a proxy on the internet, the service provider can still see the traffic up to that proxy. So does the proxy run on the desktop? Proxy, you mean
00:14:38
Speaker
You can connect to the proxy on all platforms, if this is the question, and all devices. There are clients for Android and iOS, as well as for desktop on Windows, Mac, and Linux, just because it's open source projects, and people have made clients on all those platforms.
00:15:06
Speaker
Ah, OK. But don't people shut down access to that proxy, for example? That's the obvious thing that an authoritarian regime could do. Oh, you mean IP, blocking the IP, because it's a proxy. So there is a mouse in a game of cat and mouse regarding IPs. But people find ways to adapt quickly when an IP is blocked.
00:15:36
Speaker
because I can assign a DNS name to the new IP, which is not blocked and stuff like that. So in practical terms, it was never an issue for my service, because I'm small and China doesn't look into, it's not bothered by a service like mine. You go under radar in that case. Under the radar,
00:16:06
Speaker
The Chinese system doesn't look to block all traffic to the outside world. It looks to establish some kind of a wall, invisible wall for its residents and make sure that most residents are not interested in content outside of China.
00:16:30
Speaker
they know very well. And probably themselves, they use VPNs all the time to get access to more information and diverse information. So yeah. So do you use Closure for these businesses already? Yes. I use Closure as my daily driver since 2013. I rewrote this Twitter app in Closure.
00:17:00
Speaker
It was initially a Ruby on Rails app. And I was feeling the pain. I wanted to have more control. And I did a bigger re-write. OK. So how do you compare Ruby on Rails experience with Closure? Because one of the, I think, time and again, this comes up again and again. Closure doesn't have something like Ruby on Rails.
00:17:28
Speaker
and good show, but I will explain myself. And I also have an announcement to make regarding precisely this question. We get the scoops on deafen. Yeah, exactly. I decided to make a video and finish it before the podcast.
00:17:52
Speaker
so that our viewers, or your viewers, can profit from it. So it's on YouTube. I just uploaded it before we started talking. And I'm revisiting the classical Ruby on Rails demo from 2005, in which DHH builds the blog engine. The 15 minutes blog engine, yeah. Exactly. The Whoops video.
00:18:19
Speaker
because he says, whoops, look at all the code I'm not writing. Which is genius. And really, I wanted to pay homage to what he did, the movement that spurred. It was basically giving up the ability to programmers to write web apps when they didn't really understand the underlying stack.
00:18:49
Speaker
The deal is learn the framework and don't worry about SQL, about JavaScript, about CSS, Gmail and stuff like that, or HTTP. Or databases. Yeah, exactly. So I wanted to make a video and show what would happen if you really had to write everything.
00:19:18
Speaker
Yeah. And it's not bad. That's the point. You have to understand how you do SQL on the JVM, but they are built-in classes and you can do closure interop. So the idea was to make the same exact application a blog engine, but with enclosure on the JVM and no libraries.
00:19:47
Speaker
So no working libraries and just the minimal stuff. So it's a ring as well as taken care of by the JVM. It has built-in classes to do that. And I use Hiccup for the templating. And that's it. So it's an educational kind of video. And I hope entertaining.
00:20:16
Speaker
How do you style the front end?
Benefits of Clojure's REPL & Open Source Contributions
00:20:19
Speaker
Because that was the other thing that he was doing. No, he doesn't style the front. It's HTML. It's pure HTML. And the browser has this default CSS file sheet. So the input searches the raw as the browser. And I do the same. Okay.
00:20:43
Speaker
So in your project then, obviously even for Hello World, it's easy to say or it's not easy to say whether it is how complicated it is or how easy it is or whatever. But for your project migrating from Ruby on Rails to Closure, so how did it go? And then were there any things, is there any situation where like, oh fuck it, I should have done this in Rails. Active Miller is easier.
00:21:09
Speaker
No, the problem with an app written in Ruby on Wales is that you really pay the price. It's a little bit like selling your soul to the devil because you accept the idea of trading expertise with commodity. And it's a game which is
00:21:38
Speaker
Well played as long as the your your circumstances are valid, but when things change and suddenly you want to do something which is in Disconnect with the framework or something that you don't quite understand and you don't know how to achieve it with a framework yeah, then
00:22:07
Speaker
you experience pain. And I wanted to take things under control. And closure forced me to look into all the moving parts.
00:22:23
Speaker
And the process was very interesting and very exhausting as well, because it was 2013. There was already a ring, and the main players were there. But there was kind of a theater incognita with regards to practices.
00:22:53
Speaker
I had to experiment and I wanted to experiment, but it took a long time before I could make all the parts play well together. In the meantime, there were many things happening. For example, when I started writing the app, there was ring, but there was no doctor framework, for example. When that frameworks came out,
00:23:23
Speaker
I did something which helped me substantially, and I'm still using it today. I adapted the duct framework to the component framework. So the endpoints and the routing endpoints of my web application and the handler and the middleware, they are componentized. So they are exactly
00:23:55
Speaker
I write the system map declaratively and the database comes alongside, is on the same level as the handler or the middleware or the endpoints. And this allowed me to have one uniform API
00:24:23
Speaker
to start a system that have tremendously also for reloading at the REPL, which are automated and which I integrated in my own tools. Yeah, I don't know if I clear enough. Yeah, it's fine. One thing to dig in a bit deeper there, Daniel, was, did you,
00:24:51
Speaker
Did you kind of benefit from the REPL at the beginning or was that something that came later since you mentioned the REPL integration now? The REPL was always the main reason I was attracted to Lisp and closures. It was the first thing I made sure that I'm developing in a REPL that I can inspect everything, that can restart everything. And that has always been like the meat, the
00:25:21
Speaker
the main thing for me. And that's why I developed the system library, which is a repository of components. I never properly documented my open source projects, and I'm guilty of that.
00:25:47
Speaker
But you're the only one actually, that's really horrible. I mean, you know, no one ever, everyone else documents their open source projects perfectly. You know, you must feel really bad. Some, some people do some people do better job than me. And kudos to Martin clap show did a wonderful initiative. We have people do the, do the work without friction.
00:26:18
Speaker
But so the systems framework, system frameworks has this mini framework, web, mini web framework, which is equivalent to duct from James Reeve. James Reeve has always
00:26:39
Speaker
in France, my work, because what he was doing was he was working at the same time and he was just ahead of me. And I was looking at what he was doing and say, wow, that's really good work. So when he came with integrant, I was already with my own framework. So I haven't used integrant, but I suspect that the ideas are very similar.
00:27:08
Speaker
declaratively declare a system and then be able to tear down and restart, which is invaluable and admirable. Since we're talking about these dependency injection frameworks, essentially, one of the criticisms of component is that it's a bit infectious.
00:27:35
Speaker
and things like mount and integrant attempt to reduce the blast radius, if you like, of their frameworks. Is that something which you do as well, or you're aware of, or you're aware of those trade-offs? So that's a very good question, which unfortunately I have a disappointing answer. But I will be upfront. There are a couple of concerns in closure development that are met
00:28:06
Speaker
by competing products or projects.
Programming Communities & Critical Thinking
00:28:11
Speaker
And you just mentioned mount versus component. And they cover the same concern. They address the same concerns. And the same goes with web development, for example, because we have
00:28:35
Speaker
a, we have a ring and pedestal. We have handlers and inject, how do you call this? Interceptors. Interceptors. Yeah. Yeah. The same goes for the client closure script, libraries, competing stuff, reagent and on, or today, maybe reagent and helix or
00:29:05
Speaker
or whatever the thing is. Very early on, because I sweated so much in making my parts moving, once I found my cocktail, the things that were working together, I stick with it. So component was solving my problem, and I didn't look into mine. And the same goes
00:29:32
Speaker
For Pedestal, I was happy with Ring. I didn't need asynchronous handles or something like that. And I'm still with Ohm. I have a patched version, which works perfectly. I mean, when David Nolan gave us Ohm and gave a solution to create a UI as a function of state,
00:30:01
Speaker
That's all I wanted. I didn't need anything else. And I still don't. No, no, I think that's fine. I think like you say, if you if you get something that works and you can maintain it and you're looking after your own patch version, you know, that's a solution that you want. But but obviously for the broader community, there's a there's a different answer, I guess. Exactly. And and that leads us to to community and my relationship to community. So for me, community is two things.
00:30:32
Speaker
One is this shared experience. And I relate to that. I love going to conference and meeting people and having conversations. The other thing is consensus building. A community looks at how things are best done. Because beginners ask questions.
00:31:00
Speaker
and more experienced developers give answers and a consensus gets constructed, gets refined, answers are given and are deemed correct or the correct way or the recommended way. And that aspect of community I relate from just further away.
00:31:28
Speaker
I'm not so interested in that. Not because the advice or the wisdom that emanates from this effort is to be disavowed, no. But it's just received wisdom, becomes a received wisdom. And I prefer to remain critical at all times and examine things. So
00:31:59
Speaker
I'm less interested in comparing different solutions and deciding which one is best and making recommendations and stuff like that. But we have broad experience with our pretty long experience with programming communities starting
00:32:20
Speaker
back, you know, from from Reborn and Red. So how do you how do you how do you see these communities then? I mean, especially these days, you know, because back in the day, niche programming community would mean, you know, sitting at IRC, and that's pretty much it. And obviously, closure is not a niche programming language anymore. Even at the time of IRC, it was the same. Yeah, it's horrible.
00:32:47
Speaker
As Jean-Paul Sartre has said, he means hell is the other. I don't think he meant it literally. I didn't say it. It's a quote. It's really difficult.
00:33:15
Speaker
I've seen the same things paying out in every community like PGA into that. There is always everything that humans are capable of that come to the fore. So you have the good things, help, collaboration, caring. And then you have the bad things, which is pettiness and entitlement and ego, a lot of ego.
00:33:46
Speaker
Yeah, that's a fair point. So I think it's the usual question, obviously, you know, the only question that we'd like to ask on this podcast, like, A-Max or some other shit.
00:34:02
Speaker
So we reached that stage. Is it because of my opinion on communities? No, no. OK, I'm just joking. So it should be obvious from my Twitter handle because I call myself a maximum sugar.
00:34:28
Speaker
Which is Yiddish for crazy. Yeah, IMAX of course. IMAX is a lifestyle, right? Yeah, totally. Sorry. It's okay. I think editor communities are like ordinary communities. They bring out the best and worst in people. Exactly.
00:34:54
Speaker
Exactly. I'm just pointing someone's head earlier. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche. Touche.
00:35:24
Speaker
because it does so much. And because it's a Lisp environment, it's some kind of realization of the Lisp machine. We didn't get the hardware, it didn't happen, but we have Emacs. Yeah. So in terms of, of course, I mean, use Emacs, but I think that this is a question that is linked to
Clojure Tooling & Ecosystem Maturity
00:35:51
Speaker
But what's your opinion about the tooling around closure in general? Obviously, if you use Emacs with his insider, there are other things as well these days. So did you try any of them? I remember the days when Sadr was breaking, when piggyback was some kind of
00:36:16
Speaker
nightmare. It was very difficult to get a closure spirit, a ripple. And then everything got better thanks to the work of the good people. And Bojeda, hello Bojeda. Thank you so much. And support him. I mean, the community has produced amazing tooling. Bojeda has also done amazing work because he separated
00:36:45
Speaker
concerns and you have this separate library, which is generic for tooling. And then he restructured the whole tuning ecosystem. And then tools.depth came, which also made things much better in terms of tooling. So today, I feel extremely privileged
00:37:13
Speaker
Nothing breaks anymore. Things are solid. There is a very solid foundation. We've seen some kind of maturity in tooling, which a lot of lispers envy for. I mean, we have one of the best ecosystems in the lisp world. I want, you know,
00:37:38
Speaker
leave the commonest bits outside because they get offended very quickly and maybe also for good reason because slime is basically the thing that inspired everything. Yeah. But I'm extremely happy with the tooling and maybe that's a good time to tell what happened when tools depths came out. There was a
00:38:06
Speaker
a strong desire to integrate those depths in our build tools. And I was an early boot adapter. I thought that it was great to have a build tool that can run in one process and spawn, you know, your repl for the cloud escape and for your web server, which you couldn't do with Lightning then.
00:38:36
Speaker
And the model, the execution model of Boot was very smart. So I was happy with Boot. But then, and I wrote also a lot of plugins for Boot. But I noticed something. After a while, I was forgetting the details of the execution model of Boot.
00:39:01
Speaker
Every time I wanted to do something, I had to refresh my memory. I have to go inside, look at the documentation. And I found it a bit tedious. And tool steps came out. And there was some kind of this focus on doing one thing was very attractive. And like many other people, we wondered, can we maybe
00:39:27
Speaker
write small tools and with tools that replace this big monolith of build tools. And I discovered a project which is not often talked about. It's the Closure Maven plugin. The Closure Maven plugin is a plugin from Maven that compiles closure. It precedes Lightning Gun.
00:39:57
Speaker
took off, it never gained momentum, but it was always there and it always worked. You could always compile your stuff with the Closure Maven plugin. And I started to use this technique where, because tools depth can emit a pom.xml,
00:40:20
Speaker
I would emit the poem.xml from the tools desk and feed that to the Maven runtime and send this to the Closure Maven plugin. The Closure Maven plugin is just one dependency and plugin in the poem.xml. Yeah.
00:40:46
Speaker
So you can use Maven to build your projects. I built a tool around this. It's called Maven. M-E-W-Y-E-N. This has replaced a completely boot and landing gun. So I'm using Maven all the time.
00:41:14
Speaker
It works surprisingly well. I was wondering at one point if I wanted to promote this and maybe tell people to start using it and decided not to do that. Yeah, I was wondering just before you kind of like went into a bit more detail of it because I'm interested in hearing the story. But one of the things that always strikes me about closure was that you don't need to build it.
00:41:42
Speaker
So I kind of think if you don't have to build it, why do you want to build it?
00:41:49
Speaker
And I know there are very specific reasons when you want to have Java compiled in or you want to distribute into a Maven Central or something. But with the Git shars that you have with tools.deps, why do you need to build anything anymore? I've certainly taken that view at our work, so we don't compile anything. We never build any Uber jobs. We never make anything at all. We just rely on closure.
00:42:18
Speaker
Ray, this is exactly the kind of stuff I like. You think about something and you take it as far as you can. And this is why consensus building works against you. This is exactly the kind of things that people laugh at in a forum. We've been doing this. They've laughed at me for a long time. It's true.
00:42:48
Speaker
So I'm all for it. I haven't talked about it, so it's your idea. I'm building Uber jars, which I deploy on the servers, and I run those Uber jars. So I need to build Uber jars, but I will be very happy to learn from you how to deploy without building anything.
Maven's Role in Education
00:43:13
Speaker
I'm very open to that. I'm sure you're excited. Yeah, wherever you are going to deploy anything, you just run closure and then it has the same effect. I'm pretty sure you're right. Probably you need to weigh all kinds of stuff and decide if this is good for you, for your use case. Sure, of course. For your team. But on that note, I want to say that Maven is not something I use only to build artifacts.
00:43:43
Speaker
I run my REPL with it. And now it's an environment. It's a REPL environment. I've written an Emacs client, which is on Melpa. I've built a website also where you can download it, but it's not open source. It's my platform. I'm giving services through Maven.
00:44:10
Speaker
For now, it's educational services. So I'm doing videos. And what I'm selling is not the video or the course, because I don't want to do that. What I want to do is produce content. And if you want to run the code or see the source code, then buy a license for Maven, which is a way for me to not feel
00:44:41
Speaker
You know, if you make calls, courseware, it's basically a lost struggle. It's almost impossible to stay sane. So the deal is, for me, I want to give value to my users. And I don't want to be forced to produce content and feel guilty when I'm not doing it. So I'm just selling my license, a license for Maven.
00:45:10
Speaker
And in exchange, users will get not only the tool, but also the templates. Like, for example, the video on ribbon rails, which I just did, which explains how to build the blogging engine from scratch. It's available in Maven as a template for users who are licensed. And I'm probably going to explore the avenues
00:45:38
Speaker
to distribute software via Maven or something like that. So it's not just a build tool then? It's more like a platform or a tool that comes with the platform? Technically, it's like a boot and landing gun, which both are not only build tools, but also provide you an environment. You also launch the REPL with landing gun on both.
00:46:03
Speaker
So is the main motivation to help you out, Daniel? Is that the kind of concept? Is that it's a way for you to, um, is it, I'm trying to understand whether it's a commercial thing or a kind of practical thing or a bit of both. So for me, it's a practical thing. It's my, uh, it's the tool that I rely on to build my environment, to launch my record environment and to build my artifacts. So I will always treat it like,
00:46:33
Speaker
a privileged offshoot of mine. But I also want to interact with people in the closure community, but in a way which departs from traditional model of organizing a course and sending it on a website. My philosophy is that there is no teaching, there is only learning. All I can do, all a teacher can do,
00:47:01
Speaker
is help you in this process of learning. And this is why I want to produce content. But you are the learner. You have to decide what you do with this content. So I'm doing these videos, which are educational. I show how to do routing for scratch, how handles work, how to build a blog engine.
00:47:26
Speaker
But I'm not looking if you are learning, if you pass a test, if you did this first or that first. I don't care. And probably nobody should. You should care how you structure your learning. What kind of content do you need to learn and to progress? I'm going to produce content because I like it. And in exchange, I ask
00:47:55
Speaker
people who can, who want to buy a license for Maven, but you don't have to.
00:48:04
Speaker
I mean, you don't get Maven the tool, but this is the thing that you get if you decide to buy a license. Okay. So people can still learn something even without the tool. That's the idea. Exactly. Yeah, absolutely. It's YouTube videos. I mean, the one on how the Ring Stack works is for everybody. It's just generic.
00:48:29
Speaker
Yeah, I'm curious about your, because there is a lot of, I mean, I'm going back to the beginning again. Yeah. So, because there is a lot of comparisons between writing and programming, right? So, so what is your opinion on that being a being a, you know, professional journalist, you know, writing stuff and also writing code when writing other things other than code, which is more logical and whatnot. And so what's your take on that?
00:48:59
Speaker
Viget is a beautiful question. Yeah, I think I didn't know I peed. It's like a broken clock. I write twice every episode. Exactly. I have only two good questions per episode. No, it's wonderful. It's wonderful. This is the mystery, right? I often find that I come with values from prose writing to programming.
00:49:30
Speaker
which surprise engineers. I think there is something very social sciency about what we are doing. And yet engineers think we are doing exact science stuff.
00:49:51
Speaker
And all these concerns, all these topics that you see in forums when we discuss what is the best programming language, how to do types or not do types and stuff like that. There are social science questions.
Computer Science: Science & Social Science
00:50:15
Speaker
These are questions about psychology,
00:50:20
Speaker
productivity, how the brain works, how teamwork works, linguistics, all these things. And computer science has nothing to say about these topics. And that's a big paradox. Because computer science has a lot to say about complexity, about computability.
00:50:46
Speaker
about touring degrees and all kinds of things that are exact and provable. But these are never the topics of discussions of developers, the fireplace discussions. These are always social science topics. And yet, there's a lack of awareness that these questions belong to social science. That is my impression.
00:51:15
Speaker
Yeah, that's, that's, I think that that is why we can never, you know, decide the debate, one way or the other, whether types are better or not, right? When there's this whole discussion around, because at the end of the day, it becomes like how you think and it depends on your your way of thinking, exactly aligns with you. Exactly. Because they are not precise questions, there are no precise answers. Yeah. And also,
00:51:44
Speaker
what you just said is very true. For me, if the whole world liked types and there was one person who preferred no types, then that would invalidate the idea that you have to use types.
00:52:02
Speaker
The other thing that maybe is worth remarking on now is that I think part of the problem is that programming came from a very scientific, mathematical, electronic kind of background and has gradually emerged into a kind of more, what should we say, mixed media form. I think probably if you look at computer science, you know, 40 years ago, 50 years ago, there wasn't much wriggle room in terms of
00:52:32
Speaker
Is it science? It was science. But I think you're right that that's blurred in the last sort of time. I have to interject something here. Yeah, please. Now we are entering a territory which is really fascinating. The way it started. The way it started is because
00:52:58
Speaker
David Hilbert asked a couple of questions in the beginning of the 20th century, 1901 I think. He was a mathematician and he
00:53:15
Speaker
saw that the field was in disarray. There were paradoxes, contour with infinity paradox, and it was all kind of trouble in all kinds of fields. And one of the main pressing points was the question of computability. What is computable? How do you decide if there is a proof for something?
00:53:44
Speaker
And this question spurred a fascinating debate where, you know, this is why we have church touring the guy that did the recursive function. This is the core, right? This is the core, mathematical core that inspired people like
00:54:14
Speaker
uh our um the the lisp creator he was a mathematician he was inspired by uh more more by recursive function than lambda calculus but um he he really like like you say ray he's he thought that uh computer science was a mathematical field and his ambition was mathematical he was he wanted to be
00:54:42
Speaker
recognized as a mathematician. But not everybody was like that. And there were many other people at the time who came from different fields, many linguistics and also social sciences. And there were the educators also at the time or a bit later. But it was very early on this kind of mixed sciency
00:55:13
Speaker
background to computer science. And you know what we say that the fact that we had to call the field computer science means that it's not science. So I would be very cautious about the true nature of computer science. I think it's a fascinating topic to explore.
00:55:38
Speaker
I certainly think that there's a mathematical core, but I also think there is a very important linguistic core and things that are rooted in social science or humanities. So. Well, I guess you could say that chewing test is a perfect example of that. Yeah. Yeah.
00:56:08
Speaker
The point I'm trying to say though is that I think it started with a kind of like this mathematical core, but fundamentally it's grown into something where I agree with you that it is no longer the case. Whilst it has some mathematics at its base and there is a sort of sciencey, nerdy kind of feel around computing at the core and the closer you get to the sort of silicon, the more mathematical it feels.
00:56:36
Speaker
The whole field, I think, is much more complex. I think it was never the mathematical core. The mathematical core was mathematics. It was not computer science. The main thing to remember is that the people who came up with the proofs about computability, what is computable and what is not,
00:57:05
Speaker
didn't have computers. So it was mathematics. It was logic. It's logic and mathematics. When we started producing computer, general purpose computers, suddenly, of course, we could verify these theories, but we had to come up with a way to manipulate these computers. The question was, now what do we do with that? And this question was never mathematical.
00:57:35
Speaker
Feels feels a little bit like saying that philosophy and science, you know, that they all used to be called philosophers. That's why you have PhDs. But really, that seems like it's kind of burying the lead a little bit that there is a difference. So it's in some aspects of the field, you know, that some aspects of the field clearly are more mathematical or more scientific than others.
Social Science in Programming Debates
00:58:02
Speaker
Are you giving no credence to that, that you're saying that there's... No, no, I'm trying to understand why you think I'm in disagreement with that. I'm just saying that the question of humans interacting with the computer was never a mathematical question. As soon as you bring computers and give computers to people, general purpose computers, you can give them the mathematics, but you still have a human computer
00:58:32
Speaker
problem, which is of a different type than than math problem. This is why I guess I'm trying to agree with I'm going very hard to agree with you. But I think the reason why people feel like it's not a social science problem is because of this sort of vestigial feeling that it's it's all maths and science. So they don't really they don't have the people who are trained in computer science at university, however, they don't get this feeling.
00:59:02
Speaker
that it is fundamentally a social science, that it is a sort of almost liberal arts degree in many ways, especially with the collaborative nature of it these days. That's a very good point, but that depends on what you exactly, what kind of computer science you're doing. If you work in computability, you work in mathematical logic. There's no question about that. If you work
00:59:29
Speaker
in programming language design, PLT, then you're not a mathematician anymore. You need deep in social science. Yeah, it's kind of like, yeah, it's a fashion show, basically. Ask Rich. I think we'll eventually get to him and then I think he probably would have something to say.
00:59:59
Speaker
I'm sure we're all waiting. Maybe he thinks also that Hal is the other. Exactly. Pretty sure Hal is deafened, so that makes sense. So I think to go back to your open source projects and your contribution to the community,
01:00:23
Speaker
Are there any other things that you want to highlight that is there on your GitHub or the libraries that people should take a look at? Yeah, let me keep it simple and tell you, don't look at anything except maybe Benjamin, which is a clean abstraction, which does something quite useful, managing
Benjamin Library & Open Source Projects
01:00:53
Speaker
I mean, I can explain, but do you want or do we have time? No, of course, of course. Yeah, please, please do. So the name, the name gives it away. But, you know, it's nice to know what exactly Benjamin is. So tell me, tell me, what is the name giveaway? I have no clue. Is it where to print money? Because like the Benjamin? Is it the mathematician? No, it's a mathematician.
01:01:22
Speaker
Not a very sympathetic one, but he was kind of, I suppose I was looking for a name for my library which deals with idempotency. And I came across this guy. So basically what it makes,
01:01:50
Speaker
What it allows you to do is when you're writing web development or web applications or any kind of applications, you often have to make sure you don't repeat an operation twice. For example, when you send in a newsletter to your users and in the middle of the operation, you have a problem and then suddenly you don't know
01:02:18
Speaker
who received the newsletter and who didn't receive yet. And you need some kind of solution to manage these things. So Benjamin is an abstraction to do that. It takes a persistence function, a logbook function, and you can write your operation, your dependent operation, wrap it into this macro that the library works,
01:02:48
Speaker
that provides and that's it. Benjamin, I recommend because the documentation is complete, there is a blog post and you should have no trouble understanding what it does and how it does it. The other library, of course, is System because this one has been maintained since day one. It has a big set of components.
01:03:17
Speaker
it's useful if you use component. And I would finally, I think, oh, yeah, the I wrote this, how do you call this certificate, issuing an interface, a client for for issuing a certificate via Okay.
01:03:44
Speaker
So you can generate the CSR and then get the certificates. Yeah. Okay. Nice. It interfaces with lesson creep, which is stable and which is optimized for running as a cron job.
01:04:04
Speaker
So it can automatically fetch the new certificates and what is it? Yeah, exactly. It's kind of a subset of third board because third board does everything and mine is just to get a certificate and then to run as a con job. It's written in closure based on an excellent JV API. This is a stable project, also well-documented.
01:04:35
Speaker
And then if you're adventurous, you can look into this mini framework for ring components, which is called Ramwork, which ships with system. And what does that do, Ramwork? So it's the equivalent of the duct components or integrant. It allows you to write declarative system map.
01:05:04
Speaker
complete with the middleware and handles that you might have. And of course you have the Maven. And Maven, which I encourage only people who
01:05:22
Speaker
are intrigued by the videos that I'm doing. I'm not calling veterans and people who are doing closure. I don't want people to start using it as their build tools. But I do recommend it for people who want to work beginning and who can relate to what I'm doing on the videos.
01:05:48
Speaker
Okay, that's pretty cool. By the way, I mean, I really like the way that, you know, all your projects have like consistent styling, you know, website and documentation style. I mean, they're really like, you know, it shows that you have a type of graphic, you know, ideas. And it really looks really, really, you know, beautiful. And thank you. So websites are really well built. So I really like that. So
01:06:19
Speaker
So any other points that you want to touch upon before maybe we want to? No, I'm exhausted. No, it was really fun. It was really fun. I'm really happy that we had this conversation.
01:06:44
Speaker
And I'm not surprised because I'm a longtime follower. And I don't miss any episodes. And you always delight me. And it was a big delight to be on your show.
01:07:01
Speaker
Thank you. That's a I think we apologize for all the all the nuisance that we talk usually, but you know, with the guests, it becomes much more bearable, you know, the whole podcast stuff. So I think so people like you add way more value and then cover it up to all the negative shit that we have to tell the bullshit that we talk about. No.
01:07:27
Speaker
It's a pleasure to talk to you, Daniel. I haven't looked at Melvin yet, but I'll give it a shot. Thanks a lot for sharing your ideas. It's really nice to talk to a person who is not from the programming background, from the beginning. The perspective helps a lot.
01:07:51
Speaker
And maybe you should come back to discuss the whole, you know, computer science versus is it science, you know, that maybe we should do some some fun, fun episode one more time. Oh, yeah, absolutely. Well, rightly, that's the sort of SIC beginning of SICP is the thing that takes apart computer science. Yeah, that's exactly. That's an amazing point. Sussman and Abelson always
01:08:22
Speaker
label their educational efforts in sick pee as linguistic. Their coach is linguistic. Yeah. Yeah. I mean, you had to get, you had to know what, uh, you had to know what, uh, the civil arrest on the uses, but, you know, fair enough.
01:08:38
Speaker
Sorry? I said you had to know what the sieve of Arasthenes was, but fair enough. The prime number. The sieve of Arasthenes. So the domain is mathematics. It's one of the criticisms of the book, but I myself didn't have any trouble with the mathematics in the book. So I don't think
01:09:08
Speaker
It should be a real, and if you do have trouble, then you can go and use concrete abstraction, another work, educational computer science book, which has less mathematics. And you can also look at Mathias Felison, how to design programs. These people are doing amazing work in education of computer science.
01:09:36
Speaker
And everybody, I really wish to see people from more backgrounds doing computer science. And it's just a psychological barrier. And I want to see people from all kinds, from all backgrounds, from computer science. Because it's so boring to meet the same kind of people all the time in the office.
Podcast Anniversary & Community Appreciation
01:10:01
Speaker
That's horrible. It has to stop.
01:10:04
Speaker
Yeah. Well, I really appreciate your kind of view. You've got a definitely a more contemplative, reflective kind of attitude, which I really appreciate. So thank you. And I think a lot of the audience does as well. So that's really good. Cool. Excellent.
01:10:21
Speaker
So I think that's it for this episode. Thanks a lot, Daniel. And thanks to all the people who are listening to the podcast. As we said, I think we just crossed our fourth year. So we hopefully continue doing this stuff as long as we can.
01:10:37
Speaker
Can I just finish up by just saying that I noticed that something we talked about offline is that we've suddenly got a little bizarrely in this kind of like a strange time. We've suddenly got a bit of an uptick in the people supporting us. Maybe these people are listening to definitely a little bit more in this. I mean, I don't know what comfort we can bring really, but if it's something then I'm really glad.
01:11:05
Speaker
Absolutely. How do you see that, Donald? No, in the pattern. Oh, right, right, right. Hey, guys, like David Nolan said last time, if you can support all the good people.
01:11:22
Speaker
Exactly. So a big thank you to the people who are supporting deaf and obviously now there is a lot of other nice stuff going around. It closes together and people like everybody putting out their time and effort. So what you're doing is not called computer science. So on that bombshell. No, that's what I said. Get back to thinking, people. Exactly.
01:11:52
Speaker
On the contrary, you might be doing computer science without knowing it. Exactly. So you might be doing linguistics, but actually you're doing computer science. Exactly. Keep having fun. And that's it from us. The main message is you don't know what you're doing. If you will. This is very interesting because this relates to intellectual humility.
01:12:21
Speaker
Yeah, a stream. But this will take us to another episode. I think it's funny just to say that people don't know what they're doing now. Exactly. I can see people screaming, listening to the episode like, you don't know what you're doing. We know that you don't know what you're doing.
01:12:42
Speaker
You know what you're doing. Exactly. Let's ask them. Where do people say what they think? Exactly. There is a different podcast Slack channel if they want to. But Slack channel, then it's not public. Oh, on Twitter. Exactly. Twitter. Yeah. OK, let's hear it. You could argue that Twitter is in public either.
01:13:11
Speaker
Okay. It's got the same barrier as entry to fucking Slack ads or Facebook. You've got to give all your crap to some billionaire. That's a good point. Okay, so do let us know what you're doing. And then please remind us that we have no clue what we're doing. So we look forward to your angry letters.
01:13:40
Speaker
Yeah, PO Box, Stefan. Exactly. It'll say that. Yeah, well, eventually. I hope we'll meet soon physically because I missed the conferences and stuff I left. That's the hottest date request I've had for a while, Daniel, to be honest. I'm afraid so. Yeah. It's quite depressing. Nice.
01:14:08
Speaker
I guess that's it from us before we go on to another topic. That's it. Thanks again very much. Thank you. And we'll see you in another episode.
01:14:21
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:14:38
Speaker
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:15:07
Speaker
Enjoy your day and see you in the next episode.