The Changelog: Software Development, Open Source - Semantic UI (Interview)
Episode Date: October 5, 2013Andrew and Adam talk with Jack Lukic about Semantic UI....
Transcript
Discussion (0)
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
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
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.
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.
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
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.
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
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
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
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.
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
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
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.
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
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
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.
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.
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.
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.
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.
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.
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
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.
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,
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.
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.
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,
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?
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
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
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.
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
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
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
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
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,
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
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.
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,
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
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.
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
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
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.
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.
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
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.
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?
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.
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
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?
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.
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,
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
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
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.
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.
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?
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
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.
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
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.
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.
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
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.
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.
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.
Revolutionary.
Yeah. Awesome. Cool. Yeah, revolutionary.
Yeah.
Awesome.
Cool.
I hear your fans spinning up,
so it must be
time to go.
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
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.
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,
for now let's say goodbye.
All right. Thanks so much, Jack.
Yeah. Thanks you guys. We'll see you next time.