The Changelog: Software Development, Open Source - Buckets CMS on Node.js (Interview)

Episode Date: November 28, 2014

Adam and Jerod talk with David Kaneda about Buckets (a simple, open source CMS built on Node.js), how he's building Buckets, what competing with Wordpress and Drupal is like, the process of working wi...th people on Assembly, and more.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome back everyone. This is the changelog and I'm your host Adam Stachowiak. This is episode 132 and on today's show we have Dave Caneda joining us to talk about Buckets. It's his project he's building on assembly. It's a CMS built on Node.js. Great show today for you. Our sponsors for the show are CodeShip, DigitalOcean, and TopTile. We'll tell you a bit more about DigitalOcean and TopTile later in the show, but CodeShip hosts a continuous deployment service that just works. You can easily set up continuous integration for your application in just a few steps and automatically deploy when all your tests pass.
Starting point is 00:00:45 CodeShip has great support for lots of languages, test frameworks, as well as notification services. They easily integrate with GitHub or Bitbucket and can deploy to cloud services like Heroku, AWS, Nojitsu, Google App Engine, or even your own servers. Setup takes just three minutes. Get started today with our free plan and make sure you use our code, TheChangeLogPodcast. Again, TheChangeLogPodcast to get a 20% discount
Starting point is 00:01:11 for three months on any plan you choose. Head to Codeship.io slash TheChangeLog and tell them TheChangeLog sent you. And now, on to the show. All right, we're back. This is Adam. I got David on the line as well. Jared on the line. Jared, say hello. Hey, everybody.
Starting point is 00:01:38 Got sort of a bum voice this time around, so we'll keep your talking to a minimum. But David Kaneda is with us. Hey, everyone. He's no stranger to the show.id you had to remind me sorry that that you were on the show way back when that's okay i think what was it five years ago or that was a very yeah let me go find the episode number uh you were on episode 30 and that was like forever ago july 27th 2010 there you go that's yeah That's a long time ago. And you were talking about Sencha at the time too. Yeah.
Starting point is 00:02:08 I remember it was like, I forget, like a couple months after I first moved to California. I've been here just about four or five years now. Gotcha. And so we're having you on the show today because you're building an open source CMS on Node.js with MongoDB. You're building it on assembly. It's totally a side gig. So full-time, you're a UX designer at Google. So you've got some history and the world knows some
Starting point is 00:02:35 and probably uses several pieces of software that you've helped build or prop up and whatnot. But that's what we have on the show today. I think it was about two months ago, two or three months ago, we reached out and you weren't quite ready to come on the show. And now you're, I think you're at what, 0.7.0 now, is that right? Yeah, yeah. I mean, it's still super early in the project, but yeah, I got to tell somebody about it at some point. So I guess for those who don't know who you are a bit more than what we just explained to Bacha,
Starting point is 00:03:06 how do you introduce yourself? I say in terms of the whole title thing, I just say designer generally. Although for the past five years or so I definitely write way more code than I spend in Photoshop or anything like that now. But I identify as a designer. I started in print design, got into the web,
Starting point is 00:03:30 started doing Flash, you know, sort of all types of sites. And then sort of around that time, about five years ago, I did JQ Touch, which was a JavaScript library for creating native-like experiences on the iPhone. And then that just sort of led into a whole avalanche of doing mobile work. And I think a lot of designers, especially web designers, sort of fell down that path of getting into mobile.
Starting point is 00:03:58 What year was that? I remember being a JQ Touch user back in the day. I remember being amazed by it, too. Thanks. I think that was like six or seven years ago that that first came out. And yeah, it blew me away, like in terms of, you know,
Starting point is 00:04:17 I just made this thing and I had sort of vaguely seen and used open source software, but I just thought, you know, what am I going to do? I'm not going to sell this thing, but I think it's powerful. So I put it out there, and this is a little bit of a humble brag, but I was just kind of blown away to see thousands of people starting to use it.
Starting point is 00:04:42 Didn't that transition to something else at some point? It went from JQ Touch to something else, I believe a paid product. Two things. Basically, Sencha, which was called EXTJS, then hired me and we formed a small team to work on Sencha Touch. That was commercial for a month and then it became free and all that. Some corporate stuff. And then JQ Touch itself was renamed to JQT at some point
Starting point is 00:05:14 because somebody got angry for some reason. Crazy. Trademarks. What were you going to ask, Jared, before I jumped in there? I was just going to say I I think that it just struck a chord. There was a big need, or at least we thought we had a need for those types of toolkits at that time, right? When mobile just started kind of exploding. It's funny these days because you still see them all the time.
Starting point is 00:05:38 There's Ionic now. There's that one that came out from the Bootstrap team, like Ratchet, I guess. But yeah, it's interesting. So tell us about Buckets. It's being built on Assembly. Let's dive into this product and what's happening. I mean, I guess even before Assembly, Buckets is just a thing I've wanted to do for a long time.
Starting point is 00:06:05 I mean, I think I would imagine the majority of web doing this sort of front-end heavy JavaScript and CSS framework. And was kind of eager to get back onto doing some server-side logic, just building apps on both sides. And it was sort of just a thing I toyed around with the idea. About a year ago, I was a designer in residence at Benchmark, a VC firm here. And I sort of told them about it and what I wanted to do with it, and they expressed interest in possibly raising a seed fund or a seed round for it. And so they said, just get started. Just, you know, build the thing or at least like throw together a prototype and we'll see where it goes.
Starting point is 00:07:18 And after about a month of working on it, I just kind of like threw in the towel because it was kind of isolating to just work on it, you know, day in, day out, here out of my house and not sort of be sharing it. And the goal was always to open source it, but it just, you know, it had to run first. Anyway, so it was Matthew Smith, a whale on Twitter, who mentioned Assembly. And I saw that about six months ago. And I thought, well, I love the idea. I've always just kind of loved the idea of mixing some sort of commercial incentive with open source. And I think there's, without a doubt, something to be done in that space um and so I thought this
Starting point is 00:08:08 would be a great place to just throw buckets on there and see how people respond because you know I'd already basically given up on it or not even given up on it but just you know I had already burned myself out on it um and so in the beginning, it was really just to seek, you know, some sort of validation of the idea. Like, is this something people would be interested in? Yeah, a lot of the, especially when you're getting started, especially when it's something like this that's sort of homegrown to a degree, and as you mentioned there, quite possibly something you might even give up on
Starting point is 00:08:41 if it's not something that other people can sort of encourage you in. You sort of need a tribe to sort of validate whether it's something you should pursue or not like you said it's a cms isn't a new idea um some of the questions i have are you know why this over others that are out there what is this going to do better than some of those but that'll come a bit later but sure i i think if we can camp out this quickly on taking it to assembly, I want to camp out there just for a little bit because it's sort of being built by the community, as they say, being built by the assembly community. And that validated the idea. So what was, about how long ago was that and what was the initial reaction you got?
Starting point is 00:09:22 First, can you give us, Jennifer, everybody, just a general thing of what assembly is, and then go into the details. So assembly, and I think they're still pretty early on themselves, and so they're still figuring out. But the sort of high-level concept is, you can create projects that are either open source or just like open source, where anybody can contribute.
Starting point is 00:09:45 And that ranges from development, like directly on GitHub, or design mocks, or marketing even, or copywriting. And basically you have bounties which are similar to GitHub issues. You say, oh, we need this feature, or we need to be able to sign in with Facebook. And then as the project creator or as the core team,
Starting point is 00:10:09 you're actually able to assign a value to that bounty. And assembly sort of makes these values. They use sort of like a cute coin system, but ultimately it translates to just a percentage of the product's potential profit at one point. So as assembly products start making money, they start to calculate a monthly profit fee and just simply distribute that every month
Starting point is 00:10:39 to all of the coin holders based on how many they have. That's a very sort of good thing, but it's still even hard for me to grasp because it feels like it's potential, like you said, then you're not really sure how much it's going to be. It feels like it's sort of pie in the sky, at least to me, but that's why I'm not on assembly contributing to anything. But it's a neat thing for those who have, like one thing I liked about that though, of just outside of, you know, the idea of not just contributing code. Like if you go to the different bounties that are there, you can sort them by all these different things.
Starting point is 00:11:16 And if we sort yours by different tags, you've got backend, frontend, development, simple, challenging product, you know, copy marketing. That's kind of neat because if I'm a marketing guy that wants to jump into a product or I'm trying to get some notoriety, some authority for my name or I'm just starting out, I can hop on assembly and start throwing ideas at different products here and land a team and have ownership is what you're saying with that, those coins on assembly. And like you said, I think I've always been is what you're saying with those coins on Bounty, or on Assembly.
Starting point is 00:11:47 And like you said, I think I've always been a general product kind of guy. I like design, I like marketing, I like copywriting. And I've always enjoyed both ends of it, whether you're doing the actual hands-on work or more of a creative directing position or something. And so I think a great example is just our logo. Um, and that's actually a good thread. I like that one too. A bucket. Yeah. Uh, with a sort of a little smiley face kind of built in. And that was something,
Starting point is 00:12:17 I mean, it's simple and it's, it's straightforward. And, uh, a friend, John Peel made that. Um, but, uh, it was something I, I just I just kind of had a very rough idea. I think if you saw that thread, I actually just grabbed a photo off of Google Image Search, literally took four minutes, drew some eyes on it, and said, here's kind of the concept I'm thinking. And somebody illustrated it with a great style to it, and I sort of wanted the yellow background and everything
Starting point is 00:12:47 but ultimately it came out as something that was just super simple, super friendly and that's all I wanted it to be and it was perfect You can see the riffing too back and forth between you and the contributors and Whale who you mentioned earlier sort of the iterative process too through this bounty slash kind of GitHub issue-ish kind of thing. And you can sort of see the morphing and even the collaboration.
Starting point is 00:13:14 I like how Neeta came out, too. I think it's a good direction. But let's jump on sort of getting to assembly and what that did for you and your inertia towards buckets. Yeah, I mean, again, I think just having people say, oh, hey, that would be nice, is a huge thing. Because especially creating a product that is so overdone or done so many times, even within the Node community,
Starting point is 00:13:45 which is way newer, way younger than PHP or anything like that, even within the Node community, there's already four or five prominent. And still, they don't really compare in terms of scope to WordPress or Expression Engine or Drupal yet. But still, there's competition kind of everywhere.
Starting point is 00:14:08 And so when you're going to throw your hat in the ring, so to speak, and try to do your own, you first want to know, okay, is there somebody out there who would like to see it done differently or that kind of thing? When I searched for Node CMS on Google, there's several that came up, but one that looked like it was decent. Sorry if I haven't seen this one before.
Starting point is 00:14:36 I'm not hanging out in the Node community too much, but enough to know it's there and what's going on there. Keystone.js was one of the examples. They've got a decent design. They've got a decent product direction they've got a decent product direction in terms of what is happening with it. So like you said, it's not something that's new. It may terrify me.
Starting point is 00:14:52 It seems super cool. Same feature set too, it's Node and Mongo. Yeah, it's a similar kind of feel, I think. And then just to throw out the others, well, there was one called Calypso, but it seems like that one died down. And that was never, I want to be nice on the show, but it was never too pretty.
Starting point is 00:15:17 It was not like, you know. But then there's Ghost as well, which Ghost is tremendously beautiful, a Kickstarter project. It's very beautiful, well-designed, and actually a very similar architectural setup to what we have, which kind of happened by happenstance. I swear I didn't copy them.
Starting point is 00:15:38 But the interesting thing was always that I knew about Ghost when I started Buckets, but I actually wanted to do something that was kind of completely the opposite in some ways. So Ghost basically came, like, looked at something like WordPress and said, okay, this has grown to the point where it's not even really great for blogging anymore. So let's, like, strip it back down to what made it great for blogging. Whereas with Buckets, I wanted to create a tool that was more for these big websites. When you're a web designer and you have to do a website for a university or something,
Starting point is 00:16:15 it's not so much about, okay, does it give you that single panel text area with a nice preview? It's more about, is the content structured correctly? And how easy is it for the end user to just input content? Right. Yeah. There's pros and cons on both sides of that. That's where I was wondering too, what you might think of ghost versus buckets. Because people tend to take a blog software and try to make it more than it is. And then you sometimes try to take a CMS and make it a blog software and a CMS and end up doing too many jobs and not enough focus on the end user and the content.
Starting point is 00:16:58 Because that's part of the huge piece of being a CMS too, is actually managing the content not just theming or design. It's got several different... Not to say that we'll never have a full-page, full-screen markdown editor similar to IA Writer or something like that, but that's definitely not going to be a place that we head soon. In terms of the experience I want to deliver,
Starting point is 00:17:27 and I think you bring up a good point in that, like, CMSs have two audiences, which is sort of the content administrators and then the designers, the web designers. And so for the content people, I want it to feel like Tumblr. And that was, like, sort of a big inspiration for Buckets was this idea that you go into Tumblr, you have these five sort of types of posts you can create, which are text, video, chat, photo, and link.
Starting point is 00:17:57 And they're just extremely well-designed, well-tailored sort of input fields for these types of content. And then when you're working with a system like Expression Engine or Drupal or one of these bigger CMSs, you define content into these sort of distinct blobs in a similar way.
Starting point is 00:18:16 But usually the UX just isn't even anywhere close to that Tumblr experience, right? Right. And so that's sort of the driving force for me on the content creator side, is to make it feel like that. To make more of a Tumblr than a medium. So I guess to those who, because we've had John Nolan on the show before to talk about Ghost, for those who think they might want to
Starting point is 00:18:44 use Ghost versus something else, how does this differentiate from blogging software, I guess, in the bigger picture? It's full-on CMS. What is some of the vision for the CMS pieces? So a couple things. One, you create buckets and you define the fields on those buckets. So you could create a recipe and you define the fields on those buckets. So, you know, you could create a recipe
Starting point is 00:19:05 and every, you say every recipe has a cover photo, a title, a list of ingredients and a steps, let's say, you know, and you can sort of fine tune those fields and, and manipulate those fields. And I, and I want those fields to fields to be very rich at the end. When you say manipulate, do you mean like validation? Validation, just sorting. Most fields come with a good amount of options, but there's still a lot of work to be done in that area. But essentially that's the idea.
Starting point is 00:19:39 As opposed to every item in your CMS has a title, a body, and an excerpt. It's much more define-it-yourself. And so you end up with these forms that are just sort of very specific to your content. That's helpful too. Like you said earlier on, whenever the designer, the builder of this
Starting point is 00:20:01 throws it over the fence to the end user and says, okay, university, here's your site. They don't have to give a ton of docs. It's like, go here and create and make the form. Exactly. At the end of the day, that side of it, if you look at all social networks of a certain type that manage content,
Starting point is 00:20:22 people use them every day and sign up for them by themselves and figure them out, right? And that essentially is what a CMS is. Like, if you look at something like Pinterest, it gathers photos and puts them into this nice layout. But, you know, that's essentially a theme, that grid that you get to the content that you're adding in. And there's no reason that a CMS can't provide that same ease to,
Starting point is 00:20:48 to sort of get into it. Yeah. Let's pause the show for a minute. Give a shout out to a sponsor, digital ocean, simple cloud hosting built for developers in 55 seconds. You'll have a cloud server with full root access and it just doesn't get any easier than that pricing plan started only five bucks a month for half a gig of ram
Starting point is 00:21:12 20 gigs of ssd drive space one cpu and one terabyte of transfer that's a lot for five bucks a month digital ocean also has data centers all across the world. New York, San Francisco, Amsterdam, Singapore, and their newest region, London. You can easily migrate your data between those regions, making your data always closest to your users. Use the promo code
Starting point is 00:21:37 changelognovember in lowercase. It's important that you use lowercase. changelognovember to get a $10 hosting credit when you sign up. Head to digitalocean.com right now to get started and back to the show. So we're talking about some of the philosophies around it. And I think you might even say we're getting there. We're not quite there yet.
Starting point is 00:21:58 Where exactly are you? We know you're at 0.7.0, but what does that mean? What are some of the features that are built out now? Admittedly, development has slowed down the past couple weeks, I think partly due to just getting into some stuff at the Google and putting in some extra time. But also, I've been just mentally trying to figure out the next place. I'll
Starting point is 00:22:25 go back. So at first, like the first two months or so, the development was very heavy because I was sort of focused on that, the admin panel, which is sort of my, you know, what I am best at focusing on in terms of like UI, UX, the JavaScript architecture. The whole thing is a single page app, which again, compared to a lot of systems out there is a lot different. And which, which also means it's like sort of crazy fast when you're using the admin. So I worked on a lot of the sort of interface, which is still very basic, but kind of rich in a lot of ways. And then I worked on search for a little while. That actually hasn't even shipped yet.
Starting point is 00:23:13 I've just kind of kept that off to the side because I'm still not 100% sure I want to go with Elasticsearch. But anyway, it was sort of just this, you know, creating features, creating the template parser, which is sort of based on handlebars right now. And those types of things, and to the point where it can now create a very basic website. And we have maybe six or seven different types of fields that you can add on to each bucket. So now I'm sort of hitting a point where I know that eventually I do want to offer this as a SaaS offering. The more I think about it, the more I think I'm in no place in terms of sysops
Starting point is 00:23:55 to be sort of kicking off managed instances of buckets. Because it is Node and it does have to run in a cloud environment. And so sort of the clearer and obviously much simpler path for buckets to take is to become sort of multi-tenant and to allow, you know, multiple, not just multiple users, which it already supports, but multiple accounts
Starting point is 00:24:21 that are all creating their own websites. And I've been sort of been wrestling with this idea for the past two weeks because I, on one hand, I want the system. And in some ways, even though it's very different in terms of being Node, the architecture, I want it to feel like WordPress or TextPattern or those older PHP ones where, okay, I install it on my computer. I can run it at local host. I move it to a server, I run it over there. Where if we switch to this sort of platform approach, obviously a lot of that ease sort of goes away.
Starting point is 00:25:00 It's a hard line to follow too when you make that choice because it's going to impact, you know, you work full time, right? So you you got a little time and so the time you do spend you want you want to spend on progress not exactly now you're seeing exactly why i've been uh twiddling my thumbs a little bit the past week but maybe you can come to some of these decisions here on the show i don't know but to me i feel like it comes down to figuring out your target audience, right? And that's sort of a question I have next is like, you know, when you ship this, when it's ready at whatever stage it's at, the 1.0, who is, you know, who's your shortlist
Starting point is 00:25:36 of the kind of people that you're going to see God? Is it people on Squarespace? Is it people using WordPress? Is it PHP developers that are tinkering with JavaScript and Node because of the ubiquitousness of it lately. And not lately, but just the trend, the upward trend of the last few years towards JavaScript.
Starting point is 00:25:55 Is it people that hack on Ruby that make their own stuff? It's definitely web designers. And 100% I can say, initially people with HTML and CSS experience and who want to use HTML and CSS the idea being that I've just always sort of thought content management and especially when you look at these web content management systems
Starting point is 00:26:22 like you know I don't think a lot of them handle that content creation side well, like we were talking about, sort of on the user experience angle. But then also on the web designer angle, or web developer, grabbing that content and then putting it into a page should be extremely easy. And I've always personally just cringed
Starting point is 00:26:47 when I see WordPress templates using raw PHP, things like that. So you mentioned WordPress. Is there anything about WordPress that you've used before that sort of, because if you take the 37 signals approach, it's always like have an enemy, right? And don't use Gantt charts was Basecamp's original thing. And that's sort of what kicked that off. And it was like, it's always like, have an enemy, right? And don't use Gantt charts was Basecamp's original thing, and that's sort of what kicked that off.
Starting point is 00:27:06 And it was like, it's about conversations and people and things to do, not Gantt charts and graphs and whatnot. So who's your enemy? So it wouldn't be WordPress. I always just say WordPress because it's the lowest common denominator. But it's really Drupal. I would definitely say Drupal. I would definitely, I would say Drupal. Okay.
Starting point is 00:27:28 Anything that feels like... Well, they've got a pretty cult-like following. They do, and it's a giant community, and it's a somewhat kind of gross product. And I feel bad putting down anything, you know, at any time, even on Twitter and stuff. But if I had to, you know, obviously I'm making a competitor, so there has to be some stuff out there I don't like. But Drupal sort of represents that, you know, you look like you're using PHP My Admin or some, you know, like database administration tool.
Starting point is 00:28:05 Yeah. And I would say even systems that I'm really fond of, like Craft came out, and that came sort of out of the Expression Engine community. One of the developers, I think his name is Brandon Kelly, I hope I get that right, who did a lot of plugins and sort of the most popular plugins
Starting point is 00:28:25 for Expression Engine made his own CMS. And it's really elegant. There's a lot of extremely impressive pieces to it. But it still, to me, just at a certain point, feels a little bit like just rows, you know, tables of lists, and then you click and you're in a detail view. And, you know, like that very sort of straightforward database administration feel. Well, now that we've talked a bit about, I guess, some of maybe your competitors, enemies, inspiration, whatever, however you want to word that, obviously you're building this
Starting point is 00:29:01 around the community on assembly. So how does, how has, and how does, and is the the community that's sort of because you've got 294 followers on assembly for this project i don't know how many are really actively involved or involved or contributing ideas but how do they help funnel this idea of monetization and the overall what would be the architecture of how you build this product so this is kind of like a weird answer, but kind of not enough in some ways. I wish there was a little bit more, or I wish I knew of people that I could just say, okay, this is my team of five people that I can ask these sort of high-level, big questions to. Regarding the multi-tenant sort of ambitions, I think that I am planning a blog post. I might
Starting point is 00:29:48 put it out tomorrow or Monday about this and sort of asking the community, what do they think? Do they have ideas? That kind of thing. I didn't want to publish that blog post until I had a little bit more concrete plan on how we would do it, which I'm going to outline in there. But in some ways, like, and it also sort of goes up and down, like some weeks there'll be no activity on assembly and I'll like sort of post things in the chat and it just goes quiet for a couple of days or like a week. And then other weeks I'll get, you'll get people making bounties, people adding pull requests sort of every day. And I guess that's kind of typical for all open source software, at least in the beginning
Starting point is 00:30:36 and the early stages. But it's an odd thing to create a CMS, I think, or even any sort of big, I guess, app and not just something that's a framework or a tool or a library, which I guess is what I'm used to. Because like, you know, your trajectory is so far, right? I mean, you go so many different directions and everybody has an opinion. And I also just don't, if I put myself in somebody else's shoes, I would never use buckets. Who wants to build a website?
Starting point is 00:31:12 Did he just say that, Jared? I think he did. I'm trying to wait for the rest of the sentence. At this stage, I shall supplement it with. At this stage, who would build a website for a client on alpha software? Personally, I would not. And I don't expect anyone to.
Starting point is 00:31:34 But at the same time, it's hard for somebody to play with something or to experiment or test something 10-15 hours a week when they're not doing something productive with it at the same time. Unless they have the same pain as you and they want buckets to exist just because of the same ideas and the same pain points you've experienced, which is a good builder experience and a good client level experience that surpasses others that are in your space. Yep, totally.
Starting point is 00:32:06 And I think I've had from assembly maybe two or three people who have really done a surprising amount, more than I expected, with certain parts of the app. So how does that work when somebody wants to get involved with buckets via assembly? Do they just sign up and say, I'm here, I can help. I think this is cool. And you say, okay, can you say no? Um, no, I can't say no. Interestingly, I just had a spam sign up the first one ever, like,
Starting point is 00:32:40 uh, a week ago. I don't know if it was spam. Maybe the guy really, like his grandma's really sick or something, but I can't get him out of there. I think they're going to help me out with that at some point. But no, it's actually, it's very much like you just described. In fact, if you go to assembly.com slash buckets, like they just revamped the homepage feed.
Starting point is 00:33:05 And you can see people's bios as they're signing up. They just pop in. And I think when they sign up for a project, assembly asks them, hey, say a little bit about yourself. Why are you interested in buckets? And so they usually say, oh, I'm a Java developer.
Starting point is 00:33:22 I've played around with some Node. Or I'm more on the marketing side, but I'd love to help, that type of thing. And then I typically try to give everybody a custom hello and make sure they can find the things if they want to help, if they want to contribute. I'm always telling people, if you need a bounty, I think there's like a hundred-some on
Starting point is 00:33:47 assembly right now, because I basically will throw any idea I have into the bounties. If you want a bounty, literally just ping me, either IM me or Twitter DM me or hit me up in the assembly chat and just say, this is the type of
Starting point is 00:34:04 stuff I like to do and I'll find one for you. I can find one within 10 minutes. So as the project owner, you create the bounties? I think anybody can create the bounties. I hope anybody can. So if you sign up, anybody can create a bounty, anybody can create a discussion.
Starting point is 00:34:21 And then I don't know how the assignment of coins applies to that, but I'm assuming that's probably something that's on your side. I don't know. I want to, but I don't play with other people's projects much. I just don't have enough time. I would love to just jump in on somebody else's too. I know what it's like for me when I create a bounty and it gives me
Starting point is 00:34:46 sort of the coin interface, but I don't know what it looks like to anyone else. I doubt they would just let you create a bounty with zero coin value. You gotta give up something, right? Yeah. And then the interesting thing is, every
Starting point is 00:35:02 bounty dilutes the pool of coins. It's simply added on top. So you're not subtracting from a hole, you're actually just adding to a pile. Yeah, which I just like a lot. Yeah, that's better. If you have, let's say you own 10% of buckets, it sort of guarantees that you have to keep doing something. Not a lot, but in fact, less so exponentially over time.
Starting point is 00:35:27 But you have to do something to maintain that 10% level. Right. It sounds like this is a little bit Wild West in the sense of, from a person who's trying to get involved, it's very speculative. You're investing.
Starting point is 00:35:44 It's kind of like Kickstarter for open source to a certain degree as far as you're not selling people, you're not trying to get people's money. You're trying to get their time and you pitch them on your project. And for them, they're investing their time and their skills into something that they hope will make money at some point. And yet somebody could come in
Starting point is 00:36:03 and just completely harpoon this thing by just being a total loser contributor. Totally. And that's where we're a little bit, I think we're on the more special side of assembly in that way. There are products on assembly that are already making money. And again, I think this also comes back to a CMS is a little bit different in that it's clearly a long tail thing. It means establishing a community, a plug-in system,
Starting point is 00:36:35 all those things that are not going to be six months away. I almost feel like they should be a little restrictive though because if you can't, I feel like for you, for Buckets, for this open source CMS that hopes to one day be a SaaS product that generates some revenue. I feel like for you, you want to be able to assemble a team that you don't personally know that you can attract people to and join a collaborative community that isn't on GitHub because GitHub's more open source than it is Assembly, but still have free reign of who can join the team or not, who earns their way. But you don't earn any coins unless you complete a bounty. Right, right, of course.
Starting point is 00:37:18 But joining the discussions and just sort of spamming the one person you mentioned. I feel like... I'm actually, I'm kind of okay with that. I mean, there's like, that was only one sign up and he had a weird thing about his grandmother and his bio. But aside from that, you know, we get very little noise. And I actually, I would actually opt to the other side of that where I've actually, and you know, I talked to the assembly guys and I where I've actually and you know I talk to the assembly
Starting point is 00:37:46 guys and I'm kind of friendly with them and I actually push them to allow more anonymity within the app you know for example the chat it would be great if anonymous people could join into the chat I think
Starting point is 00:38:02 and I realize that's asking for a whole world of hurt, but at the same time, I'm sure you've seen products or sites where they have an open Slack room that you can join if you have some sort of pre-install or pre-sales questions. And I actually like that. Hopefully there are tools for banning or whatever, spam types of things.
Starting point is 00:38:25 But in general, even like, you know, on GitHub, I like getting issues from random people. And that's another thing I've discussed and we're sort of, I'm sort of in the process of discussing with assembly is we're sort of debating whether or not to allow GitHub issues. Because, you know, it's it clearly creates a little bit of confusion over, okay, where do I put this bug? Is it a bounty or is it a GitHub issue? I kind of want them to open it up because my thought is not everybody who uses buckets
Starting point is 00:39:02 is going to come from assembly. And GitHub is clearly in the developer community a pretty well-known, prominent tool. Everybody has an account. Everybody has used the issues before. But I see both sides of the coin there. But yeah, in general, I love the idea of as open as possible. Let's pause the show for a minute and give a shout out to our sponsor, TopTow.
Starting point is 00:39:25 If you've listened to the show over the last year, you've definitely heard us talk about TopTow. We've seen firsthand the fruits and benefits of having TopTow in the community, helping marry really great opportunities for developers with really great developers. As TopTow says, elite engineers. I wanted to mention,
Starting point is 00:39:44 because this is a Node.js-focused show, you can actually hire top Node.js developers right now on TopTile. And if you are a top Node.js developer and you are not working with TopTile and you'd like to check out freelancing or go into some of that kind of stuff, you can go to TopTile.com slash Node.js. You'll find really awesome Node.js developers in their community already. And at the very top of the screen you can see apply as a developer click that button right there they'll take you through the process of actually becoming an elite engineer with top toe go to top.com slash node.js and now back to the show we've talked a while i guess we try to
Starting point is 00:40:21 establish what what size of the team you do have or don't have. So it seems like you're the core team right now. Who else is on the team with you? I would say nobody. I keep myself as the core team for now. I would absolutely adore to promote somebody else to the core team. But I think as a core team you get I forget, I think it's like 3-5% of all bounties
Starting point is 00:40:49 is just sort of reserved for you. And that 5%, I think, is split among the core team. And not like I'm trying to sound greedy, but if I start splitting that and we get 2.5% each, I just want to make sure it's somebody that's committed into it. So if somebody was just sort of knocking out bounties for like two months straight, I wouldn't hesitate. But anyway, for now, I'm the core team.
Starting point is 00:41:20 I think if you were to look at our GitHub, I think we've had about 15 or so contributors. Some of them smaller than others, but I would say 10 to 15 people in general have really jumped up on the code side. So maybe 20 to 25 people total in terms of also design things, et cetera, on assembly. Shout out to Charles Pletcher.
Starting point is 00:41:44 He's got, let's see how many commits he's got, 69 commits. So he actually, he's part of assembly. Okay. Oh, there you go. He jumped on early on. He did. He did some awesome, fantastic stuff for the templates and everything. I've been sitting over here thinking, it just sounds like what you're missing is a partner
Starting point is 00:42:04 in crime. Like a second person, somebody more on the system, back-end, ops side, that really would just complement your talents. It seems like you're pretty well-rounded, but to help make those big decisions. I was thinking a lot about last year as I was trying to do this on my own, was I just thought, oh if I just had that that technical co-founder you know that like dream thing everybody around here wants but but at the same time I don't you know I've I've done businesses and and sort of apps and things uh with partners that I've met and just sort of reached out to and all kinds of things and I just sort of thought this, for me personally,
Starting point is 00:42:46 much more of a long-tail thing. And if there was that person, I would want a lot of trust in that person. I just wouldn't want it to be something I post an ad on weekendhacker.com and somebody says, yeah, that's a great idea. It's great for getting off the ground, because it's just great for getting off the ground, but it's that
Starting point is 00:43:07 two years in and you guys have different ideas of how it becomes a business. I just didn't want to deal with any of that, which is a little not narcissistic, but you know, it's a little limiting in that I'm like putting a lot on myself for now. But like
Starting point is 00:43:23 I said, I'm open to it. Seems like assembly is a decent vetting solution for that where they can come in, put their time in, get some, I guess, equity over time, build up trust, show that they've got the skills
Starting point is 00:43:38 and then eventually could become that person. I actually did offer it to Charles, to Charles Pletcher a few months ago. I said, you should become part of the core team because he clearly knew what was going on in the architecture and I think he had a good idea of where I was going.
Starting point is 00:43:56 But he was like, eventually I'm going to have to spend some time on other assembly projects and actually put in time for assembly itself. So he declined, but hopefully one day. So if you're out there and you're a backend hacker, as Jared just described, and you like David, and you think that Buckets has a good direction and you could just hop in, work hardcore for two months and he'll promote you to core.
Starting point is 00:44:26 Totally. If I were to describe my dream situation, I've completely loved working on the Node side and I love working with Node. But like you said, it's sort of more in that sysops realm that it's not as fun for me. If I got to spend twice as much time just kicking out the user interface
Starting point is 00:44:50 and doing more custom fields, we need relationships types of fields. We need repeater types of fields. We've talked a ton about the product itself, but obviously this is the change. We like to get a little technical on this show. So you mentioned Node, obviously, MongoDB. I saw earlier in your history, too, you moved from Rethink to Mongo.
Starting point is 00:45:15 I think that was for Windows. What were some of the reasons why you chose Node and chose Mongo, and why Node? So Node was the easy choice because I just knew I wanted to do it in Node. The reasons for that are partly convenience because I'm a front-end guy and so JavaScript feels natural to me. It was partly an experiment because I just wanted to try something new. I think, you know, and again, I'm more of a front-end guy, so I don't want to say the wrong thing,
Starting point is 00:45:56 but looking at sort of the spectrum of all the different server-side tools and things you have now, you know, personally I'll just never build a Java app. Ruby is, to me, just Ruby seems like the, I'm going to get in trouble here, but sort of a childish equivalent of Node. Yikes. Yikes. Not quite as, no, no, I think, yeah. How so?
Starting point is 00:46:24 How so? It's just not quite as impressive in terms of its scalability, right? And the sort of asynchronous, evented nature of Node actually allows for certain things. I think on the surface surface they seem quite similar. But at the end of the day, in a lot of situations, Node is much, much faster. And for me, easier to develop in because it is JavaScript. The evented model provides for that, right? Yeah.
Starting point is 00:47:08 Which you can do in Ruby, but the typical web frameworks are not using Event Machine, so they don't have that built right in, whereas Node does. Yeah. What about the backend? I think a document-based database makes a lot of sense because your CMSs are basically just storing a bunch of documents. Is that kind of where you started? Yeah, and that again was partly an experimentation
Starting point is 00:47:31 and I still have people once a week warn me that MongoDB is going to start vomiting in my face at some point. But so far it's been great. It was something that, again, while I was at Sentia, I basically only worked on client-side projects for three years or so. And I saw sort of these NoSQL or document-based databases were becoming really popular around then. I mean, that's a bit of a miss.
Starting point is 00:48:04 Obviously, I was probably late to the bandwagon, but I saw a lot of that while I was there without actually using one. And I just, you know, after you, when you spend so much time with JavaScript and working with objects, the idea of using objects to query your database or to be able to inject objects
Starting point is 00:48:22 into places within your database is just sort of extremely appealing. And that was sort of the initial impetus. And I started with Rethink just because I had heard sort of various war stories of Mongo, and Rethink seems to be sort of one of the cooler new kids on the block. But a big reason I went with Mongo was just because of Mongoose in the Node ecosystem.
Starting point is 00:48:50 It's just, to me at least, far sort of further ahead than any other sort of ORM, ODB type thing. That's interesting. So the Mongoose library itself was kind of the deciding factor there for you. Yeah, definitely one of the bigger decision makers. Just the built-in validation, the relationship management,
Starting point is 00:49:16 it was all just super, super straightforward. I guess there's some symmetry there with your desire for clean user interfaces and thinking about that user experience. If you find an API that you really love and makes sense, it's a huge factor. And that's another thing which I put a lot of focus on within Buckets. I do say it's my project and so I do stuff in it that not everybody's going to like. It's how I like to program certain things. But in reality, again, this is highly contentious,
Starting point is 00:49:53 buckets is like 90%. If you look at the stats on GitHub, it's like 90% CoffeeScript. Pretty much the entirety of buckets, whether it's the front-end user interface or it's the server-side models and database connections, is all written in CoffeeScript. Well, you're not going to have any arguments from me on that one,
Starting point is 00:50:15 but I think most people would. It's one of those contentious things, but I just thought in the beginning, especially in the beginning, this is not something that people are just going to jump in and I'm going to start getting 20 pull requests a week no matter what I write it in. So I might as well write it in the thing
Starting point is 00:50:35 that keeps me motivated and makes it the lowest cognitive overhead for me to jump in and fix a bug. Interesting. Do you think that that has paid off as an early decision? I don't know. It's hard to say. There's always that sort of worry in the back of my mind that I'd have 10x the contributors if it was in raw JavaScript. But again, it's that
Starting point is 00:51:02 I like how the app looks, you know, like in terms of the source code and the dependency management and the modules. You know, it's somewhat artificial, which I think is the problem. But I think people are getting more and more comfortable with that. You know, with Grunt and Gulp and Browserify and all these things, people are starting to see how JavaScript can be crafted in a less gross, loosey-goosey way. I'm going to bring it old school now, but JavaScript, for me at least, especially with ActionScript,
Starting point is 00:51:42 is starting to look like ActionScript 3 of eight years ago or so, where you're importing classes or you're requiring classes, you're extending things. It's a whole different space. Sure is. I think one thing we're going to link out to
Starting point is 00:52:03 that may not quite fit into this call, but you've sort of talked in and around it, but is your vision document, which I think is pretty neat to have on your repo. It's just talking about the general philosophies and where you're heading for the future. So I think is some of that replicated back in assembly to sort of – because it's back in that space where do you send people to GitHub, to the repo, to a readme or a markdown file or do you send them to assembly? Where do they go to get interested? Yeah, and so far assembly has a main descriptor for the project and then it's just replaced that
Starting point is 00:52:42 on the main page with a timeline for the project. But in general, they've always been sort of, assembly has always been sort of more geared around the flow of things and the bounties and things like that. It's not like Basecamp where you have those, I forget what they called them, but they were write board like 10 years ago. You know, these like permanent, like we're going to edit copy together kind of mini application.
Starting point is 00:53:11 And so I just wanted a permanent place to store copy and just decided to throw it in there with GitHub. I do wish I was better about keeping these things in sync. It's like keeping your avatars in sync across different profiles. I'm just always tweaking copy for buckets, whether it's the Twitter bio or it's the GitHub homepage readme
Starting point is 00:53:37 or it's the assembly front page. I don't have one central thing and then a press app or something. That leads into probably the first of our closing questions, which is sort of a call to arms. You sort of talked about your own keeping things in sync issues, but if someone's listening to this, they love Node, they love JavaScript, or they're getting into Node or just in JavaScript in general, and they're a front-end designer hacker
Starting point is 00:54:07 and they want to sort of jump in, or that back-end person that's listening to the show, where do they go? In what ways can the community step in and start helping you make this real if they want to? I think the clearest path is definitely Assembly. I think that's what it's there for. If you go to assembly.com slash buckets, you get a lot of great basic info. Just sign up, it takes like a minute.
Starting point is 00:54:35 And then you can just browse the bounties. And like I said, there's like a hundred of them. If literally none of them look interesting to you, just tell me what you are interested in doing and I'll see if there's something there. I tell a lot of people, it's not just about, it's not GitHub, it's not just about development and it's also not just about design.
Starting point is 00:54:58 I would love to eventually, maybe it's a little soon for this, but eventually just have an advisory panel of people who make websites for other people and just what do they want out of their systems? What do Drupal users really wish was part of it? Or what is somebody's pain points with Expression Engine? Those types of things, however minor,
Starting point is 00:55:22 even just recommendations or just feature requests are totally appreciated. And our famous question, Jared, which is, who is your programming hero? Some people come on the show, they mention a few, some mention one, it's open-ended. Who's your hero? So I've been trying to think about this for the past hour.
Starting point is 00:55:47 I'm going to go with 37signals is generally a huge source of inspiration. A lot of their inspiration is what goes into buckets. It's the idea that we could do something small, profitable, that's not VC backed, that is, you know, profitable enough to sustain the people that work on it and not necessarily start bringing in 50 million a year. But, you know, that sort of mentality and the mentality that it can be a small team, it can be, you know, 10 people that make this thing that hundreds of thousands of people use is definitely a big inspiration. Wow. Well, Dave, I know that we've had you on the show, like I said, once before back at
Starting point is 00:56:36 episode 30. That's on the site. Y'all can go back and listen to him talk about Central with Wynn back in the day. But we're a fan of what you're doing, however we can support you. We obviously want to support you in that endeavor. And anybody who's listening to this show, follow Dave and figure out what he's doing with Buckets and see how you can plug in. We got a couple of sponsors we want to give some thanks to for the show because that's how we make this show possible, along with our awesome members who make it possible as well. CodeShip, DigitalOcean, and TopTile, super awesome partners.
Starting point is 00:57:07 Those guys, all three of those sponsors pretty much help keep the change log alive. So if you don't use CodeShip, you're not hosted on DigitalOcean, and you don't hire developers or you're not an elite engineer through TopTile, we're just showing big old emoji sad faces around here. Next week we do have All Things Pearl with Curtis Poe. Curtis. Curtis, right? That's what I said.
Starting point is 00:57:31 Curtis. Yep, that's right. Yeah, Curtis. We're excited about that because I think this might be our first, Jared, of having Pearl on the show. We've probably mentioned it, but never a project or someone that can come and speak to Pearl the language. I'm going to get caught up. Yeah. We're excited.
Starting point is 00:57:47 So that's next Friday. We'll record, but that's what's coming up next. So that has been it for this show. Everybody on here, let's say goodbye. Goodbye. All right. Thank you guys so much. Bye.
Starting point is 00:57:59 Bye. Bye. Bye. A little bit of an unusual ending there on my side. Sorry about that. Kodis. You said Kodis. I literally couldn't name a designer. I was going to tell you to just name a couple.
Starting point is 00:58:26 I could swear I said Curtis, not CODIS. Well, you know, the audio won't lie. Aaron will tell you. I could have heard it wrong, but I thought you said CODIS PO. No, maybe I did. I don't know. Listen to it back. Next week, we do have All Things pearl with codis poe curtis uh curtis right that's what i said curtis yep that's right

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