The Changelog: Software Development, Open Source - Buckets CMS on Node.js (Interview)
Episode Date: November 28, 2014Adam 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)
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.
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
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.
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.
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
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,
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,
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.
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,
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.
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
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.
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.
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.
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
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
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?
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.
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,
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
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.
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.
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,
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
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.
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,
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.
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.
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.
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.
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.
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,
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.
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,
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.
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.
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
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
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.
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
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,
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,
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
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
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.
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
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.
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
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
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.
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
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.
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
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
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.
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.
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.
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
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
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
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
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?
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.
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.
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,
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.
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.
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
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
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.
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
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
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.
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.
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
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,
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.
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
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
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.
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
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.
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,
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
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
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.
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.
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
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,
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
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
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
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.
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.
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
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.
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,
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?
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.
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
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.
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
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.
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,
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,
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,
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
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
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,
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
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
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.
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
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
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.
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.
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,
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.
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
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.
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.
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.
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.
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.
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