The Changelog: Software Development, Open Source - Semantic UI (Interview)

Episode Date: October 5, 2013

Andrew and Adam talk with Jack Lukic about Semantic UI....

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back, everyone. This is The Change Log, where members support a blog, podcast, and weekly email that covers what's fresh and what's new in open source. Check out the blog at thechangelog.com, our past shows at 5by5.tv slash changelog, and subscribe to The Change Log Weekly. It's our weekly email we send out every Saturday, covering everything that hits our open source radar subscribe to changelog.com slash weekly the show starts with myself adam stokovic as well as andrew thorpe and just say hello yo yo what's going on what's going on man this is episode 106 we're joined by jack
Starting point is 00:00:38 uh lukic lukic he's the creator of my faves and Semantic UI. So, Jack, welcome to the show. Thanks for having me. We do have a sponsor. I want to give them a quick shout-out, DigitalOcean. They're sponsoring us for the next few shows. They're really supporting open source, and they love what we're doing with the show, so they've been sponsoring us for the past few shows and the next few shows as well. But they're a simple cloud hosting provider dedicated to offering the most intuitive way to spin up a cloud hosting server you can create a cloud server in 55 second price pricing plans start at five dollars per month
Starting point is 00:01:14 half a gram 20 gigs of ssd drive space when uh one cpu of uh to move your stuff around and one terabyte of transfer they feature a 99.9% uptime SLA, and they have data centers here in the U.S., in New York, San Francisco, as well as abroad in Amsterdam. We have a $10 promo when you enter your credit card info when buying the service. There's a promo code filled there. Use the coupon code THECHANGELOG104 to use our $10 promo. Check them out at digitalocean.com, and thank you so much for your support.
Starting point is 00:01:46 Jack, how are you? I'm doing great. Why don't you kind of give us a little introduction to who you are, Jack, what you're doing, and how to correctly say your last name. Yes. So, I'm a front-end developer. Now you did good. Okay, I get you.
Starting point is 00:02:03 Sure. Now you did good. Okay. I'm making sure. So, yeah. I've been doing front-end dev for about eight years. I originally started off working sort of in advertising in San Francisco, doing stuff at design agencies. Just, you know, to build pedigree or whatever, I worked on the official redesign of Hyundai.com. I did Cheetos.com, 3AA specialized, stuff like that. A lot of quick projects and, you know, all ad agency based. And then I moved to New York and I kind of wanted to restart. So I started working at a startup called Quirky. They're a social invention company. Basically what they do is people submit ideas for
Starting point is 00:02:42 consumer products on their website. And then we choose the best ones, make it into real products, do all the manufacturing, design, engineer. And so that was about two years ago. I was employee number 45, I guess. And then in the last year and a half, two years, they've gotten up to 150 employees. So I was, I guess, mid-stage hire. I was the first front-end developer, though, and I was sort of tasked with figuring out how to organize and sort of redo the front-end for this massive website. So I spent some time sort of going through all the components I'd written for previous projects and sort of figuring out what worked and what didn't. And also sort of working on redefining the visual language.
Starting point is 00:03:34 So the UI elements, all that kind of stuff. And I sort of developed a component format, which I started to write components for. And over about a year or so of doing that, I noticed I was starting to get, you know, a pretty big library of components. And so I tried to sort of look at them in a manner where they could all sort of fit into a larger picture. So instead of it being one-off things like uh in what way should i think about the language of the html the class name the structures so that um if anyone picked up any one piece of this they would obviously understand that as part of a larger framework um and so uh i sort of looked at a bunch of different directions um uh and there's a lot a lot more to get into about this but you mentioned some sort of background theory around this too right, so I'm really interested in linguistics
Starting point is 00:04:30 so semantic UI refers to semiotics which is the study of meaning semantic has sort of been misappropriated in my opinion it means sort of adherence to W3 spec now so a little theory originally the study of language was sort of adherence to W3 spec now. So a little theory. Originally, the study of language was sort of based on this belief that there were prescribed ideals about language. So you have, you know, good language and bad language. And the only way to preserve
Starting point is 00:04:56 a correct language was to create sort of a central standards body organization that says, you know, oh, this word's allowed, this word isn't allowed. So you have things like the Merriam-Webster Dictionary saying, this year we're accepting these 30 new words in, but no other words because they're not English. And then you have, you know, the French saying, let's create a government organization called the Académie Française, sorry, I'm saying this terribly, who basically says, let's preserve the French language and make it as French as possible. So the English sounding word for French shouldn't be allowed and so on. And so this is sort of called prescriptivism, prescriptive linguistics, this idea that you need to preserve the good features of language
Starting point is 00:05:35 and toss out the bad ones. And you're sort of working towards this ideal of what the perfect language is or something like that. Then the 20th century happened and a lot of crazy movements started coming around. You know, you have postmodernism and art and this sort of reinterpretation of meaning. So in linguistics, sort of what that meant was that all these old practices of saying, you know, this is what language should be like, were sort of replaced by this new practice, which is called descriptive linguistics, which is let's just look at the language to see what words people are using. And if it becomes used across a large group of people, then it's a figure of the language. So this is a fundamental shift.
Starting point is 00:06:19 And it sort of got rid of all these like creaky old things from language because all of a sudden we you know languages is evolving faster than we can keep track of it um why are we slowing it down um and so how does this relate to program languages i was about to ask you how's this thanks for the background for sure though so program languages are like other languages um except for uh they're they're made for computers and so what are computers they're made for computers. And so what are computers? They're these big ones and zero processors that can only understand a very primitive language. So what you had originally was in academic institutions a small group of people who were very, very smart
Starting point is 00:06:58 and figured out ways that we could type in sort of almost English words into a screen that would be interpreted into these ones and zeros. So what you have is very similar to the Académie Française or Merriam-Webster. Here's the small dictionary of what language should be. And it was sort of the only way to do things. So most programming languages evolved out of this tradition of prescriptive linguistics, and that's because they're instruction
Starting point is 00:07:25 based. You're saying do this and do this. And English is good at saying things like there are three tall men in the room, but it's really terrible at saying, hey, look at how this watch works. And programming languages, we're doing these things about saying, you know, here's a very complex behavior. Let's describe it in terms that a computer can understand. So my thought, my theory is, is that front-end development is different than programming. Front-end development is describing virtual scenes in a way almost like what natural language does. It says there's these things on a page. What are they? How should they look? And I don't think programming languages are particularly good at solving that problem. I think natural languages have all these sort of figures which have evolved out like plurality, the idea of commonality between groups of things and the use of verbs for describing behavior and port it over to front-end development.
Starting point is 00:08:36 So it's a huge departure. It's kind of iconoclastic, and I don't know if you read the Hacker News article, but it seems to be taking up, people are taking up sides on the issue. So this is, so semantic UI kind of came out of your desire to, would you say that you kind of want to be the standard for linguistics around the front end of stuff like that? I mean, is that kind of the goal of this project? I think it's not, like, and the thing is, is like, whenever you talk about a standards organization, it's going back almost to Merriam-Webster or something like that. The way I think about user interface, so you look at something like flat design. What flat design is saying is that we used to have angel fire websites with massive fire gifs and under construction signs. But now the language has evolved so that it's a very small
Starting point is 00:09:25 subset of things that are allowed or appropriate for signaling design cues. So my, my idea is that the language has gotten small enough that someone can look at a bunch of websites, go to, you know, angelist.co and just click around every startup and just come up with a list of maybe 50 or so design elements. And so what I'm trying to with a list of maybe 50 or so design elements. And so what I'm trying to do is sort of describe how people use design elsewhere. And so it has to be constantly evolving and it will change as it's being used. And the things that don't work should disappear from the library and the things that come into play, if there's a new design trope that doesn't exist, it should be added. And I'm hoping to sort of make this a community
Starting point is 00:10:04 effort so that it, like the problem with having one person in charge of a front end library like this is that obviously, like I would like to be objective, but I'm just one view on language. Ideally, there'd be, you know, a group of core contributors who are all looking around at the web saying, you know, hey, we don't have a button that can do this. Or hey, haven't you seen this like this cool thing like on on New York Times when you get to the bottom of an article, it says, read this article afterwards in the corner. And that's an interesting design trope, and a lot of sites are using it now. So, yeah, it's more about describing what exists out there. Gotcha.
Starting point is 00:10:37 So you're obviously very interested in, like, the theory behind all this, and it's not just another, you know, like bootstrap or something like that. But why don't we kind of rein it back a little bit and give us the like the high level description. What is semantic UI? Semantic UI is a set of individual components which can be used individually or without subscribing to the framework. So you can say only use a button or only use a menu class or something like that. And each of them is a visual design trope. And the goal is sort of to create a visual definition. So it's a list of things that it can do on the page, a ways it can vary, different types of that element and states that it can exist in. So like, for example, if you have a button, you'd say a button can change color.
Starting point is 00:11:26 It can be different sizes. It might exist in a group of buttons. So there's a concept of plurality. It might have different types. So the standard is sort of very rigorous about how this works. So, like, a button is a homogenous element in the sense that, like, a form or something where there's a variety of different elements that exist together. A button is just sort of one thing. It can exist in plural groups.
Starting point is 00:11:53 So there's sort of five UI definition types I've created sort of describing ways to define these different design tropes. Sorry, this is getting a little bit long-winded. It's actually – it's a fairly complex thing so it's like it's very hard for me to like uh figure out how to to share in a podcast format right so would you say though let's kind of i guess try and kind of dig into it a little bit like you know where we could easy where it'd be easy for layman like myself to understand would you you say that Symantec UI is a competitor to those frameworks like Bootstrap and Foundation? Would you say that it can be used alongside, or how would it relate to those? Absolutely.
Starting point is 00:12:36 So for people who are looking for, on GitHub, just searching for a new modal or searching for a new pop-up. It offers sort of all of those components. So people who just need sort of one-off elements can go to semantic and say, let's check out your pop-up. And also for people who want to sort of take on the whole thing, you can have a website that looks linguistically semantic by using all of these components together. So I don't know if you've checked out the code samples, but the desire is sort of to have the class names read like English language.
Starting point is 00:13:15 So you have sort of nouns, which are UI elements, and then adjectives, which sort of modify them. There's two types of adjectives. There's something which sort of says this is a sort of modify them. There's two types of adjectives. There's something which sort of says this is a type of an element. So this is, if it's an icon button, it can't also be an icon button and a labeled icon button. They're sort of mutually exclusive. That's one type. And then the other half of that is called a variation in semantic UI. And what a variation is is saying here's a change to the element that can also exist harmoniously with other changes. So you can have a large button, but if large is used in the context of red, you have a large red button. If large and red are used in the context of an icon, then it's a large red icon button and so on.
Starting point is 00:14:02 So it sort of gives these features in a way that it's like a palette. So someone can choose, do I want to use this feature of the library or that? And not necessarily are required to use a button that looks like this is a very, you know, heavy handed design button that was, you know, what the framework decided. So there is, there obviously is a learning curve when you're, when you're using this project. And it's kind of, it seems like to me, it's the kind of thing where if you buy into it and you decide, I'm going to, I'm going to invest a little bit of time. I mean, you know, I went through the guides and starts to kind of get clear as you go through the guide. So it's not a ton of time, but if you
Starting point is 00:14:41 invest a little bit of time into this, then the goal is to kind of, you know, you get things from this like that you get from other projects, right? Like you have a grid and you have elements and you have, you know, features like-end developers by making the language something that you're already familiar with, which is a structured language instead of just a bunch of random classes all over the place. Is that right? Right, completely. And aside from everything I said today, which you can probably tell I get really excited about talking about.
Starting point is 00:15:18 We can tell. That's cool, though. I'm a programmer, so at the end of the day, all the things that i like about programming are in there um there's uh in in the javascript modules uh every component has a trace that gives performance data as the modules function so instead of having inline comments inside of the javascript that just sort of is there for other developers. The idea is that each of those places where I would put a comment,
Starting point is 00:15:45 instead there's a trace call, and that call sort of tracks how long it was before that statement and the previous statement and things like that. So you can sort of see the flow through the JavaScript, what functions it hits, what arguments are called to each function, and how many milliseconds it took to execute.
Starting point is 00:16:06 So you get all this trace in a Firebug console or in a Chrome console, and it's sort of presented in a grouped structured layout, so you can sort by milliseconds execution or whatever you feel like. So that's one feature. Um, uh, um, yeah, also everything's namespace. So, uh, CSS, um, basically if you choose a button class, you can still use the word button anywhere else. Um, only when you use a UI button. Yeah. And so all of the other flip, like what seemed like free floating classes, um, which you might have something like a write-floated menu inside of another menu, the word write-floated is only defined in the context of a UI menu.
Starting point is 00:16:54 So none of those classes are actually free-floating. None of them are sort of including namespace. And so that's a neat little design thing that it has going on. If you look at kind of a lot of the projects out there that are similar, it's interesting. Every single one of them has like a modale. Every single one of them has, you know, like not every one of them. A lot of them have like custom form elements like checkboxes and how you make those better looking and constant across different devices and reveals and stuff like that. But semantic UI has some unique ones, right? And so you kind of alluded to this before, like the rating element that you, or the rating module that you have in semantic UI,
Starting point is 00:17:35 that's different. That's not something that you're going to get with all of these. And so it's because the mindset is a little different where, like, if you find, as you said, tropes that are, you know, common all over the place that people want, you're going to implement that. It's not based on like your own view of what a foundation or what a framework should have. It's based on like, hey, people want this, so we should support that, right? Yeah. Hopefully I should have no say in how the library evolves. It should just be based on what's used in the design world. Yeah, so how does that – so right now, so you said ideally it wouldn't be one person making all these decisions. So right now, do you have other people that are like core contributors to this project, or is it just you?
Starting point is 00:18:20 Well, I have – so a little bit of background on the project. I wasn't ready to release this, but then all of a sudden someone found it on the internet and put it on Hacker News. And so all of a sudden I was like, shit, what is this doing on Hacker News? I was getting all this traffic, and I had to create these semantic versioning and all this stuff so that it would be ready for people to consume and Bower components, all this stuff so that it would be ready for people to, you know, consume and, uh, you know, Bower, uh, uh, components, all this stuff. Um, so a lot of this stuff is just, has just been figured out in the last two weeks or so. Um, I created, there's this, uh, project management software called Trello. I've created Trello boards, which are open to the public where people can submit ideas for new types of interface elements. People are also submitting ideas for that in GitHub issues. The idea being that you
Starting point is 00:19:10 post in the public board, it gets voted up, then it gets added to the roadmap. The roadmap, hopefully there'll be a team of core contributors who will pick out each individual component and own it and say, you know, I really like working uh, working on a cart view. Like, um, it's an interesting design trope. It's all over the web. What are all the components to make up a shopping cart? Um, and then that person will be tasked off and, you know, go to town. Um, but, but at this point, you know, I've, it's one of those things where I feel like I have to fill in the full picture before I'll get too many core contributors just because it's, of those things where I feel like I have to fill in the full picture before I'll get too many core contributors just because it's you know so nascent but I'm hoping I'm crossing my fingers
Starting point is 00:19:51 every day that someone will you know come on and get hub issues and really take ownership over some you know part of the project right it's a really cool I mean it's different and and that's kind of what you get from the beginning is you you look at it and you're like, okay, this is similar to other things that I've seen, but it's different. There's something to this. And I have a feeling that the challenge for you is going to be, you know, those UI modules right now you have 12 of them. And, you know, you have 11 elements.
Starting point is 00:20:21 It seems like the elements might be kind of standard and not grow too much. But you can see those modules could potentially get kind of crazy, right, and get out of control. So I think the challenge is going to be how to keep that from getting out of control and how to, you know, prevent it from just somebody being like, I want to be able to support, you know, a marquee scrolling, you know, like getting too precise with what the modules are, right, and keeping it so that it's still like a, you know, marquee scrolling you know like getting too precise with what the modules are right and keeping it so that it's still like a you know minimal viable product but it it supports kind of everything i definitely think that's going to be the challenge do you do you kind of have any like standards that you would adhere to to kind of help that yeah my thought with semantic is unlike bootstrap where you know you might just grab
Starting point is 00:21:06 the whole thing and just put it in the head tag of your page and then you're done i'm hoping it's more like a buffet where like if you're eating everything at the buffet then you're like doing it wrong you got to like pick the things that work for you um that's the biggest thing that drives me crazy about bootstrap and foundation is like sometimes i just want certain pieces and it's just not quite as easy to like you said just buffet it yeah so like foundation supports that i think it's a little bit clunky to you know figure it out too easily in their documentation especially if you're using it in say like a rails project or something like that but um how do you how do you handle that as semantic ui like how do you um is there documentation is
Starting point is 00:21:48 there instructions on how you can only pick and choose pieces you want and you know not need all the javascript for everything and stuff yeah that's part of um switching from pre-release version to full release is that there's no build tools right now so that's the first thing i'm working on one one reason behind that is that like i i chose less but i wasn't really sure at the time like i think that css uh pre-processors are sort of like in their infancy right now like it's it's kind of interesting because like you have all these really highly evolved templating languages that you know like people have been using handlebars for a while people have been using uh all this stuff and it's basically the same thing it's processing a text
Starting point is 00:22:24 file which is a css file and outputting a different file. But people got really excited because it has these extra built-ins that say, I can also lighten a hex code color or something like that. So I'm a bit worried that LESS is missing some of the features that would be useful for doing everything we want to do. So there's no loops in LESS, for instance. So having people choose a color palette and then having it define color rules based on the palette um and the name shows for the palettes like it's more difficult although there's there are hacks out there that let you do loops um so i i guess what i'm trying to do is sort of figure out like i don't want to you know
Starting point is 00:22:59 prescribe to like too many of these icon classic libraries. A lot of people have talked about adding Angular wrappers, and it always makes sense to me as maybe a third-party contribution in a separate repo, but I really don't want to say this is what you have to use to develop a website, although there is that jQuery thing, which is hard to get rid of. Well, there's Zepto, right,
Starting point is 00:23:21 which seems like it's growing into jQuery. The goal is to be smaller, but it kind of seems like it's continuing to grow. Yeah, and another unique thing about Symantec is that there's also this concept of a UI view, which is like a trope about how to present data. Are you scratching something over there, Jack? Oh, no, sorry. Yeah, I'm getting careful. Hopefully the listeners are like i like jack a
Starting point is 00:23:47 lot this is really awesome i'm just kidding go ahead um so things like having a feed of comments under a news article or um having an activity feed like a facebook activity feed these have also become like web tropes but none of the other libraries have really addressed that yet. And that's why you've got comment, you've got feed, you've got item, and you've got list. And I liked the idea of feed, and I also liked just the idea of some of the other things you've got in there as well. But this was pretty neat to see as part of this. Yeah, thanks. Again, this has sort of been like I'm one person, I can only code so much, and I've been coding like crazy on this. Well, that's why you come on the show, so you can let people know about it.
Starting point is 00:24:27 Yeah, please come. We'll tell you about the call to arms and stuff like that. So you were talking a bit about less. It sounds like you might be on the fence in terms of you're just not sure. I guess I just have to commit, because these build tools need to be made. And it's very easy to sit on the fence and say I don't really want to choose a side because none of them are perfect, but nothing is ever, I guess. So I guess talking about choices then, I guess in terms of the fan that you are of linguistics and the semantics and the things we talked about a little bit earlier in the show,
Starting point is 00:25:05 a lot of people who write SAS, write CSS, have subscribed to Jonathan Snook's way of doing SMACs. There's a couple others like RAM, I believe, or BEM, I'm not sure how you pronounce that. There's like three or four different popular methods that kind of all revolve around um state uh variation a lot of the things you're subscribing to here where you have types content variations how do you apply to that i honestly think they're just getting some of the fundamental features
Starting point is 00:25:35 wrong i think that um in in language we have this concept of words which are individual classes of things in the world um but in css what we always have is these dashed words, where it's like btn-active. And it's because I think those are separate concepts. They're describing completely different things. You have something that's active and something that's a button. If you want to describe it as both being a button and active, you need to describe the intersection of those two concepts.
Starting point is 00:26:00 But creating a separate concept, which you define as a dashed word and then has a special definition is missing the the best feature of language which is you know you can define each of these things individually and together you can define the differences um so that's sort of what it's doing differently you say on your on your home page i guess kind of king off of that is uh lose the hieroglyphics exactly you know exactly um and i think one of the scariest things of being a front-end developer is like you take on a freelance project you're like what is this code base going to be written in right and you're like who is this developer
Starting point is 00:26:35 who decided this should all be camel case and this should be whatever and i don't think anyone can argue that words that look like english words are particularly confusing for someone to grok if they're picking a project. I wonder if like, and it kind of just clicked, like when, you know, you're looking at, I don't know, and I don't know if this is my own, you know, problem or maybe something on the homepage, but when I'm looking at the homepage of semantic UI and I see the semantic version on the left and the bootstrap version on the right, I'm like, I don't, I mean, I don't know. Both of these seem pretty like easy to understand to me because, you know, I've been using foundation for so long and I use bootstrap and I, and these all make sense to me. I've seen this so much, but
Starting point is 00:27:15 I think that you, you hit on something right there that, um, maybe really could shine some clarity on what this is. I don't know if this makes sense to be on the homepage, but you talked about that if you want, so on the semantic version on the left, let's just take the first example, for instance. You have a, this is all separate words. You have a three-column grid, and then inside of that you have three columns.
Starting point is 00:27:40 And on the bootstrap version, you have a row, and inside of that you have call dash LG dash four. And it's, it takes me, I have to assume at this point now that this is like a 12 column grid, that these are three different columns, and that each one of them is large, I'm assuming LG is large. And so that's kind of what you just mentioned was like, they created the hyphenated version of like all these different things that come together to make this one element. And I think that maybe the hard part is like this is great for maybe a designer. Maybe – I'm not a front-end developer. They've used it. This is great for like a designer or somebody that just wants to get in and maybe just like tinker. But the learning curve is almost from the other side now.
Starting point is 00:28:29 Like the back-end, front-end developers that are familiar with call-lg-4 are going to have to kind of wrap their minds around this English way of using it, right? I mean, the more appropriate way of using it and maybe have a little bit of learn to do there. But they're the people who are capable of learning programming languages and of learning. You know what I mean? Like those are the people that should be learning this, not the other way around. Yeah, you hit the nail on
Starting point is 00:28:52 the head. There's actually something else I totally forgot to talk about. But the other thing that sort of inspired me to do this project was I was really excited about Code Academy. I was really excited about Khan Academy. I was really excited about all these things where people are trying to make programming more accessible. And I think they're doing great Academy. I was really excited about all these things where people are trying to make programming more accessible. And I think they're doing great things. They're making easy-to-consume lessons that are fun, that make learning easier. But I think there's also a separate way you can attack that problem, which is to make the actual languages themselves more easier to adopt. And I think the best way to do that is to get rid of all the assumptions that us as developers have grown to adopt.
Starting point is 00:29:32 For instance, in the first Bootstrap example, you look at col-lg-4. One, you have to understand that Bootstrap works off a 12-column grid, which how would you know that unless you knew Bootstrap? Two, how would you know what l you knew bootstrap two how would you know what lg stands for could it be the columns large is it only showing on large screens which it is um but how would you know that um and then three it's like so there's a row and a column but what how does that fit into this larger picture of like how does the row relate to the column um what's what is how is this coordinated together as a group or, you know, a whole thing?
Starting point is 00:30:07 So that's a lot of what I'm trying to solve is that it mostly what it is, is just stealing things from language. Like all these concepts are like like are things that have existed for thousands of years that were like another thing in terms of language. It's like it's a highly evolved system. Like we're cognitive misers we're constantly deciding uh to make language more concise uh but while optimizing for uh comprehension um so what we have is we're stealing knowledge from you know a hundred thousand years of evolution of the system um and just taking those those concepts and applying it to an already existing system which is this front-end development. Right. I mean, it's interesting because if I've never, let's say I'm a developer, I've never used, or just say I'm just somebody, developer, maybe not, that's never used Bootstrap.
Starting point is 00:30:54 If I look at this, I'm either going to make assumptions or I'm going to go read Bootstrap's documentation. And I think that it's funny because as a developer, somebody that like, I love going and, you know, RTFM somebody that like i love going and you know rtfm right i love going and reading documentation and figuring out what's going on but um people that haven't kind of like transformed their mind into that way of thinking don't even necessarily know that documentation exists for everything you know what i mean like so so they would look at this and be like i don't know what this is saying at all. And I don't know that it's possible to know it. And we have one of our friends on the show, Kenneth Wright, he talked about this tribal knowledge that you gain over the years. And that comes from reading documentation and, you know, listening to people fight about things on the internet and, you know, all the different ways that you kind of pick this, these best
Starting point is 00:31:51 practices up. But we can't assume that somebody A knows that tribal knowledge and that if they don't know it, that they, you know, then can go find that tribal knowledge and so you're borrowing from just something that we all know or you know i think the one assumption is that they know english um yeah but pretty much like if you get involved in development you pick up english or you know whatever but that's not necessarily true but you know what i'm saying. And that's an assumption I think is probably safe to make. But the assumption of like, they know how to go find documentation is a big one. And I think it's one that we overlook a lot as developers. Right. And I think with like flat design and things like this, people are asking the question, well, if all design is going to look like this now, then what are designers going to do?
Starting point is 00:32:45 Like what are they going to design? It's just there's nothing left to design anymore. It's just icons and buttons on a page. And I think that's a good thing. I think we're narrowing down the language into only the things that work. And hopefully we'll all be out of jobs one day and that anyone can go to community college and then be the guy who makes the websites. That's my dream world. I think we're like sort of the machinists of our generation, highly technical, evolved to understand a very particular instrument.
Starting point is 00:33:15 But eventually our job will be done by robots. Yeah, we'll be the people that our whole career will be made by fixing the homeowner's mistakes when they fix the light bulb in their house kind of a thing. Yeah, exactly. That's a great way to put it. Yeah, this is, I think, so semantics obviously in a kind of an early stage. I mean, it's on 0.3.1. I don't know what your roadmap looks like to get to 1.0, but you said this is in pre-release, you don't build tools. So it's pretty early on, and it started to obviously take some,
Starting point is 00:33:44 kind of to grow some legs and to start to obviously take some, uh, kind of to grow some legs and to start to run. It's cool to see the project. I mean, I, I looked at it when I first emailed you about a couple of weeks ago and I've looked at it a few times since then, I've seen so much change, um, you know, in the last couple of weeks. So it's cool to see this thing growing so fast. And, um, maybe, you know, when we'll, we'll kind of have you on the show again, uh, when you do hit that 1.0 to kind of talk about it. Because I have a feeling you're going to have some hurdles to jump with stubborn developers that don't like to change their way of thinking, including myself. And I'd love to hear how they kind of fight back and the pushback. You get things that are just so interesting to me
Starting point is 00:34:25 is such a different way of thinking about it is that on your grid, you use the word column in the row and you use the word column in the columns, right? So stubborn developers are going to look at that and be like, no, that's not the right way to do it. But technically it is because you're combining these words and it's a three-column grid. That word column by itself does not mean the same thing. And's really cool a different way to think about it so right uh you
Starting point is 00:34:48 know maybe have meaning in context like you know in chinese ma like with the four tones meaning everything from mother to horse to question to uh weed and so you it's just, it just goes to show. Yeah. So maybe we'll, we'll, we'll look for you to get to your 1.0 and we'll bring you on and kind of talk about lessons learned and how you've revolutionized the thing. Well, thanks for having me. Yeah, we'll get there. Let's go ahead and, uh, kind of for new listeners, we kind of have the same three questions that we ask at the end of every show. We'll go ahead and ask them. So the first one submitted by – no, I'm just kidding. The first question that we ask everyone, Jack, is for a call to arms.
Starting point is 00:35:34 So you're young. The project is young. What is it that you would like to see the community kind of pitch in to help out with? So Symantec is one of those projects where the larger it is, the better it is. And I think the best way to contribute is if you just want to submit ideas, go to our project contributing page, click on the link to the board, submit an idea for an element. If you really want to help contribute to the project specifically with code, look at the roadmap, find one of the elements that's planned for version one or for 1X, and just grab it off.
Starting point is 00:36:15 Look at websites that make that element, all the different ways that it can exist. Look at our guide for language and just start coding. I'm very happy to help people write code for the library. I'm very happy to be on Gchat and Skype. I am working on this full time now. And yeah, just come join. Cool. Where's the roadmap at?
Starting point is 00:36:41 The roadmap is on contributing page as well. So I was going to say the contributing page, if you go to semantic-ui.com, there's a little thumb to pull out the sidebar, and when you pull out the sidebar under the project header, there's the contributing page. So you can kind of
Starting point is 00:36:58 see the roadmap and all that he's talking about right there. Oh no, I'm missing the roadmap link. I do have the contributing links though there. But I will, I will, I will, I will put it up later. Yeah. Yeah. So if you weren't doing what you're doing now, uh, Jack, what would you be doing? Whether it was another project or language or. So I have this other fantasy dream of, of, uh, employment, which is I want to go to a country that has really bad beer and open a brewery there.
Starting point is 00:37:28 The bar is really low. I don't know where that would be. Yeah, we don't want to knock. We don't want to take shots at any country's brewing systems. You'd have to figure that out yourself and be secretive about it. So do you homebrew then? Yeah, I'm a home brewer i've always had a fantasy of doing a craft brewery but it's one of those things where you look at like the
Starting point is 00:37:50 statistics of craft breweries like failing succeeding and you're just like uh i'm a programmer i can't make this choice did you see the kickstarter for the i think it's a homebrew system i can't recall what it's called though yeah it's like a little box that like did i think it did most of the work for you, Homebrew. And I think that was interesting. But you could program it, right? Wasn't it part of like, I'm sure later on they'll have some sort of SDK for it.
Starting point is 00:38:13 Yeah, yeah. And I think it's interesting because a lot of people at Homebrew take pride in their method and the specific little details they do. But once again, the interesting thing about when we ask that question, and this is yet another example, is a lot of developers, they go in the direction of creating something with their hands. Whether it's food, we've had that before, you know, obviously beer, woodworking, things like that.
Starting point is 00:38:40 A lot of developers are kind of drawn because, you know, we sit in like behind a computer and create digital things all day are kind of drawn to the notion of creating a physical product. Right. And so like, I'm super interested in woodworking and, um, yeah, I'm not very good at it at all, but that would be totally something I would do if I, you know, given more time. But once again, I think that's a kind of little interesting little side story that maybe we can kind of document one day is like the many desires of developers to create with their hands. And the last question that we ask is for a programming hero. So just somebody in your life, Jack, that has been influential in your career. Yeah. So I'm a huge fan of John Resick, the guy who created jQuery. I remember when I first moved
Starting point is 00:39:24 to San Francisco, it was like my first year there. I was like, you know, my early 20s. And there was like a jQuery meetup. And this is sort of like when jQuery was around with new tools and prototype. And like, they weren't really like winning the race yet. It was like kind of like a three pony race.
Starting point is 00:39:39 And I went to the meetup and I saw him there and I got freaked out and I left the room. I couldn't be here. And then like, uh, you know, it's been five years or whatever, but I still remember that.
Starting point is 00:39:51 And he's, he made a, you know, massively popular library that basically just took all the things that were hard to do in web design and put them all together into one library. So that's, it's fucking amazing. So yeah.
Starting point is 00:40:03 Revolutionary. Yeah. Awesome. Cool. Yeah, revolutionary. Yeah. Awesome. Cool. I hear your fans spinning up, so it must be time to go.
Starting point is 00:40:11 I do want to thank again our sponsor, DigitalOcean, for taking care of us for this show and many others. You can get their $10 promo
Starting point is 00:40:18 by going to digitalocean.com, popping in your credit card, and in the promo code field, throw in the code, the changelog104. You can only hear that in audio. We're not going to put it on the site, so you have to listen to this audio to use the code.
Starting point is 00:40:36 So it's the changelog104. You'll get $10 off, which basically is like two free months if you got their basic plan. But super huge thanks to Digital Earth for being our sponsor. And Jack, thanks for being the linguistic person that you are and being a fan of just semantics in general and the hard work you're putting into this to kind of bring your ideas to fruition with front-end development. And definitely wanted to have you back on the show when you hit 1-0. But Andrew, thanks to you as well for, for, uh, kicking his show off and you the listener for listening, but, uh,
Starting point is 00:41:10 for now let's say goodbye. All right. Thanks so much, Jack. Yeah. Thanks you guys. We'll see you next time.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.