Adventures in Angular

Adventures in Angular is a weekly podcast dedicated to the Angular JavaScript framework and related technologies, tools, languages, and practices.

Subscribe

Get episodes automatically

015

MAS 015 Danny Blue : My Angular Story



My Angular Story 015 Danny Blue

On today’s episode we have a My Angular Story with Danny Blue. Danny is a Google Developer Expert for web technologies. In this episode we hear the story about how Danny first started coding, a method suggestion for picking a frameworks, and how vocabulary is vital for a new programmer to learn. It’s a good one, stay tuned.


How did you get into programming?

Didn’t get started until college. In school he was under the impression that you had to be a math genius to be a programmer. Didn’t even try until college. He wish he would have taken more in College. His first dive into code was ActionScript 2. He was offered a class that taught how to make Flash games and he took the class and made a few games, which he mentions were most likely awful. His game was an infinite runner with a robot. It taught him the basics like loops and storing variables.In his class he realized that as long as he understood some of the key concepts, he would be able to handle it.Soon he went out and just bought a book and after experiencing the code in action he got hooked.

Managing memory in C

Danny’s friend tried to teach him how to build a checkers game in C. He remembers the pains of manually managing memory. His feedback on malloc is that it’s one of his favorite words because it rolls off the tongue. Charles talks about how in college he had to design systems in VSDL with transistors and silicon.

How do you get from that to JavaScript Development

First job was at a swimming pool manufacturing company’s marketing department in West Virginia. He worked a lot in Dreamweaver until a man that started after him decided they were going to write all the markup and CSS by hand. From that Danny learned how websites were put together. He talks about a contact form that they wanted to animate. He knew that he could figure it out. He would use code snippets to figure out and build the animation. He started to do more and more JavaScript and teaching himself as much as he could. He did the CodeSchool JavaScript Road Trip. The first few episodes ease you into JavaScript and helps you learn where things lives. From that point he became obsessed with building things with JavaScript. Charles talks about how CodeSchool wasn’t around when he started. Modern code seem to be more complicated but it can be learned best by breaking it down into smaller bites. CodeSchool is good for that. Getting your start or foothold is the hardest part.

It’s easy to skip over fundamentals.

Charles talks about how that things like CLI came second nature for him and sometimes instructors dismiss that new students may get hung up on those sort of fundamental concepts and tools. Danny adds that there had been times where he would read articles on sites like StackOverflow that would be explaining something but even the baseline instructions has information in it that can something someone has skipped. Little pieces of information can really help pull things together. He talks about the dissociation that can happen for someone who only learned JavaScript and doesn’t know what CLI is and how hard it would be to explain the difference between JavaScript running in the browser and Node, or explaining what a package manager is, then a package , etc. Many people come into it not understanding any of it. He can remember copying commands into a terminal but not understanding what was going on.

For learning JavaScript from a basic level, what do you suggest?

Finding the beginner tutorials for stuff. CodeSchool is good, Code Academy as well. Do those first. Don’t skip it assuming you know too much to do them. After that just make something. From there you will figure out stuff that works and stuff that doesn’t. Twitter is a great resource for finding helpful people. Being in the environment helps to get exposed to the information. Mainly just write code. Charles mentions that people have grown to understand the concepts and lingo of web development by just listening. Danny also advises that if you learn the vocabulary before learning the concepts, you’ll be able to do things like Google your issues affectively as well as reading articles or talking with others. Complicated concepts end up be boiled down to single words. Ultimately you will need to be able to communicate with everyone on projects anyway.

How did you get into Angular?

While working at DualLink Digital, they started looking at a few different things, he started looking at Ember and found that he really enjoyed the concepts. One of his friends started messing around with angular and they started workshopping with it to make it work. Afterwards he started to like it, really the plain JavaScript objects. The more he worked with he, the more he started enjoying it compared to Ember. It’s interesting to see how people have moved from Backbone or React or Ember to things like Angular. One of Embers pluses is how large their community is. Charles talks about how the history of Ember is great and the people behind Ember are great. Also, the JavaScript community used to seem to have animosity against the different communities but now it’s more collaborative.

Picking the right framework.

Danny suggests that when trying to figure out what framework to go with, be able to describe in your own words why the framework you’ve picked is better. Making sure that you do understand the decisions that you are making is important. He uses the example of within the React community and the use of virtual DOM. There was a common misconception that the virtual DOM was faster than the regular DOM, which is just not true. Later the details had to be expressed to clear the misunderstanding. If you don’t talk about the specifics, you may believe something without knowing the facts behind it. Charles adds that its sort of like politics in that way.

Tell us the work you’ve done with Web Standards.

Danny talks about getting interested in web components through his friend Eric and actually interviewed at the company Eric worked at. He didn’t get the job but they stayed in touch and Eric introduced him into Polymer. He started to learn about Polymer, specifically custom elements. He remembers very early on wanting to make a custom HTML tag. He suggests that being able to do things without the framework has been a piece that has been missing. Having lower level building blocks to build off of is really exciting to Danny. He talks about using custom elements to build a familiar API surface to interact with. He talks about an example where he wrapped a bunch of HTML APIs, like the notification API and the fullscreen API, wrapping another element within it. He was trying to build things that the younger version of himself could use. He things that could be something we are heading towards more often. Danny adds that Web Components come with 4 major parts: Custom elements, HTML Imports (kind of), ShadowDOM, and templates. Custom elements allow you to create a unique piece of HTML and is the most widely accepted and supported.

What are you working on now?

Danny talks about how the Angular’s component model is very similar to Custom Element component model. Where you pass information in through properties and you listen for changes through events. You can use Custom Elements with very little setup. There is a specific Custom Elements Scheme that will let you use custom elements without any properties being thrown. You use the custom event in the exact same way and syntax as for any other component. The one issue with the source code where it parses the metadata, losing the friendly compiler messages out of the box. He is playing around with trying to find a way to whitelist different element names and properties. He wants to learn how the Framework is parsing potential data and make it easy to whitelist a set of custom elements.


Picks

Dannys

Daemon by Daniel Suarez
Bob’s Burgers
CodeSchool

Charles

VR & Augmented Reality
IoT
Artificial Intelligence
Veritone.com
Coursera on Artificial Intelligence
Artificial Intelligence with Python
Machine Learning for Absolute Beginners


Links

Twitter
Blog on Medium


This episode is sponsored by

comments powered by Disqus

TRANSCRIPT

My Angular Story 015 Danny Blue

[Music]

[Have you ever felt that you are falling behind? Or that the programming world is moving so fast but it is impossible to keep up? Then there’s the issue of where to go to make sure you’re up-to-date. The answer is to join the community dedicated to discussing the latest in Angular. I mean wouldn’t it be nice if you got Adventures in Angular all day? Well, you can! Kind of. We’ve set up a Slack team for Adventures in Angular that you can join. That means you can connect with our listeners and guests on a platform you’re most likely you are already using. Plus, we set up a keeping current channel that pulls stories from across the web to help you know what people are talking about. And coming soon, we’ll be holding monthly webinars and roundtable video chats to connect with experts in the community and with each other. So come join us in adventuresinangular.com/slack.]

CHARLES:

Hey, everybody. And welcome to the My Angular Story. This week we’re talking to Danny Blue. Danny, do you want to say hi?

DANNY:

Hey, everybody.

CHARLES:

Now, one thing I didn’t realize when we had you on the show before is that you’re actually a Google Developer Expert. Usually, we get people on Adventures in Angular and the GDE’s in Angular. And so, I kind of already knew that but you have a little bit different focus. Do you want to talk about that real quick?

DANNY:

Yeah, so I am GDE but I’m not in Angular GDE. I’m a GDE for web technologies, in general, so I’m focusing a lot on the web platform itself. So, you know, a lot of stuff for web components, server workers, and things of that nature.

CHARLES:

Very cool. Yeah and we’ve had Rob Dodson and a few other people on the show to talk about my kind of things. It’s not foreign to us but it’s really not the focus of the show either.

DANNY:

Yeah, Rob’s awesome. I think he was on… Actually, I remember listening to the episode that Rob was on just because… it’s very strange. I don’t know why but I was in the car on the way to speak at some other conference and I was lost. And I had that podcast on when I was driving.

CHARLIE:

And he was on episode 115 which was in October, a couple of months before we had you on. Good deal! We have you on this time just to ask you some questions, talk about your story, figure out how you came to be an Angular developer and do some of the crazy stuff you do. Are you ready to get started?

DANNY:

Yeah, I sure am.

CHARLIE:

Alright. The first question I’m going to ask you is how did you get into programming?

DANNY:

Programming in general?

CHARLIE:

Yes.

DANNY:

I actually didn’t get started… I’m sure a bunch of people come on and then say, “Oh, I got started when I was a kid on my Commodore 64 and all that kind of stuff.”

CHARLIE:

I was 2 years old. Yup.

DANNY:

I really didn’t get started so quite a bit later. I was under the impression. When I was in elementary school, in high school, that you have to be a Math genius to be a programmer of any kind. I really hope not or I do not know what I’m doing. I don’t know where that came from. But it’s just in my head somewhere. That is what is ingrained to my head. So it’s not something I tried until I got into college. And then, even from there, this is actually a bit of regret I have. Looking back now, I wish that I have taken more Computer Science and Math class, and stuff like that in college.

So my first real introduction to it was ActionScript2. My degree is in Graphics Technology. And I was taking a class on Flash. We were doing animation, a bunch of that stuff. The second class that we took that they offer, they said, “We can either teach you the same stuff that you’ve been doing dated last semester or we’ll teach you how to make games.” And of course, the entire class, “I want to make games!” So that’s really when it first started. It’s making flash games for school projects. It’s awesome. I actually still have it somewhere. I don’t think I have the source code anymore, which I love and be terrified to look at but that was the first computer program that I ever programmed.

CHARLES:

Right, that’s awesome. I know a lot of people that we get on these shows. They say something to the effect of, “Yeah, I got into build games.” Then, they wound up doing web development or something. But yeah, to actually get to build a game is kind of your first semi-complicated app. That’s cool.

DANNY:

I know. I remember exactly what it was. It was used to be up on my profile for a long time. It’s just a little robot. It’s just like a little Infinite Runner. You just have to move the robot and avoid the obstacles. And the further you went, the faster it went. A simple introduction to stuff, you know, like simple introductions to loops, storing variables, storing state in variables, and a bunch of that stuff. It was very cool. It was a good way to learn. I will say the next thing I did after that was a Visual Basic, which was not that fun or interesting but that’s how I started. I did both of those things before I ever got into Javascript.

CHARLES:

Nice. I worked with some flash developers. Man, that was like 7 years ago. That was the last full-time job I had. And yeah, there were doing other things but I always thought, “Man, I’d like to build the game.” Of course, people are now doing that with Canvas or SVG, things like that. And they’re also doing cool stuff like web VR and stuff like that, which I’d like to learn more about. That’s really interesting. One other thing I want to call out and I call it out every time we get somebody on that has this kind of a background. You don’t have to be like you said, a Math genius, in order to write code. You don’t have to get that Computer Science degree in order to qualify to be a professional developer. You figure it out. You get introduced to it somehow. And then, you find interesting and helpful things to do with the code.

DANNY:

Yeah, I actually remember sitting in my Visual Basic class and I think it was my senior year in college. See I graduated in college in 2011. So I remember it was one of my last semesters, I learn the flash stuff before. I wanted to do design more than anything else but I wanted to have a foundation in some of the tech stuff. And I really remember when I first… “Okay, this is some Visual Basic.” And I was like, “Oh, this is the same as the other thing that I learned before, just the syntax is different.” That was a pretty significant light bulb.

For me, as long as I understand some of these core concepts, I can try to teach myself some other stuff too. When I got my first job, I started doing Javascript. Literally, I just bought a book that again, I still have somewhere. I was just decided that I was going to learn how to write some Javascript. I mean, it was terrible. It was very simple but it worked. And I got a very big sense of accomplishment, seeing, “Oh man, it’s actually doing this thing in this one case and then, doing something else in a different case.” That was pretty much when I got hooked.

CHARLES:

Did you do anything like brain-bending like going with list per scheme, or something like that?

DANNY:

Oh no, I didn’t do any of that until much later. Let’s see. So I learned Javascript, at least somewhat. Then, I have a friend, his name is Cody Henthorne, he’s actually a GDG Organizer in Baltimore. He is a Master’s-of-Computer-Science-type of guy. I worked with him. I worked with him for a number of years. He tried to teach me C. He’s trying to get me to play a game of ASCII checkers in C. Never finished that but it was an interesting experience and make me appreciate not having to worry about manually managing memory.

CHARLES:

Oh, yeah. I remember that nightmare from college. I was a Computer Engineering major, not strictly speaking Computer Science but yeah, I mean, free(), malloc(), oh headaches.

DANNY:

Oh, malloc is one of my favorite words to say, in general. It feels like it rolls off the tongue very well but yeah I just remembered. What do you mean? You have to manually put different bits in different places if you want to access them from different places. It is absurd. I’ve actually been thinking about some of that stuff quite a bit. There’s a very good… this is going to be one of my picks. We could talk about it more, later. There’s a very good series on YouTube called Crash Course and they have one called Crash Course Computer Science. And they walk you up from logic gates, all the way up to memory. Seeing exactly how those stuff work compared to what we have now made your brain hurt a whole lot.

CHARLES:

Yeah, those are the classes that I was taking in college because as I said, you know, I was in engineering major, not a computer science major. Yeah, it was all of that design, just the logic, and how you arrange all of the gates, and all of the transistors, in order to make all that work. We actually had to design different systems using VHDL and stuff, you know, to build those things. We actually had one class, we have to lay out the transistors in the different layers of the silicon. And then, run the simulator to have SPI bus run. If you’re curious what that is, it’s an SPI bus. You can go look it up. But yeah, I mean, just crazy stuff.

DANNY:

The whole thing feels like a trick. It really does like. When you figure out, “Oh, well okay. This is actually stored in memory just because it kind of get stuck somewhere, doesn’t have anywhere else to go. This whole thing is built on top. This whole thing is a house of cards. It can come down any moment.

CHARLES:

Yup, absolutely. So yes, you did some Visual Basic. You figured out, “Hey, look if I understand one programming paradigm, I can probably figure out the others.” How did you get all the way from that to do things like web and Javascript development?

DANNY:

A lot of it started at my first job. My first job, when I got out of college, I was working at a swimming pool manufacturer, marketing department in Jane Lew, West Virginia, an enormously small town, if that makes sense. But there was a guy, I’m still in contact with him. He’s name is Daniel Marshall. He started after I did. When I was in school, to do web stuff, we did a lot of stuff in Dreamweaver. We learned HTML and CSS, code the stuff in Dreamweaver. So that’s my first job. That was also what they were using. Okay cool, I should try it. That’s how I understood markup in CSS and everything else, not yet Javascript. He started, I want to say, like maybe 3 months after I did. He said, “No, we’re not doing that anymore.” We’re just going to write all the markup, all the CSS by hand.

From that, I started to get a better understanding of just how web pages were put together. And from there, there was a very specific task, where we had some little contact form on the side of one web page. And if we click on it, we wanted it to animate out. From there, I was like, “Okay, I’m sure I can figure out how to do this.” I don’t even remember what the website was called. There was a website I used to visit all the time. It has code snippets of random stuff you would just copy and paste and run. I started figuring out a little bit of JQuery and I got that little side menu to animate in and out when you click on it, which was awesome. From that point, I started to do more and more Javascript.

Actually, I thought myself as much as I could. And then, I ended up doing the Code School – Javascript Roadtrip. Whenever somebody wants to get into some of that stuff, I still really highly recommend those. They’re very well done. And they ease you into it a lot. I think even the first few episodes. They even talk about web page or script languages. You just open your console. You can start typing Javascript code into it.

CHARLES:

Oh, nice. That makes sense.

DANNY:

It is really cool. You get a little bit of a better… helps you with understanding just like where stuff lives. From there, it kind of became a bit of an obsession of just wanting to build things. I guess it kind of snowballed into where I’m at now.

CHARLES:

Nice. It’s also very fascinating to me. When I was learning web development, it was back in the early 2000’s. And there were websites that would help you learn it but nothing like the Code Schools and things like that, that are out there now. It’s refreshing in some ways to know that, hey look, if somebody wants to come into this now, there are all kinds of resources out there.

DANNY:

Yeah, there’s a lot of talks around about how complicated modern development is. I’m not discounting that. It is complicated. I tend to agree with the idea that it’s complicated because we’re trying to do complicated things. Some people don’t agree with that. That’s totally fine. But with anything else, if you break it down to small enough bites, you can get into it. You don’t have to… if you’re just learning web development in general, don’t jump into the web pack tutorial.

Some of that I think, as a community, we could do a bit better job of kind of guiding newcomers up here where you could go first. It’s one of the reasons why I recommend Code School and just going through it from start to finish. Don’t just jump into the one. Go from the very beginning to the very end even if, “I already know it variables are.” Even so, just do it. As a community, I think, we can do better guiding because you were saying that there were some resources but you know, we’re spoiled. With how many resources we have now for learning stuff, I think, even that large surface area could potentially be intimidating for somebody coming into something. Like, I remember the first time I did a tutorial, like, you need to download this CLI tool. What is a CLI? You skipped over an entire thing that I have no idea about. It can be tricky finding your foothold as it was to get started.

CHARLES:

Yeah, that makes a lot of sense. I mean, I came from a background, when I was learning to program, where I had done IT for… well, I take it back. I have been doing IT and network maintenance and stuff in my classes. The command line was just second nature because I was using those at work all the time. But yeah, I’ve run into a lot of people where they get hung up on something like that. And the instructors… it’s so foreign to them. It never occurred to them that, “Oh, somebody might actually get stuck on CLI.” What is this? What am I dealing with here? You know, what does it actually do? I think a lot of times, that’s where some of this stuff falls down. I recently ran across a thread on Reddit, where somebody was complaining about Ruby on Rails tutorials. And you know, they were complaining. A lot of it is a moving target because Rails continuously updates. But also, a lot of them, just don’t understand where somebody’s coming from with the basics.

DANNY:

It can be really easy to skip over stuff, as well. Kind of dipping into some Angular stuff straight away, before the tooling was as good as it was now, it was sometimes… you’d be looking at a Stack Overflow post, and they’ll say, “Oh, you just import. You need to override this provider.” I’ll be like, “I have no idea. What package does that provider come from?” I don’t know. Now, you just start doing and you just know. And the IntelliSense and stuff help you unlock but at that point, I don’t know where this package is coming from.

Like there are these very little pieces of information that really help. And sometimes, it seems like they don’t make sense. To this day, that’s why if I ever post a response to somebody, to somebody who’s trying to figure out anything out, I always show the import statements at the top of the file. I don’t just straight there because I remember that being a problem. Same with the CLI stuff. I was saying it was complicated but if you’re not familiar with CLI, you’re just learning Javascript, how do you tell somebody the difference between Javascript running in the browser and Node? How do you explain to them that this is what a package manager? NPM is now a package manager for Node. And then, you have to explain what a package is.

This is before… And I’m really talking about someone who has no experience coming into this stuff. Absolutely none, which is roughly where I came into. And I remember just having so many problems with that because I was like, I didn’t know what command lines are for. It’s like when you see something but you can’t really grok what it is. It’s like I could copy and paste a command into the terminal but I didn’t understand what each of those pieces of that command meant. That can be frustrating. It’s ordinarily frustrating for people who’re just getting into it.

CHARLES:

Yeah, absolutely. So I’m going to deviate a little bit from my questions, then. If somebody is new and they’re trying to get into Javascript, Angular, or something like that, and they don’t have experience with some of these things, what do you recommend they do just to get their head around what’s going on?

DANNY:

So a couple things, I think, find the beginner tutorials first off. Code School is really good. Code Academy’s pretty good but they don’t have the videos. And one of the reasons I like Code School is kind of gives you videos and the hands-on coding challenge. Do those first. Don’t feel like, “Oh, I know too much for this part.” Just do it. Start with those extraordinarily basic, boring programs that you’re going to write at the very beginning. After that, I honestly don’t have a great answer of where to go next. It’s kind of like, so do you ever play Guitar Hero, Rock Band?

CHARLES:

Yup.

DANNY:

So you know how the biggest jump was? The jump from easy to medium was pretty straightforward. The jump from medium to hard was extraordinarily difficult, at least for me. I kind of feel like it’s the same way here. Personally, I don’t know what a good answer is for me. For me, it’s really just practice. Okay, build a few tools in your tool box and try to make something. Don’t worry if it’s a PWA. Don’t worry about other things that people are really concerned about nowadays. Just try to make something. From there, you’ll figure out stuff that works and stuff that doesn’t work.

There are people… there is enormous community out there. I think Twitter is actually a really good place to be in general. And you can kind of find the people that you know are helpful. This is not to say that don’t just email people that you see online, directly asking for personal help with projects and things like that. But just kind of being in the environment, you can start to absorb a few things. Or maybe somebody will post a link to something that isn’t relevant to you now but in a week, you’ll like, “Oh, I remember somebody posted out about this.” And so from there… I was saying I don’t know exactly what to do but I think it’s really just practice. You just have to do it. You just have to write code.

CHARLES:

Yeah, that’s really true. One other thing that I have run across is that people tell me about the podcast, where it’s like, and “You know what? I started listening to Javascript Jabber or Adventures in Angular because I was interested in learning it. And 90% of the time, you were talking about stuff that I don’t even have professional context to understand what you’re talking about but as time went on, I kind of grew to understand a bit more of the jargon, a bit more of the lingo, some of the concepts behind web development or Angular development, or whatever. And that’s kind of how they grew up to it. And then, doing what you talked about and then going to these communities online – Stack Overflow or whatever. And getting help, asking for help, looking for feedback and things like that, and between all of those things, that’s where people really kind of had things happen. You kind of have to get out there in the deep end and just be fighting to keep your nose and lips above the water so you can get a little bit of air. And then, you’ll kind of figure out how to stay above the water.

DANNY:

I actually have one other tip as well. And that is to… a lot of people don’t put a lot of stock in the vocabulary, necessarily, it’s more about understanding the concept and the actual terms. I tend to disagree with that. I think you should get enough vocabulary that you can Google things well. You know, it’s very hard to explain to Google an abstract thing that you’re trying to find versus if you know the right words. So in the vocabulary, it is how to ask Google technical questions.

CHARLES:

That’s true. And the other thing is that people are going to describe the answer or the question in those terms anyway. And so it does make a lot easier to find those answers but the other thing is that a lot of people like to ignore this part of programming. But ultimately, most of the time you’re not going to be building your own app all by yourself and so you need to be able to communicate with other people anyway. And understanding the lingo, the jargon that they’re using, is a shortcut for explaining what’s going on because you have these complicated concepts that are essentially boiled down to one word or two words.

DANNY:

I think an easy example of that is if somebody has a list of stuff and say, “Oh, just iterate over that and do x, y, or z,” versus saying, “Okay, I need you to write a for loop that is exactly this length.” You know what I mean. I think a shortcut is a really good… it’s like a macro for complicated concepts.

CHARLES:

Yeah, well even in Angular, if I’m talking about a component, then, you know, I’m talking about a bit of logic that has a layout, styles, you know, the whole bunch of other stuff in Angular 2 or later. Just by having that conversation, I can shortcut all of those pieces and just talk to you about, “I have a component that does this.” And you automatically know that I’m talking about maybe the area of the page it displays or the logic that’s involved, or both. But I don’t have to explain that that has logic that does this and layout that does this. You kind of intuitively know that they include all of those things and that has a responsibility.

DANNY:

Totally agree.

CHARLES:

Let’s move on to the next question. So you get into Javascript, you’re doing web stuff, life is great, and then, Angular, how did you get in Angular?

DANNY:

I was working at Deloitte Digital at the time and we were starting to take a look at… this was very early days. We haven’t picked a framework or anything that we’re going to try to specialize. We started looking at a few different things and I originally sort of looking at Ember. And thanks because Code School has a tutorial for it. But I started looking at Ember and found that I really liked a lot of the concepts. I really liked the Router. This was before Ember CLI. It’s out now. So I mean, the stuff that I was doing was really not… but I remember the concepts.

We had a few other people who have heard about this Angular thing. I actually think it’s my friend, Paul. His wife is also a developer and she has started messing around Angular… I don’t even remember what version it was at the time. But she started messing around with that and we’re like, “Okay, let’s workshop that a little bit as well.” And we started trying to make stuff work and pretty soon, I was finding myself to like the plain Javascript objects. I didn’t care about dirty checking or what was going on under the hood at the time. All I knew was, “I changed a property here and now it’s different in the view.” I didn’t have to do anything. So again, it was kind of begrudgingly…. It sounds like, “Why do I really like Ember?” And then, I partially got outvoted and then the more I work with it, the more I found myself to enjoy writing the code that I was writing. And then, you learn more. I was enjoying writing the Ember code.

CHARLES:

Yeah, that makes sense. I mean, that said, I do want to call out that Ember broke a lot of ground for a lot of the frameworks that we have today. So it’s kind of interesting to see how people have moved on from say, Backbone to Ember, or Knockout to React or Angular. And who knows what we’re going to wind up in the future? Whether it is later version of Angular or later version of React, or whether there’s something else is going to come along. It’s going to revolutionize things all over again.

DANNY:

I mean, Ember guys are still tracking along too. I mean, Ember is not gone. Ember has still a really good… one of Ember’s big pros, which they still have, is that their community is really good. And maybe part of that is because it’s a bit smaller than the others. Maybe it actually makes it better. But they just released their Glimmer engine, really not that long ago, that a lot of people were talking about. If you’re using Ember and Ember CLI, you automatically use Glimmer. But you can also use Glimmer on its own if you want. I’m still behind handlebars. I stay behind handlebars because I know some people don’t like handlebars. I played around with it for a little bit. Those guys are still doing a lot of really good stuff.

CHARLES:

Yeah. So I got my start in Ruby and so I knew Yehuda, I’ve talked to him plenty of times. Tom Dale is another person that I’ve had the pleasure of speaking with a few times. So I mean, a lot of great stuff going on there. I remember when they started. It was just like, “Holy cow, this is really nice having a lot of these features in the browser.” And yeah, being able to build front-end up from there. Anyway, there’s some great history there. And yes, I have plenty of friends in the Ember community that are just terrific people that really pull a lot of weight for the framework and for people who try to come into it.

No intention or whatever to say that they’re gone or dead. And that’s the other thing, it’s that I see a lot of people out there in Javascript that it used to feel like that maybe there was a little bit of animosity between some of the frameworks and communities. But it seems like a lot more of it is collaborative now. And so you know, a lot of people don’t begrudge anybody using Ember or React, or anything like that. It’s like, “Look, if that makes sense for your problem set, then, go for it.”

DANNY:

Yeah, this is a little bit of a side bar. Since we’re talking about a couple of different frameworks, whenever you are trying to evaluate a framework, make sure that you can explain to somebody why you picked a certain framework in your own words, not just the bullet points on the first page of the website. Because I think, one of the pros of Angular, for example, is dependency injection. So you can get, “Oh, I like Angular because of dependency injection.” That’s fine.

If you don’t have a real concept to what dependency injection is, it’s not that it doesn’t mean anything, but it’s just making sure that you do understand, as much as possible, the decisions that you are making. This actually happened a little bit in the React community, a little bit with Virtual DOM on. So they really popularized the concept of a Virtual DOM. And now, there’s Preact and Inferno, a ton of other things. I think Glimmer might use a Virtual DOM as well.

CHARLES:

I think I’ve heard that but I don’t know for sure.

DANNY:

I don’t want to say that with any sort of certainty but I believe I’ve heard that. And so, there became this idea that Virtual DOM itself is faster than Regular DOM, which is false. It’s just not true. And Dan, he has a very simple last name that I cannot pronounce, for some reason.

CHARLES:

Dan Carlin or somebody else?

DANNY:

No, from the React community.

CHARLES:

Abramov?

DANNY:

Yeah, yeah, there you go. But they kind of come up… it’s not that it is faster but it’s helping to provide you a way to write more performance codes more easily.

CHARLES:

Right.

DANNY:

But to come out and say that because that’s kind of where the terminology went and kind of define itself naturally. So it’s one of those things that… make sure you do your homework and try to understand something as much as you can, so you can decide for yourself, oh I don’t like this or yes I do like this.

CHARLES:

That’s funny. That’s what a tell people about politics.

DANNY:

It’s kind of the same thing! Right? If you don’t talk about the specifics… it’s the kind of things like I like Kennedy XYZ for these reasons. Why? Have you read any of his policies? No. It’s the same thing with frameworks.

CHARLES:

Well, or you know, blindly supporting a particular issue when you don’t really understand all of the facts or numbers around it.

DANNY:

Yup, 100%. Yup. So yeah, you’ve done a lot of stuff in Angular, you’ve also done a bunch of stuff around web standards, and you want to talk about some of the things you’ve done there?

DANNY:

So I’m not mentally involved with any of the actual… the people who actually make a lot of the standards or anything like that. But I started getting really interested in web components through my friend and host of Web Platform Podcast, Erik Isaksen. I actually interviewed at the company that Erik worked at, at one point with Erik. I didn’t get that job. But he and I stayed in touch for like, I don’t even remember exactly how it came about. We just started talking about different stuff. He got me interested in Polymer. He’s the first person who actually said the word ‘Polymer’ to me.

And this was also… I know Polymer web components… that stuff, I tried to learn about what exactly the spec was. And I got really really excited about, what specifically custom elements… Custom elements are the ones that I like. I like the others. Custom elements are, in my opinion, the good ones. But the reason being is that I remember very early on when I was first learning web stuff, I wanted to make a custom HTML tag. And I remember looking up, because it sounds like, “You must be able to do this.” This must be a thing that you can do. And I remember looking up, how to create my own custom HTML element? And then everything was just, “It’s nothing you can do. You just can’t do this.” And then, I get air coming like, “Oh yeah, you can do that.” I got really excited about it.

I got excited for my past self to be able to do some of this stuff. And the idea of being able to do things without the framework is, you know, which you can, but it’s a piece that has been missing. I believe for a very long time on the web. We’re getting there. We’re not there yet with the browser vendors. And there are some people, you know, they are frustrated about the custom elements for XYZ reasons, not being able to pass Javascript objects to attributes, and things like that. But I just say that’s just how HTML works. Having these lower-level building blocks to build other abstractions, I think is really exciting, especially building non-UI custom elements. I have an example but not a really good one.

One of the first things that I remember learning is here’s an HTML element on a page, here’s how to grab a reference to that element, and do something with it. An event listener passes it to property or something like that. That’s an essential building block to a lot of web developers to start with. Okay, I need to be able to interact with the things on the page. This is how I do that. If you have custom elements, you can give people a familiar API surface with which to interact with the web page. For example, when I was messing around of this stuff, this was back in v0 days for the custom elements, I just wrapped a bunch of HTML 5 API’s. Like the notification API, I did something with the full-screen API where you could wrap a full element with another element in it. I don’t remember exactly what it was.

But it was a way to full-screening either an entire page or certain elements on a page, things like that. And I was trying to build things that I thought that my very early on self would have been able to use. I think that’s a really exciting thing that we are heading towards that hopefully continue on the path they’re on – in a lot of frameworks. Use them rather than your own component model. Use compile down the custom elements.

CHARLES:

Gotcha. Yeah, there’s a lot of really interesting stuff that you can do with the web components. Is that right term?

DANNY:

Yeah.

CHARLES:

And yeah, it’s just really cool to see, okay, here are some examples, here’s how you use these things. And then, the fact that you know, we have this explosion of frameworks. It works with most the frameworks.

DANNY:

To clarify, web components consist of 4 specs. They are custom elements, HTML imports-kind-of, going to leave that one for a little bit, shadow DOM, templates – the templates and templates tag. It’s consistent with these 4 specs. And the custom elements are the ones that let you create unique piece of HTML. And that is the one that is the most widely supported in browsers now. That’s the one that everybody seems to be able to agree on. That and the template tag, which I actually think might already be in everything, which is great. The template tag is a small one that is kind of an easy win that eliminates the need to have script-type equals… proprietary thing equals text/handlebars, templates/handlebars, or something like that, and have your stuff in there. It’s just a way to get a little piece of inert DOM that you can then clone, and then do what you will.

CHARLES:

Yeah, that makes sense. Alright, the next question is, what are you looking on now?

DANNY:

So I’m still very interested in the Angular-specific interact story with web components specifically, again, specifically with custom elements. Angular’s component model very closely matches the custom element component model, if you will, where you pass information into properties and listen for changes through events. Because of that, you can use custom elements in your Angular application with very little configuration. There’s a specific custom elements schema that you can include in your NG module definition that will allow you to use custom elements without any properties being thrown.

I was very excited when I just, okay, this is a component and that’s a custom event. You use the exact same syntax you would in any other Angular component. You can’t distinguish between the two unless you’re actually looking, which is really perfect. That’s exactly what you want. The only thing that I don’t like about the story right now is the fact that you have to do the custom elements schema. If you actually look in the source code that parses that metadata, there’s just a line that says, you know, if the schema name is custom element, return. You lose some of the friendly compiler messages that Angular gives you out of the box. So one of the things I’ve been planning around recently is trying to figure out a way to whitelist other custom element names, even properties, and that kind of stuff. So it’s very big into the introductory between Angular and custom elements.

I haven’t posted anything about it specifically but right now, that is what I’m working on. It’s trying to see how the framework is actually parsing this metadata, how we can potentially extend to make it easy to whitelist the set of custom elements so that you get the same type of safety from custom elements as you do from Angular components, which would be fantastic.

CHARLES:

Yup. Awesome. Well, the last section of this. You’ve been on the show before so you know what picks are.

DANNY:

Yeah.

[Music]

[This episode is sponsored by Newbie Remote Conf. Newbie Remote Conf is a 2-day completely virtual conference hosted by, none other than, Charles Max Wood. If travel expenses are an issue where you just can’t afford to be away from home for 2 days. Then, join us! It’s virtual. This conference is focused on people who are new to programming who want to learn what the pros know, or just get a leg up, and getting a job, and getting into the programming community. We will have speakers from all over the programming community to help you stay current in a Slack room where you can connect with speakers and other attendees in real-time. We’ll also have a live roundtable video chat for attendees and speakers. Plus, we’ll provide the top recordings to you within days from the conference.]

CHARLES:

Yeah, do you have some things you want to shout-out about?

DANNY:

Sure do. So one of the first things that I want to shout out specifically is actually a book that I’m reading. It’s called Daemon by Daniel Suarez. I don’t remember what year it was published but it’s a really cool tech mystery piece of fiction. It’s very cool. Buddy of mine has been a developer for a very long time recommended it to me. And I’ve been enjoying it quite a bit. I’ve one other none-programming-related pick. And that is actually the show Bob’s Burgers. If nobody has watched it before… because it is one of the shows that my wife and I 100% agree on. And I think it’s the best animated primetime-ish cartoon that’s out there.

And then, my last pick which is programming-related, I’m actually going to give to Code School, specifically. I was thinking about it before but especially when I talk about it earlier, I owe them quite a bit for where I’m at because I did learn so much from them. I just feel that they deserve the shout out. And they have a bunch of other stuff besides web, as well, like they’ve got Native iOS, they’ve got back-end stuff. My wife did a course on SQL just for fun to learn stuff. They have a ton of really good stuff on there. So go check them out.

CHARLES:

Yeah, I don’t love SQL. So I would love to see a post for SQL for fun.

DANNY:

Oh, their videos are so good. They’re so animated and fun.

CHARLES:

Yeah, they are. Their parent company is actually about an hour from my house. Yeah, they got a lot of good stuff too. The founder and former CEO of Code School, Gregg Pollack is part of the reason why I got to podcasting in the first place.

DANNY:

Oh really?

CHARLES:

Yeah. And they’ve sponsored the show, as well. So I mean, I’ve got a lot of interesting tie-in with that particular company. And yeah, I can’t say enough good things.

DANNY:

I will say that I did not know that before I pick them as one of my picks – so totally independent.

CHARLES:

Yeah. Well, let me jump in here with a few picks. I’m going to wax a little bit philosophical and future’s thing, which, you know, I could be totally wrong on this stuff. But I’ve been talking to quite a few people and I’ve been watching some of these companies that are out there, innovating in the space of programming and what we can do with what we have today. And I really feel like we are in a sort of prime for an explosion of technology-related things, similar to what we have through the web over the last 20 years.

You know, the web is kind of the new thing. I remember my parents finally got the internet, right? And there were like 10 pages you could go on. There are more than that but you know, there was a ton out there. I remember playing with websites like Geocities and Angelfire, stuff like that and learning how to do web development, you know, just for fun in high school. I thought programming was a total joke when I was in college and then got into it after I graduated. But I feel like we’re really kind of prime for another explosion in some areas. I think it’s going to be a few years before we really see what all the capabilities are. A few of these technologies are becoming approachable enough to wear. I know people who own like VR headsets. It’s one of the areas of technologies and a lot of people who do a lot of stuff with IoT. And the other area that I feel like we’re going to grow into is Artificial Intelligence.

As we are competing capabilities grow, there are cloud platforms that do a lot of API stuff at this point with large datasets, and things like that. And I really feel like all 3 of these things are just kind of up and coming areas where there’s going to be some kind of tie-in between all of them, especially between Artificial Intelligence and Virtual Reality or Augmented Reality. Just as it senses the world and makes sense of what it’s picking up, and then, giving us other ways of experiencing what the world is in VR and AR. I went out and decided that okay, I’m going to pick up one of these areas because I really want to learn more about it. I also was talking to a company that has a platform. It’s called Veritone. Veritone.com – I think that’s their website. Anyway, they have a platform for Artificial Intelligence. You can write algorithms for it in Python and Javascript, so I’m going to pick that. But I’m also going to pick a couple of books that I’ve picked up for this. I haven’t finished these books yet.

And I also signed up for the Coursera course on Artificial Intelligence. We’ll put a pick in for that as well. But then, the first one is Artificial Intelligence with Python and this is by Prateek Joshi, and highly recommend it on Amazon. Then, the other one is Machine Learning for absolute beginners. I’m assuming that this is much more for business people or non-technical people, who are kind of coming into the field and trying to understand what the collection of capabilities is that we’re talking about when we talk about Machine Learning. Anyway, I’m excited to kind of get into both of those. And then, the first week of the course, I think ended last week. And I haven’t watched the videos or anything so I need to get caught up on that. Anyway, I’m excited to really dig into what Artificial Intelligence is about and just see what the capabilities are. It seems like the languages that most people are doing this kind of thing with is Python. And then, I’ve seen a lot of movement in Javascript with Artificial Intelligence so I’m excited about that.

And Virtual Reality, I mean, you can write web VR. I think there are VR capabilities for some of the Native platforms in Javascript. I don’t know how mature they are but I know people are working on those. And you know, IoT is being done with Javascript among myriad of other languages. I feel like a lot of this stuff really has legs. It’s a place where we, as Javascript and web developers, can take our skills and kind of branch into the next big explosion of technological advances. And so, I’m super excited about this stuff. I’m definitely excited to see what comes out over the next few years at CES. I’ve been also going to the Microsoft Conferences. Microsoft actually provided my way there. And then, we’ve done podcast episodes while we’re there as well. So that’s been easy to attend and go to VMworld this year. I’d like to make it out to AWS because they have a lot of platforms for this stuff. And I really think that there are really some exciting innovations that are coming around the corner over the next couple years.

So yeah, big long rant just to pick a couple of books and a course but anyway, really excited about that. I’m currently working on launching 2 new podcasts for the podcast network. I might do a third on Artificial Intelligence.

DANNY:

Oh, that’s very cool.

CHARLES:

It’s an interesting thing. There are other AI podcasts out there but none of them really focus on the art of programming for Artificial Intelligence. I think that’s really an area where yeah, you understand kind of the broad strokes on how neural networks work or things like that, but then, how to actually build them. I think it would be really cool podcast.

DANNY:

I would listen to that. That sounds very, very cool.

CHARLES:

Well if you’re interested in it as a listener, then, feel free to email me. Check Devchat.tv and let me know because if I’m seeing a lot of interesting support in this, that makes that a lot easier to just go ahead and pull the trigger. Alright, well. Danny, if people want to follow you, figure out what you’re working on these days, maybe you have an interesting blog or cool stuff on Twitter, maybe Github, where do they go to kind of see what Danny’s up to these days?

DANNY:

I’m pretty active on Twitter. I’m deebloo on most things. The only difference is Twitter. There’s a little underscore in there because somebody else has deebloo for some reason.

CHARLES:

I know right.

DANNY:

I don’t appreciate it at all. That’s mine. You should have known better. But you can find me pretty much anywhere online. I go by one of those variations. I’m fairly active on Twitter. I try to share out any cool stuff that I find. I do a little bit of blogging in Medium. I got a post specifically about custom elements in Angular. I’m hoping, as long as the stuff is going well, I’ll be posting something about some of these custom schemas as well. And yeah, for example, I forgot to throw this in at the last minute. There’s an article up right now that I just retweeted about using closure compiler with Angular, which is very cool and very exciting. If you want to check out some cool stuff, that’s where you can start.

CHARLES:

Alright, sounds good. Well, we’ll go ahead and wrap this one up. It’s a little longer than normal but I think there’s great stuff in here. I really appreciate all you’re doing out there in the community, Danny.

DANNY:

Thank you very much. I’m very excited to be here.

[Bandwidth for this segment is provided by Cachefly, the world’s fastest CDN. To view your content fast with Cachefly, visit cachefly.com to learn more.]

x