Zencastr
00:00:00
00:00:01
Speed1x
Format
Share
Embed
Report

#61 - Daniel Szmulewicz

defn
defn

78 plays · May 27, 2020

We talk to Daniel Szmulewicz about Programming languages, Writing, meyvn and of course Clojure!

Transcript

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.

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.

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

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?

Speaker: You were not there? No, I was there. Does sitting next to him count as meeting him now? Not really. Well, I talked to you, Ray. I said hello. Yeah, okay. Guilty.

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.

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.

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?

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 there? So what do you do there? Maybe a quick introduction.

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

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.

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.

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.

Speaker: At one point I started to sell internet connectivity. 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.

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.

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.

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.

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...

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.

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,

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.

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.

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.

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?

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.

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. And now it's been something like five years that I run with my own projects. And I have two projects.

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.

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.

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.

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

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.

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.

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,

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.

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.

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.

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.

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.

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.

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.

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.

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.

Speaker: How do you style the front end? 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.

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.

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

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

Speaker: you experience pain. And I wanted to take things under control. And closure forced me to look into all the moving parts.

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.

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,

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

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

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,

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

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.

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.

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

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.

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.

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

Speaker: by competing products or projects. 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

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

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

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,

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.

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.

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.

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

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

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.

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.

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.

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.

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.

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.

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.

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

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

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

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

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,

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

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.

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.

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

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.

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,

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.

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.

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.

Speaker: So I kind of think if you don't have to build it, why do you want to build it?

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.

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.

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.

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.

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.

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

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.

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

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.

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,

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,

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.

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

Speaker: people who can, who want to buy a license for Maven, but you don't have to.

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.

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?

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.

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.

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. These are questions about psychology,

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.

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.

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,

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.

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

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

Speaker: David Hilbert asked a couple of questions in the beginning of the 20th century, 1901 I think. He was a mathematician and he

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?

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

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

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

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.

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.

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.

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,

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.

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.

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

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.

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

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.

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,

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

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.

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,

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

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,

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.

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.

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.

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.

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.

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

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.

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

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.

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.

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.

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.

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

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.

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

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.

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. That's horrible. It has to stop.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Speaker: Enjoy your day and see you in the next episode.

Speaker: you

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Speaker

Recommended

b8c570464f67 Siyoung1:29:13
b8c570464f67 Siyoungdefn

1,187 plays · Mar 22, 2026

2aba8aeedf7d Polylith1:43:06
2aba8aeedf7d Polylithdefn

1,335 plays · Jan 2, 2026

95a74d1e2f4d Bobbi Towers1:19:09
95a74d1e2f4d Bobbi Towersdefn

1,178 plays · Nov 12, 2025

7df1b8716726 Anna Colom49:56
7df1b8716726 Anna Colomdefn

1,312 plays · Aug 3, 2025

876b4c306172 Cora Sutton1:29:30
876b4c306172 Cora Suttondefn

1,264 plays · Jul 9, 2025

3d32130bbe3d Drew Raines1:38:25
3d32130bbe3d Drew Rainesdefn

1,166 plays · Jun 9, 2025