Is CSS a programming language?

— 52 minute read

In March, Heydon posted an inflammatory tweet, as he often does. :-)

If you don't think CSS is a programming language, you have a parochial view of programming and, I'm willing to bet, a parochial view on most other things - gender and ethnicity included.

That escalated quickly. While one might be both racist and not consider CSS to be a programming language, it seems a spurious correlation. And it's an especially strong take, given that Heydon appears to have changed his position on the matter. This was him tweeting in 2013:

HTML is not a programming language. CSS even less so.

So, which is it? Are we on the path to yet another “it depends”? And whether it depends or not, does it matter? Would “elevating” CSS to the status of a programming language encourage programmers to take CSS development more seriously? Or does moving CSS into a realm with a traditionally higher barrier to entry end up an exercise in exclusion?

Heydon and I discuss this. For an hour. It's a civil conversation, don't worry.

Where’s the transcript? permalink

We know that not everyone is able to listen to podcasts, and of those who are, not everybody wants to hear two guys talking about whether CSS is a programming language for an entire hour. That's why we want to provide shownotes. And a transcript. But unfortunately, we're not ready with those yet, and we're both heading out for well-deserved vacations. Thus, our apologies, especially for the lack of a transcript. We find them important, and we will get to them.We've added a transcript. We let an AI do it to get it up quickly, so we'll need to clean it up some. but it's better than nothing for right now.

Please bear with us as we venture into this whole podcasting thing. We'll work on pacing, length, and everything else. Right now it's kind of raw—there's not even an intro!—but we hope you enjoy it, and that you might come back as we continue this project.

Transcript permalink

[00:00:01] So today we're talking about whether CSS is or is not a programming language, right?

[00:00:10] Yes.

[00:00:11] And that's that's just going to be the topic. It's gonna be not what we're going to try not to sidetrack too much. We're going to.

[00:00:19] Well, we first of all, we're going to talk about beer, which is not directly related to CSS or whether or not it's a programming language because we decided to drink beer whilst we did this. I can't remember why we decided that. But always like a drink.

[00:00:36] So I remember why we do. It's basically an idea we stole from another podcast. Other song. Yeah. Linux Outlaws.

[00:00:47] Well, I have to say that I've never listened to the Linux downloads podcasts, but I'm I'm I'm already quite thankful for them for enabling me in terms of my alcohol intake. So thank you to them. So. Okay. Well, the beer I'm drinking is is a little known beer from a little known kind of small island called Ireland. It's called Guinness. And it's but it's the thing is it's not draught Guinness. I have a I really don't like draft Guinness. So basically frothy Guinness. I wouldn't go near it because I feel it's I don't know. It doesn't taste as good. It doesn't taste as strong as what I call traditional or old man Guinness. Well, I suppose on the can is original. This is original. Guinness is just like a nice tasting stout. And so that's what I quite often drink. But yeah, not the draught stuff, especially in cans, because it has that weird widget thing inside it so that when it opens it it it props itself up and then goes flat within about three mouthfuls. So there you go. That's what I'm drinking.

[00:01:58] What do you do now? Well, I really stretched to the limit of what you could call beer. So, you know. You know LEIFER do you know Leifer l e s yeah.

[00:02:09] I never know how to pronounce it because I used to call it lefty and then I to call it left. Yeah, I think the the Belgians say Leffe. Okay. So I'm going to try and say that then. Yeah. So that you know. Yeah. I mean at least that's what they call it here in the Netherlands.

[00:02:29] This is Leffe. So there's that this is a new one I haven't seen before because it's non-alcoholic. So there's zero point zero percent. But it's the blonde. Zero point zero percent.

[00:02:41] And I usually hate. Okay. Non-alcoholic beers but I'm going to be driving a little bit later. So I figured for today's episode I wouldn't go for an actual one.

[00:02:54] There's usually and I think it would set a pretty poor precedent for our podcast and our professional reputations in general if we broadcast the fact that we were tanking up and then going for a drive. Yes. Well, I'm fully behind you having a non-alcoholic left. Is it taste anything like the actual blow?

[00:03:20] Oh, no, no, it's it's a stretch. You know that with these I usually dislike these beers, generally these non-alcoholic beers that they feel really multi to me. And I'm just not at all like beer. My seven year old, when I went downstairs and I said, well, you know, don't bother us. We'll be doing well. Happy recording, no podcast. And he's like, why are you taking a beer? And I said, it's not beer. It's, you know, zero point zero percent.

[00:03:50] And he said, Oh, so that means I can have one that does that doesn't mean you can have one. So he's just one milk and he's like, why? Why can't I have one if there's no alcohol in it? And that's the only bad thing about beer.

[00:04:06] And these are like philosophical discussions that you don't want to get to two minutes before you jump on Skype and record a podcast.

[00:04:14] So, yeah, that could have taken some time. I mean, there's so much so much for a seven year old to unpack in that conversation. Yes, thanks. I mean, if I'm doing a podcast, though. Wait, what you're doing took cars now. And I'm drinking, but I'm not drinking.

[00:04:29] Exactly. So that I have a feeling the conversation isn't over, so.

[00:04:35] Okay. So let's get onto the question then. I guess now that we've we've covered beer fairly comprehensively. Yes. So, yeah. Is this notion of. What is CSS? I think most people agree that CSS is code, but a lot of people don't agree that it's a programming language. Now, I think you and I have probably slightly different positions on this, but I think I mean, I think we probably both agree that CSS is an. Potent and valuable part of development, right?

[00:05:16] Yes, definitely. I don't think there's any doubt about that. It's my favorite part.

[00:05:23] So it's not. I think it's my favorite part. Yeah, I am. I mean, I think HD e-mail is really important, obviously. That's the foundational thing. And I write a lot about HD e-mail because I write a lot about accessibility. And that's obviously has a big impact on accessibility, especially regarding compatibility with assistive technologies or adaptive technologies, etc. But yes, ISIS is, I find really fun and interesting and it just sort of seems to unlike some kinds of programming and I'm going to refer to it as programming.

[00:06:02] It's, uh, it's I find it intuitive maybe because it's declarative or something. I don't know.

[00:06:11] But I I understand it kind of implicitly, whereas things like I mean, it took me maybe half a year to learn CSS.

[00:06:22] But it's taken me six years or more, probably more than that to to learn JavaScript. Obviously, I'm learning I'm learning elements of both. Still all the time, you know, there's new features come out and stuff like that. And I kind of grok it CSS pretty quickly, whereas it seems that a lot of people don't. And my concern is that I think a lot of the consternation around this question is around this idea that people day people who don't understand CSS or don't seem to have a natural aptitude for CSS, let's say, are quick to write off and say, well, it's rubbish.

[00:07:03] And I just yeah, I think that's lazy and and not satisfactory, basically. I think it's undeniably a very cool thing. And when people start to say stuff sort of badmouthed it and say, oh, it's badly designed, it's and all of that stuff, I think they just it's easy to say it's easy to write things off when it just because you don't just because you don't really know them or because they're they're not familiar to you.

[00:07:35] I mean, if you can go quite easily ISIS base, I suppose from JavaScript into C++ and back again and then onto Python because they have similar features and similar primitives and that sort of stuff. I mean, if you get into the territory, CSS, it's very different. It does very different things and it does them in a very different way.

[00:07:55] And I think I think a lot of people who consider it a not real programming and B, not just not very well designed as a language or whatever idea is just because they're comparing apples and oranges. Yeah.

[00:08:12] Yeah, yeah.

[00:08:13] So I think it depends, of course, on what you what your definition of programming and programming languages and I feel like that's already kind of a BS BS beehive, you know, to discuss that because it seems a lot of people don't agree. And of course I just pulled up the Wikipedia entry. I mean language which is unhelpful I say is the one.

[00:08:43] So can I just read this? I think it's the same. So a computer program is a collection of instructions that performs a specific task when executed by a computer.

[00:08:54] Most like the the the second bit, which is most computer devices require programs to function properly like I think all of them do, don't they? I don't know. Like I didn't think there's very many sort of laissez faire computer programming like, well, arguably job scripts is because it has a really weird way of evaluating was faulty and was treated. But I think the aim is for things to function properly, at least even if that means loose typing.

[00:09:27] But I think you described the program, right?

[00:09:31] And then you say, oh, yeah.

[00:09:33] So a programming language as it stands here is a formal language which comprises a set of instructions that produce various kinds of output.

[00:09:43] Right.

[00:09:44] And so to me, using computer programming, they implement algorithms. Now we know you can implement algorithms and CSS probably not all. We know that CSS is Turing complete, which is some people's definition of a programming language. I think so.

[00:10:00] Could you describe what cheering complete means? Because I'm not entirely sure what I what what the implication is of that.

[00:10:09] Well, I'm not a programmer, so the the like Turing completeness, if the the technical definition is desire, I don't even understand the technical definition and basically says it in computer ability theory, a system of data manipulation of rules is said to be touring complete or a computationally universal if it can be used to simulate any Turing machine.

[00:10:37] So okay, if you go there then.

[00:10:43] So that's sort of circular so far.

[00:10:45] Yeah, it's a touring machine is a mathematical model of computation that defines an abstract machine which manipulates symbols on a strip of tape according to a table of rules.

[00:10:56] So I can never, you know, compacted. I don't know anything about automation theory and I've never seen like a literal this table of rules for a Turing machine.

[00:11:09] And I'm not a programmer.

[00:11:10] So it's very, you know, way off my my areas of expertise complete.

[00:11:17] Likewise, I have not had any formal. I'm not from a computer science background. I know. I guess. Yeah. So am I. Well, I'm certainly not. I don't know why I said I guess I'm certainly not from that background. And that's another thing, which is I mean, we could get into the whole divide between this people involved in the Web who are from that kind of background and people who are not. And I think that's great. But I do feel like there's a lot of pressure from one side that you have to fit a certain mold. You have to know real programming or whatever.

[00:11:52] Yeah, but. OK. So I agree with you on this about what is real programming.

[00:11:56] I think if you are if you're able not only physically able, but if you if you say put things into a computer program and you can run it and it does things, then you have programmed so that you might not have the background in programming paradigms.

[00:12:20] And, you know, what's what's the difference between functional programming and object oriented programming. And I I don't even understand these differences and I'm trying to get my head around them.

[00:12:31] But it seems pretty hard and I'm not sure how important it really is for me to be able to do that.

[00:12:37] But I think that a lot of it is what you said, that if you look at a lot of programming languages, then there are these similarities and these are very different from CSS. And when you see CSS and there's this thing like I I know the maintainer of this programming language called S.W. I Prolog and pro-life is it's considered, I guess, a logic programming language. But you could do a lot of different things with it. But it looks so completely different than any other language that I've seen.

[00:13:15] And this maintainer, young veto maker.

[00:13:21] He he told me that it's really hard for programmers who have learned, say, languages like JavaScript and other I guess normal normal languages or imperative languages, I believe he said it's it's really hard to. Well, I guess JavaScript is a functional language. See, I'm I'm all confused, but it looks completely different.

[00:13:45] Using ad is very just you do it.

[00:13:48] I think there's a lot of diversity. That's the thing. I think that's what people have trouble with, is the diversity that they used to one kind of thing which works in a certain way. And then when someone shows them something else and say this is a thing in the same category, they go, no, it's not. It's not in the same category. How can it be? It's not what I'm used to. And I I mean, I got into a lot of trouble on Twitter a little while ago.

[00:14:11] So. Oh, no, you're kidding. Yeah, well, like you never get to sit on Twitter. This is a periodic thing for me.

[00:14:18] Yeah, but. So I said, if you don't think this this is a programming language. You have a parochial view of programming. And I'm willing to bet a parochial view on most other things, gender and ethnicity included. No, no. Yes. So there there are people who then that their reaction was, how dare you. I see. This isn't a programming language. Very few people actually said how they you see, this is a programming language isn't a programming language. But also, I'm a very inclusive person and I'm very liberal. No one seemed to sort of take the opportunity to show their credentials in that sense. They were just shutting down the I think they cared more about these specific individuals, cared more about just making the point that CSS isn't the programming. But it is also people who actually just genuinely don't think it is. But I actually quite like Laura Shanks definition. Laura has been doing some really great stuff to do with the algorithm since ISIS and how to solve serious problems in an algorithmic way. And she calls it a domain specific declarative programming language. And I think that's that's the thing is it doesn't see us as doesn't do an awful lot of stuff. It doesn't do if and else and it doesn't do boolean is it it doesn't do the kind of stuff you'd expect other kinds of program programming languages to do. But then I mean it exists because it because it does other stuff that those programming programming languages. Unbelievable. So like going back to what you're saying, you know some programming languages to look at, some natural languages to look at are very, very different.

[00:16:06] They have very different rules and work in very different ways. I mean, I've tried to learn Chinese and it's just a completely different system in many ways. It's a much simpler system than English because you don't have it's you don't have to conjugate and stuff like that. What I find sort of ironic is that it's to the it being declarative is often kind of the way in for people to say that makes it not real programming. So they actually if it's imperative, then they consider it more like real programming. So when one person who I got involved in this conversation with was saying. So this was a big, long thread, as you can imagine. And it turned into a complete shit fest. And he was he basically he ended up saying CSS doesn't do anything, which I thought was kind of hilarious because obviously, if it doesn't do anything, then why would it exist? Obviously, it does something. Otherwise, no one would use it. I mean, it's the only way to make Web pages look good. Right. But the idea that it but I think what he meant was that it's it's not imperative. But then at the same time, there are all of these people who are really, really excited about declarative versions of things like JavaScript. So JavaScript gets to be declarative and then that's like a better version of JavaScript. But CSS is declarative. That's what makes it shift. Like, how does that work?

[00:17:47] I have no idea. So that's. I think, you know, that the question that comes to mind pretty quickly when this discussion begins is why is it important? You know why? The idea is there like a sea assessor somewhere in the desert in distress. And we have to save it by proving that it's a programming language. You know, that that is it worth is it worth the battle? You know, and does winning the battle even yield anything useful? So I'm not sure.

[00:18:24] I'm not convinced that it's that important. As many, you know, arguments are not important that happen, say, on Twitter.

[00:18:33] But yeah, I had people to have people who have come to me to say, you know, I think CSS is brilliant. I think it's amazing. So it was common here actually was something I really like. CSS was a first aspect of programming I learned. Yeah. I enjoy using it. And it's probably the language I best at, but it's not the programming language. Kind of weird that he says it was the first aspect of programming I learned. Yeah. So it's not programming, but it's. But, you know, I guess what he's saying is it's still valuable even if you don't call it programming.

[00:19:10] But the thing is, I think is that a lot of the time, because I agree that it doesn't. I would agree with anyone who says in a vacuum it doesn't matter whether it's programming or not. So if there wasn't like the cultural element around it, but that I think lived experience tells me that in our industry, what's considered programming is considered serious and real and important. And what's considered not programming is, you know, soft skills and sort of foible these things, you know, not not not things that are that are to be taken seriously. Right. And and so weirdly, I've kind of died on this hill several times, not because I actually I don't actually care in the strictest sense. But I do also appreciate that when people say CSS isn't a programming language, a lot of the time they're not just saying it's not technically an imperative way of writing code. They are really saying it's not valuable. It's not or it's not good. It's not part of the. It's not real. It's not serious work.

[00:20:31] And that's the this man, I think. Yeah. And I agree with you on that point.

[00:20:35] So that's the I think that's the heart of the issue, is that the like I have this theory that I've that I've mentioned several times to people, and that is that all of this kind of talk that all of these discussions say started happening when when a lot of programmers or, you know, back end developers started moving to the front end. And if you remember the friends we had. I mean, we were just web designers. Right. Web designers and developers. And you basically in in the 90s, the late 90s. And we did everything right. You just.

[00:21:15] Yeah. CSS was very new. You couldn't do a whole lot. JavaScript was this kind of weird, unchartered universe where there was all this stuff, you know, they were kind of DHS, UML, and it was like handoff. Really? Yeah. It was hard to understand the code. You know, if anyone had written and that was kind of a separate thing.

[00:21:38] But it was you kind of did all you did your markup.

[00:21:43] You did your CEO says and you you did a little bit of JavaScript when you needed to.

[00:21:47] And sometimes, you know, people knew a little bit of back end, but then everything blew up.

[00:21:53] And then it's the same thing as when technologists discovered basic design principles like grid systems and design systems and these things that are really cool and that everyone's talking about right now where, you know, designers, people like me who were schooled in design are like, why are you guys getting all excited about grids you'd have today? I understand you're getting excited about grids in CSS, but I mean, there were years where there were conference talks about what is a grid and people like, oh, yeah. Grids. And I can implement this like this. And we have bootstrap grid and it's there's nothing to get excited about. You know, it's like going to an architectural conference and people talking about like certain types of steel beams and everyone's getting all excited about it. So these.

[00:22:43] Yeah, I it once I think what it is is when you at least it's my theory that when more technology people who came out of technology and went into the web as opposed to, you know, the variety of people that were that were working on the web before because there was a low barrier to entry, these technologists who've come in, they're just trying to work in the same way that they've always worked.

[00:23:13] So they might have a computer science background. And there they're used to working in a certain way. So they they try to make everything fit that way of working to you, because that's what they know and it's easier for them.

[00:23:27] And when I first saw CSS, I thought this is a pretty cool, declarative way to get to make something of a document, at least at that time. I mostly thought within a visual sense. Right. Even though there's more to it than that. But for me, it was like I can I can design this thing and in declarative way and I don't have to be a programmer to do it, which was kind of the idea. It was these academics basically of you, if, you know, a lab tech a little bit, which.

[00:24:00] Oh, yeah, I know. I know. You're a big fan of lab tech.

[00:24:03] Yeah, well I used to do like most of my but when I had my own business, I used to do most of my business documents in lab tech invoices and proposals and everything. And there was I mean, CSS is a lot easier to me than then using lab tech because you kind of have to mix the markup with the.

[00:24:22] I honestly think, see, CSS is the best typesetting tool we've ever had. I mean, you compare that to using like a graphical interface or some sort of weird halfway house thing like like words where it's like you can kind of make things look a certain way, but then things go skew if really quickly and it does with behavior. But this is a really dependable. You write rules for it. You code it and it comes out a certain way. I think we've I don't I think if people someone invented CSS today, people would be including people who are who are kind of real, sort of like JavaScript pros who really like their job scripts and kind of currently thinks, yes, this is a bit silly. Would actually find it really exciting just because it is me. But but it would be really exciting because it would be for the first time.

[00:25:16] Yeah. Styling think. Styling things from. From one place and those styles just propagating everywhere. That's what's mouth. Yeah, I agree. And I think.

[00:25:29] Well, you know, Leo Varro, she she put she designed her book with C assess the use of the great cruise line. She did that with CSS, which by which is really cool. And I know that the founders of CSS actually use CSS to write their book. But they used I'm not sure what Leo used, but I think they used a format called Prince Prince X AML. And that's that's actually I've used that for client projects as well in the past. It's pretty good for using CSS to get to print. And there are other there are other initiatives where people are trying to use CSS as a as a typesetting system across platforms. So not just Web, but also print.

[00:26:22] And I don't know, I find it very interesting.

[00:26:25] And I think that the idea that basically anyone who the idea that anyone who would write a document, as you know, back then, the Web was originally for it for documents, then they could style this in a way that makes sense, in a way that's kind of similar to the, I guess, the essence of what you would do with classic. Yeah, but you don't have to be a programmer to do it. So that means it's at it. That seemed pretty inclusive to me because I was able to do it without any computer science background.

[00:27:01] So I can imagine just to the credit of the computer scientists who, you know, don't like CSS, when you come into an environment where it seems like it's, you know, from the wild frontier and anything goes and it's kind of different than your own paradigm that you kind of want to get a grip on that and kind of form things to your own way of working. So I can understand that. But it's also it's a pity in a way, because I feel like we lose that kind of open mindedness that I felt like was kind of the spirit of the web in the in the very beginning where everything was good. You know, everything was fine. And people came up with different ideas and we kind of explored them and thought about them. And there wasn't such an environment of putting people down for their way of working compared to our own. I was always I kind of grew up with this idea that was always told to me growing up that there's always someone and there's always something better than what you're doing and there's always someone better than you at it. I mean. Yeah. And that is as long as you keep that attitude in a way. I mean, for me it sometimes becomes crippling because I always feel that other people are better than me in almost everything that I do, you know, which is a totally different topic for another day bus imposter syndrome type thing.

[00:28:29] Yeah. Yeah, maybe I have you know, we could we could probably talk about imposter syndrome at one point because, you know, I hate that term. Oh yeah. There are so many complex feelings around that.

[00:28:41] I never want to have this idea that I have that, you know, and I don't want to tell people I have imposter syndrome because I feel like that's confirming that. You don't know what I mean.

[00:28:54] But anyway, we'll get off on a tangent on that one. But how does this idea.

[00:29:02] It could be negative if you go as far as I tend to go sometimes, you know, doubting yourself.

[00:29:08] But if you don't, then you get this healthy attitude of, you know, maybe what these other people are doing is better it within a certain context, you know, in a certain environment or considering their background or whatever.

[00:29:25] So if we had more of that, where this open kind of acceptance that different people do things in different ways, that would probably help a lot. But when you dive in to see who says a lot of it, even the founders say we would have done things differently. And I remember they got on stage at CSF Day together, which was pretty pretty cool.

[00:29:46] And they said, well, we'd like to apologize for a few things. Know, the thing is, they apologize for no rap being one word without a hyphen.

[00:29:56] Yeah, well, there were several of these things. I mean, if you think about left and right as opposed to start and end the way we do it in flex box yet, you know, all all these types of things that.

[00:30:09] At the time, they seemed logical, but the web was smaller. No one knew what was going to blow up the way it did. Bird boss said to me once that he expected that CSS would be kind of a temporary solution, but it can't be temporary.

[00:30:26] Once, you know, millions of Web sites use it and you have to stay compatible. So then you just you can add things. You. I mean, you could phase things out. You can deprecate them over time. But that becomes a very complex situation.

[00:30:43] But a lot of stuff, not just CSS is. I mean, JavaScript. Yeah, I'll say that. Why didn't it? I mean, that was written in, what, a couple of days to begin with. And and then, you know, then became like CSS, a serious concern just because because of the huge uptake, I guess is the main reason. Like, oh, people are using this shit. We better make it decent.

[00:31:06] Yeah. Yeah.

[00:31:08] And the thing about the open web, as soon as is out there, it's out there. So. Yeah. Exactly. And it's taking a long time. But the CSS, if you look at it as a language it island.

[00:31:19] I like it. It's pretty cool. When I met when I started my job at the the place where I work now, I went and met.

[00:31:32] I'm in design leadership right now. So I don't have direct developers directly on my teams. But I went out and I you know, I want to meet these teams like. So the first team I met was a team of developers working on the design system. And we sat down and I first question I asked was, who here likes CSS?

[00:31:52] You know, but all the hands went up, which was good, because now I kind of get an idea about, you know, what kind of front end developer am I dealing with based on whether they can do that?

[00:32:04] I think that tells that tells you an awful lot. Yeah, kind of.

[00:32:08] But because there are problems, I mean, like, you know, we can sit here and we can talk about no rap. That's silly. And the left right stop and thing and all sorts of. I mean, there was a site where it just there was like 50 or 60 different things which the person felt was kind of a mistake. And C, assess this. But this is, you know, JavaScript has this stuff as well.

[00:32:29] But.

[00:32:32] But you can you can take all of that on board and still love CSS and love the concept of it.

[00:32:38] Love, love what it does in its basic form, I guess.

[00:32:49] Yeah, but I'm so glad I'm bringing it back to to the to the question of whether it's programming or not. So I think we've covered some interesting areas here, especially to do with the. I think one of the main themes that has emerged is that it's very difficult for people to change their minds about things and to be and to accept things which are different. So there are young people who have learned computer science and then and then when they're given CSS, I think probably the main issue they have is that essentially they're being asked then to to do visual design. It's still code and you still write it that way. It still has logic, you know, like, um, we didn't explicitly have if and else in in in JavaScript, in CSS and we don't have it, but we didn't have it in J.S. X either. I mean we've gotten rid of the FLDS stuff because we don't like it.

[00:33:47] But that doesn't mean that the that logic isn't still there. A selector is if and else isn't it. It's I mean it is even has a negation built in that I think pseudo class.

[00:33:58] And didn't Harry Roberts once say that if you like a complex selector is basically a bunch of nested if statements.

[00:34:08] Yeah. And I'm not.

[00:34:10] I absolutely agree that because I mean logically it might be but the way it's implemented, it doesn't work exactly the same way as far as I know. It's just.

[00:34:20] No, but I think we've established that it doesn't have to work exactly the same way for it to be a comparable thing right along to the same category. Right. So yeah, I think that's right. So if you have like dot sidebar, you know, class sidebar P it is saying style the paragraphs this way if they appear in an inner parent element which has the class sidebar. So that's that's an a conditional thing like an F isn't it. So I mean this is the thing I think what I always come back down to is if it to me and forgetting the cheering thing to one side and everything I think of, it's writing instructions for a computer then it's in that's programming to me. You are. You are telling. A computer to do something in a language that computer understands. And so, I mean, you can even go so far as I know, telling Alexa to do something that's programming, right? Because you are it's something you're. You are saying something or doing something which is interpretable by the device or the machine or the computer. And that thing can then actually can can go off and do it. You have given it a program. You've given it instructions. But I think it's really interesting what's go ahead. A, before what's emerged is this idea of people finding it difficult to change the way they see things. So, I mean, that's why I I was talking about and it was very inflammatory, but I'm talking about parochial view. So what the idea was that if you had this mechanism in your brain where you tend towards defining things very narrowly in one area of your life, then then that mechanism already exists.

[00:36:11] So it can be applied to other things. I'm not saying necessarily you're going to be a racist because you don't think so. Yes, this is a programming language. I'm just saying that it's the same kind of mistake. And I think we all make those kinds of mistakes. We all have preconceptions that we try to apply to things. So programmers who have who are used to certain types of language then being offered CFS and thinking, what the hell is this? This is totally different to what I have expected. Therefore, it doesn't it's not valid. I don't I don't count it as being the same thing, but also like what you were touching with the grids and all of that stuff. I think it's really interesting, graphic designers moving into the web, bringing all of those preconceptions and all of those kind of ideas which are only really suited to working with static and immutable spaces and and orientations and trying to force that onto what is fundamentally a visually fluid and indeterminate medium. I mean, I talk a lot about with a project I'm doing with Andy Balawi, every loud thing. Now I start using this term quantum layout because I develop. I like the idea of it. You don't know you don't know how it's going to look. Only the the specific user will will know how it's going to look when they see it, because it'll it'll be determined by settings and by circumstances on their end. I can't be you can't be there with that lamp. So it's quantum because it could be a sidebar thing or if there's not enough space or that the zoom level's really high, it's not going to. There's there's not room for the sidebar. So it actually is like a you know, a single column layer instead. Right. And that's fundamentally a different ways and fundamentally a different way of designing compared with designing for print where you know exactly where everything is going to be. You know what it's going to be printed on what the size of that thing is gonna be.

[00:38:15] And and so therefore, you just make a completely different set of set of decisions.

[00:38:23] I mean, in both cases, you produce something which is a an arrangement of physical artifacts. Right. But apart from that, I mean, you're on your way to get there is very, very different. Right.

[00:38:37] Right. Right. So I agree with that. I think it's also where you where you come from. Like I've I have this idea, I guess, of what a programming languages and I feel like a programming language is.

[00:38:55] I know you have domain specific languages and I feel like CSS is definitely domain specific, although. Yeah, depends on what you consider a domain. If your domain would be web, then I would say it's not domain specific because you could also use it for print or natural order of things.

[00:39:13] But it's it's definitely constricted as far as you know, it's application at least right now.

[00:39:23] To me, I guess what I've always considered to be a programming language is more of a language that's more general purpose.

[00:39:32] And that literally follows that definition of you can you can run this. And whether that's running it in a in an interpreter or that you have to compile it first or whatever CSF is, is dependent upon other languages to be able to. I mean, you have to have at least something like HD AML to be able to see or experience what CSF is actually does with whatever you're using, you know, to.

[00:40:08] Style, if you will. So, yeah, in that sense, I mean, we have we have these distinctions already, and whether they're correct or not, we have the distinction of a programming language as opposed to a markup language, which, you know, HDMI ELA would be one. And I've never heard the discussion that HD email is a programming language, but.

[00:40:31] Well, I I think I think it's. My finding a if I don't think so, am I a racist.

[00:40:38] Is that it probably makes me a racist that I would consider c SS to be a style language, which is also one of these categories that we have.

[00:40:51] But whether I said I like markup language, they like the language part to me is that that kind of links it. Back to you say you say programming language and you'd say market language. Okay. So they're both languages, but these are languages which are consumed by computers, aren't they?

[00:41:08] In most cases, yes, they are. So. Yeah, yeah. So I guess I guess that's I mean they're very they're fundamentally very different things.

[00:41:17] Obviously HDL for us is Python. Yeah. But you know, and they're both computer languages. And I guess if it's a computer language to me that that is a programming language because a computer doesn't do anything unless someone programs it to do something. Right. Because we didn't have we didn't have a you know, we've not reached the singularity or whatever.

[00:41:39] No, no. Exactly. And we we don't.

[00:41:43] I think, you know, basically we're challenging definitions of the definition of a style language would be computer language.

[00:41:53] So we agree they're all languages, but it's a computer language that would express the presentation of structured documents, or at least that's the way, you know, that would be the Wikipedia definition.

[00:42:05] And what is a structured document? Well, in our cases, those could be apps now so that these definitions are are changing. Also, I think what we can agree on is that there are languages that are interpreted by a program in in a computer. Right. Or by computer itself.

[00:42:24] I would say in the case of CSS, it's interpreted by, you know, the browser or the user agent.

[00:42:32] If you want to expand that a bit, it has to do with the presentation, which is the domain domain specific part of it. And for me, that programming part stretches it just a bit because I feel like it's not something that I can write a complete set of instructions in and the computer will just do the stuff that I needed to do.

[00:42:56] You know, it's it will it's always dependent upon these other elements to work with it. So I can't just write a program and see, assess and run it. And so that's kind of my very Alex's can view on a programming basis and just run it.

[00:43:14] Right. But but but it will only. But it will it just does is very specific things. It feels as if the.

[00:43:21] Well how do you how do you run? How do you run CSS? What am I missing something.

[00:43:25] Can you like open a terminal and just run a CSS file unlike an executable?

[00:43:34] Well, no. Or even in a browser. Yeah, you can load it, but in order to load it, you'd have to use HDMI. All right. Two or JavaScript nowadays you can use JavaScript as well.

[00:43:45] But is this. Yeah, I think this is a really interesting kind of because I've heard similar sort of protestations from from folks. And I think you've you've kind of made a better case than the one I've heard before. But there was there was someone who's.

[00:44:03] What did they say? They were saying all you see is this NHT M. Daley, along with J.S., no, J.S. and a bunch of other languages like sequel. CSS is not a programming language because a style sheet is not a program. Okay. So that's kind of saying what you're saying, I guess.

[00:44:20] Yeah, but any kind of then saying it in an inflammatory way to make it. There's an opportunity. There is not really an argument behind there. But I don't know. I guess there's an article behind it.

[00:44:30] It's just IRA. Okay.

[00:44:33] But I think that sort of touches on kind of I mean, like I said, I think you put it better, but. But then he goes on to say that JavaScript isn't a programming like language either. He says neither is J.S. H. A mental sequel. Each of them have their own category nodes. Jazz is the only programming language on the list. So he he thinks that no jazz is a programming language. But J.S. isn't, despite the fact that no jazz. I mean, obviously with the jazz part of that, this is obviously JavaScript is that.

[00:45:08] Thing. So is that literally its own language now? If I've been in a cave, is that. No, Jess is one. No, she has a separate language. The difference. The only difference is the environment. And that's why I think the. So it's just jobless, right? Or am I crazy?

[00:45:25] Yeah. It's JavaScript which which I didn't know technically how it does it like it. It runs like as C or something. Right. So. So it's can. It's the same language like the high levels of the answers. Right. Yeah. Yeah. Exactly. Exactly. So it's a weird thing to say. Yeah. That's great. So I think the I guess what I'm saying is that the environment thing like it has to have its own environment or it executes in it because you can execute notes scripts.

[00:45:56] Right. So you can do. You would just do note space and then the name of the JavaScript file and it runs. Yeah. So that sort of executes their executable files.

[00:46:07] But I think that just because something runs in a browser, it's not that that's not the case anymore. It's just that you're just not explicitly typing the commands. The browser is doing that for you.

[00:46:18] So I guess what I'm saying is I don't think the it being an explicitly executable thing is, in my opinion, a good enough way of demarcating what is programming and what is right. Okay.

[00:46:32] But he'd do it. This guy goes on and like someone actually. That's a really good explanation. Steph, cynical. Stephanie stepped in and said, no.

[00:46:39] Jess is a runtime built with languages, C++ and JavaScript that allows users to use JavaScript outside of the browser because of course, JavaScript originally only works in the browser. Right.

[00:46:52] Ok, so there's going to come AIS that you can you can create some kind of runtime environment for C assess, in which case you could use C assess and just run it. It's just that that no one's taken, you know, made the effort to to write that kind of environment. As far as I know.

[00:47:10] But it depends where you draw the line, doesn't it, because. Yeah. You would use c assess in in. I've used CSS in a pub. Right.

[00:47:18] That's not a that's not a browser. Right. So I would write some e publish stuff. I mean I use Pandora I guess. Yeah. And then I I pointed at a C ISIS file and then I've got my CSI is in a thing that isn't a browser, so it's a different environment. And then in the book that I produce that I can then open up in in my books or whatever. So the language is independent of the environment, I guess.

[00:47:43] Yeah. And in your case, I guess I books would be the user agent. Which reader reads to your style sheet and applies that to your markup.

[00:47:55] Yeah. Yeah. Yeah. Exactly. So yeah, I I don't know.

[00:47:59] I don't know what the answer is to me, to be honest with you.

[00:48:02] I mean I need to add some kind of conclusion, but in a way there's no.

[00:48:07] But I think part of the problem and maybe this is a way of tying it up is that people will always move the shift the goalposts to suit their. Yeah. Yeah. Agenda is different of a word. But but but to placate their own preconceptions, I guess so. So in this in this particular thread after this explanation. No. Just is a runtime built with C and Java scripts that say that JavaScript can run outside the browser.

[00:48:33] This person then replies and says in that case neither see nor C++. Our programming languages is there and they have to be because they have to be compiled by compiler such as DCC in order for the processor to be able to understand them.

[00:48:48] So I guess what I'm saying is that if you if you want to believe any of these instructions for computers on real programming languages, you can and you know, you can form you can do whatever mental gymnastics you like to get to the point where you're saying C isn't a programming language.

[00:49:11] Yeah. Yeah. That devolved pretty quickly. Yeah, I had the.

[00:49:18] You see what happens, right.

[00:49:19] With these discussions set, it becomes that that kind of answer when you can give that kind of answer seriously then you kind of know this is this is one of these discussions that you really need to ask the question do we need to even have a discussion at all. Yeah. Yes, sir.

[00:49:40] Because, you know, when it gets to that point and that C is is not a programming language, then this is it.

[00:49:47] Nothing's going to come out of this. Correct. The fact is, we know what CSS does. We know how powerful it is. Yeah, probably. We just have to trust in the fact that anyone who finds it really annoying to work with, they're going to find out. Some point that they either need to learn how to work with it or find someone who does know how to work with it so that they don't have to fill that gap in their knowledge. Absolutely. I. I thought JavaScript was really annoying when I first started.

[00:50:22] Was it because I didn't understand it? But the more I learned from colleagues, people around me and I still I'm not great at job script by any means. I feel like I barely even know the language. But then suddenly you start seeing how useful it can be.

[00:50:45] And all the stuff that I said that was kind of negative about it was just kind of presumptuous.

[00:50:53] It was not based on anything except my lack of knowledge in that area. And I feel like that when people do the same thing with C, assess that it's the same. It's a similar situation. It's something they're not used to. Yeah, the program parent programming paradigms aren't in there. And my one of my defenses for that is that you can't expect them to be in there because it's not a programming language. Of course, you know, that discussion is obviously today's discussion, but that that felt to me like you can't expect you can't walk up to an airplane and be pissed off because it's not a car. You know it's not a car. It's an airplane. You know what I mean? Yeah, you can get. And that's a good thing. Yeah. And that's a good thing because they do different things and that's OK. And if you want to call it a vehicle, you know, and say all these things are vehicles and all these things are programming languages, that's fine.

[00:51:51] But I think that the the discussions arise because there's this lack of knowledge in one area. There's a lack of I don't want to say lack of knowledge. It's maybe lack of mastery. Like you're not at the point of mastery yet. So there is a lot of frustration happening and that you need to express that just to get it out of your system.

[00:52:14] But people who do see assess for a living or that's a big part of their work take offense to that.

[00:52:21] The same way that if I said something derogatory about JavaScript, the JavaScript ERs of the world might take offense to that because they've invested so much into it. And they they understand because of their level of mastery, all these these things that are possible with the language that I just don't know yet, then yeah, that's what starts these discussions and why, you know, we get on two sides of the fence about it because you feel like you're you're you're hurting me. You know, you're kicking me where it hurts right now.

[00:52:53] This is what I've done for the last 20 years or whatever. And you're you're insulting it. Yeah. Yeah. And then it just before you know it C is not a programming language. And everyone who doesn't agree with that is a racist.

[00:53:05] And, you know, just it just goes down this rabbit hole of of, I guess, YouTube comments and Twitter comments and I don't know.

[00:53:18] Yeah. I mean it's the it can. Yeah it can it can quickly devolve as you say. And um and I was like you with JavaScript where. I don't know if I thought it was like it was it was bad or it was it was badly designed or anything. But I found stuff. I found it very difficult to understand. And I got very angry with it, basically.

[00:53:44] And very I find it really frustrating trying to learn it.

[00:53:49] It took a lot longer than I would have liked to to get a handle of it. But now, weirdly, now that I do understand it and I think sort of understand the fundamentals, I much prefer writing JavaScript than writing sort of high level framework. He mediated the JavaScript. If you sort of mean I like to know that what I'm writing is I'm actually affecting things directly, you know? Yeah, I actually just like playing playing with like a raise and things and doing cool stuff with arrays, using array methods. I'm at my happiest in JavaScript doing that. I'm much happier doing that than I am playing with. Jess X or whatever. And similarly with CSS, I'd much sooner write CSS than write SS just because it feels like I'm actually I've actually I'm actually playing with the mechanics of the thing itself. Yeah, I'm not too far removed.

[00:54:45] Yeah, I like that because the reason I like writing plain CSS is because I know exactly what what's happening and yeah.

[00:54:56] Then it there's no there's no layer between what, you know, what I was thinking and what comes out. So I don't. No, I've nothing against SAS or any of these other tool tools or whatever that that people use around, see, assess, I think.

[00:55:17] I think those are great and they they feel needs.

[00:55:19] But for me, I really like to understand what I'm doing. And that's one of the frustrating parts about learning JavaScript or any type of general purpose programming, which, you know, I'm trying to teach myself. Through the years as I go, it's I really want to understand it. I don't just want to copy paste something to get a certain effect. I or have some kind of friendly abstraction layer that does something that I'm not sure what what's happening in the background, because as we know, abstraction layers change all the time and the underlying languages change as well.

[00:55:58] But the underlying languages of your if you learn those then. It's just it it takes you further, you know.

[00:56:08] I mean, I don't have to. Yes. Learn something new in like two or three years. All I have to do is add to some knowledge that I've that I've already gained in the past. And there's a I think there's a lot of value in kind of getting into the nuts and bolts and are really learning about what I mean. Okay. So this is one of these things and we probably have to wrap up here. But but that's one of those arguments that goes down the rabbit hole as well. So I've heard this discussion where I've said something like this before, where I like to to know what's going on and really learn the language so that you didn't like a black box sort of thing.

[00:56:46] Yeah, I don't like black box sort of thing. And if I get that, but when I've mentioned that in the past, there are people who were like, oh, so you're against any kind of abstraction layer.

[00:56:55] And I'm like, no, not now, but in writing. I mean, in JavaScript, writing a function is an abstraction, isn't it? I mean, yeah, that's another thing. Where how far are you going to take it. Yeah.

[00:57:07] Yeah. Exactly.

[00:57:08] And that's it's hard to say something without someone getting the wrong idea because they're approaching a certain point of view and it's just they're like, well oh why don't you just go ahead and you know, write out all the zeros and ones in place.

[00:57:26] No. Only missing the point I have. Yeah.

[00:57:31] I don't need to know machine language. I just I don't know that. So then I have no I have no real defense to that. I mean, why don't I write? Probably the only reason I wouldn't write zeros and ones is or the only argument I would have against that is it would just take too long. I don't know. I can't defend learning JavaScript against learning zeros and ones, you know, writing everything in binary code. I. I just.

[00:58:01] That's it. That's a weird thing from a productivity point of view. I find that I'm not using a framework or an abstraction layer makes it makes it easier and quicker for me to do things because I'm not trying to understand one particular person, the inside of one particular person's head. I'm just using a standard and there are specifications which I can look stuff up in if I have to and I know where I am.

[00:58:27] Which arguably is a specification of a collective of what's in you know, what's in a.

[00:58:34] Yeah. But it's it I guess it's I'm going to put it. It's not specifically opinionated towards one person or a couple of people I guess. Or a smaller group like more Coleman and more kind of it's more widespread and understood through consensus. That's what standards are I guess isn't it. Yeah. Yeah. But yeah. So I think probably to wrap up then I think what you touched on a little bit ago was it was a really important part which is I think to appreciate anything, it's important to really grok it and really understand the fundamentals of it.

[00:59:18] So I think probably you'd have more. I mean, I think a lot of people who have more chance of really appreciating and enjoying JavaScript if they're anything like me by by trying to actually understand the basic features of the language rather than starting at reacts or what have you. I mean, maybe other people are different, but I feel that that's that was what brought me to liking JavaScript. And I think anyone who doesn't like it is really not that happy with not that kind of know.

[00:59:49] Fraser hands up in the air and a shrug emoji pose about CSS. Maybe if they stepped away from Sass for a little bit and see us this modules for a little bit and actually tried to understand the fundamentals of understood the cascade and inheritance and specificity and how they can actually. Work in a really beneficial way, and it can actually be. Productivity improves. Then they might have that that sort of their moment around CSS, like I have my moment around JavaScript. And something went, oh, actually this is quite well-designed and this is kind of cool. Yeah. And I can use it in a really an efficient way.

[01:00:31] Yeah. And the keyword there is is might.

[01:00:34] Yeah. I finished my Guinness.

[01:00:39] Yeah. That included the like. In for done like a half an hour we finish the beer then we're done.

[01:00:45] Oh yeah. Beer is done. I will not be getting into a car.

[01:00:49] Good for you. Even as a passenger. All right.