098 JSJ Assemble.io with Brian Woodward and Jon Schlinkert

by woody2shoes on February 26, 2014

Panel

Discussion

01:44 – Jon and Brian Introductions

05:14 – Assemble.io

12:34 – Resources

13:19 – Advantages

16:31 – Raising Funding

19:02 – Open Sourcing Assemble.io

21:29 – Configuration

24:09 – What to Use Assemble.io For

29:43 – Users

Picks

Next Week

NPM Inc. and the Future of NPM with Isaac Schlueter

Transcript

BRIAN:  Vacation might mean sit in my bathrobe at home. [Chuckles] We’ll see.

AARON:  It counts, man. It counts.

[Hosting and bandwidth provided by the Blue Box Group. Check them out at BlueBox.net.] 

[This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.] 

[This episode is sponsored by Peer60 Incorporated. Peer60 Incorporated knows that the best JavaScript developers hone their skills by listening JavaScript Jabber podcasts. If you’re looking for a frontend or full-stack development opportunity helping Fortune 100 companies understand their customers better, email jobs@peer60.com.]

[Do you wish you could be part of the discussion on JavaScript Jabber? Do you have a burning question for one of our guests? Now, you can join the action at our membership forum. You can sign up at JavaScriptJabber.com/jabber and there, you can join discussions with the regular panelists and our guests.]

CHUCK:  Hey everybody and welcome to episode 98 of the JavaScript Jabber Show. This week on our panel, we have Joe Eames.

JOE:  Hey there.

CHUCK:  Aaron Frost.

AARON:  Hello.

CHUCK:  Jamison Dance.

JAMISON:  Hey friends.

CHUCK:  I’m Charles Max Wood from DevChat.TV. And this week, we have two special guests. We have Jon…

JON:  Jon Schlinkert. Hey everybody.

CHUCK:  We also have Brian Woodward.

BRIAN:  Hi, how’s it going?

CHUCK:  I didn’t stumble over your name. I don’t know if that makes one of you more special than the other. Do you want to introduce yourselves?

JON:  Well, part of his name is your last name. So, it’s [chuckles] kind of cheating.

CHUCK:  There we go. I’m half the family name he is. Anyway, do you want to introduce yourselves? Jon, why don’t you go first?

JON:  I’m one of the, I guess as far as this is concerned, I’m one of the co-maintainers of Assemble and just been really, really loving the past couple of years getting involved in the JavaScript and Node community. I’m not from an actual programming background until recently. But it’s just been an amazing learning experience the past couple of years. And I’ve been shocked at how awesome the community is and how welcoming. And I always had this image of programmers being critical and everything. Everybody says they are. But my experience has been that programmers are just nice, fun to work with, and like teaching you. So, my background is, as far as this is concerned, maintainer of Assemble and open source contributor and just looking forward to talking about what we’re doing.

JAMISON:  What is your background? Just out of curiosity.

JON:  So, a couple of years ago, I’ll try to keep this in a nutshell, but Brian and I are starting a company called Sellside. I won’t get into that. But most of the projects that we’re working on are actually for that and it’s mostly related to breaking down supply chain barriers so that we can get food and money into impoverished communities. So, that’s what this is all about. That’s why we built Assemble. Assemble is just, I shouldn’t say just a build system. It’s become a lot more than that. But Assemble’s a build system for this company that we’re trying to start. And we literally just got our venture funding this past week. So, that’s big news.

JOE:  Oh, congrats. That’s awesome.

JON:  Yeah, thank you. Thank you. We worked really hard on it. So, to answer your question, my background is actually supply chain consulting and more business oriented. And I actually literally rolled up my sleeves and learned how to program just to start this company to make this happen with Brian.

JAMISON:  Cool.

JON:  Yeah. Well, thank you. I wasn’t sure if I wanted to bring that up or not, because…

[Chuckles]

JON:  I didn’t want to just basically say I’m new to programming. But hopefully, I’ve earned my stripes a little bit this past year. We can talk about that more later. But that’s it in a nutshell. My background is really supply chain and technology from the entrepreneur side I guess.

CHUCK:  Awesome. How about you, Brian?

BRIAN:  Well, I’ve been programming for maybe close to 12 to 15 years now. Most of my experience is with Microsoft products, so C# and SQL Server and all that. But recently, I got into JavaScript and Node and started liking it a lot. We started building our product, our whole build product. We started building Assemble as our build tool. And I started digging in more and more with JavaScript and liked it a lot more than C#. So now, here I am today not doing any C#, doing all JavaScript right now.

JAMISON:  Are you like a heretic or a pariah? Have you been cast out of the C# community?

[Laughter]

BRIAN:  No. I’m actually trying to go back to the .NET user groups and give JavaScript talks every once in a while. So, that makes it easier to stay with that community and get involved with the others.

CHUCK:  Very nice. We appreciate the indoctrination efforts on your part.

[Laughter]

JOE:  Yeah. Everybody here is very friendly towards Microsoft. They all have a lot of Microsoft in their background, right guys?

[Laughter]

JON:  Yeah, I can imagine.

JAMISON:  I know Joe does.

CHUCK:  Yeah, Joe is our Microsoft background guy.

JOE:  I’m the token Microsoft guy.

CHUCK:  There we go.

JON:  Recovering still, I guess.

JAMISON:  But we still love him.

CHUCK:  Well, if you need stuff to run on Windows, then Microsoft technology’s a good way to go.

JOE:  Anyway, Node runs great on Windows. Node runs really well on Windows.

CHUCK:  I’ve heard that.

JAMISON:  Yeah, they did a great job.

JOE:  Yeah. All thanks to Microsoft.

CHUCK:  So, that means that you can use Assemble on Windows then, right?

JOE:  Indeed.

BRIAN:  Oh yeah, that’s what we started building Assemble on because I guess that when we first started our project, it was all in Visual Studio. And trying to get the design assets over to our Visual Studio project was the main pain point. So, that’s when we started looking at a different build tool. And that’s when we created Assemble. And that’s basically where it was born. But I think Jon has more information on that.

CHUCK:  I was actually going to say…

JAMISON:  Can you give an overview of what it is first? Just for people who haven’t heard of it.

JON:  Yeah, actually that’s a good segue. I was going to say so. And I’m not sure if I want to reveal this either, but Assemble is actually really the first JavaScript project that I ever worked on. So I had, just quick backstory, when I decided to dive into this, I really didn’t think I was going to get any further than CSS and HTML. I just wasn’t sure how quick I was going to pick everything up. But I started trying to create an interface for what we were working on. Prototype, so we could try to raise funding and get investors interested and everything. And just one thing led to another. And we actually have gone through, it took a while to actually get the real venture funding where we are now. But everything goes in stages.

So, I learned how to do CSS and HTML and ended up getting so involved in that community I ended up joining the core team for LESS. And then along the way, just kept, I have this supply chain background and I did quite a bit of consulting on it. That’s where I come from. So, I just kept going to Brian and saying, “It has to be easier than this, right?” And he kept saying, “What are you talking about? I use Visual Studio.” And I’m like, “Yeah, but I don’t. How does the frontend and the backend, how do you guys pass things back and forth?” And I just kept reading about it and talking to people and realizing that even though I was new to this, I was experiencing the same challenges that everybody else was still feeling between frontend, from designers to developers. I was just clunky.

So to get to the point of what Assemble is and what it does, Brian was working in Visual Studio and I cobbled together this really, really bad prototype of Assemble, because I kept trying to tell Brian what I meant and he was like, “I’m not sure what you mean.” So, I got this really crappy prototype put together and then Brian was like, “Oh, okay, okay. That makes sense.” And he made it pretty awesome in a day. And that was obviously a JavaScript project that we had hosted on GitHub. And so initially, we didn’t expect anybody else to really be interested in it. And what Assemble was doing for us was essentially just making it easy for us to do includes, to take data in JSON or YAML format. There’s usually YAML for configuration type stuff and JSON for…

Do you guys say [‘jason’ or ‘jay-saun’]? It’s usually half and half.

AARON:  Either way.

JON:  Yeah.

AARON:  I like [inaudible].

JAMISON:  I say [‘jay-saun’] but I don’t care.

CHUCK:  [‘jay-zone’]

JON:  Oh, okay. There you go. There’s a third way that I wasn’t even aware of.

[Chuckles]

JON:  So, we wanted to use JSON files for things that were more like content or place filler things and then get our HTML pages to be more template-ish and easier to reuse. And so, we created this build system that we were mostly intending to use internally. And people started starring it and using it. And just one thing led to another and we just decided to maintain it as a serious project by itself. So, that’s where it started. Would you like me to give more overview of what actually Assemble does?

JAMISON:  I would love that.

JON:  Yeah, okay. Sorry.

AARON:  I was looking at your page and I’m like, “I swear, there’s got to be a place that will teach me,” because I’m usually slower than most. But I’m not getting it yet.

JON:  Yeah, and that’s our fault actually. That’s why we’re going to get to talk about it today, because we’re about to launch 0.5 and a big thing that we’re going to do is overhaul the documentation and just make it much more user-friendly. Because like I said, this wasn’t something that we had planned this way from the beginning.

So, what Assemble does is it allows you to, in a nutshell, just take partials or includes, just cut up your HTML into templates. I guess the way you would use templates with any templating system, with Handlebars or Swig or whatever you use, Lo-Dash templates, it doesn’t matter. But break them up into small components. It could be buttons or a nav bar or sidebars, whatever kind granularity you like to have in your projects. Break those up into components, and then basically organize those into files however you want them to be, and then you can create JSON files or YAML, however you like to store you data.

And basically, Assemble’s job is to require very little effort on your part for matching up the file. Assemble just figures out what data files belong to what templates. And it matches them together and builds everything into static pages essentially. I guess in the most simplistic terms I can put it, Assemble’s goal is to make it easy to have the right context at any time during the build. And I think at one point, we counted there can be seven or eight different levels of context depending on what you’re doing. But pages have context and components have context. And so, making sure that the right data gets applied to the right part of the page at any given time is essentially what Assemble’s job is. And hopefully, that clears it up a little bit.

But I think the types of things you could do with Assemble, because we’re just focusing on these core tenets of making it easy to match up data in templates, you can build components, you can build pages, and now we’re starting to release some things to make it much easier to build blogs and things like that. So, in a sense, you can think of Assemble as being something similar to Jekyll. But Jekyll is a much more opinionated than Assemble. It’s a blogging system that you have to have your files named a certain way and in a certain directory structure, and then Jekyll works really well. We want you to be able to just plug in your own paths and tell Assemble where to find things and then Assemble just does the job of matching up data with templates. So, does that help a little bit more with it?

AARON:  Yeah. Does it also help me generate those templates too? So that I’m not just trying to point it at things. But does it also create the templates for me?

JON:  Exactly, yes, meaning it assembles the end result. So, it takes whatever templates and data you have and it assembles them into… Well, let me give you an example of the early things that I did that at least I think would give you an example of the types of things it can do. So, when we first started out, I had taken all the Twitter Bootstrap components, all the buttons and things like that, and split them all out into individual Handlebars templates. And then, for mocking up and for, again we were building a prototype, so this was perfect. We just took JSON files and took data for buttons and things like that. We built a bunch of models and lorem ipsum type things for the buttons and for placeholder text with all the different components. And Assemble can just essentially iterate over all of those components and build the actual final components. But at the same time, it can also build all of the pages for demoing the components.

So, you could for instance build a website with Assemble that is mostly text, like a blog or a regular website. But also then have a component showcase where you’re taking all of the partials or includes that you’ve created for the site and just create another destination path essentially for Assemble to build all of those components individually to showcase them. So, in one build you can build a component showcase and use those same components in the actual site, if that makes sense. Hopefully, I’m explaining it in a way that makes sense without actually seeing it and being tangible.

JAMISON:  So, speaking of seeing it and being tangible, are there any good demos to check out what it does or any example sites that are using it or something?

JON:  I think a good visible example is Foundation Zurb uses it to build of the documentation. If you look at the Foundation project and open up the Grunt file, you’ll see a section with Assemble’s configuration. And really, for the amount of, the number of components and pages and things it’s matching together, the configuration footprint is pretty small. And it’s going to get even easier, I think, with this next version. But that’s it. That’s a really nicely maintained project in terms of how they did their page structure and how the format the data. And it’s just a really nice example. There are a lot of really nice examples. That one comes to mind.

CHUCK:  So, one thing that I’m curious about. I’m using Jekyll for one of my websites. And I’m just curious. Besides this being in JavaScript running on Node, you install it through npm. You said that it was less opinionated. How is that an advantage over what Jekyll gives you? Because one thing that’s nice about an opinionated thing is that you don’t have to make those decisions and anyone else can come in and just pick it up.

JON:  Absolutely. I think it all depends on what you’re trying to accomplish. So, Jekyll, really actually it’s not just Jekyll, any opinionated system is going to appeal to people who need that. And not just people who need that but situations that call for it. Sometimes, you need something opinionated and something that’s not going to require any configuration. You just want to spin it up and do it. But let’s say you want to build a component library and you do client work and you maybe want to showcase, I don’t know, I’m just going to throw an example out there.

So, you’ve got these galleries of components and you want to build themes for them and be able to just build them into showcases and demos for your clients with all these different themes applied to the same core data files and the same core templates. That’s not something that, I think you could probably figure out how to do that with Jekyll, but it’s not something that Jekyll excels at, I wouldn’t say. And it is more what Assemble was made to do, meaning that there needs to be a customizable element to it so that you can configure the data the way you need it to be. You can set your templates up the way you need them to be. It’s not just a blog engine. It’s a component generator, too.

AARON:  So, it does have scaffolding bits. So, if I want to scaffold up some new stuff, it will help me with that? Or is that not what it’s designed to do?

JON:  Well yeah, I think that’s the upside to it. And Brian, were you going to say something?

BRIAN:  Yeah so, originally Assemble was built around Grunt. So, by using the Yeoman generators it’s easy to scaffold up different things. But I don’t think at the core, Assemble doesn’t do scaffolding. You can’t do Assemble post to create a new post or something like that. It’s more of use a Yeoman generator to get your template started and then you use Assemble to build it out.

JON:  Now, that was actually on my shortlist of things I wanted to mention too, was that a big thing that we’re going to focus on with this next release is boilerplate. So, we already have a bunch of boilerplates, but anybody, and I’m sure you guys have learned this. To me anyway, one of the hardest things with maintaining these open source projects is forgetting to go back to things that we’re not using anymore. We’ll get issues on things that we forgot about. And so, we have these outdated boilerplates that are probably doing more harm than good.

So, to answer your question, I think you can achieve the same kind of spin up and use it effect with Assemble that you could with Jekyll just by using a boilerplate. And it doesn’t need to be Yeoman if you don’t use Yeoman. It’s very popular and nice to use, but you don’t need to use that. You could just use your own homegrown boilerplate or you could go grab one of the Assemble boilerplates that we’ve created and use that. So, there are no, I guess from my standpoint, since we have the configurability you could always achieve the conventions that Jekyll has just by implementing a boilerplate and some standards for you development team, I guess.

JAMISON:  So, do you want to talk a little bit about, I’m interested in the context of creating Assemble while trying to raise funding.

JON:  Sure.

JAMISON:  Why did you choose to focus your efforts on this open source project instead of just heads-down make your MVP so you could raise funding and stuff?

JON:  Well, that’s a long story, maybe a little bit. Some things we won’t go into a little bit.

JAMISON:  Okay.

JON:  But some of it was personal. My wife and I had, let’s just say a medical thing. So, a part of that was there. But also, it was really important to me. So, I’ve already raised venture funding. I’ve raised venture funding in the past. And I just had a company fail after five years and raised a lot of money. I wasn’t there anymore. But the team that took it over three years after I left the company went out of business. And I decided when we started this one, when I started this one, and the reason we wanted to start it, it was just really, really important to me that I completely was immersed in this community and that I got experience as a developer and knew the product.

So, we wanted to take some time for me to get, I guess as familiar with the development process and with the development world as I possibly could before we actually went and tried to raise funding. So, we spent at least about a solid year on just developing open source. I released almost 300 projects last year, in this actually past 12 months.

JAMISON:  Wow.

JON:  [Chuckles] Well, it was a goal. I wanted to try to do one a day, but we didn’t have a lot of time. So, to answer your question, the minimum viable product for this business is bigger than the average because it’s a B to B product. It’s enterprise software. It enables business to business commerce transaction. So, it’s a little bit bigger than your average B to C type chat startup or whatever. But, I don’t know why I used that for the example, like that represents the average startup.

[Chuckles]

JON:  Yeah, I couldn’t come up with anything better. But anyway, so we did it the way that we felt was best so that when we came back to investors, we felt like we had a really, really solid team. And so that when we start, and we are now ready to start bringing people on, that we’re more engineer oriented rather than business oriented and more developer friendly and more open source focused. So, that was the main thing, is we just really wanted to build up that foundation of the company and the authentic living and breathing it every day and just actually give something to the community and build something of value and be a part of it. So that when we do actually get the funding, we’re ready to use it and do the right thing with it.

JOE:  So, would you say that open sourcing Assemble really fits in to the business plan as you had before? Or was it a spur of the moment, “Hey we’re just going to do this for the community”? Or do you find that it ended up being a very strategic move on your part?

JON:  Actually, there was not strategy about Assemble. Assemble was an incredibly important project to us now. And it has been growing on us more and more and more from the beginning. It’s always been important, but now it’s just something we absolutely love working on. And you can tell by the amount of, [chuckles] the number of plugins and things we’ve created for it. But it was never a strategic play. And I want to be cautious how I say this, but it was just a build system for our other application initially. So, all of the projects that we’ve worked on or published, I shouldn’t say all of them because we have a lot of fun. We publish projects that we think are fun or interesting, as nerdy as we are. Whatever we want to work on, we just publish it. But most of the tools that we put out there are in some way, they somehow tie back to help us with productivity or make things a little bit easier.

And we just today released something for Assemble called Phaser. And Phaser is entirely focused on making it easier to maintain documentation for projects. And I mean, as simple as just a readme. So, there’s Yeoman and there are generators, but those other generators are focused on generating actual projects, right? But we wanted something that was just going to generate the repo files, like just the readme for instance. So, just using templates and then just use the package.json data to populate the templates and build a readme. And that’s going to make it easier to maintain Assemble.

But none of these things, to circle back to your question, none of them are really strategic to the business. They’re just making it a little bit easier for us to maintain these projects, I think, that are giving back and helping us to build the business that we’re trying to build.

JAMISON:  So, if I could summarize, it’s like the montage in karate movies where you just spend a bunch of time training and they play…

[Laughter]

JAMISON:  [inaudible] music in the background?

JON:  Actually, yes. That’s exactly what it’s like.

JAMISON:  Okay.

JON:  A lot of 80’s music.

JAMISON:  That’s pretty sweet.

BRIAN:  I think we’re going to release a crane kick here tomorrow.

[Laughter]

JAMISON:  Nice.

JON:  But you just summed up the essence of the whole experience. Yeah, we wax cars and yeah, we…

JAMISON:  [Chuckles] Beat up little kids in karate tournaments?

JON:  [Chuckles] Yeah, exactly.

[Chuckles]

AARON:  Any open source project should be doing that.

[Chuckles]

JON:  Yeah, it’s really good for your image when you beat up children.

CHUCK:  So, what kinds of things do you have to do in order to make something like Assemble work? I’m assuming you have to render the templates into actual HTML. And when you do that, is it actually putting it into another folder that’s just HTML? Or is there more to it than that?

BRIAN:  So, what Jon was saying with going over not being really opinionated about stuff, there’s a lot of configuration options. So, right now, because it’s mainly focused on Grunt, you use Grunt to tell it where your source files are and then where your destination files are going to be. So, Assemble will take that in and then load everything and it does everything in memory. Mostly we use Handlebars to do our rendering. And we’ll render pages. I guess each page is written out to the destination folder as it’s rendered.

So, in the future though, some of our stuff that we’re going to be doing with Assemble is trying to decouple it from Grunt and make it so that it could be used anywhere that you want. Like for instance, I’ve got a test case of even though it’s a static site generator, I’ve got a test case of it running as a middleware for Express so I can pull in markdown files and show them on the page in real-time, with the data just for those markdown files. So, that’s some of the stuff that we’re exploring. And what we’re planning on building out really is to make it be used in all kinds of different systems.

JON:  Yeah, I think to add to that, at its simplest, and Brian was saying in the future, but we’re talking in the next couple of days [chuckles]. So, the new version of Assemble is coming out in days. And in its simplest iteration, you can npm install assemble once the [D5] is released. You’ll be able to do npm install assemble and then var assemble = require assemble and then console log assemble and in the first parameter put a template, like an actual template string, not a file. But you could. You just throw a string in the first template and an object there in the first parameter, throw an object in the second parameter, and Assemble will compile that. And of course, you could also just feed a whole directory or a list of files to Assemble in the first parameter and throw options in the second parameter and Assemble will grab the source files and then grab the data that you put in the options and it will spit out all of the compiled, rendered files to the destination that you specify.

AARON:  Nice.

JON:  Yeah. It’s the new version. I’m really excited about it because it is so light and easy. And we still love the whole Grunt ecosystem and we’re really embracing Gulp too. We’re going to have a lot more support for Gulp too. I think people are going to be happy to hear that. And Assemble, I think this whole transition to the way that we’re doing things now and the way that we’ve refactored, it’s going to be a lot easier for other ecosystems to consume Assemble.

JAMISON:  I’m trying to think of a good way to ask this. I’ve heard you talk about what it does. But I’m still struggling to understand where I would use Assemble, because in my mind, static site generator is so coupled to Jekyll. When I hear the words static site generator, that equals Jekyll in my brain. So, what kinds of stuff do you use it for?

JON:  Let’s do this first. What would you use it for? What would you use Jekyll for?

JAMISON:  Just my blog, pretty much, and basic doc sites and stuff. I don’t know.

JON:  Okay, well that’s a good starting point. So, let’s say you’re a designer or you do anything with HTML and CSS or you want to build a site that’s not Ruby-based. And you want to maybe…

CHUCK:  Hey, you say that like it’s a bad thing.

[Chuckles]

JON:  No, no, it’s actually not at all. I can’t [inaudible] anything about it. I don’t know enough about Ruby to have an opinion about it. Looks like a great language. No, so if you’re doing something more like the example I gave earlier where you’re doing client work or you’re building components and you’re building sites, for instance the BBC’s, I don’t know how many [chuckles] I don’t know how much I should get into this. But I think some of the BBC’s websites are built with it. I think Web Experience Toolkit, if you go look at some of the things they’re doing on GitHub, I think the Canadian government uses that to some degree for their sites. So, it’s not hosted on GH pages, I don’t think. These are sites, pretty big production sites, that are being used outside of the actual GitHub ecosystem, if you think of it that way.

BRIAN:  While you’re talking about GH pages, I guess that’s what I use Assemble for, is that I can render out my static pages and host them on GH pages without having to set up Jekyll. And I can put a no Jekyll file in there so GitHub knows not to actually try to render them as Jekyll files. And I think it sometimes speeds it up. I don’t know how much. I haven’t done any kind of checking on that. And I don’t know if it has any impact on how they host it with their CDN and everything. But that is another benefit of having it posted there. There’s a lot of other static site hosting places coming up, or popping up where you can just build your site and then upload it directly from there, things like Amazon S3 and stuff like that, too.

JON:  Yeah, I think something you touched on there Brian that is important to me is, let’s just be completely candid. I think it’s strange sometimes when you’re working in this Node environment or JavaScript and then there are these tools that allow you to spin up Jekyll and run it during your Grunt build or something. Why do that? You’re in Node. Just use JavaScript. If you have another tool that can accomplish the same thing, just use JavaScript. And we actually can get pretty close to actually building a Jekyll site without actually having to recode it. If we wanted to, we could probably spend a day, maybe a day or two, and round that out. We can build Liquid or Swig.

You could build your Jekyll stuff with Assemble if you wanted to. Now right now, that’s not our focus. So, you’d probably run into some compatibility issues with some of the tags and filters. But those are just tags and filters. If you needed them to work in another environment, you could just make new tags and filters for the Node version, if that makes sense. So, I guess the bottom line to me is we can do everything that Jekyll can do from a context standpoint and from actually building pages. If there’s a feature disparity, it just comes down to whether or not somebody wants the piece enough to do a plugin for it or whatever.

CHUCK:  Yeah, that’s something that I’ve more or less found with Jekyll as well, is if somebody wants a feature bad enough, they’d build a plugin for it. And that’s one thing that I really like about it, is for the longest time I was working on my business website for my consultancy and I kept trying to build this Rails app for it. You can correlate that to Express or whatever. The issue became though that I spent so much time on the functionality and all I really need to do was display content.

JON:  [Chuckles] Yeah. Yeah, that happens.

CHUCK:  So, I moved to Jekyll and it just made a ton of sense. And I think that’s where these static site generators really shine is where you get in, you have a basic layout that you need, and you’re just going to have a series of content pages and maybe a blog attached to it. I mean, why not use a static site generator? It gets it all out of your way and all you’re focused on then is putting the content out there for your customers.

JON:  I actually really, really like Jekyll. I’m a big fan of Jekyll. And if we weren’t working so hard on Assemble and I wasn’t always needing to use my own projects as guinea pigs, I’d probably have fun spinning up a couple of Jekyll sites here and there, because it is fun. And it’s nice to use and the fact that you don’t have to do a whole lot of configuration is nice. So, I think it’s just, “Pick your poison.” In this situation and what you need at that particular moment. I may actually use Jekyll sometimes if I do a blog and I just need to get it spun up really quickly.

But I think there will be a point in the future where Assemble has a bigger plugin ecosystem. We have more middleware and we already have a lot. But we don’t have all of the things that Jekyll has. So, I don’t want to claim that we can do everything in every regard that Jekyll does. But context wise, in terms of actually if you’re building a site that’s design oriented or you want a little bit more, a little more control than what you can get with Jekyll, then Assemble can do anything with the templates and data that Jekyll can do, and more.

And where I think we’ll need to improve is with some things that feel more than static. You probably know what I mean, like pagination and things. We actually do that pretty well now, but we struggled with it initially. But those things give a static site more of a dynamic feel, I think. And so we’re focused on that a little bit more now.

AARON:  So, who are you guys’ biggest users? I see that Topcoat’s using it. Who are your bigger users? Who do you guys get most of your feedback from?

JON:  That’s another good question. And I’ve wanted to talk about this for a while, because we have so many users and we get so much feedback. And I’m also surprised at how many people contact us. I guess it’s okay. People contact us directly sometimes instead of through the issues and things like that. I absolutely love engaging with the community and I love engaging with them in the open so that everybody can learn from our discussions and everybody can contribute and give feedback and help us shape our decisions on where we’re going.

But to answer your question, we have I think a big design component, a big frontend component, in our community, which is awesome because that’s what we’re focused on. But what we’re learning is that since a lot of client work and things like that is done with Assemble, we don’t always get the feedback. And a lot of those projects aren’t actually open source. So, we’d love to have more. So, I guess my answer is more of a request to anybody who’s listening or in the community, who uses Assemble, please give us more feedback. Let us know how you’re using it. And just always feel comfortable in joining in our conversations and coming and telling us how you’re using it. And tell us where you think we’re failing and how we can do better.

But like I mentioned, Foundation is a big one and like you said Topcoat. I know Effeckt.css, the library that Chris Coyier created I think with, I don’t want to just try to drop names because I’m not really sure who was on the project. But I know Chris Coyier and I’ve seen. I think it’s on… isn’t that [inaudible] boilerplate?

BRIAN:  Yeah, that’s on their repositories. I know. I also met some people from a local web shop here that they’ve been using Assemble for about a year and I just found out that they were using it. But they use it on big projects mainly to build style guides for the developers that they’re handing their designs off to.

JAMISON:  That’s cool.

BRIAN:  So, they might not be building an actual app or site with it, but they’re at least building the style guides for the people to use. And for me personally, that’s the one thing that I was really trying to get towards, was to allow people to build out ways to help bridge that gap between designers and developers. Because as Joe probably knows, in the Microsoft world, I think there’s usually a bigger gap there than other places like maybe Ruby and JavaScript right now.

JOE:  Amen.

[Chuckles]

JON:  And I’m mostly not sure how the etiquette is with this, but we do know a lot of other big projects. But I’m looking over at Brian. I don’t know if we should just start shouting out these projects and stuff.

JAMISON:  Are you allowed to say?

[Chuckles]

JON:  Yeah, I don’t know what etiquette is on that. But I generally, I guess I don’t want to, unless they’re going on to our issues and listing it and broadcasting it themselves.

BRIAN:  But we do have the one issue, who uses Assemble. So, there are a few people on there. I think you mentioned Chris Smith earlier. He’s writing a couple of books. His app is like a book that has live examples in it where you can… I think he’s got a Backbone one and an Angular one. And he uses Assemble to generate the chapters for that book.

CHUCK:  Yeah, he was telling me that. That’s what he does. And yeah, it’s really interesting. You change the JavaScript on there and it actually changes the page.

JON:  Yeah, it’s pretty cool. Assemble, I don’t want to make it sound like I think it’s the best tool in the world, but it is fun to use. It is actually really fun to use. If you work in frontend development and you’re used to, even backend actually, I keep saying that. But the biggest challenge between Brian and I when I first started was handing things back and forth and taking things that I would put together and expecting those to [chuckles] come out looking the way I put them together. And it didn’t always happen that way. So, this is great to me, being able to have this build system that keeps everything modular.

When Brian gets the components from me and the design work from me, everything’s already sliced up in a way that makes sense to him as a backend developer. And he doesn’t have to re-slice it and figure out where the components begin and end and things like that. So, that works for us because that gels with the philosophies that we have. So, I don’t know if that works for everybody. But yeah, Assemble mostly has just been really, I think the main reason we’ve been working on it so much is that it’s been so useful to us. The point that I’m getting at is that we’re not just doing it because it’s a community project. We’re actually using it and it’s been useful. So, that’s where a lot of the ideas and the drive to keep building it come from.

CHUCK:  Cool. Do you guys have any other questions for these guys?

AARON:  I’m solid. I’m going to look at it.

JON:  Awesome.

CHUCK:  That’s one thing that I found that was nice about Jekyll. As I’m getting into more of the JavaScript, especially the backend JavaScript stuff, these are tools that I’m using anyway. So, it’s very convenient to just have it right there in front of me so that I can do what I need to with it.

JON:  Yeah, definitely.

CHUCK:  Alright. Well, let’s get into the picks. Aaron, do you want to start us off?

AARON:  This week I’m going to pick deadmau5. I’ve been listening to a lot of his music. The guy’s a genius. So, I’m going to pick deadmau5 as my first pick.

So, I’m going to also pick traceur-compile. I follow their repo and they’re doing a lot of work. There’s a lot of commits every day. They’re getting that library ready. So, I don’t know. In the next 12 months, we’re going to be able to start having actual build systems where we’re writing ES 6. We’re building in browsers that are capable of ES 6 but we’re able to at build time compile into a language that even some of the dumber browsers can speak. So, I’m excited for what they’re doing and how they’re helping pull the language forward.

I’m also going to pick the Grunt Traceur plugin that I wrote and just makes it easy for me to author ES 6 and get it built. Then it’s something that other browsers can use too. So, those are my picks.

CHUCK:  Awesome. Jamison, what are your picks?

JAMISON:  I have three picks today. The first one is old. It’s older than me actually. But I had never read it before. It’s ‘Red Dragon’ the book. It’s the first one in the Hannibal series. Oh my gosh, that guy has a way with words. It’s super good.

My second pick is the internet distilled. It’s called Twitch Plays Pokémon. Twitch.tv is a platform where people stream themselves playing video games. And there’s a chat integrated into it. This guy hooked up a hacked Pokémon rom to listen to the chat. And so, if you type ‘a’ in chat, then it’ll input ‘a’ into the game. There are 80,000 people watching it right now. I don’t know. It’s pretty incredible. They’ve created a whole religion about it because of course 80,000 people trying to tell the Pokémon guy which way to go, it’s going to do some weird stuff. So, he’s totally done some amazingly horrible things like given away all his good characters and dropped all his items. And they just invent this mythology around why he’s doing it. It’s pretty amazing. I think people will talk about this for a long time.

And my last pick is just MountainWest JS. It’s a JavaScript conference coming up in Utah, March 18th to the 19th I believe. Tickets are still on sale and it’ll be a super good time. There’s also a DevOps day and a Ruby day if you want to go to those. It’s like three conferences in one, but you can do them a la carte as well. So, those are my picks.

CHUCK:  Awesome. I’m planning on being there, too. Joe, what are your picks?

JOE:  I’ve got three picks. The first one is a movie. For Valentine’s Day, my wife and I celebrated it a week before. So, for the actual Valentine’s Day, we just let our kids invite all their friends over. So, they had a big party and we wanted to rent some kind of a video that was Valentine’s Day-ish but not dumb and something that teenagers would enjoy.

CHUCK:  [Laughs] Good luck.

JOE:  [Chuckles] Yeah. Well, my suggesting was Warm Bodies, but my wife vetoed that unfortunately.

[Chuckles]

JOE:  So, she rented the movie Austenland and the minute I heard the word Austenland, I groaned and I said, “No. Please, for the love of everything that is holy, do not rent some movie named Austenland.” But of course, my wife did not listen to me and it was the funniest dang movie I have ever seen. I was laughing. I was coughing. I was laughing so hard. It’s like a parody about people who love Austen, Jane Austen, and think that the best men are fictional. And it was just absolutely hilarious. I laughed my head off.

I’m also going to pick Psych because it is now Psych’s official last season, the TV show on USA. Psych the musical was hilarious. So, I’m going to pick Psych for its last season because it’s been a great show. I think it’s in its eighth season now. It was an awesome show.

My last pick is going to be the Teen Writers Conference. That’s being held here in Utah. It’s a conference for teens who are interested in writing. Being one of the main speakers is Jessica Day George who’s an author who’s a local, writes books for teens. And I got a couple of daughters. They’re into writing. And I just stumbled upon it and it looked really awesome. It’s really super cheap. It’s a one-day conference. It’s 40 bucks to send your kid. And so, it’s at TeenWritersConference.org and of course that’ll be in the show notes. And that’s it.

CHUCK:  Awesome. I just have one pick this week and that is this book that I’ve been reading. I think I might have picked it on this show before. I don’t know. It’s ‘Basic Economics’ by Thomas Sowell, and just a terrific book. It just makes a whole lot more sense out of the economy and it explains a lot of the reasons why things happen when we try and make things better by doing certain things. And how some things make things worse and some things make things better and some things just create different incentives for different people to do different things in the economy. Anyway, really, really enjoyed it, so I’m going to put links to those in the show notes. And we’ll get Jon’s picks. Jon, what are your picks?

JON:  Okay. I have, my first one is, I think I’m going to give two picks actually. My first one is a book series. I haven’t been reading fiction a lot for a while, but I was reading a lot of business books and a lot of economics books and a lot of programming books for a while. But I just picked up this fiction series recently. I’m not sure what the actual series is called. I think it’s called the Aurora Series. I’m going to put a link up to it here. It’s called ‘The Frontiers Saga’ and it’s by an author named Ryk Brown. It’s R-Y-K Brown. And it’s just really, really good.

It’s basically a post-apocalyptic book about, I’m not going to give spoilers here or anything, but it’s post-apocalyptic. Basically at a point in a future when we were a lot more technologically advanced than we are now and something happened and then, this is first page or first few pages kind of thing, but they’re rediscovering some of the technology they had before. It’s a really interesting book. But there are 10 books in the series.

The second one is Phaser. I am going to pick one of our own projects because I think it’s so awesome. We got so excited about this because it has been so super useful for the last few days while we’ve been testing it out that I have to pick it. But Phaser’s just a really awesome maintenance tool. And I’ll link up something for that too. And it’s just for maintaining projects on GitHub basically.

CHUCK:  Very cool. Brian, what are your picks?

BRIAN:  Alright, my first pick is, I think it’s been out for a couple of years. But it’s an app called ‘Zombie’s Run!’ and something that my girlfriend got me into. Basically, they have voiceovers and it’s like you’re actually running from zombies and they’ll have things like that. So, it’s like a 5K trainer and things like that.

My next pick is a book that I’m reading called ‘Makers’. It’s a new industrial revolution. So, it kind of goes along with your economics one. It’s more about how the new industrial revolution is people at home making things, a lot of things like with 3D printers and all that and how it’s more common now.

I think the last thing I have to mention is that 24 is coming back for another season. So, that’s one of my favorite shows from a while ago. And I have been excited about that.

JON:  And you have another endorsement from me on ‘Makers’. That was actually the third recommendation I was going to give and I forgot to write it down. I thought of the third recommendation and I forgot what it was by the time I got somewhere to write it down. So, I only had two but that would have been my third. So, two recommendations for ‘Makers’.

CHUCK:  Awesome. My favorite 24 story, my wife was in labor. We were watching the second season of 24. And I think her contractions were a minute and a half apart by the time we finished the last episode of that season.

[Laughter]

CHUCK:  I kept asking if she wanted to go to the hospital. “No, just one more,” and we watched three more and finished the season.

[Laughter]

JOE:  Holy crap.

JON:  That’s amazing.

CHUCK:  Yeah, it was pretty fun.

BRIAN:  Yeah, I’ve got two cats. One is Bauer and the other is Chloe.

CHUCK:  Oh, there you go.

BRIAN:  So yeah, been into that for a while. [Chuckles]

CHUCK:  Awesome. Anyway, we’ll wrap up the show. Thanks for coming, guys.

JAMISON:  Yeah, this has been great.

JON:  Yeah, thanks a lot for having us. Really appreciate it.

AARON:  Yeah, great job, guys.

BRIAN:  Thank you.

JON:  Thank you.

CHUCK:  Yeah. And I am excited for Assemble both in the sense that it’s another static site generator that seems to have some pretty cool options and it’s also a code base that I can go look at and see how you’re doing specific things.

JON:  Great. We’d love to hear any kind of feedback you have.

CHUCK:  Alright. We’ll wrap this up. And thanks again to our panelists as well. And we’ll catch you all next week.

Previous post:

Next post: