Episode 339

JSJ 335: “CanJS 4.0” with Justin Meyer


October 16th, 2018

54 mins 4 secs

Your Hosts

About this Episode


Special Guests: Justin Meyer

In this episode, the panel talks with Justin Meyer who is a co-author of DoneJS, CanJS, jQueryPP, StealJS, and DocumentJS. Justin currently works for Bitovi and is their Director of R&D. He is also a fan of basketball and Michael Jackson. The panel and Justin talk about CanJS in-detail – check it out!

Show Topics:

0:58 – We had you on Episode 202.

1:14 – Chuck: Can you tell everyone who you are?

1:20 – Justin tells us his background.

1:50 – Chuck.

1:58 – Justin.

2:06 – Chuck: Can you give us an introduction to what CanJS 4.0?

2:11 – Justin: It is a JavaScript framework and is similar to Vue. It adds a very model layer, and uses Real Time very well.

2:44 – Panelist.

2:49 – Justin.

2:55 – Panelist: What is the current...

3:09 – Justin: Compatibility is very important to us. A lot of the same tools are still available. It has over 80 different repositories.

Justin continues to talk about the differences/similarities between the different versions.

4:55 – Panelist: Angular, React, and Vue are dominating, so I have 2 questions.

1.) Where is the core strength of JS and its user base?

2.) What is like to be the CanJS when everyone is talking about the other programs?

5:31 – Justin: We have dealt with this for the past 10 years. Emotionally it’s not great, I wished it was more popular, but our priority is keeping our user-based happy. We’ve had big companies use it.

Justin answers the second question.

8:44 – Panelist: You mentioned two things.

9:22 – Aimee: I think everything has trade-offs. I would use something because it was the right tool for the job. I wouldn’t want to make something that was “cool.” I would want to make it super accessible in a network.

10:10 – Justin: That is a great marketing angle. We are trying to remove the worst parts of the program.

10:26 – Now I am intrigued.

10:32 – Justin: You have this mutable state and you aren’t sure. At least for CanJS I don’t see that occurring too often.

10:54 – Aimee.

10:58 – Justin: Deep inheritance is definitely a problem and it can create...

11:13 – Aimee.

11:19 – Justin: We have changed strategies a lot, and I think it’s helped CanJS grow; like 60% since January. We are doing a lot of user studies now. I run Meetups, etc. That being said inheritance schemes aren’t something that people will encounter. This is something that they won’t encounter months down the road.

13:00 – Aimee.

13:05 – Panelist: I would like to dig deeper into state-management. Everyone is doing Flux, talk about that with CanJS.

13:20 – Justin: Yeah. It depends on what kind of user you are talking to. When I talk to new users off the street (people who just graduated, etc.)...

If you look at React’s statistics – more than 50% doesn’t use any state management.

16:15 – Panelist: I think it’s interesting that there are people that aren’t “oh my gosh...”

16:43 – Justin: The last coolest thing I’ve done is...

18:02 – Justin continues.

18:16 – Panelist: I kind of have this belief that we as a community turn to frameworks and tools too much. From your perspective when does it make sense to turn to a tool like this or better off working with native...

18:56 – It depends on how complex your app is and our ability to work through those problems. I think that’s a generic answer, but hopefully that helps. I don’t think you really can’t live without.

19:49 – Panelist: I think that’s fair. One thing that I found is that there are many things layered into state-management. Because you mentioned performance, which is something I care about, too. At what point does the extra tooling become too heavy for the user’s experience? Where do you draw the line?

21:11 – Justin: It depends. I don’t know what the parallel is – it’s like a richer developer problem. You have too many users where you can make those fine tuned adjustments. Do whatever is going to deliver the product first and then worry about performance later? I think our things are geared towards performance by default.

22:41 – Panelist: Playing devil’s advocate, though. But isn’t there some danger in kind of suggesting that you focus on performance WHEN it’s a business issue? Maybe there is there a lack of empathy among developers. I worry that advice is hurting us.

23:53 – Justin: No matter what you can build your homepage with Angular weird monstrosity, but then when you get to the point when people are using your product – you can just use native HTML, and native methods and build that one widget and as easy and fast as possible.

24:50 – Panelist: Dealing with complexity. Now we need to do things like bundlers, and such to deal with this issue. I feel like a crotchety old man yelling because it takes forever.

25:38 – Justin: I think it depends on where you are sitting. I think that comes down to the design. If your design has a lot of complex states, then...

26:37 – Panelist: Because you care about performance...

26:54 – Advertisement

27:53 – Justin: I don’t think that the run time of CanJS is going to be a critical performance path for anybody. Is there a responsibility? This is the oldest question. It’s like saying: where do you draw the line that you need to choose success/be elected to fight the battles if you really want to win.

You need someone using your product or it doesn’t really matter. Start-ups use our product because they need to get something up and in. I am going to flip this back onto you guys.

30:48 – Panelist: I think that’s fair.

31:00 – Aimee: I have a question. You got into consultancy when do you recommend using CanJS or something else?

31:15 – Justin: I always suggest people using CanJS.

31:53 – Aimee: What do these people do when their contract is over? I have used an older version of Can, and...

32:20 – Justin: Are you on Gitter?

Aimee: No, I am not.

32:25 – Justin: We do offer promote job posting to help them find somebody. We try our best to help people in any way we can.

33:05 – Aimee: That’s helpful. Another question.

33:28 – Justin: DoneJS is that. It uses the full kitchen sink. That’s what DoneJS is.

33:50 – Panelist: Let’s talk about CanJS in the mark-up. Do you think it’s better now or worse than 2012? Less space or more space?

34:13 – Justin: It’s probably worse. I think the methodology that we are using: focusing on our users. We get their feedback frequently. We are listening to our users, and I think we are being smarter.

35:16 – Panelist: Is the space getting more welcoming or less?

35:31 – It depends on what framework you are. It’s very hard to compete if you are the exact same thing as...

The market is so dense and there are so many ideas, so it’s getting harder and harder. What helps people break-through? Is it the technology or the framework?

36:36 – Panelist: I appreciate the richness of the field, as it exists right now. There aren’t a few things SMELT and ELM

37:10 – Justin: Elm for sure. I don’t have a lot of experience with SMELT.

37:23 – Panelist continues the talk.

37:54 – Chuck.

38:00 – Justin: I think it spreads by word-of-mouth. I used to think it was “technology” or... all that really matters is “can you deliver” and the person have a good experience.

Usability is the most important to me. We will see how this turns out. I will be either right or wrong.

39:18 – Panelist: Can we talk about the long-term future of Can JS?

39:28 – Justin: We are connecting to our user-base and making them happy. If I had it my way (which I don’t anymore) I think JSX is the best template language. We have been building integrations between JSX and...

I am putting out proposals where most people don’t like them.

Justin continues this conversation.

44:24 – Picks!

44:28 - Advertisement