in

JSJ 336: “The Origin of ESLint” with Nicholas Zakas

Panel:

Special Guests: Nicholas Zakas

In this episode, the panel talks with Nicholas Zakas who writes on his site, Human Who Codes. He is the creator of ESLint, also the author of several books, and he blogs, too. He was employed through Box and today he talks about ESLint in full detail! Check it out! 

Show Topics:

0:05 – Advertisement: KENDO UI

0:37 – Hello! The panel is...(Chuck introduces everyone).

1:04 – Nicholas who are you?

1:17 – Nicholas: Yeah it’s been about 5 years and then you invited me again, but I couldn’t come on to talk about ESLint back then. That’s probably what people know me most for at this point. I created ESLint and I kicked that off and now a great team of people is maintaining it.

1:58 – Chuck: What is it?

2:04 – It’s a Linter for JavaScript. It falls into the same category as JSLint. The purpose of ESLint is to help you find problems with your code. It has grown quite a bit since I’ve created it. It can help with bugs and enforcing style guides and other things.

2:53 – Where did it come from?

2:57 – Guest: The idea popped into my head when I worked at Pop. One of my teammates was working on a bug and at that time we were using...

Nothing was working and after investigating someone had written a JavaScript code that was using a native code to make an Ajax request. It wasn’t the best practice for the company at the time. For whatever reason the person was unaware of that. When using that native XML...there was a little bit of trickiness to it because it was a wrapper around the...

We used a library to work around those situations and add a line (a Linter) for all JavaScript files. It was a text file and when you tried to render code through the process it would run and run the normal expression and it would fail if any of the...matched.

I am not comfortable using normal expressions to write code for this. You could be matching in side of a string and it’s not a good way to be checking code for problems. I wanted to find a better way.

6:04 – Why did you choose to create a product vs. using other options out there?

6:15 – Guest: Both of those weren’t around. JSHint was pretty much the defector tool that everyone was using. My first thought was if JSHint could help with this problem?

I went back to look at JSHint and I saw that on their roadmap you could create your own rules, and I thought that’s what we need. Why would I build something new? I didn’t see anything on GitHub and didn’t see the status of that. I wanted to see what the plan was, and they weren’t going to get to it. I said that I really needed this tool and I thought it would be helpful to others, too.

8:04 – My history was only back when it was customizable.

8:13 – Aimee: It’s interesting to see that they are basing it on regular expressions.

8:32 – Guest: Interesting thing at Box was that there was...I am not sure but one of the engineers at Box wrote...

9:03 – Aimee: I was going to ask in your opinion what do you think ES Lint is the standard now?

9:16 – Guest: How easy it is to plug things in. That was always my goal because I wanted the tool not to be boxed in – in anyway.

The guest continues to talk about how pluggable ESLint is and the other features of this tool.

13:41 – One thing I like about ESLint is that it can be an educational tool for a team. Did you see that being an educational tool?

14:24 – Guest: How do you start introducing new things to a team that is running at full capacity? That is something that I’ve wondered throughout my career. As a result of that, I found that a new team there were some problems I the code base that were really hard to get resolved, because when one person recognizes it there isn’t a god way to share that information within a team in a non-confrontational way. It’s better to get angry at a tool rather than a person.

Guest goes into what this can teach people.

18:07 – Panelist: I am not surprised. Is there a best practice to get a team to start with ESLint?

Do you get the whole team in a room and show them the options or take the best guess and turn it on?

18:34 – Guest: The thing I recommend is that first and foremost get ESLint in your system with zero rules on. It starts that mindset into your development process. We can do something to automatically check...

Get Syntax checking and you will se improvements on the number of bugs that are getting out of production. I recommend using the default the ESLint configuration. This has all of the things that we have found that are most likely errors and runtime errors vs. syntax errors. You can go through with those and sometimes it is easier to run that check with...

Using those ESLint rules will clean up a lot of problems that you didn’t know you had with your code. There are too many problems with those rules. I recommend instead of turning them off then put the severity to warning and not error. That is something we started with in the beginning. We turned on as many rules as we could and it drove people crazy. They didn’t feel like when they were committing to a file why should I be...

The idea with the different scenario levels you don’t’ want to turn off rules so people don’t know there is a problem. There can be a rule on so people will know that there is a problem, but...

Doing that alone will give you a lot of benefit in using ESLint. How do you decide as a team on the rules that are maybe not for finding errors but for stylistic in error? Do we use four spaces, semi-colons, etc. To figure that out I am a big component on finding a pre-existing style guide and adapting it. Get everyone to agree.

There is no right or wrong when it comes to stylistic preferences. It really is just getting everyone to do the same thing. I think it was Crawford that said: Whether you drive on the right side of the left side of the road – it doesn’t matter as long as everyone is dong the same thing. I agree with that and it applies to style guides. It can get heated but for the best thing for the team is stick with a guide and work together.

24:36 – Aimee: I can go through the options to pick one of the style guides out there and then it will automatically create my configuration for me is helpful. Question: If you had to pick 2 or 3 rules that you are super helpful what would they be?

25:30 – Guest: To touch briefly on indentation. Whether you like four spaces or whether you are wild and like tabs, I think the indent rule is very helpful. Just for wiping out and eliminating that discussion through your team. Have your editor setup however they want but on the pre-hook...

But my favorite rules I tend to lean towards the ones that saved me.

The Guest goes through his favorite rules with ESLint. Check it out!

26:51 – Guest mentions his second favorite rule, here!

28:24 – Guest mentions his third favorite rule, here!

29:03 – Guest mentions the rule that makes him giggle a lot, here!

30:07 – Advertisement – Sentry!

31:22 – What is your take on running Fix? Does it make sense to run Fix?

32:00 – Guest: It depends and the idea behind Fix is the idea of doing a one time (at the start) fix everything that it can find wrong b/c I don’t want to do it by hand. It morphed into a more of a tool that people are using all the time. I too have mixed feelings about it. I think the greatest value you get out of Fix is that when you first install it or when you enable a new rule. I think in those situations you get a lot of value out of Fix. I think that when people were getting aggressive with their code styles it took us down a path where we...

As a pre-commit hook it could be to fix things and part of the built system you wouldn’t want...

People are probably wondering: Why doesn’t ESLint doesn’t fix all the time?

It can be a team decision: do you want to run Fix at the point that the developer is writing the code, do you want to use Fix as running it as a build when you are bundling? It really seems more of a personal preference. I am on the fence about it. Even though I am leaning more towards...

35:16 – Do you run Premier?

35:20 – Guest: No I don’t. I don’t have anything against Premier but I think Prettier uses a very interesting space.

37:50 – Chuck: What is next for ESLint and what is next for you?

37:55 – Guest: Well, to be honest I am not sure what is next for ESLint. I haven’t been involved with keeping it maintained for the last few years. I do help out with feedback with decisions. But in general the ESLint the direction is that let’s add tings that help people avoid language hazards and make sure that ESLint is still pluggable. Lastly, that we will be there to help people and the community. There is this virtuosic cycle and tools like Babble and then tools like ESLint introducing rules adapting new rules and features better.

For myself, and the future, I haven’t been involved with ESLint because I am focusing on my health. I was diagnosed with Lyme Disease and it meant that I needed to focus on my health. That’s why, too, I wasn’t able to join a few years ago. I am doing better but I am a few years away for working fulltime and writing books and blogging, again. The trajectory is upward. I want to stress that you need to take care of yourself.

There is interesting stuff that we are doing and I love it, but make sure you take care of yourself! If you don’t have your health then nothing will really matter. I want to encourage you all to take care of yourselves better. This industry can take a toll on your body b/c it is high-stressed. If you are stressed your immune system will shut down. For a lot of us we are working too much and there isn’t an off-switch. I would like to encourage people to examine their life and their time.

When you take time to turn off your analytic brain, and work on your creative brain then the pathways will connect better.

Please save your money!

Lyme disease is spread through tick bites.

44:30 – Aimee: Thank you for sharing that!

44:38 – Chuck: It’s encouraging to me that you are still trying to come back even after this disease. I think we take things for granted sometimes. You can’t always count on things going the way you want it to go.

45:19 – Guest: What happened to me was I left work and one Friday afternoon I had a normal weekend. My health was on the decline, and I rested all weekend. And Monday I couldn’t get out of bed. That started this whole period where I stopped leaving the house completely. That’s how quickly things can change for you. I harp on people a lot to save their money. If I didn’t have savings there would be a very different end to my story. I want to encourage people to save.

46:33 – Chuck: I think on that note let’s go to picks. Where can people find you?

46:45 – Guest: My blog is Human Who Codes.

47:10 – Chuck: Anything people can do to help you? Check out his books you won’t regret it!

47:33 – Guest: Buying books is always helpful. I would say that if you can spend some time contributing to ESLint that is always a great help. Anything you can do to help them will help me. I want to make sure that those folks are happy, healthy and productive. For me, personally, I love when people Tweet at me and say HI! I love hearing other people’s stories of how they have overcome past diseases or illnesses. If you want to send monetary gifts – donate to a wonderful organization that helps children with Lyme disease. I would encourage you to support if you feel inclined.

50:49 – Chuck: We appreciate it, and I appreciate you being so open about your personal story.

51:11 – Advertisement – eBook: Get a coder job!

Links:

Sponsors:

Picks:

Aimee

Chris

Cory

Charles

  • My JavaScript Story

Joe

Nicholas




in

MJS 082: Benjamin Hong

Panel: Charles Max Wood

Guest: Benjamin Hong

This week on My JavaScript Story, Charles speaks with Benjamin Hong who is a Senior UI Developer at Politico where he lives in the Washington, D.C. area. He has worked with other companies including Treehouse, Element 84, and Udacity. Charles and Benjamin talk about his past and current projects, and how it’s different working for the government vs. working for a business. Check it out!

In particular, we dive pretty deep on:

1:06 – Chuck: Tell us a brief introduction, please.

1:23 – Ben: I am a lead frontend developer at Politico.

1:43 – Chuck: It’s an area that can affect everyone. How did you get into developing?

1:52: Ben: I had everything you can think of to develop at first.

2:10 – Chuck: For me it was a TI90 calculator!

2:18 – Chuck: Was it somebody or something that pushed you towards this area?

2:32 – Ben: I wanted to change something with the theme, Googled it, and it went from there, and the Marquis Tag.

2:51 – Chuck: And the Blink Tag! The goodies. So you got the he HTML book – and what website did you build that was your first big project?

3:07 – Ben: It was fiddling around, but it was fortune cookie universe.

3:20 – Chuck: You will have to recreate it!

3:27 – Ben: I think this was 1993/1995 timeframe.

3:40 – Chuck: Yep, me too same time frame. If you had something move on your website it was so cool. You went to building...

4:02 – Ben: JavaScript was a roadblock for me. There was nobody to correct me. I had a JavaScript book and it was a massive failure.

4:33 – Chuck: You took a break and you came back?

4:40 – Ben: Oh – people will PAY you to do this?!

4:54 – Chuck: Did you go to college?

5:01 – Ben: Yes, I have a Master’s in a different field. I was always a tech junkie. I just wanted to put things together.

5:20 – Chuck: Take us through your journey through JS?

5:30 – Ben: I started off with the jQuery piece of it. I needed Java, and it took me awhile to wrap my head around it at first. Through the trial and process of trying to get into Angular and React, too.

6:19 – Chuck: Did you play with Backbone, Knockout, or Ember?

6:32 – Ben: I did do SOME Ember and some Knockout. Those were my first interactions.

6:49 – Chuck: What got you into the profession? How did you get from your Master’s to being a tech guy?

7:14 – Ben: From the Master’s field I learned a lot about human experience, and anted to breed the two together. Also, consulting and helping to build things, too.

7:44 – Charles: What was the career change like?

7:53 – Ben: I went to the federal government at first around the recession – it was good having a stable job. I was bored, though. While I was working for the government I was trying to get my foot in the door. From there I have been building my way up.

8:30 – Ben: I was working on Medicare.gov and then later...

8:46 – Charles: We won’t use the word “disaster”!

What is it like to work for the government?

9:20 – Ben: Yep. The federal government is a different area because they are stake holders. They were about WHO owned the content, and who do we have to talk to get something approved. It was not product oriented like a business. I made my transition to Politico, because I wanted to find solutions and diversify the problems I was having.

10:31 – Chuck: Have you been there from the beginning?

10:39 – Ben answers the question.

Ben: They were looking for frontend developers

10:54 – Chuck: You are the lead there now. What was that like with the transition?

11:08 – Ben talks about the beginnings stages of his time with Politico and the current situation. He talks about the different problems, challenges, and etc.

11:36 – Chuck: Do you consider yourself a news organization or?

11:47 – Ben: We have Politico Pro, too. I have been working with this site more so. There are updates about campaign and voting data. People will pay a fee.

12:25 – Chuck: Do they pain themselves as leaning one way or another or nonpartisan?

12:38 – Ben: We are objective and nonpartisan.

12:51 – Chuck: I know, I was hesitant to ask. What’s the mission of the company and into what you do?

13:09 – Ben: The projects get dumped to us and we are about solving the problems. What is the best route for solving it? I had to help pioneer the new framework into the tech staff is one of my roles.

13:48 – Chuck: What’s your tech stack?

13:55 – Ben: JavaScript and Vue.js. We are experimenting with other software, too.

14:16 – Chuck: We should get you talking about Vue on the other show!

Are you working at home?

14:32 – Ben answers the question.

Ben: One thing I am helping with Meetup. Community outreach is important and I’m apart of that.

15:09 – Chuck: Yep, it’s interesting to see various fields into the tech world. I am not one of those liberal arts majors, I do have a computer science degree. It’s interesting to see the different perspectives. How little it is for someone to be able to dive-in right away.

What are you working on?

16:09 – Ben: Meetup population and helping with the work at Politico.

16:27 – Chuck: Reusable components. Are those opensource or only internal?

16:41 – Ben: They are now opensource but we are seeing which portions can be opensource or not.

17:01 – Chuck: Different companies have come out and offered their opensource.

Where do they find you?

17:20 – BenCodeZen! They are more than welcome to message me.

17:36 – Chuck: Any advice on newbies to this field?

17:46 – Ben: Attending those meetings and making those connections.

18:18 – Chuck: I have been writing a book on HOW to get a job as a coder. That’s the same advice that I am giving, too.

18:46 – Chuck: Picks!

18:51 – Advertisement – Fresh Books! 30-Day Trial!

Links:

Sponsors:

Picks:

Charles

Ben




in

MJS 083: Christine Legge

Panel: Charles Max Wood

Guest: Christine Legge

This week on My JavaScript Story, Charles speaks with Christine Legge who is a computer software engineer who works for Google in New York. Previous employment includes Axiom Zen, and Vizzion, Inc. She and Chuck talk about her background, past and current projects, and her future goals.

In particular, we dive pretty deep on:

1:07 – Hello!

1:10 – Chuck: You were on Episode 328 in the past. Tell us about yourself!

1:24 – Christine: I started working with Google about 2 weeks ago. In the past I worked in Vancouver, Canada.

2:05 – Chuck: Let’s start with how you got into programming?

2:14 – Christine: When I was in HS I wasn’t interested at all into computers. I wanted to do applied math in Toronto Canada for college. For engineering you have to take an introduction to programming in the 1st year. I had a 4-hour computer science course in the morning and I dreaded it. I dropped out 3 months later b/c I didn’t like the program. Surprisingly, enough, I did like the computer science course. I went back to Vancouver and I said to my parents that I wanted an office job. I went to the YMCA center and wanted to be hired. The man there asked if I had any interest in data entering, and I started working for him. I worked 4 hours a week with him where he taught me C+. I decided to go back to school for it.

5:37 – Chuck: What did you like about it?

5:43 – Christine: I liked the problem solving part of it. I like how you can break things down. The technology doesn’t interest me that much, but I like the problem-solving aspect. The guy wasn’t that up-to-date with the newest technologies either.

6:53 – Chuck: You have a 4-year degree in computer science.

7:05 – Yes that and statistics, too.

7:13 – Chuck: I was going to say “nerd.”

How do you go from desktop applications to web apps?

7:25 – Christine: I worked with a company part-time and fulltime depending on the year/season.

I didn’t know what web development was but I thought that THAT was computer science. I thought that if I knew how to do web development then I was going to be good to go. This company asked: What do you want to do? And I answered that I wanted to do web development b/c I thought that’s what I was lacking. I basically got thrown into it. I didn’t understand anything at all. It took me to write one line of CSS and it took 4 hours.

10:35 – Why did JavaScript attract you more so than C# or other languages that you’ve used?

10:43 – It’s simpler and you don’t need a lot of setup; from top to bottom. I am working in typescript, I like it even more, but I like how Java is more free to do what you want. I like functional programming in JavaScript. I like the big community for Java, and there are tons of applications for it. I really like how flexible the language is. You can do functional and oriented or you can combine the two. You aren’t constrained.

12:00 – Chuck: You get in, you work through JavaScript, were you only doing backend?

12:14 – Christine: Yep, backend.

13:00 –Chuck: I know you talked at the conference, and what are you most proud of?

13:14 – Christine: To be honest, no. My mentor (Pablo) at the last company – he wrote a book about D3. He started learning and writing the book. To me that I had thought that all these people are experts from the get go. I realized that everyone has to start somewhere to eventually become an expert. I do want to make an impact even outside of my job. I don’t have anything new that I’ve been working on. It’s a goal for me within the next couple of months.

15:30 – Chuck: I understand that.

15:36 – Christine: I haven’t found that balance, yet. When I gave that talk during Developer Week I was moving and stressed out. “I am NEVER doing this again!” It was over and it was very rewarding. People gave good feedback, and I would like to do that again.

16:56 – Chuck: People have different experience with that kind of stuff. People are interested in different things. So you’ve been working on moving and all that stuff right? What would you like to dive back into?

17:32 – Christine: Yes we are using Angular 2 and typescript and a Reactive Library. Angular is interesting to me. I would like to dive into the dependency injection in Angular. I really like typescript.

19:24 – Chuck: Have you looked at resources?

19:39 – Christine: I read the documentation so far. Like for React I just read the documentation but I haven’t found a central source just, yet. Not a single source. The docs are okay to get started but I haven’t found that they were enough.

20:50 – Chuck: This is about your story. I worked through the Tour of Heroes, and that helped me with Angular. It’s in the Angular Documentation.

21:23 – Christine: When you are starting at a new job I want to make sure I’m settled-in. And now I want to start thinking at a high-level of how these things work. I think the cool thing working here is that you can talk to the people who are working on Angular and get some insight that way.

22:27 – Chuck: People are usually very approachable.

22:34 – Christine: Yes, I agree. To be apart of the communities people want you to use their stuff.

22:48 – Chuck: Do you have another talk in mind when you are ready to give your next talk?

22:59 – Christine: Not sure. I have one thing on my list right now and that’s it.

23:42 – Chuck: I haven’t looked at RJX documentation but I think it’s pretty easy to pick-up. Ben who is the main developer RJX joined the team last year.

24:04 – Christine: It’s a lot of promises. When I figure it out that’s how something would work if it were a promise then I can usually get there.

24:25 – Chuck: Yeah.

24:38 – Christine: I kind of want to make connections in the office rather than me trying to do myself. I don’t want to waste time. Working on those connections would be good.

25:20 – Chuck: Let’s do some picks!

25:30 – Advertisement – Fresh Books! 30-Day Trial!

Links:

Sponsors:

Picks:

Charles

Christine




in

JSJ 339: Node.js In Motion Live Video Course from Manning with PJ Evans

Panel:

  • Aimee Knight
  • AJ O’Neal
  • Charles Max Wood

Special Guest: PJ Evans

In this episode, the panel talks with PJ Evans who is a course developer and an instructor through Manning’s course titled, “Node.js in Motion.” This course is great to learn the fundamentals of Node, which you can check out here! The panel and PJ talk about this course, his background, and current projects that PJ is working on. Check out today’s episode to hear more!

Show Topics:

0:00 – Advertisement: KENDO UI

0:36 – Chuck: Welcome and our panel consists of Aimee, AJ, myself, and our special guest is PJ Evans. Tell us about yourself and your video course! NODE JS in Motion is the title of the course. Can you tell us more?

1:29 – PJ: It’s a fantastic course.

2:25 – Chuck: You built this course and there is a lot to talk about.

2:36 – Aimee: Let’s talk about Node and the current state. 

2:50 – Chuck: Here’s the latest features, but let’s talk about where do you start with this course? How do you get going with Node? What do people need to know with Node?

3:20 – Aimee.

3:24 – PJ talks about Node and his course!

4:02 – PJ: The biggest headache with Node is the...

4:13 – Chuck.

4:19 – PJ: I am sure a lot of the listeners are familiar with callback hell.

4:50 – Aimee: Let’s talk about the complexities of module support in Node!

5:10 – PJ: It’s a horrible mess.

5:17 – Aimee: Maybe not the tech details but let’s talk about WHAT the problem is?

5:31 – PJ: You are talking about Proper Native ES6 right?

They are arguing about how to implement it. 

6:11 – PJ: My advice is (if you are a professional) is to stick with the LT6 program. No matter how tensing those new features are!

6:46 – Aimee: It could be outdated but they had to come back and say that there were tons of complexities and we have to figure out how to get there.

7:06 – PJ: They haven’t found an elegant way to do it.

7:15 – Panel: If it’s a standard why talk about it?

Seriously – if this is a standard why not implement THE standard?

7:38 – PJ.

8:11 – Panel.

8:17 – Aimee: I would love to talk about this, though!

8:24 – Chuck: I want to talk about the course, please.

8:30 – PJ.

8:54 – Chuck: We will keep an eye on it.

9:05 – PJ.

9:16 – PJ: How is it on the browser-side?

9:33 – Aimee: I don’t want to misspeak.

9:41 – Chuck: I don’t know how complete the forms are.

9:49 – Aimee: I don’t want to misspeak.

9:56 – PJ: I just found the page that I wanted and they are calling it the .MJS or aka the Michael Jackson Script. You can do an import from...

Some people think it’s FINE and others think that it’s a TERRIBLE idea.

10:42 – Chuck: “It sounds like it’s a real THRILLER!”

10:52 – Panel.

11:25 – Panel: When you start calling things the Michael Jackson Solution you know things aren’t well.

11:44 – Aimee: Just to clarify for users...

11:57 – Chuck: I want to point us towards the course: NODE.JS.

Chuck asks two questions.

12:34 – PJ: The concepts aren’t changing, but the information is changing incredibly fast. The fundamentals are fairly settled.

13:22 – Chuck: What are those things?

13:28 – PJ talks about how he structured the course and he talks about the specifics.

15:33 – Chuck: Most of my backend stuff is done in Ruby. Aimee and AJ do more Java then I do.

15:55 – Panel: I think there is something to understanding how different Node is. I think that Node is a very fast moving train. Node has a safe place and that it’s good for people to know about this space.

16:34 – Aimee: Not everyone learns this way, but for me I like to understand WHY I would want to use Node and not another tool. For me, this talk in the show notes really helped me a lot. That’s the core and the nature of NODE.

17:21 – PJ: Yes, absolutely. Understanding the event loop and that’s aimed more towards people from other back ends. Right from the beginning we go over that detail: Here is how it works, we give them examples, and more.

18:08 – Aimee: You can do more than just create APIs.

Aimee mentions Vanilla Node.

18:50 – PJ: To get into frameworks we do a 3-line server. We cover express, and also Sequelize ORM.

19:45 – Advertisement – Sentry.io

20:43 – Chuck: I never used Pug.

20:45 – PJ: PUG used to be called JADE.

20:56 – Aimee.

21:14 – PJ: Express does that for you and I agree with you. I advocate a non-scripted approach, I like when frameworks have a light touch.

22:05 – Aimee: That’s what I liked about it. No offense, Chuck, but for me I didn’t like NOT knowing a lot of what was not happening under the hood. I didn’t want to reinvent the wheel, but I wanted to build at a lower level.

22:40 – PJ: I had the same experience. I wanted to figure out why something wasn’t working.

23:24 – Panel: I had a friend who used Rails...he was cautious to make a switch. This past year he was blown away with how much simpler it was and how fast things were.

24:05 – Aimee: I feel like if you want to learn JavaScript then Node might be easier on the frontend.

24:21 – Chuck: No pun intended.

No, but I agree. I like about Rails is that you had well-understood patterns. But the flipside is that you have abstractions...

To a certain degree: what did I do wrong? And you didn’t follow the pattern properly.

25:57 – Panel: With Node you get a little bit of both. To me it’s a more simple approach, but the downside is that you have 100’s of 1,000’s of modules that almost identical things. When you start reaching out to NPM that...

26:29 – PJ: Yes the module system of NPM is the best/worst thing about NODE. I don’t have an answer, honestly.

There is a great article written that made me turn white. Here is the article!

28:12 – Panel: The same thing happened with the ESLint. That was the very problem that he was describing in the article.

28:50 – PJ: Yep, I put that in the chat there – go ahead and read it! It’s not a problem that’s specific to Node, there are others. It’s the way we do things now.

29:23 – Chuck: We have the NODE Security project. A lot of stuff go into NPM everyday.

29:43 – PJ: We cover those things in the course.

29:53 – Chuck: It’s the reality. Is there a place that people get stuck?

30:00 – PJ answers the question.

30:23 – Aimee.

30:55 – PJ: I am coding very similar to my PHP days.

31:20 – Aimee.

32:02 – PJ: To finish off my point, I hope people don’t loose sight.

32:18 – Aimee.

32:20 – PJ: I am working on a project that has thousands of requests for...

32:53 – Chuck: Anything you WANTED to put into the course, but didn’t have time to?

33:05 – PJ: You can get pretty technical. It’s not an advanced course, and it won’t turn you into a rock star. This is all about confidence building. It’s to understand the fundamentals.

It’s a runtime of 6 hours and 40 minutes – you aren’t just watching a video. You have a transcript, too, running off on the side. You can sit there and type it out w/o leaving – so it’s a very interactive course.

34:26 – Chuck: You get people over the hump. What do you think people need to know to be successful with Node?

34:38 – PJ answers the question.

PJ: I think it’s a lot of practice and the student to go off and be curious on their own terms.

35:13 – Chuck: You talked about callbacks – I am thinking that one is there to manage the other?

35:31 – PJ answers the question.

PJ: You do what works for you – pick your style – do it as long as people can follow you. Take the analogy of building a bridge.

36:53 – Chuck: What are you working on now?

37:00 – PJ: Educational tool called SCHOOL PLANNER launched in Ireland, so teachers can do their lesson planning for the year and being built with Express.

Google Classroom and Google Calendar.

39:01 – PJ talks about Pi and 4wd. See links below.

40:09 – Node can be used all over the place!

40:16  - Chuck: Yes, the same can be said for other languages. Yes, Node is in the same space.

40:31 – PJ: Yep!

40:33 – Chuck: If people want to find you online where can they find you?

40:45 – PJ: Twitter! Blog!

41:04 – Picks!

41:05 – Advertisement – eBook: Get a coder job!

Links:

Sponsors:

Picks:

Aimee

AJ

Charles

PJ




in

JSJ 341: Testing in JavaScript with Gil Tayar

Panel:

  • Aimee Knight
  • AJ O’Neal
  • Charles Max Wood

Special Guest: Gil Tayar

In this episode, the panel talks with Gil Tayar who is currently residing in Tel Aviv and is a software engineer. He is currently the Senior Architect at Applitools in Israel. The panel and the guest talk about the different types of tests and when/how one is to use a certain test in a particular situation. They also mention Node, React, Selenium, Puppeteer, and much more!

Show Topics:

0:00 – Advertisement: KENDO UI

0:35 – Chuck: Our panel is AJ, Aimee, myself – and our special guest is Gil Tayar. Tell us why you are famous!

1:13 – Gil talks about where he resides and his background. 

2:27 – Chuck: What is the landscape like now with testing and testing tools now?

2:39 – Guest: There is a huge renaissance with the JavaScript community. Testing has moved forward in the frontend and backend. Today we have lots of testing tools.  We can do frontend testing that wasn’t possible 5 years ago. The major change was React.

The guest talks about Node, React, tools, and more!

4:17 – Aimee: I advocate for tests and testing. There is a grey area though...how do you treat that? If you have to get something into production, but it’s not THE thing to get into production, does that fall into product or...what?

5:02 – Guest: We decided to test everything in the beginning. We actually cam through and did that and since then I don’t think I can use the right code without testing. There are a lot of different situations, though, to consider.

The guest gives hypothetical situations that people could face.

6:27 – Aimee.

6:32 – Guest: The horror to changing code without tests, I don’t know, I haven’t done that for a while. You write with fear in your heart. Your design is driven by fear, and not what you think is right. In the beginning don’t write those tests, but...

7:22 – Aimee: I totally agree and I could go on and on and on.

7:42 – Panel: I want to do tests when I know they will create value. I don’t want to do it b/c it’s a mundane thing. Secondly, I find that some times I am in a situation where I cannot write the test b/c I would have to know the business logic is correct. I am in this discovery mode of what is the business logic? I am not just building your app.

I guess I just need advice in this area, I guess.

8:55 – Guest gives advice to panelist’s question. He mentions how there are two schools of thought.

10:20 – Guest: Don’t mock too much.

10:54 – Panel: Are unit tests the easiest? I just reach for unit testing b/c it helps me code faster. But 90% of my code is NOT that.

11:18 – Guest: Exactly! Most of our test is glue – gluing together a bunch of different stuff! Those are best tested as a medium-sized integration suite.

12:39 – Panel: That seems like a lot of work, though! I loathe the database stuff b/c they don’t map cleanly. I hate this database stuff.

13:06 – Guest: I agree, but don’t knock the database, but knock the level above the database.

13:49 – Guest: Yes, it takes time! Building the script and the testing tools, but when you have it then adding to it is zero time. Once you are in the air it’s smooth sailing.

14:17 – Panel: I guess I can see that. I like to do the dumb-way the first time. I am not clear on the transition.

14:47 – Guest: Write the code, and then write the tests.

The guest gives a hypothetical situation on how/when to test in a certain situation.

16:25 – Panel: Can you talk about that more, please?

16:50 – Guest: Don’t have the same unit – do browser and business logic stuff separated. The real business logic stuff needs to be above that level. First principle is separation of concerns.

18:04 – Panel talks about dependency interjection and asks a question.

18:27 – Guest: What I am talking about very, very light inter-dependency interjection.

19:19 – Panel: You have a main function and you are doing requires in the main function. You are passing the pieces of that into the components that need it.

19:44 – Guest: I only do it when it’s necessary; it’s not a religion for me. I do it only for those layers that I know will need to be mocked; like database layers, etc.

20:09 – Panel.

20:19 – Guest: It’s taken me 80 years to figure out, but I have made plenty of mistakes a long the way. A test should run for 2-5 minutes max for package.

20:53 – Panel: What if you have a really messy legacy system? How do you recommend going into that? Do you write tests for things that you think needs to get tested?

21:39 – Guest answers the question and mentions Selenium!

24:27 – Panel: I like that approach.

24:35 – Chuck: When you say integration test what do you mean?

24:44 – Guest: Integration tests aren’t usually talked about. For most people it’s tests that test the database level against the database. For me, the integration tests are taking a set of classes as they are in the application and testing them together w/o the...so they can run in millisecond time.

26:54 – Advertisement – Sentry.io

27:52 – Chuck: How much do the tools matter?

28:01 – Guest: The revolutions matter. Whether you use Jasmine or Mocha or whatever I don’t think it matters. The tests matter not the tools.

28:39 – Aimee: Yes and no. I think some tools are outdated.

28:50 – Guest: I got a lot of flack about my blog where I talk about Cypress versus Selenium. I will never use Jasmine. In the end it’s the

29:29 – Aimee: I am curious would you be willing to expand on what the Selenium folks were saying about Puppeteer and others may not provide?

29:54 – Guest: Cypress was built for frontend developers. They don’t care about cross browser, and they tested in Chrome. Most browsers are typically the same. Selenium was built with the QA mindset – end to end tests that we need to do cross browser.

The guest continues with this topic.

30:54 – Aimee mentions Cypress.

31:08 – Guest: My guessing is that their priority is not there. I kind of agree with them.

31:21 – Aimee: I think they are focusing on mobile more.

31:24 – Guest: I think cross browser testing is less of an issue now. There is one area that is important it’s the visual area! It’s important to test visually across these different browsers.

32:32 – Guest: Selenium is a Swiss knife – it can do everything.

33:32 – Chuck: I am thinking about different topics to talk about. I haven’t used Puppeteer. What’s that about?

33:49 – Guest: Puppeteer is much more like Selenium. The reason why it’s great is b/c Puppeteer will always be Google Chrome.

35:42 – Chuck: When should you be running your tests? I like to use some unit tests when I am doing my development but how do you break that down?

36:06 – Guest.

38:30 – Chuck: You run tests against production?

38:45 – Guest: Don’t run tests against production...let me clarify!

39:14 – Chuck.

39:21 – Guest: When I am talking about integration testing in the backend...

40:37 – Chuck asks a question.

40:47 – Guest: I am constantly running between frontend and backend.

I didn’t know how to run tests for frontend. I had to invent a new thing and I “invented” the package JS DONG. It’s an implementation of Dong in Node. I found out that I wasn’t the only one and that there were others out there, too.

43:14 – Chuck: Nice! You talked in the prep docs that you urged a new frontend developer to not run the app in the browser for 2 months?

43:25 – Guest: Yeah, I found out that she was running the application...she said she knew how to write tests. I wanted her to see it my way and it probably was a radical train-of-thought, and that was this...

44:40 – Guest: Frontend is so visual.

45:12 – Chuck: What are you working on now?

45:16 – Guest: I am working with Applitools and I was impressed with what they were doing.

The guest goes into further detail.

46:08 – Guest: Those screenshots are never the same.

48:36 – Panel: It’s...comparing the output to the static site to the...

48:50 – Guest: Yes, that static site – if you have 30 pages in your app – most of those are the same. We have this trick where we don’t upload it again and again. Uploading the whole static site is usually very quick. The second thing is we don’t wait for the results. We don’t wait for the whole rendering and we continue with the tests.

50:28 – Guest: I am working mostly (right now) in backend.

50:40 – Chuck: Anything else? Picks!

50:57 – Advertisement: Get A Coder Job!

END – Advertisement: CacheFly!

Links:

Sponsors:

Picks:

Aimee

AJ

Charles

Gil




in

JSJ 342: Aurelia in Action with Sean Hunter

Panel:

  • AJ O’Neal
  • Joe Eames
  • Jesse Sanders

Special Guest: Sean Hunter

In this episode, the panel talks with Sean Hunter who is a software developer, speaker, rock climber, and author of “Aurelia in Action” published by Manning Publications! Today, the panelists and Sean talk about Aurelia and other frameworks. Check it out!

Show Topics:

0:00 – Advertisement: KENDO UI

0:38 – Joe: Hello! Our panelists are AJ, Jesse, myself, and our special guest is Sean Hunter (from Australia)! What have you been doing with your life and what is your favorite movie?

1:45 – Guest talks about Vegemite!

2:20 – Guest: I was in the UK and started using Aurelia, which I will talk about today. I have done some talks throughout UK about Aurelia. Also, the past year moved back to Australia had a baby son and it’s been a busy year. Writing a book and being a new parent has been hard.

3:22 – Panel: Tell us the history of Aurelia, please?

3:31 – Panel: Is it like jQuery, React, Vue or what?

3:44 – Guest: Elevator pitch – Aurelia is a single-page app framework! It’s most similar to Vue out of those frameworks; also, similarities to Ember.js.

4:30 – Guest goes into detail about Aurelia.

6:15 – Panel: It sounds like convention over configuration.

6:42 – Guest: Yes that is correct.

7:21 – Panel: Sounds like there is a build-step to it.

7:39 – Guest: There is a build-step you are correct. You will use Webpack in the background.

9:57 – The guest talks about data binding among other things.

10:30 – Guest: You will have your app component and other levels, too.

10:37 – Panel: I am new to Aurelia and so I’m fresh to this. Why Aurelia over the other frameworks? Is there a CLI to help?

11:29 – Guest: Let me start with WHY Aurelia and not the other frameworks. The style that you are using when building the applications is important for your needs. In terms of bundling there is a CUI and that is a way that I prefer to start my projects. Do you want to use CSS or Webpack or...? It’s almost a wizard process! You guys have any questions about the CLI?

14:43 – Panel: Thanks! I was wondering what is actually occurring there?

15:25 – Guest: Good question. Basically it’s that Aurelia has some built-in conventions. Looking at the convention tells Aurelia to pick the Vue model by name. If I need to tell the framework more information then...

17:46 – Panel: I think that for people who are familiar with one or more framework then where on that spectrum would Aurelia fall?

18:20 – Guest: It’s not that opinionated as Ember.js.

19:09 – Panel: Talking about being opinionated – what are some good examples of the choices that you have and how that leads you down a certain path? Any more examples that you can give us? 

19:38 – Guest: The main conventions are what I’ve talked about already. I can’t think of more conventions off the top of my head. There are more examples in my book.

20:02 – Panel: Your book?

20:10 – Guest: Yep.

20:13 – Panel.

20:20 – Guest. 

21:58 – Panel: Why would I NOT pick Aurelia?

22:19 – Guest: If you are from a React world and you like having things contained in a single-file then Aurelia would fight you. If you want a big company backing then Aurelia isn’t for you.

The guest goes into more reasons why or why not one would or wouldn’t want to use Aurelia.

24:24 – Panel: I think the best sell point is the downplay!

24:34 – Guest: Good point. What does the roadmap look like for Aurelia’s team?

25:00 – Guest: Typically, what happens in the Aurelia framework is that data binding (or router) gets pushed by the core team. They are the ones that produce the roadmap and look forward to the framework. The core team is working on the NEXT version of the framework, which is lighter, easier to use, and additional features. It’s proposed to be out for release next year.

26:36 – Advertisement – Sentry.io

27:34 – Panel: I am going to take down the CLI down and see what it does. I am looking at it and seeing how to teach someone to use it. I am using AU, new command, and it says no Aurelia found. I am stuck.

28:06 – Guest: What you would do is specify the project name that you are trying to create and that should create it for you. 

28:40 – Panel.

28:45 – Panel.

28:50 – Panel: Stand up on your desk and say: does anyone know anything about computers?!

29:05 – Panelists go back-and-forth.

29:13 – Panel: What frameworks have you used in the past?

29:17 – Guest: I was using single-paged apps back in 2010.

31:10 – Panel: Tell us about the performance of Aurelia?

31:17 – Guest: I was looking at the benchmarks all the time. Last time I looked the performance was comparable. Performances can me measured in a number of different of ways.

The guest talks about a dashboard screen that 20 charts or something like that. He didn’t notice any delays getting to the client.

33:29 – Panel: I heard you say the word “observables.”

33:39 – Guest answers the question.

35:30 – Guest: I am not a Redux expert, so I really can’t say. It has similar actions like Redux but the differences I really can’t say.

36:11 – Panel: We really want experts in everything! (Laughs.)

36:25 – Panelist talks about a colleagues’ talk at a conference. He says that he things are doing too much with SPAs. They have their place but we are trying to bundle 8-9 different applications but instead look at them as...

What are your thoughts of having multiple SPAs?

37:17 – Guest.

39:08 – Guest: I wonder what your opinions are? What about the splitting approach?

39:22 – Panel: I haven’t looked at it, yet. I am curious, though. I have been developing in GO lately.

40:20 – Guest: I think people can go too far and making it too complex. You don’t want to make the code that complex.

40:45 – Panel: Yeah when the code is “clean” but difficult to discover that’s not good.

41:15 – Guest: I agree when you start repeating yourself then it makes it more difficult.

41:35 – Panel: Chris and I are anti-framework. We prefer to start from a fresh palette and see if a framework can fit into that fresh palette. When you start with a certain framework you are starting with certain configurations set-in-place. 

42:48 – Joe: I like my frameworks and I think you are crazy!

43:05 – Panel.

43:11 – Joe: I have a love affair with all frameworks.

43:19 – Panel: I think I am somewhere in the middle.

43:49 – Panel: I don’t think frameworks are all bad but I want to say that it’s smart to not make it too complex upfront. Learn and grow.

44:28 – Guest: I think a good example of that is jQuery, right?

45:10 – Panelist talks about C++, jQuery, among other things.

45:34 – Guest: Frameworks kind of push the limits.

46:08 – Panelist talks about JavaScript, frameworks, and others.

47:04 – Panel: It seems simple to setup routes – anything to help with the lazy way to setup?

47:35 – Guest answers question.

48:37 – Panel: How do we manage complexity and how does messaging work between components?

48:54 – Guest: The simple scenario is that you can follow a simple pattern, which is (came out of Ember community) and that is...Data Down & Actions Up!

50:45 – Guest mentions that Aurelia website!

51:00 – Panel: That sounds great! Sounds like the pattern can be plugged in easily into Aurelia.

51:17 – Picks!

51:20 – Advertisement: Get A Coder Job!

END – Advertisement: CacheFly!

Links:

Sponsors:

Picks:

Joe

AJ

Jesse Sanders

Sean




in

JSJ 344: Inclusive Components with Heydon Pickering

Panel:

  • Charles Max Wood
  • Aimee Knight
  • Chris Ferdinandi
  • Joe Eames

Special Guest: Heydon Pickering

In this episode, the panel talks with Heydon Pickering who is a designer and writer. The panel and the guest talk about his new book, which is centered on the topic of today’s show: inclusive components. Check out Heydon’s Twitter, Website, GitHub, and Mastodon social accounts to learn more about him. To purchase the book – go here!

Show Topics:

0:00 – Advertisement: KENDO UI

0:38 – Chuck: Aimee, Chris, Joe, and myself – we are today’s panel. My show the DevRev is available online to check it out.

1:30 – Guest: Plain ice cream would be frozen milk and that would be terrible. So I am lemon and candy JavaScript!

2:13 – Chuck: We are talking today about...?

2:22 – Chris: He’s talking about “inclusive components” today!

2:41 – Guest: Traveling is very stressful and I wanted something to do on the plane. I’ve done this book, “Inclusive Design Patterns.”

If you don’t want to buy the book you can go to the blog. I have been talking with Smashing Magazine.

5:40 – Panel.

5:47 – Guest: I approached Smashing Magazine initially. They didn’t think there was a market for this content at the time. They were very supportive but we will do it as an eBook so our costs our down. At the time, the editor came back and said that: “it was quite good!” We skimmed it but came back to it now and now the content was more relevant in their eyes. I didn’t want to do the same book but I wanted to do it around “patterns.” Rewriting components is what I do all the time. I use Vanilla JavaScript. Backbone.js is the trendy one.

9:52 – Panel: The hard book did it get published?

10:02 – Guest: We are in the works and it’s all in the final stages right now. It has to go through a different process for the print version.

11:54 – Panel.

11:58 – (Guest continues about the editorial process.)

12:09 – Panel: They probably switched to TFS – it’s Microsoft’s.

12:23 – Guest: There was this argument on Twitter about the different processors.

13:35 – Chris: What are the ways that people are breaking accessibility with their code through JavaScript? 

13:59 – Guest: The whole premise is that there aren’t a ton of different components that we use. Generally, speaking. Most things we do through JavaScript – it’s just different ways of doing this/that, and hiding things. I am discounting things with Node or other stuff. Most of what we are doing, with interactive design, is showing and hiding.

18:37 – Chris: I have some specialty friends where they tell me where I’ve screwed up my code. For example Eric Bailey and Scott O’Hara but, of course, in very kind ways. What are some things that I can make sure that my code is going to work for many different people.

19:18 – Guest: You have accessibility and inclusive design. People think of accessibility as a check-list and that’s okay but there could be problems with this.

26:00 – Panel: That’s a great guideline.

26:05 – Chris: You talked about ARIA roles and it can be confusing. One side is: I don’t know when to use these and the other side is: I don’t know when NOT to use these so I’m going to use them for EVERYTHING! I guess both can be detrimental. What’s your advice on this topic?

27:00 – Guest: Scott is great and I would trust him to the end of the Earth about what he says.

Guest mentions Léonie Watson and her talks about this topic.

29:26 – (Guest continues.)

29:36 – Advertisement – Sentry.io

30:31 – Chris.

30:40 – Guest: There is a lot of pressure, though, right? People wouldn’t blog about this if it wasn’t worthwhile. It doesn’t matter what the style is or what the syntax is.

The guest talks about not throwing ARIA onto everything.

36:34 – Aimee: Is this something that was mentioned in the book: people with disabilities and accessibility.

37:28 – Guest: Yes, of course. I think it’s important to make your interfaces flexible and robust to think and include people with disabilities.

39:00 – Guest mentions larger buttons.

40:52 – Panelists and Guest talk back-and-forth.

42:22 – Chris: It’s an accessibility and inclusivity element. I saw a dropdown menu and worked great on certain devices but not others. I could beat this horse all day long but the whole: what happens of the JavaScript file doesn’t load or just accordion options?

43:50 – Guest: It’s the progressive enhancement element.

44:05 – Guest: I think it’s worth noting. I think these things dovetail really nicely.

46:29 – Chris: Did you do a video interview, Aimee, talking about CSS? Is CSS better than JavaScript in some ways I don’t know if this is related or not?

47:03 – Aimee: When I talk about JavaScript vs. CSS...the browser optimizes those.

47:27 – Aimee: But as someone who loves JavaScript...and then some very talented people taught me that you have to find the right tool for the job.

47:29 – Guest: I am the other way around – interesting.

52:50 – Chuck: Picks!

52:55 – Advertisement – Get A Coder Job!

END – Advertisement: CacheFly!

Links:

Sponsors:

Picks:

Joe

Aimee

Chris

Charles

Heydon




in

JSJ 346: Azure Pipelines with Ed Thomson LIVE at Microsoft Ignite

Sponsors:

Panel:

Charles Max Wood

Special Guests: Ed Thomson

In this episode, the Charles speaks with Ed Thomson who is a Program Manager at Azure through Microsoft, Developer, and Open Source Maintainer. Ed and Chuck discuss in full detail about Azure DevOps! Check out today’s episode to hear its new features and other exciting news!

Show Topics:

0:59 – Live at Microsoft Ignite

1:03 – Ed: Hi! I am a Program Manager at Azure.

1:28 – Rewind 2 episodes to hear more about Azure DevOps!

1:51 – Ed: One of the moves from Pipelines to DevOps – they could still adopt Pipelines. Now that they are separate services – it’s great.

2:38 – Chuck talks about features he does and doesn’t use.

2:54 – Ed.

3:00 – Chuck: Repos and Pipelines. I am going to dive right in. Let’s talk about Repos. Microsoft just acquired GitHub.

3:18 – Ed: Technically we have not officially acquired GitHub.

3:34 – Chuck: It’s not done. It’s the end of September now.

3:55 – Ed: They will remain the same thing for a while. GitHub is the home for open source. Repos – we use it in Microsoft. Repositories are huge. There are 4,000 engineers working in these repositories. Everyone works in his or her own little area, and you have to work together. You have to do all this engineering to get there. We bit a tool and it basically if you run clone...

Ed continues to talk about this topic. He is talking about One Drive and these repositories.

6:28 – Ed: We aren’t going to be mixing and matching. I used to work through GitHub. It’s exciting to see those people work close to me.

6:54 – Chuck.

6:59 – Ed: It has come a long way.

7:07 – Chuck: Beyond the FSF are we talking about other features or?

7:21 – Ed: We have unique features. We have branch policies. You can require that people do pole request. You have to use pole request and your CI has to pass and things like that. I think there is a lot of richness in our auditing. We have enterprise focus. At its core it still is Git. We can all interoperate.

8:17 – Chuck.

8:37 – Ed: You just can’t set it up with Apache. You have to figure it out.

8:51 – Chuck: The method of pushing and pulling.

9:06 – Chuck: You can try DevOps for free up to 5 users and unlimited private repos. People are interested in this because GitHub makes you pay for that.

9:38 – Ed and Chuck continue to talk.

9:50 – Ed: Pipelines is the most interesting thing we are working on. We have revamped the entire experience. Build and release. It’s easy to get started. We have a visual designer. Super helpful – super straightforward. Releases once your code is built – get it out to production say for example Azure. It’s the important thing to get your code out there.

10:55 – Chuck: How can someone start with this?

11:00 – Ed: Depends on where your repository is. It will look at your code. “Oh, I know what that is, I know how to build that!” Maybe everyone isn’t doing everything with JavaScript. If you are using DotNet then it will know.

12:05 – Chuck: What if I am using both a backend and a frontend?

12:11 – Ed: One repository? That’s when you will have to do a little hand packing on the...

There are different opportunities there. If you have a bash script that does it for you. If not, then you can orchestrate it. Reduce the time it takes. If it’s an open source project; there’s 2 – what are you going to do with the other 8? You’d be surprised – people try to sneak that in there.

13:30 – Chuck: It seems like continuous integration isn’t a whole lot complicated.

13:39 – Ed: I am a simple guy that’s how I do it. You can do advanced stuff, though. The Cake Build system – they are doing some crazy things. We have got Windows, Lennox, and others. Are you building for Raspberries Pies, then okay, do this...

It’s not just running a script.

15:00 – Chuck: People do get pretty complicated if they want. It can get complicated. Who knows?

15:26 – Chuck:  How much work do you have to do to set-up a Pipeline like that?

15:37 – Ed answers the question in detail.

16:03 – Chuck asks a question.

16:12 – Ed: Now this is where it gets contentious. If one fails...

Our default task out of the box...

16:56 – Chuck: If you want 2 steps you can (like me who is crazy).

17:05 – Ed: Yes, I want to see if it failed.

17:17 – Chuck: Dude, writing code is hard. Once you have it built and tested – continuous deployment.

17:33 – Ed: It’s very easy. It’s super straightforward, it doesn’t have to be Azure (although I hope it is!).

Ed continues this conversation.

18:43 – Chuck: And it just pulls it?

18:49 – Ed: Don’t poke holes into your firewall. We do give you a lot of flexibility

19:04 – Chuck: VPN credentials?

19:10 – Ed: Just run the...

19:25 – Chuck comments.

19:36 – Ed: ...Take that Zip...

20:02 – Ed: Once the planets are finely aligned then...it will just pull from it.

20:25 – Chuck: I host my stuff on Digital Ocean.

20:46 – Ed: It’s been awhile since I played with...

20:55 – Chuck.

20:59 – Ed and Chuck go back and forth with different situations and hypothetical situations.

21:10 – Ed: What is Phoenix?

21:20 – Chuck explains it.

21:25 – Ed: Here is what we probably don’t have is a lot of ERLANG support.

22:41 – Advertisement.

23:31 – Chuck: Let’s just say it’s a possibility. We took the strip down node and...

23:49 – Ed: I think it’s going to happen.

23:55 – Ed: Exactly.

24:02 – Chuck: Testing against Azure services. So, it’s one thing to run on my machine but it’s another thing when other things connect nicely with an Azure set-up. Does it connect natively once it’s in the Azure cloud?

24:35 – Ed: It should, but there are so many services, so I don’t want to say that everything is identical. We will say yes with an asterisk.

25:07 – Chuck: With continuous deployment...

25:41 – Ed: As an example: I have a CD Pipeline for my website. Every time I merge into master...

Ed continues this hypothetical situation with full details. Check it out!

27:03 – Chuck: You probably can do just about anything – deploy by Tweet!

27:15 – Ed: You can stop the deployment if people on Twitter start complaining.

27:40 – Chuck: That is awesome! IF it is something you care about – and if it’s worth the time – then why not? If you don’t have to think about it then great. I have mentioned this before: Am I solving interesting problems? What projects do I want to work on? What kinds of contributions do I really want to contribute to open source?

That’s the thing – if you have all these tools that are set-up then your process, how do you work on what, and remove the pain points then you can just write code so people can use! That’s the power of this – because it catches the bug before I have to catch it – then that saves me time.

30:08 – Ed: That’s the dream of computers is that the computers are supposed to make OUR lives easier. IF we can do that and catch those bugs before you catch it then you are saving time. Finding bugs as quickly as possible it avoids downtime and messy deployments.

31:03 – Chuck: Then you can use time for coding style and other things.

I can take mental shortcuts.

31:37 – Ed: The other thing you can do is avoiding security problems. If a static code analysis tool catches an integer overflow then...

32:30 – Chuck adds his comments.

Chuck: You can set your policy to block it or ignore it. Then you are running these tools to run security. There are third-party tools that do security analysis on your code. Do you integrate with those?

33:00 – Ed: Yep. My favorite is WhiteSource. It knows all of the open source and third-party tools. It can scan your code and...

34:05 – Chuck: It works with a lot of languages.

34:14 – Ed.

34:25 – Chuck: A lot of JavaScript developers are getting into mobile development, like Ionic, and others. You have all these systems out there for different stages for writing for mobile. Android, windows Phone, Blackberry...

35:04 – Ed: Let’s throw out Blackberry builds. We will ignore it.

Mac OS dies a fine job. That’s why we have all of those.

35:29 – Chuck: But I want to run my tests, too!

35:36 – Ed: I really like to use App Center. It is ultimately incredible to see all the tests you can run.

36:29 – Chuck: The deployment is different, though, right?

36:40 – Ed: I have a friend who clicks a button in...

Azure DevOps.

37:00 – Chuck: I like to remind people that this isn’t a new product.

37:15 – Ed: Yes, Azure DevOps.

37:24 – Chuck: Any new features that are coming out?

37:27 – Ed: We took a little break, but...

37:47 – Ed: We will pick back up once Ignite is over. We have a timeline on our website when we expect to launch some new features, and some are secret, so keep checking out the website.

39:07 – Chuck: What is the interplay between Azure DevOps and Visual Studio Code? Because they have plugins for freaking everything. I am sure there is something there that...

39:30 – Ed: I am a VI guy and I’m like 90% sure there is something there.

You are an eMac’s guy?

The way I think about it is through Git right out of the box.

Yes, I think there are better things out there for integration. I know we have a lot of great things in Visual Code, because I worked with it.

40:45 – Chuck: Yes, people can look for extensions and see what the capabilities are.

Chuck talks about code editor and tools. 

41:28 – Ed: ... we have been pulling that out as quickly as possible.

We do have IE extensions, I am sure there is something for VS Code – but it’s not where I want to spend my time.

42:02 – Chuck: Yes, sure.

42:07 – Ed: But everyone is different – they won’t work the way that I work. So there’s that.

42:30 – Ed: That Chuck.

42:36 – Chuck: Where do people get news?

42:42 – Ed: Go to here!

42:54 – Chuck: Where do people find you?

43:00 – Ed: Twitter!

43:07 – Chuck: Let’s do Picks!

43:20 – Advertisement – Fresh Books!

Links:

Picks:

Ed




in

JSJ 351: Dinero.js with Sarah Dayan

Sponsors

Panel:

  • Joe Eames
  • Aimee Knight
  • Chris Ferdinandi
  • AJ O’Neal
  • Charles Max Wood

Special Guest - Sarah Dayan

In this episode of JavaScript Jabber, the panelists talk to Sarah Dayan, who is a Frontend Software Engineer working for Algolia in Paris. They about the complications in handling money in software development and ask Sarah about the journey that led to the creation of Dinero.js, it’s implementation details, importance of maintaining good documentation, dealing with issues faced along the way, various features of Dinero and working with open source projects in general. Check it out!

Show Topics:

0.40 - Advertisement : Netlify

1:44 - Sarah introduces herself and Chris talks about his interest in learning more about Dinero and compliments Sarah on its great documentation.

3.10 - Sarah gives some background saying that she created and published Dinero around a year ago. She goes on to explain that the Dinero library helps in handling monetary values. It comes with several methods to parse, manipulate and format these values. The reason behind creating it is that there is no consensus on representing money in software development currently. She shares the story from her previous job where her work was to maintain legacy accounting software, and along the way they realized, that since JavaScript did not have a way to natively represent decimal values, it led to adding large numbers of rounded up numbers continuously, eventually leading to wrong computations.

6:50 - Aimee asks about ways to handle different currencies in Dinero. Sarah answers that she has followed Martin Fowler’s money pattern where two different currencies were not allowed to be worked on directly, conversion was mandatory, just like in real life.

7:50 - Charles talks about his old freelance work where he was overwhelmed while handling and representing money in software.

8:25 - Aimee enquires if Dinero can be used for both frontend and backend. Sarah replies that it can be used anywhere and explains that there is no such thing as just a number when it comes to money, there must be a currency associated with it.

9:30 - Charles asks how to figure out the direction to go to when dealing with money and to make sure that all use-cases are covered. Sarah answers that in cases such as floating-point math where the computations don’t end up being accurate as handling is not supported, numbers can be used if treated as subunits (for e.g. 100cents = 1$). However, even then, there are issues in dividing money. She then explains the procedure of “allocation” from the Fowler pattern and she says that Dinero helps in doing the same in such scenarios.

12:54 - They discuss how they did not realize how difficult it was dealing with monetary values in development. Sarah talks about the fact that there are numerous aspects involved in it, giving the example of rounding off and stating that there are even factors such as different laws in different countries that need to be considered.

16:00 - AJ asks details about crafting the library, maintaining the centralized code and covering of edge cases and using inheritance. Sarah explains the concept of domain driven development and the importance of being an expert in the respective domains. She talks about the library structure briefly, describing that is kept very simple with a module pattern and it has allowed her to manage visibility, make it immutable, include currency converters, formatters and so on.

19:34 - AJ asks about the internal complexity of the implementation. Sarah answers that code wise it is extremely simple and easy, anyone with a limited JavaScript experience can understand it.

20:50 - AJ asks if it’s open source to which Sarah answers in affirmative and says that she would like external help with implementing some features too.

22:10 - Chris asks about Sarah’s excellent documentation approach, how has she managed to do it in a very detailed manner and how important it is in an open source project. Sarah says that she believes that documentation is extremely important, and not having good docs is a big hindrance to developers and to anyone who is trying to learn in general. She talks about her love for writing which explains the presence of annotations and examples in the source code.

27:50 - Charles discusses how autogenerated documentation gives an explanation about the methods and functions in the code but there is no guidance as such, so it is important to have guides. Sarah agrees by saying that searching for exact solutions is much simpler with it, leading to saving time as well.

29:43 - Chris speaks about Vue also being quite good at having guides and links and thanks Sarah for her work on Dinero.

30:15 - Advertisement - Sentry - Use code “devchat” to get two months free on Sentry’s small plan.

31:23 - Chris asks what the process is, for creating and running Dinero in different places. Sarah explains that she uses rollup.js which is a bundler suited for libraries, it takes in the ES module library and gives the output in any format. She states that the reason for using the ES module library is that she wanted to provide several builds for several environments with a clean and simple source and goes on to explain that these modules are native, have a terse syntax, easy to read and can be statically analyzed. She also gives the disadvantages in choosing webpack over rollup.

36:05 - Charles asks if anyone else is using Dinero. Sarah replies that around two or three people are using it, not much, but she is happy that it is out there to help people and she enjoyed working on it.

37:50 - Joe asks if there are any interesting stories about issues such as involving weird currency. Sarah answers in affirmative and gives the example of the method “hasCents”. She explains that she had to deprecate it because the unit “cents” does not have any value in non-Western currencies, and has created “hasSubUnits” method instead. She explains some problems like dealing with currencies that don’t support the ISO 4217 standard.

42:30 - Joe asks if social and political upheavals that affect the currencies have any effect on the library too. Sarah gives the example of Chinese and Japanese currencies where there are no sub-units and states that it is important to be flexible in developing stuff in an ever-changing domain like money. She also says that she does not include any third-party dependency in the library.

46:00 - AJ says that BigInts have arrived in JavaScript but there is no way to convert between typed arrays, hexadecimal or other storage formats. But later (1:10:55), he corrects that statement saying that BigInts in fact, does have support for hexadecimals. Sarah talks about wanting to keep the code simple and keep developer experience great.

49:08 - Charles asks about the features in Dinero. Sarah elaborates on wanting to work more on detecting currencies, improve the way it is built, provide better support for type libraries and get much better at documentation.

52:32 - Charles says that it is good that Sarah is thinking about adopting Dinero to fit people’s needs and requirements and asks about different forms of outreach. Sarah says that she blogs a lot, is active on Twitter and attends conferences as well. Her goal is not popularity per se but to help people and keep on improving the product.

55:47 - Chris talks about the flip side that as the product grows and becomes popular, the number of support requests increases too. Sarah agrees that open source projects tend to eat up a lot of time and that doing such projects comes with a lot of responsibility but can also help in getting jobs.

59:47 - Sarah says that she is available online on her blog - frontstuff, on Twitter as Sarah Dayan and on GitHub as sarahdayan.

1:00:06 - Advertisement - Clubhouse

1:01:01 - Picks!

1:11:42  - END - Advertisement - CacheFly!

Picks:

Sarah

AJ O’Neal

Chris

Joe

Aimee

Charles

  •  




in

JSJ 352: Caffeinated Style Sheets: Supporting High Level CSS with JavaScript with Tommy Hodgins

Sponsors

 

Episode Summary  

In this episode of JavaScript Jabber, the panelists talk with Tommy Hodgins who specializes in responsive web design. He starts with explaining to listeners what it means by a responsive web layout and goes on to discuss the techniques in using JavaScript in CSS in depth.

He elaborates on dynamic styling of components, event-driven stylesheet templating, performance and timing characteristics of these techniques and describes different kinds of observers – interception, resize and mutation, and their support for various browsers. He also talks about how to go about enabling certain features by extending CSS, comparison to tools such as the CSS preprocessor and Media Queries, pros and cons of having this approach while citing relevant examples, exciting new features coming up in CSS, ways of testing the methods, caffeinated stylesheets, along with Qaffeine and Deqaf tools.

Links

 

Picks

Joe

Aimee

Chris

Charles

Tommy




in

MJS 101: Chris Ferdinandi

Sponsors

Host: Charles Max Wood

Special Guest: Chris Ferdinandi

Episode Summary

In this episode of My JavaScript Story, Charles Max Wood hosts Chris Ferdinandi, a Senior Front-End Engineer at Mashery. Chris is also a panelist on the podcast JavaScript Jabber and runs Go Make Things.

Chris started out his career as in Human Resources, decided he wanted to go into development after he was asked to work on a coding project by his manager and he really enjoyed it. He got his first coding job as an entry level developer after attending a web development conference.

Chris authors Vanilla JavaScript Pocket Guides which are short, focused e-books and video courses made for beginners.

Links

Picks

Chris Ferdinandi:

Charles Max Wood:

  • Running along San Francisco Bay
  • Marriage




in

JSJ 358: Pickle.js, Tooling, and Developer Happiness with Anatoliy Zaslavskiy

Sponsors

Panel

  • AJ O’Neal

  • Charles Max Wood

Joined by Special Guest: Anatoliy Zaslavskiy

Summary

Anatoliy Zaslavskiy introduces pickle.js and answers the panels questions about using it. The panel discusses the automated testing culture and employee retention. The panel discusses job satisfaction and why there is so much turn over in development jobs. Charles Max Wood reveals some of the reasons that he left past development jobs and the panel considers how the impact of work environments and projects effect developers. Ways to choose the right job for you and how to better a work situation is discussed. Anatoliy finishes by advocating for junior developers and explaining the value they bring to a company.

Links

Picks

AJ O’Neal

Charles Max Wood

Anatoliy Zaslavskiy

  •  




in

JSJ 367: Pair Programming

Sponsors

Panel

  • Aimee Knight
  • AJ O’Neal
  • Chris Ferdinandi

Episode Summary

In this episode of JavaScript Jabber, the panelists discuss each one’s definition of the term ‘pairing’ in programming, including factors like being remote or local, having different seniority levels and the various approaches of going about it in general. They talk about how valuable pairing is, in terms of benefiting the individual as well as how productive it is for the company or the overall business.

The panel also discuss prototyping, pseudo-coding and the advantages and trade-offs involved in pair programming. They talk about their own experiences in which pairing had proven to be extremely beneficial and the ones where it went completely wrong, thereby helping listeners understand the dos and don’ts of the technique. In the end, they elaborate on what actually happens in pairing interviews and the overall hiring process while sharing anecdotes from their own lives.

Links

Follow JavaScript Jabber on Devchat.tvFacebook and Twitter.

Picks

Chris Ferdinandi:

AJ O’Neal:

Aimee Knight:




in

JSJ 371: The Benefits and Challenges of Server-Side Rendering (SSR) with Dan Shappir

Sponsors

Panel

  • Charles Max Wood
  • Joe Eames
  • Christopher Buecheler
  • Aimee Knight
  • AJ O’Neal

Joined by special guest: Dan Shappir

Episode Summary

In this episode of JavaScript Jabber, special guest Dan Shappir, Performance Tech Lead at Wix, kicks off the discussion by defining server-side rendering (SSR) along with giving its historical background, and touches on the differences between server rendering and server-side rendering. He helps listeners understand in detail how SSR is beneficial for the web and takes questions from the panel about how it affects web performance in cases where first-time users and returning users are involved, and how does SSR fare against technologies such as pre-rendering. He then elaborates on the pitfalls and challenges of SSR including managing and declaring variables, memory leaks, performance issues, handling SEO, and more, along with ways to mitigate them. In the end, Dan sheds some light on when should developers use SSR and how should they start working with it.

Links

Follow JavaScript Jabber on Devchat.tv, Facebook and Twitter.

Picks

Christopher Buecheler:

  • Tip - Take some time off once in a while

Aimee Knight:

AJ O’Neal:

  • Fatherhood!

Joe Eames:

Charles Max Wood:

Dan Shappir:




in

JSJ 375: Are You Hurting the Web?

Sponsors

  • Triplebyte $1000 signing bonus

  • Sentry use code “devchat” for 2 months free

Panel

  • Charles Max Wood

  • Aimee Knight

  • Chris Ferdinandi

  • AJ O’Neal

  • Christopher Beucheler

Episode Summary

Today the panel discusses the effect of current development practices, such as the heavy reliance JavaScript, on the web. Chris explains why he believes that current development practices are ruining the web. The panelists discuss different situations where they see complications on the web. They discuss the advantages and disadvantages of using an enterprise scale platform like React. The panel discusses Twitter’s move away from their legacy code base to CSS and JavaScript. 

The panelists agree that the way things are built, since it’s so JavaScript heavy, is alienating to people who work with other languages, and in turn other areas like UI are undervalued. They talk about possible reasons things ended up this way and some of the historical perception of a frontend as not a place for ‘real’ development. Because the web is now a serious platform, things associated with the backend has been thrown at the frontend where it doesn’t belong. They talk about changes in the ways programming is viewed now versus the past. 

There is a discussion about how market demands that have influenced the web and if the market value CSS as highly as other languages. They mention some of the Innovations in CSS. Chris shares his solutions for the problems they’ve been discussing, namely using less JavaScript, leaning more heavily on what the browser gives you out of the box, and avoiding dependency where possible. They talk about ways to get involved if you want to take a leaner approach to the web. Ultimately, it is important to embrace things about the past that worked, but sprinkle in new technology when it makes sense

Links

Follow DevChat on Facebook and Twitter

Picks

Charles Max Wood:

Aimee Knight:

Chris Ferdinandi:

AJ O’Neal:

Christopher Beucheler:




in

JSJ 376: Trix: A Rich Text Editor for Everyday Writing with Javan Makhmali

Sponsors

Panel

  • Aimee Knight

  • Chris Ferdinandi

  • Christopher Beucheler

  • AJ O’Neal

With Special Guest: Javan Makhmali

Episode Summary

Today’s guest is Javan Makhmali, who works for Basecamp and helped develop Trix. Trix is a rich text editor for the web, made purposefully simple for everyday use instead of a full layout tool. Trix is not the same as Tiny MCE, and Javan discusses some of the differences. He talks about the benefits of using Trix over other native browser features for text editing. He talks about how Trix has simplified the work at Basecamp, especially when it came to crossing platforms. Javan talks more about how Trix differs from other text editors like Google Docs and contenteditable, how to tell if Trix is functioning correctly, and how it works with Markdown.

The panel discusses more specific aspects of Trix, such as Exec command. One of the features of Trix is it is able to output consistently in all browsers and uses semantic, clean HTML instead of classnames. Javan talks about how Trix handles getting rid of the extraneous cruft of formatting when things are copy and pasted, the different layers of code, and the undo feature. He talks about whether or not there will be more features added to Trix. The panel discusses who could benefit from using Trix. The show finishes with Javan talking about Basecamp’s decision to make Trix open source and why they code in CoffeeScript. 

Links

Follow DevChat on Facebook and Twitter

Picks

Javan Makhmali:

Chris Ferdinandi:

AJ O’Neal:

Christopher Beucheler: 

Aimee Knight:




in

JSJ 377: Bringing Maps and Location Into Your Apps with the ArcGIS API for JavaScript with Rene Rubalcava

Sponsors

Panel

  • Aimee Knight

  • AJ O’Neal

  • Charles Max Wood

With Special Guest: Rene Rubalcava

Episode Summary

Rene is a software developer for ESRI and works in spatial and mapping software. ESRI has been around since 1969 and has seen their work explode since they shifted to providing address and location services. Rene talks about how he thinks about location and mapping when building software around it and things that he has to approach in unique ways. The panel discusses some of their past experiences with location software. Some of the most difficult aspects of this software is changing time zones for data and actually mapping the Earth, since it is not flat nor a perfect sphere. Rene talks about the different models used for mapping the Earth.

Most mapping systems use the same algorithm as Google maps, so Rene talks about some of the specific features of ArcGIS, including the ability to finding a point within a polygon. Rene talks about what routing is, its importance, and how it is being optimized with ArcGIS, such as being able to add private streets into a regular street network.

The panel discusses how the prevalence of smartphones has changed mapping and GPS and some of their concerns with privacy and location mapping. One thing ESRI is very careful about is not storing private information. Rene talks about the kinds of things he has seen people doing with the mapping and location data provided by ArcGIS, including a Smart Mapping feature for developers, mapping planets, indoor routing, and 3D models. 

Links

Follow DevChat on Facebook and Twitter

Picks

Rene Rubalcava:

AJ O’Neal:

Aimee Knight:

Charles Max Wood:




in

JSJ 378: Stencil and Design Systems with Josh Thomas and Mike Hartington

Sponsors

Panel

  • Aimee Knight

  • Chris Ferdinandi

  • Joe Eames

  • AJ O’Neal

  • Charles Max Wood

With Special Guests: Josh Thomas and Mike Hartington

Episode Summary

Today’s guests Josh Thomas and Mike Hartington are developers for Ionic, with Josh working on the open source part of the framework on Ionic. They talk about their new compiler for web components called Stencil. Stencil was originally created out of work they did for Ionic 4 (now available for Vue, React, and Angular) and making Ionic 4 able to compliment all the different frameworks. They talk about their decision to build their own compiler and why they decided to open source it. Now, a lot of companies are looking into using Stencil to build design systems

The panel discusses when design systems should be implemented. Since Ionic is a component library that people can pull from and use themselves, Jeff and Mike talk about how they are using Stencil since they’re not creating a design system.

The panel discusses some of the drawbacks of web components. They discuss whether or not Cordova changes the game at all. One of the big advantages of using Stencil is the code that is delivered to a browser is generated in such a way that a lot of things are handled for you, unlike in other systems.The panelists talk about their thoughts on web components and the benefits of using a component versus creating a widget the old fashioned way. One such benefit of web components is that you can change the internals of how it works without affecting the API. Josh and Mike talk about some of the abilities of Stencil and compare it to other things like Tachyons. There is a short discussion of the line between frameworks and components and the dangers of pre optimization. If you would like to learn more about Stencil, go to stenciljs.com and follow Josh and Mike @Jtoms1 and @mhartington.

Click here to cast your vote NOW for JavaScript Jabber - Best Dev Podcast Award

Links

Follow DevChat on Facebook and Twitter

Picks

Aimee Knight:

AJ O’Neal:

Chris Ferdinandi:

Charles Max Wood:

Joe Eames:

Josh Thomas:

Mike Hartington:




in

JSJ 379: FindCollabs and Podcasting with Jeff Meyerson

Sponsors

Panel

  • Aimee Knight

  • AJ O’Neal

  • Charles Max Wood

With Special Guest: Jeff Meyerson

Episode Summary

Jeff Meyerson is the host of the Software Engineering daily podcast and has also started a company called FindCollabs, an online platform for finding collaborators and building projects. Jeff started FindCollabs because he believes there are all these amazing tools but people are not combining and collaborating as much as they could, when so much good could be accomplished together. FindCollabs is especially useful for working on side projects. The panelists discuss the problems encountered when you try to collaborate with people over the internet, such as finding people who are facing similar and gauging interest, skill, and availability. Thankfully, FindCollabs has a feature of leaving reviews and rating your partners so that users can accurately gauge other’s skill level. Users can also leave comments about their experience collaborating with others. The only way you can show competence with an interest is to contribute to another project. FindCollabs is also a good place to look for mentors, as well as for Bootcamp graduates or people going through an online coding course. If you are part of an organization, you can create private projects. The company plans to expand this feature to all users in the future.The panelists talk about their past experiences with collaborating with other people.

Jeff talks about his podcast Software Engineering Daily and how it got started and the focus of the podcast. As someone working in technology, it is important to stay current on up and coming technology, and listening to podcasts is an excellent way to do that. Jeff talks about where he thinks podcasting is going, especially for programmers. The panel discusses some of the benefits of listening to programming podcasts. Jeff talks about how he is prepping Software Engineering Daily for the future. He shares the audience size for Software Engineering Daily and some of the statistics for his different channels. Jeff has also released an app for Software Engineering Daily, and he shares some information on how it was written. Finally, Jeff gives advice for people who want to use FindCollabs and some of the next steps after creating a profile.

Click here to cast your vote NOW for JavaScript Jabber - Best Dev Podcast Award

Links

Follow DevChat on Facebook and Twitter

Picks

Aimee Knight:

AJ O’Neal:

Charles Max Wood:

Jeff Meyerson:




in

JSJ 381: Building a Personal Brand with John Sonmez

Sponsors

Panel

  • Charles Max Wood

  • Christopher Beucheler

  • AJ O’Neal

With Special Guest: John Somnez

Episode Summary

John is the founder of Bulldog Mindset andSimple Programmer, which teaches software developers soft skills, and the author of a couple books. He specializes in creating a personal brand and marketing. He addresses the rumors of him leaving software development and gives an introduction to marketing yourself as a software developer and its importance. The panel discusses their experience with consulting and how marketing themselves has paid off. John talks about the importance of having soft skills. In his opinion, the most important soft skills for programmers are communication, persuasion and influence, people skills and charisma. He talks about highlight those soft skills. The truth is, more and more people are hiring for people skills rather than technical skills. The panel discusses more about the importance of people skills.

John talks about ways to build your personal brand. One of the easiest ways is blogging but he talks about other methods like podcasts YouTube, writing books, and others. A key to building a personal brand is choosing something that you can become the best at, no matter how small it is. The panel shares their experiences of what things have gotten them attention and notoriety and talk about how other influential programmers got famous. They talk about interacting with central platforms like Medium and Github. Building a personal brand for software developers is the same as any other personal brand, such as having a consistent message, consistent logos and color schemes, and repeated exposure). Most people in the software world aren’t willing to do what’s necessary to build a personal brand, so it makes you stand out when you do it. John talks about the importance of controlling your image so that companies want to hire you. John gives a brief overview of his course How to Market Yourself as a Software Developer. 

Click here to cast your vote NOW for JavaScript Jabber - Best Dev Podcast Award

Links

 

Picks

Charles Max Wood:

John Somnez:

Christopher Beucheler:

AJ O’Neal




in

JSJ 387: How to Stay Current in the Tech Field

Sponsors

  • GitLab | Get 30% off tickets with the promo code: DEVCHATCOMMIT

  • Sentry– use the code “devchat” for $100 credit 

  • Views on Vue

Panel

  • Charles Max Wood

  • Joe Eames

Episode Summary

Today Joe and Charles are discussing how to stay current in the tech field. Since looking at all the new technology can be overwhelming, they advise listeners on what to focus on, which will differ depending on your career. Joe brings up that one of the top reasons people choose a job is because it has a technology they want to learn. Joe and Charles discuss trends in the tech world, such as the rise and fall of Rails. They discuss what to do if you’re happy with what you’re doing now but want your career to stay viable. While it is important to continue moving along with technology, they agree that the stuff that’s really important is the stuff that doesn’t change. Charles believes that if you have a solid knowledge on a subject that isn’t necessary current, that is still very valuable. 

Joe and Charles discuss the importance of having a learning plan and the importance of having soft skills in addition to technological know-how. Another important part of staying current is figuring out where you want to end up and making a plan. If you want to work for a specific company, you need to learn the technology they’re using. Joe talks about some of his experiences trying to get a job with a big company and how he was reminded of the importance of the fundamentals. 

They discuss the merits of being a generalist or a specialist in your studies and the best approach once you’ve chosen a technology to learn. Once you’ve learned a technology, it’s important to start building with it. Charles and Joe talk about different ways of learning, such as books, videos, code reading, or tutorials, and the importance of finding a medium that you can understand. They discuss the isolating nature of tutorials and how it is important to have real-world experience with the code. They discuss how to know if you’ve learned a technology well enough to move onto the next thing, and whether the technologies you studies should be career focused or passion based. Charles advises listeners to divide their time as follows: 50% of your learning should be focused on what you’re currently doing at your job, 25% looking towards the future and studying upcoming technology, and 25% on your passion. 

Links

Follow DevChat on Facebook and Twitter

Picks

Charles Max Wood:

Joe Eames:




in

JSJ 388: Functional Programming with Brian Lonsdorf

Sponsors

Panel

  • Aimee Knight 

  • Chris Buecheler

  • AJ O’Neal

With Special Guest: Brian Lonsdorf

Episode Summary

Brian Lonsdorf works for Salesforce, specializes in functional programming, and wrote a book called Professor Frisby’s Mostly Adequate Guide to Functional Programming. Brian talks about when he got into functional programming and when in their career others should be exposed to it. He talks about the fundamental tenets of functional programming (static mathematical functions), how it differs from object oriented programming, and how to manipulate data in a functional environment. The panel wonders if it is possible to use functional and object oriented programming together and discuss the functional core imperative shell. Brian talks about what is ‘super functional’ and why JavaScript isn’t, but includes methods for making it work. He shares some of the trade-offs he’s found while doing functional programming. Brian defines a monad and goes over some of the common questions he gets about functional programming, such as how to model an app using functional programming. The show concludes with Brian talking about some of the work he’s been doing in AI and machine learning. 

Links

Follow DevChat on Facebook and Twitter

Picks

Aimee Knight:

Chris Buecheler:

AJ O’Neal:

Brian Lonsdorf:




in

JSJ 389: What Makes a 10x Engineer?

Sponsors

Panel

  • Charles Max Wood

Episode Summary

In today’s show, Chuck talks about the recent tweet thread about 10x engineers. He goes through each of the points in the tweet and talks about each of them in turn. There are only two points he sort of agrees with, and believes the rest to be absolute garbage. One of the issues with this tweet is that it doesn’t define what a 10x engineer is. Defining a 10x engineer is difficult because it is also impossible to measure a truly average engineer because there are many factors that play into measuring productivity. Chuck turns the discussion to what a 10x engineer is to him and how to find one. A 10x engineer is dependent on the organization that they are a part of, because they are not simply found, they are made. When a 10x engineer is added to a team, the productivity of the entire team increases. Employers have to consider firstly what you need in your team and how a person would fit in. You want to avoid changing the entire culture of your organization. Consider also that a 10x engineer may be hired as a 2x engineer, but it is the employer that turns them into a 10x engineer. Overall, Chuck believes these tweets are asinine because it’s impossible to measure what makes a 10x engineer in the first place, and hiring a person that fits the attributes in the list would be toxic to your company. 

Links

Follow DevChat on Facebook and Twitter

Picks

Charles Max Wood:




in

JSJ 391: Debugging with Todd Gardner

Episode Summary

Todd Gardner is a software developer, podcaster on the show Script and Style, startup founder,  and comedy host for Pub Conf, a ‘comedy after party for developers’. Since he was last on the show 6 years ago, he has seen his startup TrackJS become quite successful. TrackJS is a JavaScript error monitoring service which gives you visibility into your client side experience. It’s different from other tools because focused on simplicity, so you’ll never need a guy on your team dedicated solely to TrackJS because everyone can use it.

The panel begins by talking about debugging methods and tools. Some rely solely on the debugger built into their platform while others prefer to use a third party service. They discuss the necessity of using a third party debugger and if there are better solutions than just the built in debugger. 

They then discuss what to do after you’ve fixed a bug, such as if it is necessary to write a test to make sure it was completely fixed They talk about things to do to make debugging more effective. Todd and Aimee believe that code needs to begin by being designed for debug-ability. 

The panel discusses issues with invisible boundaries encountered while debugging, such as running out of memory. They talk about ways to mitigate issues that happen outside of your code base. Todd talks about the dangers of ad-blockers, and the panel agrees that it is important to consider how your website will be crippled by the user’s own technology. The end user in a production environment will have a different experience than you did writing it on a professional computer. 

Todd talks about the difference between debugging for the web versus a mobile application. Todd has encountered particular problems with debugging on a remote device, and he talks about how he solved the issue. The show concludes with Todd giving a quick elevator pitch for TrackJS

Panelists

  • Chris Ferdinandi

  • Christopher Buecheler

  • Aimee Knight

  • Charles Max Wood

  • Steve Emmrich

With special guest: Todd Gardner

Sponsors

Links

Follow DevChat on Facebook and Twitter

Picks

Christopher Buecheler:

Chris Ferdinandi:

Aimee Knight:

Charles Max Wood:

  • Atomic Habits

  • Getting up at 4 am

Steve Emmrich:

  • Trello

  • Babushkas and grandmas to help you with your newborn

Todd Gardner:

  • PubConf

  • Follow Todd @toddhgardner or todd.mn




in

JSJ 393: Why You Should Be Using Web Workers with Surma

Episode Summary

Surma is an open web advocate for Google currently working with WebAssembly team. He was invited on the show today to talk about using web workers and how to move work away from the browser’s main thread. His primary platform is bringing multithreading out of the fringes and into the web. 

The panel talks about their past experience with web workers, and many of them found them isolated and difficult to use. Surma believes that web workers should pretty much always be sued because the main thread is an inherently bad place to run your code because it has to do so much. Surma details the differences between web workers, service workers, and worklets and explains what the compositer is. 

The panel discusses what parts should be moved off the main thread and how to move the logic over. Surma notes that the additional cost of using a worker is basically nonexistent, changes almost nothing in your workflow, and takes up only one kilobyte of memory. Therefore, the cost/benefit ratio of using web workers gets very large. They discuss debugging in a web worker and Surma details how debugging is better in web workers. 

Surma wants to see people use workers not because it will make it faster, but because it will make your app more resilient across all devices. Every piece of JavaScript you run could be the straw that breaks the camel’s back. There’s so much to do on the main thread for the browser, especially when it has a weaker processor, that the more stuff you can move away, the better.

The web is tailored for the most powerful phones, but a large portion of the population does not have the most powerful phone available, and moving things over to a web worker will benefit the average phone. Surma talks about his experience using the Nokia 2, on which simple apps run very slow because they are not being frugal with the user’s resources. Moving things to another thread will help phones like this run faster.  

The panel discusses the benefit of using web workers from a business standpoint. The argument is similar to that for accessibility. Though a user may not need that accessibility all the time, they could become in need of it. Making the app run better on low end devices will also increase the target audience, which is helpful is user acquisition is your principle metric for success. 

Surma wants businesses to understand that while this is beneficial for people in countries like India, there is also a very wide spectrum of phone performance in America. He wants to help all of these people and wants companies acknowledge this spectrum and to look at the benefits of using web workers to improve performance.

Panelists

  • Charles Max Wood

  • Christopher Buecheler

  • Aimee Knight

  • AJ O’Neal

With special guest: Surma

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Charles Max Wood:

Surma:

AJ O’Neal:

Christopher Buecheler




in

JSJ 394: SMS Integration with Dominik Kundel

Episode Summary

Dominik Kundel works as developer evangelist at Twilio. Dominik talks about the history of Twilio, which actually started with integrating phone calls into apps and then moved to SMS integration. 

Today Charles and Dominik are talking about how the SMS message approach can augment your user experience. Since many people are not familiar with implementing SMS, Dominik talks about how Twilio can help. Twilio created was a supernetwork where they work with carriers and gateways around the world to ensure that they provide reliable services. They also focus heavily on making sure that the developer experience is great.

Uber and Lyft are two of the companies that use Twilio, and Dominik shares some of the interesting things that they’ve accomplished. He is particularly excited about phone number masking to support privacy. Uber and Lyft use phone number masking so that your driver doesn’t see your real number and you don’t see theirs. Instead, each of you sees a Twilio number. This use case is becoming more common. 

Twilio recently introduced Flex, which Dominik explains is their contact center solution. Flex is designed to keep with their philosophy of everything should be programmable and configurable, and take it on to a software shipment. This is their first time shipping software instead of just APIs. Flex is highly customizable and flexible, allows you to build React plugins that let you change anything you want.

Charles asks Dominik about some of the gotchas in telephony. One major issues is spam calls, which Twilio is trying to work with some providers on a ‘verified by Twilio’ list. This list lets companies get verified, and they’re working on ways to let you know the reason why they’re calling without having to answer your phone. This can be difficult because each country has different regulations.

Dominik talks about what it would take for someone who wanted to build an SMS gateway themselves. They would have to work with carriers and learn SMS protocols. It’s important to note that SMS and phone calls have different protocols

Dominik talks about some of the unique use cases they’ve seen their system. Some examples are contextual communications, account verifications, and codex creation. There are other fun examples, such as a drone controlled via text message, a fake boyfriend app, and a dog that was taught to take selfies that are sent to his owner. 

Charles asks about ways to get started with Twilio. If you want to explore this and don’t know where to get started, try Twilio Quest, a game to teach you how to use Twilio. There is also documentation, which is good if you know exactly what you want to achieve, or if you just want to explore possibilities then download Twilio Quest. 

They delve into a more specific use case for Twilio to send text to subscibers of DevChatTV. Dominik talks about ways of dealing with sending notifications to people outside of the US. You can send with a US number to any country code, or you can personalize it, so that people in the UK receive it from a UK number and so on through automatic geocode matching. They talk about Twilio’s billing. 

Finally, they talk about security within telephony in light of recent hacks. They discuss the security of two factor authentication.Two factor authentication and security, especially in light of recent hacks. Dominik talks about the API called Authy, where you can implement different ways of doing two factor authentication, such as push notifications, time based one time password, sms, and phone calls. For most people in the world two factor authentication is very safe, unless you’re a very important person, then you’re more at risk for targeted attacks. They conclude by talking about Twilio’s acquisition of Sendgrid.

Panelists

  • Charles Max Wood

With special guest: Dominik Kundel

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Charles Max Wood:

Dominik Kundel:

  • Enable a setting called javascript.implicit

  • Follow him @dkundel




in

JSJ 396: Publishing Your Book with Jonathan Lee Martin

Jonathan Lee Martin is an instructor and developer. He got his start in teaching at Big Nerd Ranch doing 1-2 week trainings for mid to senior developers, and then transitioned to 16 week courses for career switchers. He also worked for Digital Crafts for a year, and then wanted to focus on building out his own personal teaching brand. One of his first steps toward building his own brand was to publish his book, Functional Design Patterns for Express.js.The inspiration for Jonathan’s book came from his experience teaching career switchers. He wanted to experiment in the classroom with teaching functional programming in a way that would be very approachable and applicable and dispel some of the magic around backend programming, and that became the template for the book. 

Jonathan loves the minimalist nature of Express.js and talks about its many uses. He believes that it knowing design patterns can take you pretty far in programming, and this view is related to his background in Rails. When he was working in Rails taming huge middleware stacks, he discovered that applying design patterns made builds take less time. He talks about other situations where knowing design patterns has helped. Express.js leans towards object oriented style over functional programming, and so it takes to these patterns well. Express.js has its shortcomings, and that’s where Jonathan’s favorite library Koa comes into play. 

The conversation switches back to Jonathan’s book, which is a good way to start learning these higher level concepts. He purposely made it appealing to mid and senior level programmers, but at the same time it does not require a lot of background knowledge. Jonathan talks about his teaching methods that give people a proper appreciation for the tool. Jonathan talks more about why he likes to use Express.js and chose to use it for his book. He cautions that his book is not a book of monads, but rather about being influenced by the idea of composition over inheritance. He talks about the role of middleware in programming. 

The panel asks about Jonathan’s toolchain and approach to writing books, and he explains how his books are set up to show code. They discuss the different forms required when publishing a book such as epub, MOBI, and PDF. Jonathan found it difficult to distribute his book through Amazon, so he talks about how he built his own server. Charles notes that your method of distributing your book will depend on your goal. If you want to make the most money possible, make your own site. If you want to get it into as many hands as possible, get it on Amazon.

Many of the JavaScript Jabber panelists have had experience publishing books, and Jonathan shares that you can reach out to a publisher after you’ve self-published a book and they can get it distributed. Jonathan believes that If he had gone straight to a publisher, he would have gotten overwhelmed and given up on the book, but the step by step process of self-publishing kept things manageable. The panelists discuss difficulties encountered when publishing and editing books, especially with Markdown. Jonathan compares the perks of self-editing to traditional editing. Though he does not plan to opensource his entire editing pipeline, he may make some parts available. The show concludes with the panelists discussing the clout that comes with being a published author. 

Panelists

  • Charles Max Wood

  • Christopher Buecheler 

  • J.C. Hyatt

With special guest: Jonathan Lee Martin

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Christopher Buecheler:

J.C. Hyatt:

Charles Max Wood:

Jonathan Lee Martin:




in

JSJ 398: Node 12 with Paige Niedringhaus

Guest Paige Niedringhaus has been a developer full time for 3 years, and today she is here to talk about Node 12. One of the things she is most excited about is the ES6 support that is now available, so things that used to require React, Angular, or Vue can now be done in Node. The require function will not have to be used in Node 12. AJ is worried about some of these changes and expresses his concerns. Paige assures him that in the beginning you won’t have to switch things to imports. You may have to change file extensions/types so Node can pick up what it’s supposed to be using. They are also trying to make it compatible with CommonJS.

Node 12 also boasts an improved startup time. The panel discusses what specifically this means. They talk about the code cache and how Node caches the built in libraries that it comes prepackaged with. The V8 engine is also getting many performance enhancements. 

Paige talks about the shift from promises to async. In Node 12, async functions will actually be faster than promises. They discuss some of the difficulties they’ve had in the past with Async08, and especially callbacks. 

Another feature of Node 12 is better security. The transcripted security layer (TLS), which is how Node handles encrypted strains of communication, is upgrading to 1.3. The protocol is simpler to implement, quicker to negotiate sessions between the applications, provides increased end user privacy, and reduces request time. Overall, this means less latency for everybody. 1.3 also gets rid of the edge cases that caused TLS to be way far slower than it needed to be. 

The conversation turns to properly configuring default heap limits to prevent an ‘out of memory’ error. Configuring heap limits is something necessary when constructing an incredibly large object or array of objects. Node 12 also offers formatted diagnostic summaries, which can include information on total memory, used memory, memory limits, and environment lags. It can report on uncaught exceptions and fatal errors. Overall, Node 12 is trying to help with the debugging process. They talk about the different parsers available and how issues with key pairing in Node have been solved. 

Paige talks about using worker threads in Node 12. Worker threads are really beneficial for CPU intensive JavaScript operations. Worker threads are there for those things that eat up all of your memory, they can alleviate the load and keep your program running efficiently while doing their own operations on the sideline, and returning to the main thread once they’ve finished their job. None of the panelists have really used worker threads, so they discuss why that is and how they might use Worker Threads in Node 12. 

In addition, Node 12 is making Native module creation and support easier, as well as all the different binaries a node developer would want to support. Paige makes it a point to mention the new compiler and minimum platform standards. They are as follows:

  • GCC minimum 6

  • GLIVC minimum 2.17 on platforms other than Mac and Windows (Linux)

  • Mac users need at least 8 and Mac OS 10.10

  • If you’ve been running node 11 builds in Windows, you’re up to speed

  • Linux binaries supported are Enterprise Linux 7, Debian 8, and Ubuntu 14.04

  • If you have different requirements, go to the Node website

Panelists

  • J.C. Hyatt

  • Steve Edwards

  • AJ O’Neal

With special guest: Paige Niedringhaus

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

J.C. Hyatt:

Steve Edwards:

  • The Farside comic coming back?

AJ O’Neal:

Paige Niedringhaus:

Follow Paige on Twitter, Medium, and Github




in

MJS 126: Eduardo San Martin Morote

In this episode of My JavaScript Story is Charles talks to Eduardo San Martin Morote. Eduardo is a freelance developer, a core team member of Vue.js, and loves contributing to open source. Eduardo started web development with games. He then majored in Computer Science and Mathematics.

Eduardo works as a freelancer so he can work on Open Source projects in his free time. One of the problems he draws attention to is the sustainability of Open Source Projects. The developers that maintain the projects on Open Source are not funded, and even though many companies use Open Source code they don't have sponsor it even though they have the financial means to do so.

Charles Max Wood recommends another podcast Devchat.tv hosts, Sustain Our Software that addresses this problem among others for Open Source.

Eduardo and Charles talk about characters that have accents that have to be encoded and how they deal with this problem. Eduardo then talks about some of the projects he is working on currently with Vue.js.

Sponsors

Host: Charles Max Wood

Joined by Special Guest: Eduardo San Martin Morote

Links

Picks

Eduardo San Martin Morote

Charles Max Wood




in

JSJ 399: Debugging with Async/Await with Valeri Karpov

Valeri Karpov is a maintainer on Mongoose, has started a few companies, and works for a company called Booster Fuels. Today’s topic debugging with Async/Await. The panel talks about some of the challenges of debugging with Async. AJ, however, has never encountered the same problems, so he shares his debugging method. 

Valeri differentiates between .catch vs try...catch, and talks about why he prefers .catch. There are two ways to handle all errors in an async function without leading to an unhandled promise rejection. The first is to wrap the entire body of the async function in a try...catch, has some limitations. Calling an async function always returns a promise, so the other approach is calling .catch on the promise to handle any errors that occur in that function body. One of the key differences is if you return a promise within an async function, and that return promise is wrapped in a try...catch, the catch block won’t get called if that promise is rejected, whereas if you call .catch on the promise that the function returns, you’ll actually catch that error. There are rare instances where this can get tricky and unintuitive, such as where you have to call new promise and have resolve and reject, and you can get unexpected behavior.

The panel discusses Valeri’s current favorite JS interview question, which is,  “Given a stream, implement a function called ‘stream to promise’ that, given a stream, returns a promise that resolves to the concatenation of all the data chunks emitted by the stream, or rejects if the stream emits an error event.” It’s really simple to get this qustion right, and really simple to get it wrong, and the difference can be catastrophic. AJ cautions listeners to never use the data event except in the cases Val was talking about, only use the readable event.

The conversation turns to the function of a readable event. Since data always pushes data, when you get a readable event, it’s up to you to call read inside the function handler, and then you get back a chunk of data, call read again and again until the read returns null. When you use readable, you are in control and you avoid piling functions into RAM. In addition, the right function will return true or false to let you know if the buffer is full or not. This is a way to mix imperative style into a stream.

The next discussion topics are the differences between imperative style and reactive style and how a waits and promises work in a normal four loop. A wait suspends the execution of a function until the promise is resolved. Does a wait actually stop the loop or is it just transpiling like a promise and it doesn’t stop the loop. AJ wrote a module called Batch Async to be not as greedy as promise.all but not as limited as other options.

The JavaScript panelists talk about different async iterators they’ve used, such as Babel. They discuss the merits of Babel, especially since baseline Android phones (which a significant portion of the population of the world uses) run UC Browser that doesn’t support Babel, and so a significant chunk of the population of the world. On the other hand, if you want to target a large audience, you need to use Babel.

Since frameworks in general don’t handle async very well, the panel discusses ways to mitigate this. They talk about different frameworks like Vue, React, and Express and how they support async functions. They discuss why there is no way for you to actually cancel an async option in an actual case, how complex canceling is, and what you are really trying to solve for in the cancellation process. 

Canceling something is a complex problem. Valeri talks about his one case where he had a specific bug that required non-generic engineering to solve, and cancelling actually solved something. When AJ has come across cancellation issues, it’s very specific to that use case. The rest of the panelists talk about their experiences with having to cancel something. 

Finally, they talk about their experience with async generator functions. A generator is a function that lets you enter into the function later. This makes sense for very large or long running data sets, but when you have a bounded items, don’t complicate your code this way. When an async generator function yields, you explicitly need to call next in order for it to pick up again. If you don’t call ‘next’, it’s essentially cancelled. Remember that object.keys and object.values are your friends. 

Panelists

  • Christopher Buecheler

  • AJ O’Neal

  • Charles Max Wood

With special guest: Valeri Karpov

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

AJ O’Neal:

Christopher Buecheler:

Charles Max Wood:

Valeri Karpov:




in

JSJ 400: The Influence of JavaScript Jabber

JavaScript Jabber celebrates its 400th episode with former host Dave Smith and some other familiar voices. Each of the panelists talks about what they’ve been up to. Dave hasn’t been on the show for 3 years, but he and Jameson Dance have started a podcast called Soft Skills Engineering where they answer questions about the non-technical side of engineering. When he left the show he was the director of engineering on Hire View, and currently he works for Amazon on Alexa. 

Christopher Buecheler has been on several JSJ, RRU, and MJS episodes. His time is divided between contracting for startups and his own company closebrace.com, a tutorial and resource site for JavaScript developers.  Dan Shapir has also been on JSJ as a guest, and is currently works for Wix doing performance tech. He enjoys speaking at conferences, such as JS Camp in Bucharest, Romania and the YGLF conference. Steve Edwards was previously on MJS 078. He started on Drupal in the PHP world, switched to JavaScript, and then a few years ago he started looking at Vue. Now he does Vue fulltime for ImageWare Systems.

As for Charles, his primary focus is the podcasts, since DevChat.tv produces around 20 episodes per week. 5 new shows were started in July, and he talks about some of the challenges that that brought. One of his most popular shows recently was JSJ 389: What makes a 10x Engineer? This helped him realize that he wants to help teach people how to be a successful engineer, so he’s working on launching a new show about it. 

The panelists share some of their favorite JSJ episodes. They discuss the tendency of JSJ to get early access to these fascinating people when the conversation was just beginning, such as the inventor of Redux Dan Abramov, before their rise to stardom. The talk about the rise in popularity of podcasting in general. They agree that even though JavaScript is evolving and changing quickly, it’s still helpful to listen to old episodes. 

Charles talks about the influence JavaScript Jabber has had on other podcasts. It has spawned several spinoffs, including My JavaScript Story. He’s had several hosts start their own DevChat.tv shows based off JavaScript Jabber, including Adventures in Angular and The DevEd Podcast. JavaScript Jabber has also been the inspiration for other podcasts that aren’t part of DevChat.tv. There aren’t many podcast companies that produce as many shows as they do and they’re developing their own tools. DevChat.tv moved off of WordPress and is in the process of moving over to Podwrench. Charles talks about all the new shows that have been launched, and his view on ‘competing’ podcasts. Charles is also considering doing an audio drama that happens in a programming office, so if you would like to write and/or voice that  show, he invites you to contact him. 

The show concludes with the panel talking about the projects they’ve been working on that they want listeners to check out. Christopher invites listeners to check out closebrace.com. He also has plans to write a short ebook on unit testing with jest, considered doing his own podcast, and invites people to check out his fiction books on his website. Dan talks about his involvement with Wix, a drag and drop website service, that recently released a technology called Corvid which lets you write JS into the website you build with Wix. This means you can design your user interface using Wix, but then automate it, add events functionality, etc. Dan is also going to be at the Chrome Dev Summit conference. Dave invites listeners to check out the Soft Skills Engineering podcast, and Charles invites listeners to subscribe to his new site maxcoders.io. 

Panelists

  • Dan Shapir

  • Christopher Buecheler

  • Steve Edwards

  • Dave Smith

  • Charles Max Wood

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Steve Edwards:

Christopher Buecheler:

Charles Max Wood:

Dan Shapir:

Dave Smith:




in

MJS 128: Mike Hartington

In this episode of My JavaScript Story is Charles talks to Mike Hartington. Mike Hartington is a Developer Advocate for Ionic Framework and a Google Developer Expert, but he is most famous in the developer community because of his beard.

Charles asks how Mike got introduced to development. Mike tried to code Tic-Tac-Toe and that was a challenge because knowing the rules to the game and trying to tell a computer the rules are two very two different things.

Mike then majored in Graphic Design at Rhode Island College, and started learning Flash and ActionScript. Mike talks about what kind of projects he created with Flash and ActionScript and then the process of teaching himself JavaScript.

Host: Charles Max Wood

Joined by Special Guest: Mike Hartington

Links

Sponsors

Picks

 Mike Hartington

Charles Max Wood:




in

JSJ 405: Machine Learning with Gant Laborde

Gant Laborde is the Chief Innovation Officer of Infinite Red who is working on a course for beginners on machine learning. There is a lot of gatekeeping with machine learning, and this attitude that only people with PhDs should touch it. In spite of this, Gant thinks that in the next 5 years everyone will be using machine learning, and that it will be pioneered by web developers. One of the strong points of the web is experimentation, and Gant contrasts this to the academic approach. 

They conversation turns to Gant’s course on machine learning and how it is structured. He stresses the importance of understanding unicode, assembly, and other higher concepts. In his course he gives you the resources to go deeper and talks about libraries and frameworks available that can get you started right away. His first lesson is a splashdown into the jargon of machine learning, which he maps over into developer terms. After a little JavaScript kung fu, he takes some tools that are already out there and converts it into a website.

Chris and Gant discuss some different uses for machine learning and how it can improve development. One of the biggest applications they see is to train the computers to figure monotonous tasks out while the human beings focus on other projects, such as watching security camera footage and identifying images. Gant restates his belief that in the next 5 years, AI will be everywhere. People will grab the boring things first, then they will go for the exciting things. Gant talks about his creation NSFW.js, an open source train model to help you catch indecent content. He and Chris discuss different applications for this technology.

Next, the panel discusses where machine learning can be seen in everyday life, especially in big companies such as Google. They cite completing your sentences in an email for you as an example of machine learning. They talk about the ethics of machine learning, especially concerning security and personal data. They anticipate that the next problem is edge devices for AI, and this is where JavaScript really comes in, because security and privacy concerns require a developer mindset. They also believe that personal assistant devices, like those from Amazon and Google, will become even more personal through machine learning. They talk about some of the ways that personal assistant devices will improve through machine learning, such as recognizing your voice or understanding your accent. 

Their next topic of discussion is authenticity, and how computers are actually incredibly good at finding deep fakes. They discuss the practice of placing passed away people into movies as one of the applications of machine learning, and the ethics surrounding that. Since developers tend to be worried about inclusions, ethics, and the implications of things, Gant believes that these are the people he wants to have control over what AI is going to do to help build a more conscious data set. 

The show concludes with Gant talking about the resources to help you get started with machine learning. He is a panelist on upcoming DevChat show, Adventures in Machine Learning. He has worked with people with all kinds of skill sets and has found that it doesn’t matter how much you know, it matters how interested and passionate you are about learning. If you’re willing to put the pedal to the metal for at least a month, you can come out with a basic understanding. Chris and Gant talk about Tensorflow, which helps you take care of machine learning at a higher level for fast operations without calculus. Gant is working on putting together a course on Tensorflow. If you’re interested in machine learning, go to academy.infinite.red to sign up for Gant’s course. He also announces that they will be having a sale on Black Friday and Cyber Monday.

Panelists

  • Christopher Buecheler

With special guest: Gant Laborde

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Christopher Buecheler:

Gant Laborde: 

Free 5 day mini course on academy.infinite.red




in

JSJ 406: Security in Node

Today the panel is talking about security features that are being added to Node 13. AJ talks about the background and what he’s working with Let’s Encrypt. He talks about changes that Node has made to the TLS module. TLS is a handshake that happens between a client and a server. They exchange certificates, generate some random numbers to use for encryption, and TLS handles the encryption. The move to HTTP/2 is all about fixing legacy bugs and legacy features from the SSL days and reducing the number of handshakes.

AJ talks about the difference between TLS and HTTPS. While TLS reduces the handshakes between client and server, HTTPS is just HTTP and has no knowledge that TLS is going on. HTTP/2 is more baked in as both encryption and compression are part of the specification and you get it automatically. HTTP/2 is also supposed to be faster because there’s fewer handshakes, and you can build heuristic based web servers. Since browsers have varying degrees of compatibility, a smart HTTP/2 server will classify the browser and anticipate what files to send to a client based on behavior and characteristics without the client requesting them

A lot of these new features will be built into Node, in addition to some other notable features. First, there will now be set context on the TLS object. Second, if you’re connected to a server, and the server manages multiple domains, the certificate will have multiple names on it. Previously, each different server name had a different network request, but now a .gitcertificate will let you get all the metadata about the certificate, including the primary domain and all the secondary domains and reuse the connections. 

These new features are a great improvement on the old Node. Previously, the TLS module in Node has been an absolute mess. These are APIs that have been long neglected, and are long overdue core editions to Node. Because of these additions, Node Crypto has finally become usable. HTTP/2 is now stable, usable, and has backwards compatable API, and a dictionary of headers to make it more efficient in compression.

The conversation turns back to certificates, and AJ explains what a certificate is and what it represents. A certificate has on it a subject, which is a field which contains things like common name, which in the case of HTTPS is the server name or host name. then it will have subject alternative names (SAN), which will have a list of other names that are valid on that certificate. Also included on the certificate is the name of the authority that issued the certificate. AJ talks about some of the different types of certificates, such as DV, OV, and EV certificates. They differentiate between encryption and hashing. Hashing is for verifying the integrity of data, while encryption can be used either as signing to verify identity or to keep data owned privately to the parties that are part of the connection. Encryption does not necessarily guarantee that the data is the original data. The show concludes with AJ talking about how he wants to make encryption available to the average person so that everyone can share securely. 

Panelists

  • Steve Edwards

  • AJ O’Neal

  • Charles Max Wood

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Steve Edwards:

AJ O’Neal:

Charles Max Wood: 




in

JSJ 408: Reading Source Code with Carl Mungazi

Carl Mungazi is a frontend developer at Limejump in London. He is a former journalist and switched to programming in 2016. Today the panel is discussing the benefits of reading source code. Carl began reading source code because he came into programming late and from a different field. His first project was with Mithril, and he read the source code and documentation to help him understand it. The panelists discuss how reading the source code has helped them and others to improve their coding. They compare reading and understanding source code to learning a foreign language, and discuss  different methods. 

Carl gives some suggestions for reading source code effectively. He advises people to be patient and step through the code. Accept that you will probably take a wrong path at some point or another, but the more you read, the more you will see patterns in how libraries are structured. He also encourages listeners to approach the authors, as they are often happy to lend a hand. Reading source code is an active approach of stepping through, debugging, putting in break points, checking the stack, and so forth. It’s also important to do outside research. 

Since he has been reading source code, Carl has come to prefer plain JavaScript and libraries with as little code as possible. The panel discusses the benefits of small, simple libraries. Carl gives examples of techniques that he learned from reading a library source code and how he applied it to his own coding style. Reading source code has made him more careful about mixing logic and UI, and now he separates them. He also is more confident in seeing a problem, going to a preexisting library, and just importing the fix for that problem rather than the whole library. Reading source code is really about understanding the code you use in your project. It may slow you down, but you’ll be thankful in the long term because it will help you solve future bugs more efficiently. Carl talks more about his debugging process. He still relies on a debugger, but reading a library helps you to see patterns and guess the output of a function. These patterns persist in other libraries as well. Once you can guess correctly what will happen, you go back to reading the code and find instances where the output is unexpected, and fix it. Carl’s closing thoughts are that through reading source code, he has learned that although code is used differently in each library, they are all written in the same language, and therefore interrelated. This gave him more confidence in reading code because they’re all fundamentally the same. When a bug is discovered, he encourages listeners to look at the source code before googling a solution. 

Panelists

  • AJ O’Neal

  • Dan Shapir

  • Steve Edwards

  • Charles Max Wood

Guest

  • Carl Mungazi

Sponsors

Links

Picks

AJ O’Neal

Dan Shapir

Steve Edwards

Charles Max Wood

Carl Mungazi




in

The MaxCoders Guide To Finding Your Dream Developer Job

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is available on Amazon. Get your copy here today only for $2.99!




in

The MaxCoders Guide To Finding Your Dream Developer Job

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is available on Amazon. Get your copy here today only for $2.99!




in

JSJ 410: Iterating on Open Source

Today the panel is discussing iterating on open source projects. Aimee and AJ recall a conversation they had in the past on this subject and AJ talks about some of his experience iterating with open source. AJ believes that we have an obligation to capture the value of what you create so that we can reinvest and create more value, though he admits that making money in open source is a unique challenge because donations only really work if you have a project that gets billions of downloads a month. As your project grows, it has to change in order to survive, and eventually you will need to get financial support from your project. The panel agrees that some of the main issues with iterating in open source are maintaining the code and getting feedback from users, financial backing, and roadmapping and integrations.

The panel discusses their methods for getting feedback from their users. This feedback is valuable because it can show you things that you missed. They acknowledge that there can be conflicts of interest between those who only use the project and those who financially support it, and you have to make a choice. Unfortunately, someone is probably going to be inconvenienced no matter what choice you make. When making these decisions, you have to consider who it helps, who it frustrates, and who it may cause problems for. The panelists talk about different ways they’ve handled making these decisions in the past. The JavaScript experts talk about the importance of having data on your user base in order to make good choices for your users. They talk about different methods for notifying your users of upcoming changes and how it will affect compatibility, and some of the challenges with communicating with your users. AJ talks about an iteration he thought was a good idea but that a lot of people hated and how he noticed that the new users liked it but the old users did not. They panel agrees that people in general don’t like change. AJ talks about what he learned from this experience. 

Another common issue is integrating with other services. Integrating with cloud services, or at least giving people the option to integrate gives you an opportunity to reach more people and maintain the project long term. AJ gives some final thoughts to close the show, namely that most projects never go anywhere, and that’s ok. If you’ve got something that starts going somewhere, think early on about how you can better serve the community and remember that these people are mostly grateful and semi-willing to support you. He believes that if you are helping people create value, you deserve to see the fruits of your labor. He advises listeners to stay true to your open source ideals, think about your users perspective, and that the earlier you can think about this and make these choices, the better it is for your project


 

Panelists

  • Aimee Knight

  • Steve Edwards

  • AJ O’Neal

  • Charles Max Wood

**To receive your 40% OFF coupon for Manning Publications (good for all our products in all formats) visit us on Facebook - click on "Send A Message"and type "YES"**

Sponsors

  • Sentry | Use the code “devchat” for $100 credit

Links

Picks

Aimee Knight:

Steve Edwards:

AJ O’Neal:

Charles Max Wood:




in

JSJ 411: Unit Testing Jest with Daniel Caldas

Daniel Caldas is calling from Singapore. He currently works as a software engineer for Zendesk and has also worked in Portugal and Germany. He has worked primarily on the frontend with Node and JavaScript. He talks about his experience testing JavaScript, how he got started with Jest, and why he likes it. Daniel finds Jest very easy to use and straightforward. He likes that  Jest has a single reference page for documentation. He feels that Jest is largely complete out of the box and has only made a small add on to get rid of Boilerplate in some tests.

Daniel explains what a snapshot, how they work, and why he prefers fixtures over factories. He gives tips on how to set up your tests so that they are easy to follow. He finds it helps to structure your scenarios in the fixture description. He talks about gotchas in Jest. While Jest is largely easy to use, Jest has been around for a while and breaking changes do happen. It’s important to check what version your code base is using. While there are a lot of free sources around Jest online, he advises listeners to stick as close to the official documentation as possible, or to people associated with Jest, and to read recent stuff. As for conventions, Jest has pretty much everything out of the box and the built in conventions make it easy to navigate any project that uses Jest.

Daniel talks about some of the features available in Jest, converting observables into promises, and tricks he has used to make tests easier to put together. He talks about his method for keeping his mocks and stubs straight. He advises listeners to have some organizational rules, such as starting the imports alphabetically, and to always follow those rules. He talks about how he runs tests and what environments he uses. While Jest is normally used for unit testing, Daniel has also used it for end to end tests, and he talks about his experience with an open source project doing both types in Jest. Daniel concludes the show by advising listeners starting with JavaScript and frontend, don’t think too much about the library you’re going to use because you’ll probably end up using Jest. It’s more important to have unit tests and a proper testing framework at the beginning than anything else. He also invites listeners to check out his open source work on Github.

Panelists

  • Aimee Knight

  • AJ O’Neal

  • Charles Max Wood

 

**To receive your 40% OFF coupon for Manning Publications (good for all our products in all formats) visit us on Facebook - click on "Send A Message"and type "YES"**

Guest

  • Danile Caldas

Sponsors

  • Sentry | Use the code “devchat” for $100 credit

Links

Picks

Aimee Knight:

AJ O’Neal:

Charles Max Wood:

Daniel Caldas:




in

MJS 133: Jonathan Martin

My JavaScript Story this week welcomes Jonathan Lee Martin. Jonathan is an educator, speaker, and author. He has been a developer since high school and he started out by teaching at Big Nerd Ranch and currently has his own teaching brand. He teaches career switchers and senior developers and also has written a book "Functional Design Patterns for Express.js". Teaching career switchers has led him to adopt a pedagogy approach to teaching where he focuses on getting people to absorb relevant information faster. Some of the lessons he has learned when working with career switchers is the role of failure in the classroom. He noticed when something did not work in their code career switchers tended to want to start out again instead of debugging what was wrong with the code. Jonathan had to show that most of developing is turning failure into success and getting code that doesn't work bu debugging and asking for help.

Host: Charles Max Wood

Joined By Special Guest: Jonathan Martin

Sponsors

______________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

______________________________________

 

Links

Picks

Charles Max Wood:

Jonathan Martin:




in

JSJ 418: Security Scary Stories and How to Avoid Them with Kevin A McGrail

In this episode of JavaScript Jabber the panel interviews security expert, Kevin A. McGrail. He starts by explaining what security frameworks and what they do. The panel wonders how to know if your developers are capable of self-auditing your security or if you need help. Kevin shares recommendations for companies to look at to answer that question. 

Aimee Knight explains the hell she has been in making changes to be compliant with CCPA. The panel considers how policies like this complicate security, are nearly impossible to be compliant with and how they can be weaponized. They discuss the need for technical people to be involved in writing these laws. 

Kevin explains how you can know how secure your systems actually are. He shares the culture of security first he tries to instill in the companies he trains. He also trains them on how to think like a bad guy and explains how this helps developers become security first developers. The panel discusses how scams have evolved and how the same scams are still being run. They consider the importance of automated training and teaching developers to do it right the first time.

Finally, they consider the different ways of authentication, passwords, passphrases, sim card, biometrics. Kevin warns against oversharing or announcing vacations. The panel discusses real-world tactics bad guys use. Kevin explains what he trains people to do and look out for to increase security with both social engineering and technical expertise. 

Panelists

  • Aimee Knight

  • AJ O’Neal

  • Charles Max Wood

  • Dan Shappir

  • Steve Edwards

Guest

  • Kevin A McGrail

Sponsors

____________________________________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

____________________________________________________________

Links

Follow DevChatTV on Facebook and Twitter

Picks

Aimee Knight:

AJ O’Neal:

Dan Shappir:

Kevin A McGrail:

Steve Edwards:




in

JSJ 419: Google App Script with Ben Collins

Today’s guest is Ben Collins, who creates online courses, writes tutorials, and teaches workshops around G Suite and App Script. Apps Script is a scripting platform developed by Google for light-weight application development in the G Suite platform. It is an implementation of JavaScript with the express purpose of extending Google apps. App Script was started 10 years ago as a side project, and it eventually took on its own life. Ben talks about some of the different things that App Script can do and where things are stored. They discuss different ways you can get into the script and how to import external scripts from a CDN. Ben gives two examples, one simple and one sophisticated, that you might build from App Script. He talks about event triggers and how authentication is handled. He goes over the three deployment options, namely web app, app executable, sheets add-on, and deploying from the manifest. Ben talks about how triggers are managed in App Script and options for debugging. There is also the option to develop locally as well as in the browser. The show ends with him talking about how to build using HTML in App Script.

Panelists

  • Aimee Knight

  • Steve Edwards

  • Dan Shapir

Guest

  • Ben Collins

Sponsors

____________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

____________________________________________________________

Links

Picks

Steve Edwards:

Aimee Knight:

Dan Shapir:

AJ O’Neal:

Bem Collins:




in

JSJ 422: CSS and Houdini with Una Kravets

Una Kravets talks to the panel about CSS and its future. We dive into what Houdini is and how much of it is implemented in the browsers. She explains how the changes outlined in Houdini will improve the user experience on the web and developer experience for web developers.

Panel:

  • Aimee Knight
  • AJ O’Neal
  • Charles Max Wood

Guest:

  • Una Kravets

Sponsors:

____________________________________________________________

 

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

____________________________________________________________

Links:

Picks:

Aimee Knight:

AJ O’Neal:

Charles Max Wood:

Una Kravets:




in

MJS 140: Tommy Hodgins

Tommy Hodgins is a developer that typically works on A/B tests figuring out how to get websites the outcomes they want. He got into JavaScript and front-end technologies and then read a paper that led him to realize the capabilities of writing software to solve problems. He maintains a front-end focus with his A/B testing work and CSS in JS and other work.

Host: Charles Max Wood

Joined By Special Guest: Tommy Hodgins

Sponsors

______________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

______________________________________

Picks

Tommy Hodgins:

Charles Max Wood:




in

JSJ 426: Killing the Release Night with Progressive Delivery with Dave Karow

JavaScript Remote Conf 2020

May 14th to 15th - register now!


Dave Karow is a developer evangelist for Split. He dives into how you can deliver software sustainably without burning out. His background is in performance and he's moved into smooth deliveries. He pushes the ideas behind continuous delivery and how to avoid getting paid to stay late in "free" pizzas.

Panel

  • AJ O’Neal

  • Aimee Knight

  • Charles Max Wood

  • Dan Shappir

Guest

  • Dave Karow

Sponsors

____________________________________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

____________________________________________________________

Links

Picks

Aimee Knight:

Dan Shappir:

AJ O’Neal:

Charles Max Wood

Dave Karow:

Follow JavaScript Jabber on Twitter > @JSJabb




in

MJS 143: Paige Niedringhaus

JavaScript Remote Conf 2020

May 14th to 15th - register now!

Paige Niedringhaus started her career as a Digital Marketer before making the move to becoming a software developer at the Home Depot. She current works with React and Node building internal apps for them. This episode discusses the ins and outs of making that transition in a semi-recent world and community.

Host: Charles Max Wood

Joined By Special Guest: Paige Niedringhaus

Sponsors

______________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

______________________________________

Links

Picks

Paige Niedringhaus:

Charles Max Wood:




in

JSJ 429: Learning about Postman with Joyce Lin

JavaScript Remote Conf 2020

May 13th to 15th - register now!

Join us as we talk to Joyce Lin, a developer relations advocate with Postman, and we talk about this amazing tool for interacting with APIs. We discuss it’s more well-known features, and also learn about other less well known, but very powerful features that allow users to greatly increase the usefulness of the tool, both for front end and back end developers.

Panel

  • Aimee Knight
  • Steve Edwards

Guest

  • Joyce Lin

Sponsors

____________________________________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

____________________________________________________________

Links

Picks

Steve Edwards:

Joyce Lin:

Follow JavaScript Jabber on Twitter > @JSJabber




in

JSJ 430: Learning JavaScript in 2020 with Matt Crook

JavaScript Remote Conf 2020

May 13th to 15th - register now!

Matt Crook joins the conversation to talk with the JavaScript Jabber panel to talk about his experience going through Nashville Software School. The panel discusses and asks questions about getting into programming, working through the bootcamp, and what prospects are for bootcamp graduates.

Panel

  • AJ O’Neal
  • Aimee Knight
  • Charles Max Wood
  • Steve Edwards
  • Dan Shappir

Guest

  • Matt Crook

Sponsors

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

 

Picks

AJ O’Neal:

Aimee Knight:

Charles Max Wood:

Steve Edwards:

Dan Shappir:

Matt Crook:

Follow JavaScript Jabber on Twitter > @JSJabber




in

JSJ 431: Personal Branding for Developers with Morad Stern

JavaScript Remote Conf 2020

May 13th to 15th - register now!

The JSJ panel talks with Morad Stern from Wix about personal branding; what it is, why it’s important for developers, and how to build it.

Panel

  • Steve Edwards
  • AJ O’Neal
  • Dan Shappir

Guest

  • Morad Stern

Sponsors

 

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

 

Links

Picks

AJ O’Neal:

Steve Edwards:

Dan Shappir:

Morad Stern:

Follow JavaScript Jabber on Twitter > @JSJabber




in

JSJ 432: Internet of Things (IoT) with Joe Karlsson

JavaScript Remote Conf 2020

May 13th to 15th - register now!

Joe Karlsson is a developer advocate at MongoDB. He and the panel walk through the different approaches, uses, and libraries for building IoT with JavaScript

Panel

  • Aimee Knight
  • Charles Max Wood
  • AJ O’Neal
  • Dan Shappir
  • Steve Edwards

Guest

  • Joe Karlsson

Sponsors

 

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today!

 

Links

Picks

AJ O’Neal:

Aimee Knight:

  • Cutting Your own Hair
  • Joe's Appartment

Charles Max Wood:

Steve Edwards:

Dan Shappir:

Joe Karlsson:

Follow JavaScript Jabber on Twitter > @JSJabber