Join our weekly discussion about how to build top end Angular applications and become an Angular expert.
Similar Podcasts
Flutter 101 Podcast
Weekly podcast focusing on software development with Flutter and Dart. Hosted by Vince Varga.
Views on Vue
Vue is a growing front-end framework for web developments. Hear experts cover technologies and movements within the Vue community by talking to members of the open source and development community.
React Round Up
Stay current on the latest innovations and technologies in the React community by listening to our panel of React and Web Development Experts.
AiA 151: WebVR with Aysegul Yonet
AiA 151: WebVR with Aysegul Yonet The panel for this episode of Adventures in Angular is Alyssa Nicoll, Joe Eames, Lukas Ruebbelke, and Charles Max Wood. Special guest Aysegul Yonet is here to discuss WebVR and visualizations. Tune in to learn more! [00:02:36] Can you really do VR with Angular? Yes. VR is a different kind of API. [00:03:07] Can you give a brief explanation of how Web VR works? Web VR is currently an experimental API. It creates 3D experiences that interact using the gamepad API. Angular and Web VR work together by writing more declarative experiences. [00:04:05] What do you mean by it being experimental? Things are changing quickly. Not all browsers are implemented. It has to be enabled in Chrome, it can be enabled in Firefox, but not all other browsers implement it. A 2.0 Web VR version is being created, which will be similar to the version that is out now. [00:05:05] VR in a Predictable Manner Not enabled in some of the browsers but can check it and leave a message. Once you have an available browser, there is a consistent interaction. [00:06:30] What kind of hardware is required to run the VR experience? VR is now very accessible to everyone because of Web VR. Google Cardboard is one of the cheapest ways. It is around $20. Samsung VR headset is free. Also can purchase cheap hand controls. Developers do not have to go through app stores to release a product, which makes it cheap for them as well. [00:08:30] What are three cases that you see Web VR that could be disruptive? One case is in the education field. Google Expedition is creating an app for teachers to create experiences for students to see different places such as museums. A second case is in the medical world. Web VR can be an amazing pain killer. It has been used in Leukemia patients. For example, kids don’t want to take medication but using VR they can fight the disease itself. A third case is the Smithsonian Museum in DC. Artwork was scanned through VR and 3D experiences created through that. [00:14:35] Where would you recommend we start to try out VR? A-Frame is the easiest to use for beginners. You don’t need to know how to use 3D. It has Angular components. There is also Play, where you can take any experience you want and work off of that. Sketchfab is an app where you can use 3D models. There is also a Google app that takes 360-degree 3D pictures and turns them into experiences. [00:16:44] Would those 3D pictures have sound or just an image? Yes, it does have sound as well. [00:17:52] Does A-Frame have components that you feed data to? It is just like any kind of Angular component. It seems foreign to web developers because you are creating a scene. But A-Frame makes it easy for you: just have to add the objects itself. You have components for a scene. [00:19:14] How do you program the interactions with objects in Angular/Web VR app? Interactions are not the easiest to program. Trying to solve the problem itself. You can take data through the Gamepad API. You can also use Itracking where you look at an object and select it. [00:20:14] How long have you been doing this? Not long - she was “dying to work with WebVR.” She had a chance to work with Play and had fun. [00:21:00] Could I built a desktop app with Electron? Will it work in Chromium? Yes. [00:21:20] Will it work in the embedded Safari or Chrome Views that you get on Android or the iPhone? Not sure. But it can be loaded unto a website and downloaded onto your phone. [00:23:00] Fairly approachable if you have a SmartPhone. MergeVR has a Goggle and Cube. It can create VR experiences for kids. The product is affordable: only $60 for Goggles and the Cube is $20. [00:24:20] How do you test it? Hard to test because it is visual based. There is a Chrome plug-in that helps. The mapping is very mathematical, which is an easy part to test. [00:25:30] Is there anybody in the WebVR space that you admire? A-Frame team has done a great job. The 3JS creator Mr.Doob has been developing for a long time, before the community there is now. Companies have been using his stuff for years. Brandon Jones, who is implementing WebVR on the Chrome team. [00:34:47] How is VR development different from web development? Other than the interaction, writing the code isn’t all that different. The tool used was created for websites with 3D capabilities. Usability is different. There is an adjustment curve with VR: people navigate VR with a mouse better than with a headset. Picks Lukas: Fantastical App Ketogenic Diet Keto Cheesecake Charles: 2 Keto Dudes Podcast Keto Clarity by Jimmy Moore Livin’ La Vida Low Carb Podcast Keto Pad Thai Joe: Rogue One Never build a house Aysegul Cardboard Camera App Voices of VR Podcast You Are Not So Smart Podcast Merge Cube Links Twitter GitHub Special Guest: Aysegul Yonet.
AiA 150: What's New with Ionic with Mike Hartington
AiA 150: What’s New with Ionic with Mike Hartington In this episode of Adventures in Angular the panel is Ward Bell, Alyssa Nicoll, Joe Eames, and Charles Max Wood. The panel talks to special guest Mike Hartington about Ionic. Tune in to learn more! [00:02:02] Introduction to Mike Hartington Mike is a developer for the Ionic framework. He helps people succeed on Mobile. [00:02:40] What have you been working on lately? Ionic is currently going through an investigative phase. They are moving things to a vanilla JavaScript state and web component based architecture. [00:03:02] What do you mean by web component based architecture? Throughout all different frameworks (such as Angular, React, Ember) and libraries have a similar concept of a reusable thing. It is a custom element they can ship, which becomes limiting. It only works in their specific framework because the API capability isn’t there. Ionic wants to make something that works in all frameworks. [00:04:27] When you’re talking about web components, you’re talking about the idea of components? No, talking about the web standard itself. [00:05:25] What does this mean for people who are used to the way Ionic works with Angular? When implementing these experiments in new releases, it shouldn’t change for people who are currently using Ionic and Angular; everything pretty much stays the same. There is a slightly smaller payload, but that’s it. [00:06:32] As essentially as Angular developers, we will actually be interacting with an adapter? More or less. There would have a single Ionic Angular package. Everything it needs to have the web components talk to Angular would already be including as soon as you started the entire app. [00:07:16] If I became another kind of developer, we will be able to get the same experience because there will be a way to interact with other web components? Yes, that’s the vision. It was the idea when we first started Ionic. It is easier to implement now than when Ionic first started. [00:09:20] Do you think it is limiting to our creativity as developers? Can still create something new within Ionic and have something more custom to your needs. [00:12:26] If I have something that adapts to something else, is that going to impact performance? It shouldn’t. The code would not be heavy; it would be vanilla JavaScript. It would run outside of your framework. It could run faster because they are default APIs. It allows for an extra layer and everything Angular can do will still work with a web component. [00:15:15] Efficiency and simplicity of web components implementation frees you from having to carry the payload of a general application component framework. Is that where you’re going? Generally. The building time of an app is APIs Makes sense for application development but not controls. [00:16:25] Does this translate all the way up to desktop browsers? Becomes more useful because web components uses browsers own APIs. Overall payload ends up being smaller. Smaller network area users can take advantage and it can be faster if a large desktop application is used. [00:17:35] Is there a direction Ionic has? Ionic understands hybrid technology is going to be around. Some people want distribution through an app and some just want a website. Ionic is catering to both parties. At the end, browser will implement APIs that native devices have. [00:19:00] Do you see a move away from the phone gap approach towards PWAs or do you not know how it will play? Just released the numbers from a developer survey we sent out. There is a healthy mix between people who want a native binary and progressive web apps. [00:19:35] Will Ionic continue doing progressive web apps and splitting the difference? Ionic will continue pushing for progressive web apps. [00:21:00] Ionic and Augmented Reality He doesn’t know. Has seen a few people that has a HoloLens. In the future, Ionic could possibly use augmented reality. [00:26:54] Intro to Mike at Dev Summit Will speak about Ionic components across multitude of frameworks. How to take advantage of tools that Ionic has to use to create own custom components that work across all frameworks. Picks Alyssa: Sketch Joe: Dunkirk Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are Ward: E-biking through Switzerland Rösti The Founder Charles: The Millionaire Mind by T. Harv Eke Mike: Diy Nils Spider-Man Homecoming Special Guest: Mike Hartington.
AiA 149: Angular, Web Bluetooth, and IoT with Uri Shaked
AiA 149: Angular, Web Bluetooth, and IoT with Uri Shaked In this episode, Shai Reznik, Ward Bell, Lukas Ruebbelke, and Charles Max Wood talk to Uri Shaked about using Angular with Web Bluetooth and IoT. [00:02:27] – Introduction to Uri Shaked Uri is an Angular GDE from Israel. His Angular Story episode is here. [00:03:21] – Introduction to Hardware with Angular Angular allows you to build web applications that scale quickly. For hardware devices, you need some kind of interface. Instead of a button, you have a mobile app or web application. This is one place where Angular comes into play. Building control panels, etc. You can do this with pure JavaScript or native mobile apps as well. [00:05:20] – Does it run on the IoT device? or on the web? It can do both. You can run Angular on a webserver on a Raspberry Pi or you can use Web Bluetooth to connect to the IoT device. [00:06:45] – What are the advantages of using web technologies? There's no hardware setup. And using Angular Material or Ionic, the UI looks right without spending a ton of time. RxJS allows you to gather sensor data from accelerometers, heart rate monitors, etc. connected via bluetooth. [00:09:20] – The physical web An IoT device that broadcasts its own URL. You can then interface with the device simply by scanning for and browsing to the device. One example is walking into a room, scanning, and then controlling the lights without installing an app. [00:10:34] – Security Security is optional on Bluetooth Low Energy. Bluetooth devices used to pair using pin codes and they got set to 0000 or 1234 by default. So now BLE devices don't require it. Some devices add security on top of bluetooth or use the pairing mechanism. Security is an ongoing concern with IoT in general. The devices that Uri has played with don't implement security. Uri actually had an audience member hack into the smart bulb he was using during a demo. [00:15:08] – How do you manage your connection to the device through Angular? Uri uses async/await to manage the promises based functions that allow you to connect to the device. He wraps all of this in a service. The bluetooth terminology used for the functions that manage the device are also called services. Don't get them confused. [00:16:48] – What's the most useful thing you can do with this? Connecting to an EEG headset that measures brainwaves. Uri wants to allow headset owners to perform EEG experiments in the browser. Otherwise, they have to set up a bluetooth dongle and install python and some libraries to make it work. He'd like to make it simple enough to browse to a webpage and click "Connect." He'd like to show the user pictures and then guess which one you're looking at. [00:19:58] – What is the most useless thing you've build with this? Uri 3D-printed a robot and installed an accelerometer into it and connected it to a WebGL based system to show the orientation of the robot. [00:22:32] – How do you get started? You need a browser and a bluetooth device. A smart lightbulb or a robot. You can use your smartphone to simulate a bluetooth device. Uri wrote an Android app that simulates a smart light bulb. Then you can connect the app to your computer's browser and control the smart bulb app from your computer. [00:25:00] – Ward has a proposal for Uri Connect lights in your t-shirt to an arduino device and control it from your phone. Web Bluetooth is much simpler than native APIs for Android or iOS. [00:29:45] – Commercial applications Physical web applications and connecting to remote tools and sensors. Smart counters for your electric meter. Jen Looper's blog post on web bluetooth and beacons. The Louvre uses beacons. [00:33:00] – The physical web Uri ran a beacon that broadcast his personal site. He took his trash out and one of his neighbors kept getting a notification about his website on his phone. Picks Lukas Ruebbelke Antifragile Chef's Table on Netflix Shai Reznik 59 Seconds Volunteering - Ari Lerner teaching prisoners to code Ward Bell The "other" Uri Shaked Smart Coffee Machine YouTube video on telling if someone is lying Uri Shaked Ward's yet-to-be-made shirt AngularUP Conference WebAssembly Charles Max Wood Data Skeptic podcast Links @urishaked urish.org Special Guest: Uri Shaked.
AiA 148 What's New in NativeScript with TJ VanToll
AiA 148: What’s New in NativeScript with TJ VanToll On today's episode of Adventures in Angular, we have panelists Alyssa Nicoll, Ward Bell, and Charles Max Wood. We have a special guest, TJ VanToll of Progress. If you want to stay current with NativeScript, tune in! [00:01:55] – Introduction to TJ VanToll TJ works as a Developer Advocate for Progress, which is a software development company behind KendoUI, NativeScript, and few other tools. [00:02:20] – NativeScript NativeScript is completely free, completely open-source tool that lets you build iOS and Android native apps with Native user interfaces using JavaScript. It also provides built-in support for both TypeScript and Angular, as well. If you’re an Angular developer, it’s a tool that you can use to take Angular and build for Native iOS and Native Android. [00:03:15] – Native apps using JavaScript core or v8 on Android NativeScript uses Native UI components so they’re not using web view, the DOM, HTML, etc. For people that are coming from an Angular background, your apps look like Native apps. They’re using the same building blocks that you’d use if you’re building your app straight up in Xcode or Android Studio. You’re still building your apps the same way, the same file and folder structure, routing, etc. But the real learning curve that it takes to build NativeScript apps is that you have to use their user interface components to build your apps. [00:05:35] – Template syntax If you’re building a fairly complex Angular app, when you have all custom components, it’s going to look exactly like a NativeScript app. It’s basically using a suite of custom Angular components vs. using divs and spans as you’re building blocks. Angular is an optional dependency. NativeScript, at its lowest level, it’s just a technology that’s allowing the communication between JavaScript and these Native objects. The reason why the team spends a lot of time working with Angular integrations is that the model that Angular uses happens to be a really good fit for NativeScript. Any JavaScript developer who doesn’t really like using frameworks at all, using these components and syntax that they’re not familiar with could make their learning curve a little bit heavy. [00:08:05] – What’s new in NativeScript Over the last 6 months or a year, the team’s focus has been performance, tooling, and plug-ins. Performance: In the last release, specifically, NativeScript 3.0 was shipped back in May. That release is really the combination of profiling over the NativeScript source-code based on how fast your apps start up, how you can render your UI, etc. There is a cost to working with NativeScript because we are letting you write your source code in JavaScript. The team’s effort has been in really optimizing how fast you can paint your UI’s, how fast you can transition from one page to the next, the startup time, etc. One of the performance penalties that NativeScript has is because you’re using JavaScript, there is one step that truly Native apps don’t have. Specifically, Angular is not necessarily known for being the world’s smallest JavaScript framework. But Angular is being known for being very tool able. So the team shipped a Webpack plug-in that helps you reduce the footprint of your app, which means faster start-up times when you’re using Angular with NativeScript. Tooling: The other thing that’s related to tooling with NativeScript is the command line interface. You build NativeScript apps with the command line interface. The team is working on adding some more visual tooling, more like a companion to the CLI. There are problems that visual tooling can solve like how do you build your icons? How do you deal with splash screens? How do you deal with some of these Native configuration files? There is a thing called NativeScript Sidekick that can help you with some of these tasks. There’s an early beta out now. Plug-ins: The team purposely try to keep NativeScript core light, trying to keep our footprint small. TJ encourages developers, on your own team, and the NativeScript community to do that to your plugins because the NativeScript plug-in ecosystem explodes over the last few months. There are somewhere over 500 plug-ins. Their new plug-ins market place is plugins.nativescript.org/ that shipped several months ago. Now, they’re trying to work to add some consistencies to the plug-ins and adding some documentation around as well. [00:13:25] – NativeScript 3.0 upgrade and compatibility with NativeScript 2.0 It’s like Angular 2.0 to Angular 4.0 in a sense that there are few breaking changes but for most apps, it’s going to be fairly transparent or fairly trivial to update. It had some breaking changes with NativeScript plug-ins and one of the main reasons that they bumped the version number up is part of that performance changes to specifically render your interface faster. They also have to change their layout mechanism and some of the API with the NativeScript visual tree. Those are things that are unlikely to hit your common app because you’re probably just coding using their Angular components, in which case, you don’t necessarily need to know what’s going on under the hood. The team also worked with the plug-in authors of the top 30 or 40 most downloaded plugins out there to make sure that they were absolutely ready to go for the launch date for 3.0. If you are getting trouble with the upgrade, you can reach out on their forums. They’ve been trying to tackle these issues when they come up. [00:15:30] – Communication, upgrade, breaking things, and bugs Progress, as a company, haven’t done project quite like NativeScript before. It’s a project that’s completely open-source and completely free. They want to give people some freedom to of experiment and build their own things. But they try to be as transparent as possible on what we’re trying to do and reach out for feedback. They have a NativeScript Slack channel, which has a lot of people in there. They’re the first point of contact when making changes. And for the actual upgrade process, they try to actually put a good effort to get plug-ins where people have put on a considerable amount of effort into them. [00:17:35] – NativeScript 4.0 Debugging: If you’re a Visual Studio Code user, you can now just directly do this step debugging directly within the debug tab in VS Code for your completely Native iOS and Android apps. The team also launched support for the Chrome developer tools for NativeScript but they’re only available at a very limited capacity right now. Right now, in the Chrome dev tools, the console works and you can see network request but it’s not the full experience that you’d expect if you’re using those tools for web apps. Visual tree: One of the big pinpoints when it comes to learning NativeScript is learning how to build a visual tree with NativeScript. You can mess with CSS in your web apps, you can play around with layouts, play around with colors, etc. That’s possible to break that to NativeScript as well. Performance: The other big thing is again related to performance. We’ve got a lot of efforts going on at the moment, specifically, around start-up time. I mentioned we shipped a lot of performance-related things for NativeScript 3.0 but most of those were focused on the runtime experience – how fast we can paint your UI, how fast we can paint more complex Native user interfaces. We’re not turning our attention more to just how fast we can start-up your app and what sort of things we can do to optimize that and bring that number down as much as possible. A lot of that involves how can we fight with web configuration files to get exactly what we want, what are the best ways to reduce the number of files we’re using, use whatever we can to reduce that bundle size. The last that’s related to toolings is some of the visual tooling that we have. They think they can bring some fairly powerful behavior to NativeScript developers. In the past progress, they've had some premium tools for working with mobile apps that let you do things like build apps in the cloud. Say, you are a Windows developer and you want to build iOS apps, we have some premium tooling that could do that today. We think we’re going to be able to bring that to the open-source version of NativeScript, sort of make that work with directly within the NativeScript CLI. [00:21:15] – Store on distribution of apps With NativeScript, things are going to work exactly the same as if you’re building things from the ground up with Xcode or Android Studio. NativeScript CLI spits out the Native app package - that’s .apk file for Android and .ipa file for iOS. You just head out to the Native stores and actually register your apps and use those stores as the distribution model to get your app out to your users. There are certain people, especially companies, that don’t need to distribute their apps publicly. Think an app that you need your internal people to have, maybe they’re sales rep, maybe they’re doing an inventory job. In Progress, they sell some of the tools that you can use to distribute your apps locally to users. Because it’s generating those exact same Native binaries, once you have that, you can use any iOS or Android distribution model that you want to use. [00:22:30] – Start-up performance One of the big performance advantages that Native apps have is you don’t necessarily have to deal with a network. In terms of media files, a web app might need to worry about your initial load of image assets or video assets. But with Native apps, you have the ability to package that in the file. The specific cost when it comes to start-up time is not getting JavaScript from the network. The cost is actually the registration of your JavaScript code with v8 or JavaScript core. It’s the same reason that there’s a cost for that in the browser if you feed Angular into v8. There’s a cost that it will take to be able to parse that thing and run with it. [00:25:30] – Lower cost for low-powered devices TJ has zero concerns about NativeScript start-up performance on a high-end iPhone7. Startup time is like a millisecond. It’s not something that a person’s going to care about on a typical Native app. The bigger cost is on Android. It’s not because Android is necessarily slower. It’s because it has a wider range of performance characteristics from Google Pixel to some crappy Android 4.2 device that is still on the market. The team uses v8 on Android to run JavaScript. V8 has this feature called heap snapshots so you can pre-register some of your JavaScript codes directly in the heap memory of v8. Essentially, it’s a trick to shave-off some of those milliseconds when your app starts up. [00:27:10] – Service workers In NativeScript, there’s no service worker. You’re just using NativeScript API’s, which are abstracting away completely Native iOS or Android API. All of the things that a service worker does, you can accomplish in NativeScript. You can run in the background. You can get a user’s location in the background. You can send push notifications in the background. Anything that an app on your phone can do today that you’ve seen is possible to do on NativeScript apps. One of the reasons to build on NativeScript is your app can send push notifications when it is offline in iOS. It’s something that you can’t do on the web today. [00:29:05] – Getting started with NativeScript Javascript If you go to nativescript.org, there’s a Get Started button. There are 2 different tutorials you can go through to learn NativeScript. There’s one on Getting Started with NativeScript with straight up JavaScript if you’re the person who doesn’t like dependencies on framework completely. Angular And then, if you want to learn how to use Angular to build Native apps, there’s the other tutorial on NativeScript that’s on Angular. Video tutorials Also, community members just launch nativescripting.com, which is a companion to those tutorials but it’s the video-version of them [00:30:00] – Testing Unit test Unit testing on NativeScript is built directly into the NativeScript CLI. You can use any of the normal unit testing libraries that you might think of using – Mocha, Chai, Jasmine. For CI, there is NativeScript Travis. The team has articles and information on how you can build NativeScript on an automated way. Functional test And because NativeScript is generating Native iOS and Android apps, there are a lot of tools out there that lets you automate starting up and running application if you want a functional test. They start your apps, click the buttons, and make sure those behaviors still work. Internally, the team use a tool called Appian, which lets you automate our iOS and Android apps. Picks Ward Bell Being Mortal by Atul Gawande Alyssa Nicoll Hyper.is – JavaScript, HTML, CSS terminal Charles Max Wood Ego is the Enemy by Ryan Holiday TJ VanToll Pokemon Go My Dad Wrote a Porno podcast NativeScript Newsletter Twitter @NativeScript Special Guest: TJ VanToll.
AiA 147 Codelyzer and Static Analysis Tools for Angular with Minko Gechev
AiA 147: Codelyzer and Static Analysis Tools for Angular with Minko Gechev The week on Adventures in Angular features panelists Alyssa Nicoll, Shi Resnick, Lukas Ruebbelk, and Charles Max Wood. The special guest this week is Minko Gechev who is here to discuss Codelyzer. Minko is currently working on a start up. Angular JavaScript is the programming language that excites him the most. How do you work in a start up and still have free time? He tries to find an overlap between the work he's doing in the startup and work he does in his spare time. This is why he had previous work that was completely Angular (Angular Seed). This startup is more complicated because the overlap isn't as much. What is Codelyzer? Last year, he worked on the Angular Style Guide. He thought it was a good idea to have an automated way to verify a given project that follows the Angular Style Guide. He built on top of that and built Angular and provided similar style checks on top of templates, Angular CSS Styles inside of the components, and the Angular expressions inside of the templates. Codelyzer is a tool for static code analysis for Angular applications. How is it used? It can be used as a set of rules on top of tslint. You install it with mpm. Then tslint performs static analysis and verifies whether the source code follows some style guidelines that our team has agreed upon. When Codelyzer is used, we can also analyze the templates on Angular applications. After that, you can confirm it follows these rules by running tslint on top of the entire project. How many of the default tslint rules do you agree with? Minko states that that is a lot of tslint and Angular rules that align and that he agrees with most of them. He does admit there are some he finds annoying, such as specific semi colon rules. Overall, he believes that if the team has agreed upon the rule, it is following in order to avoid arguing. What do you recommend as the best way to add Codelyzer to a project that started without it? He thinks you should add one rule at a time. All the wordings will be fixed one by one, eventually fixing the entire project. He has also started working on style analysis on top of the application, which is performance analysis. He doesn’t know what data the application will process. But he still considers that a given component will have performance if it has a huge -- in the template. So static analysis we can find such templates and eventually warn the users about eventual performance issues that are possible. How hard is it to add or change in Codelyzer? It might be slightly harder compared to tslint because there are more things that can be statically verified. In Tslint there's a visitor pattern. There is a classical design from the Ganga; it is used for the reversal of syntax 3 of a Typescript code. So when you implement the visitor pattern, you visit a specific construct, verify whether the name follows some guidelines. It is pretty much the same thing in Codelyzer but you can also implement the same visitor pattern for visiting the template of the component. Currently, the project has more than 20 contributors. It looks complicated but not if you spend 30 to 40 minutes looking at the code. What was the motivation behind going deep into Angular? The style was easy for static (automated) verification. This way saved a lot of time from code reviews. Code reviews still have to be performed, but at least can skip the verification from style guides because they can be automatically done. He likes compilers, it is the front end of a compiler: analyzing Syntax 3 part of a compiler itself interesting algorithms. There is another rule from Codelyzer being worked on that isn't completely stable yet. It is to find out which styles are actually used inside of the template. Codelyzer can find out some of the styles that are no longer applied to some of the styles within the template. This is not ready yet but it will be ready in a couple of configurations. Is the idea of searching through of finding either redundant or non-used style, is this something Codelyzer's doing for the very first time (no one has ever done it) or are there tools that this would replace? For Angular, there is no other tool like that. JavaScript or HTML may be close. The Browser can do that. If I want to write a rule do I take the abstract syntax and tell it what to look for? How does that work? You can’t learn it by heart, so I usually copy and paste the existing code and then modify it. It is a standard typescript rule so you need to provide an abstract rule; you'll need to provide the visitor. If the rule is super complicated, you need four visitors. Are you relying on tslint to break things down into tokens and the abstract syntax and then doing the work from there? Yeah. I did some extensions of tslint. Just extending tslint because it would have been too much work to create something from scratch. He is relying on tslint’s error reporting. So in order to set this up on a CI machine, it needs to be able to run node and install some mpm packages? Yes. Run node, install tslint, install Codelyzer and have this rule directory with the Codelyzer rules inside tslint. Is there a visual proof for knowing what the rule does? There is documentation on codelyzer.com/rules. Picks: Shi: Reflect API Driving on the right side of the road Minko Gechev Alyssa: Apple Airpods:https://www.apple.com/airpods Crutches Lukas: iPhone 7+ portrait mode: https://techcrunch.com/2016/09/21/hands-on-with-the-iphone-7-plus-crazy-new-portrait-mode/ Vulfpeck-1612: https://www.youtube.com/watch?v=jRHQPG1xd9o Charles: Angular Dev Summit www.angulardevsummit.com Minko: Pixel: https://madeby.google.com/phone/ Angular IO: https://angular.io/ Philip Wadler’s Monads for Functional Programming: http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf Special Guest: Minko Gechev.
AiA 146 10 Ways to Lose a Developer with Bonnie Brennan and Keith Stewart
AiA 146: 10 Ways to Lose a Developer with Bonnie Brennan and Keith Stewart On today's episode of Adventures in Angular, we have panelists Ward Bell, Alyssa Nicoll, Joe Eames, and Charles Max Wood. We have special guests, Bonnie Brennan of ngHouston and Keith Stewart of CollabNet. The discussion ranges from the Most Common Reason for People to Leave to Mandatory Happy Hour that companies have! Stay tuned! [00:01:05] Introduction to Bonnie Brennan and Keith Stewart Bonnie is an Angular architect at Houston, Texas. She is the founder of ngHouston. She also runs Code Bridge Texas with her daughter. They do free programming workshops for girls. She’s going to be at a couple of conferences coming up. They’re going to AngularMix and FrontEnd Connect with Alyssa. Keith, on the other hand, works for a company called CollabNet as a UI Tech Lead. He is working mostly on UI’s for DevOps-related products. He is also a frequent panelist on the ngHouston Meet up broadcast that Bonnie runs and a curator on ngDoc.io with Alyssa and Joe. [00:03:20] – Most common reason for people to leave If Bonnie has to narrow down, she thinks it’s the tech stack. Some companies have a lot of legacy code that needs to be maintained but at the same time, when you are a developer who spends a lot of time on emerging technologies, you want to be working on this new stuff that you’re learning. While working on this course on how to find a better dev job, Charles surveyed people on Skype or the phone. They feel stuck and not moving ahead. [00:10:50] – In the culture, if you’re not a performer, then, you’re not trying hard enough? Joe thinks that we have this problem in this industry that if you are not going to be blogging and speaking at conferences, then, you just don’t belong. Ward also thinks that you don’t have to be a performer to contribute to a great development environment. But for Bonnie, being a performer is not exactly about getting up on stage. It really is about caring enough. Alyssa tells about the gradient of the type of person. There’s a person like, “Okay, this is just a job for me but I still take pride in my work.” But if you’re in the mindset of “Hey, I have kids or I have a wife outside of this. But I’m still giving it my all while I’m here.” Then, it’s perfectly reasonable. Keith also tells about the two different types of people. The generalists, the folks who are on the bleeding-edge, they don’t necessarily master one of those, and the other folks who get really good at one particular thing that they’re working on. Ward cites an instance where you’re in an enterprise and you have a lot of very important legacy systems that need a person who cares about the legacy stuff. You can’t have a company that has all people who have to be on the bleeding-edge all the time. [00:18:55] – Type of developers that companies want and how to keep them Ward mentions how professional growth is important. The opportunities for people to work on the leading technologies is not always something that every company can offer but they can sprinkle these opportunities here and there. It can be done but if it’s not, there are things that you can do with some of the legacy applications to make them more palatable to work on. Charles suggests to companies to show the developers that you care, you are listening. It’s on the roadmap and you’re going to get there. [00:22:55] – Is boss on your list of Ways to Lose a Developer? Bonnie can’t think of the time that she has left because of her boss. But the company culture is an important thing because however, the upper management feels about culture, that’s going to trickle down. One issue about Charles’ boss is that he is very controlling. Another issue is he was specifying the requirements for the application and he wasn’t very good at staying consistent with it. They wind up building one thing but gets angry with them because they hadn’t built what he wanted, even though it was exactly what he specified. Bonnie also had a situation similar to Charles where the project requirements kept changing while she was writing the code. If you feel like you’re going to work to be frustrated again, it doesn’t matter what technology you’re using, it doesn’t matter how you like the rest of your co-workers, eventually, you’re going to burn out. [00:27:00] – Not being paid enough When you’re not making a whole lot of money, Bonnie thinks it can be a big deal but it’s not the biggest issue. For Keith, if he would be weighing two companies, he’ll also choose the company with the good tech stack instead of the company which pays a little higher. But Ward thinks that it is a privilege to be in an industry where even in the low-end of the salary rank, you tend to be pretty comfortable. [00:29:55] – Effective ways to show your appreciation to a developer Bonnie refers to an instance when the boss gives credit for a developer in a meeting on how he did a great job on a feature. And on the flipside, the worst kind of boss is the boss that says, “Look what I did.” But Keith finds it a difficult question because it might be different for other people. Some people like to be called out in a meeting and say, “You did a good job.” But some folks would like that to be a little more behind the scenes. Or some folks might be looking for a bonus instead. So you might be able to read your people. For Alyssa, she likes the boss who regularly checks in even if it’s not a pat on the back because it just shows that they care about the process. Ward speaks of the boss who asks your opinion on an important decision, technical or otherwise. [00:37:40] – Recruitment Keith never likes the recruitment process of companies which bring a lot of people in and give them coding exercises on a whiteboard. So they built a small application that’s similar to the application that the folks will actually be doing. [00:41:05] – Remote vs. working in an office Alyssa loves being remote. She mentions she has ADHD so she was distracted in an office setting. It’s important for her to set up her environment to be more productive. Bonnie also has been working remote for 3 years now. It used to be difficult to communicate but now, we can just use video call. But Keith finds people more engaged in a meeting when it’s in person. An office space can add a lot of value to a team. Ward points out that you can also be distracted as well by working remote. In Google, they all work in the office. Even though they have open office plans, sitting right next to each other, they trust the people that they can do well in that environment. People put on headphones when they’re really focusing on something. [00:53:20] – Mandatory happy hour Companies which have a snack room, ping pong table, foosball can contribute to company culture and make it a much more attractive place for developers. But Alyssa gets scared a little bit when programmers go overboard and sometimes you’re not into it as much as they are. Picks Ward Bell Progressive Web Apps (PWA) Jake Archibald on PWA Joe Eames Shimmer Lake Keith Stewart Charles Angular Dev Summit Camelbak Eddy water bottle JAM XT Bluetooth speaker Bonnie Brennan Pluralsight course on Angular Reactive Forms by Deborah Kurata Todd Motto’s Ultimate Angular JS Twitter @bonnster75 Youtube ngHouston Angular Meetup Keith Stewart Adam Laycock’s blog post: Building maintainable Angular 2 applications Rogue One Twitter @TheKeithStewart Special Guests: Bonnie Brennan and Keith Stewart.
AiA 145 Why I'm Still Betting On Angular with Shai Reznik
AiA 145 Why I’m Still Betting on Angular with Shai Reznik On today’s episode of Adventure in Angular, we have panelists Alyssa Nicoll, Joe Eames, along with Charles Max Wood. We have a special guest Shai Reznik from Hirez.io, a website and video web development course series that mixes information with a few laughs. Today we are figuring out why Shai is still betting on Angular. It’s a fun show, we hope you check it out! Why are you still betting on Angular? Shai has been getting this question a lot. He tells us about working on Angular courses for his website hires.io He has two courses out so far, first being a course on Angular basics, a second course on Why Angular? Shai suggests that picking a framework is essentially gambling. He also gave a talk “Why I’m betting my future on Angular 2,” focused on the non technical reasons that he is sticking with Angular. If you teach someone without experience about web development and ask them to pick a framework without guidance it’s a disservice. Once that person has gained experience, then they can choose on their own. Shai’s Decision Method At HiRez.io he had to pick a specific framework. Shai has been working on comparing different frameworks for years, including React and ViewJS. He adds that when you see talks or documentation on framework, you’re seeing a showcase of the best parts. It isn’t until you work with it that you find the quirks and issues. Part of what he did to learn the frameworks were to simulate real life scenarios. He also came up with a set of requirements to help him. The main question being “Does it handle scaling?” He found that React leans more towards libraries while Angular is more of a framework. It comes down to integration. Building your own framework from a library can be a good practice if you want to become a more professional JavaScript developer. Shai suggests that its like building your own computer instead of buying a brand new one. The issue is with JavaScript, the updates come weekly and so building your own framework from a library comes with a cost. Developed frameworks tend to handle that level of integration for you. Less Mental Overhead with Angular Charles adds that Angular allows him to make things without worrying about when to use things like Redux or Mobix and it just works. There is less mental overhead along with available expertise because everyone is generally using the same stack. React can have a shorter learning curve, and both communities have about the same number of proficient users as a resource. Both seem to be equal in those ways. Having choices keep things on the innovative edge. Shai talks about the Angular team and how innovative they tend to be. Aimee adds that their attitude about Angular is also genuine, giving an example of when they are approached with issues, they are open to discussing them. Dependency Injecting ViewJS is also a framework. The one thing that is missing is dependency injection ,which in Shia’s opinion is one of the biggest selling features of Angular. It allows for easier code testing and in Angular 2 it has been improved even more. He adds that some developers can be lazy and not write tests and for them it wouldn’t matter. Angular also prides itself as a JavaScript framework, and so no typescript. When working on a big team, being able to see immediately where things are broken is very helpful and is a plug for Angular. Evolving communities Joe says that Angular has a great community and he like Angular because of his familiarity. Shai adds that all three are great solutions. Angular just happens to fit well with his current situation. He had to switch from old technologies or communities because they got stuck in the past. ViewJS is picking up popularity and in a couple years will have a strong community. He adds that while the community and support system is great, it’s not the main reason he stays. Will the market for Angular courses be sustainable? Shai mentions that it seems to come in waves, a certain technology will have hype come in every six months or so. That hype leading to adoption and then months later the adoption rate drops down. This is something he witnessed with Angular 1 in 2012 with 1.0. It took 6 months to a year for people to learn about it and adopt it. It wasn’t until 2013 or 2014 when React came out, early adopters jump on React and started creating hype for it. Some of React solved the pain points for Angular. We are getting to the end of the adoption wave of React. It’s hard to tell how long React and ViewJS will be popular. The new Angular will bring a new wave and peak in demand in a year or so. Shai adds that this is his bet and he may be wrong. He sees that it handles small apps or big apps, having the ability to scale and that is important. Charles adds that Ruby on Rails had a similar cycle. Ruby has stop being in the media as much because it’s becoming stable, but the community is strong there either way. Shai mentions that he doesn’t see these frameworks like React going away soon because they solve real issues. If you zoom out from the discussion, these frameworks are all part of a big JavaScript family. Listens can comment on this episode on what frameworks they’ve choose and why. Picks Joe NGDoc.io Persistence Alyssa HiRez.io Charles Rush Revere and the American Revolution Palto Alto Firefighter’s Hot Sauce Shia Futur Youtube Decorators HiRez.io Links HiRez Twitter Shai TwitterSpecial Guest: Shai Reznik.
AiA 144 Azure and Angular with Shayne Boyer
On today’s episode of Adventures of Angular we’ve got panelists Ward Bell, Joe Eames, Alicia Michael, John Papa, Charles Max Wood, and our special guest Shayne Boyer. Shayne is a Senior Developer Advocate at Microsoft and on the Azure team. The last time he was on the show was Episode 082 of Adventures in Angular and we talked about getting started with Angular 2. Today we are going to talk a bit about Angular and Azure. Stay tuned. [3:12] Talk about offerings with Azure. There is a connotation that if you want to use Azure you have to use .NET That is not the case. Large part of Azure runs linux. There are over 170 type products that Azure offers. noSQL databases, postgres, mongolDB, Azure Cosmos, Azure functions It’s more than .NET and VMs. Things you can do this type application are things like - Deployment to web front end, putting apps in Docker container and pushing to container service, scaling those apps etc etc. [5:23] Put your app in Docker container? Talking about just front end. Just the web application. Putting it into a container and deploying the container into a linux instance or web app on Azure. [6:13] Why is it a good thing to use Docker for this kind of thing? Example. NGX for front end services, you can’t NGbuild using ClI do an NGBuild get the disc folder and throw that to a web application service like IAS or Node and have that application just service. Deep linking wouldn’t work. Instead you would want to package something like an express server that requires NodeJS. Then something to handle deep linking. You can easily package that in a container and push it to the cloud and be able to control it without worrying about infrastructure. Essentially it’s the app that has been written as well as the server that serves that app. You can choose the base it runs on. I.e. Node 6 instead of 8. Etc etc. Control those in the container so any time you pull it down it has those same settings. Often developers assume versions of services are the same between the developer and the services used like a cloud service and when it’s not, things break. The concept of “works on my machine” is actually true now. How it works for you, will be exactly how it works where ever you push it. You can set up the version of Node you want, the settings how you’d like, test it on your own machine and when you push it to providers like Azure, Heroku, AWS, etc, it will run the same on all those providers. Takes away complexities when testing. [9:39] Outside of Docker, what other things does cloud bring to the table? Serverless offerings. Takes away issues with - worry about building a node server to serve my app. Building API to serve the data. Building Infrastructure behind the server and deploying it. Building and deploying pains reduced as well. [10:57] “Wait wait, serverless?” It’s the new buzzword. There are servers underneath. Don’t have to worry about infrastructures or the servers themselves. Just write the function. Function will return the data to controller service built in Angular. Just have to build the Javascript (or python, and C#, java is coming) in the portal or in Github, and it’s just the code to run the function. No need to worry about the types of servers, VMs, operating systems, patching or scaling. It will scale based on what the capacity demand it needs. Event driven - event queues, message queues, etc. [13:20] Simple endpoints Scalability at endpoint level. Previously when writing APIs on the backend, typically you’re concerned with scaling that API application. Endpoints typically scale at the same level. Serverless functions scale at that typical API level. Paying only for usage. [15:30] How do you orchestrate between the services? Just because you spread things around doesn’t mean it’s better. It’s important to realize that breaking assembly or dll files down into smaller dll files don’t change things much. Minimizing what it takes to think about when it comes to handle and configure a server running the services. It’s easy as “Here it is, go run it for me Azure!” [20:12] How does this relate to angular developers? Be careful about over complicating the ‘concept count’ Having too many systems, front end, back end, VMs, Docker, etc. To many things to learn or to know to get it done. Easier to write API and serverless. So then it’s just Javascript on the front end. Much easier. [21:58] Someone brand new to Azure, what should they try out? Azure functions is a great place for Javascript or Angular. Typescript is coming as well. Understanding it’s just a backend. Learning to connect to a database, or have a static file. Routing, proxies, etc are all built in Azure. [23:13] What JavaScript engine does it support? Chakra Engine. ES 5 ES 6 Support for TypeScript recently announced. Coming up. Node 8 is now available on Azure service platform. [25:04] More on the portal. The portal is one of the largest typescript platforms available right now. The portal is not the only option. Strong CLI experience. Making VMs and web applications and all products can be done with CLI. If you like CLI then start there. [26:54] Creating a quick web app If you want to create a new web application. Simple as AZ web create Pass the name of application pass the location in a few commands you can create an app Set it up to deploy from the GitHub Repo From there it’s just checking in code and it’s getting the deployment from the CLI pipeline. Write it, check it in, deploy. [27:32] Do you have articles or videos that people can jump to? Did a course in deploying an angular app using GitHub git Azure Talks about how to hook up Azure web app instance to a GitHub repo. It’s easy as checking in code, no worries about the concept count and complicated setup. [28:45] Integrates with Docker and Visual Studio Code There is an Azure extension for VS Code that allows you to push all of your code. Demos available to learn Has great extensions for Angular too. [29:28] Simplifies or eliminates complications on the back end, does it also help on the front end. Don’t have to worry about scaling my static site. Data is what makes it scalable. Serverless experience - hitting databases, doing computations, working on triggers or WebHook from other parts of your business. Azure function can listen to WebHooks Azure can aggregate backend in serverless functions. Has database offerings to store data. Infrastructure for hosting Node applications and Node APIs Azure does not = .NET [31:19] How does someone get involved and try it out? Go to Azure.com and try it free. Try the Azure functions portal free as well. Plenty of free experiences from the platform. The tuts and walk-throughs for almost any of the platforms or languages for Azure. Picks Joe John Papa’s course on Angular CLI course. NG Doc. Ward Troy Hunt used Azure functions to fight DDOS attacks article. Alexa Charles Serverless framework. NPM serverless. Angular Dev Summit (Now free) Shayne Keyvo Smartlock Angular 2 app to Azure using Git play by play course. Docs.microsoft.com Links Azure Special Guest: Shayne Boyer.
AiA 143 KendoUI with Burke Holland
AiA 143 Kendo UI with Burke Holland Charles Max Wood and Burke Holland discuss Kendo UI. Burke Holland is on the Developer Tools Division at Progress. The discussion ranges from the introduction of Kendo UI to tests used for Angular apps. Stay tuned to discover what Kendo UI can do for you! [00:01:50] Shutout for Angular Remote Conf Charles will be picking speakers really soon so get your ticket at the early bird price. [00:02:15] – Introduction to Burke Holland Burke Holland is working for Progress in the Developer Tools Division on the Developer Relations Team. They work on products like NativeScript, KendoUI and all the developer tools that Progress makes, which is mostly UI components and mobile frameworks Questions for Burke Holland [00:03:00] – What is Kendo UI? Kendo UI is a Javascript UI library. It has open source components (Kendo UI Core), but it’s primarily commercial. It’s more on heavy lifting text scenarios like grid that has sorting and filtering, drag and drop, grouping, scheduler, robust calendar interface, pivot grids, Gantt charts, data visualizations. We’ve rebuilt Kendo UI from the ground up using Angular components. It’s the Kendo UI Core Angular that was released last January. [00:08:00] – How are Kendo UI elements pulled for use into an app? There’s a private npm repo that you would just pull in and bundle some of the widgets together. Inputs can be a drop down list, a combo box, autocomplete, etc. Using npm and install -@progress/kendo-angular-input, you get all of those inside your npm modules folder. We and the team are pushing to move to the public npm repo so that people don’t have to register for an account. [00:13:00] What about mobile development? Does this work with NativeScript? Kendo UI widgets do not work inside of NativeScript for mobile apps. However, we are looking for a possibility of merging their NativeScript UI library with Kendo UI so that you can build a website, a progressive web app, a NativeScript app, etc. [00:16:00] Do you also have to pull in some CSS? Kendo UI has their own CSS that is based on Sass. It has a theme builder to customize themes that you can pre-select from. Integration for Bootstrap 4 was also built because Kendo UI does not have a layout system so it doesn’t provide you with any grid system for layouts or for responsive design. [00:19:00] Do you just import it into my app and then use the components, is it that simple? It is recommended to use Angular CLI to use Kendo UI’s components and import it into an app. First step is to create a new project with the Angular CLI because Kendo UI is designed to work with it. You can work with SystemJS, instead, but it requires some tweaking. Next, you would need to add the private npm repo which registers the end point on the terminal. And then, npm-install to install the components. After that, you can include them in your app module file. Import Kendo grid from @progress/kendo-angular-grid. Then, you can import them into your module so you use it in your templates. [00:23:00] – Can I tie a chart to a grid, update the chart and have the grid change? Everything that Angular updates, Kendo UI just updates too. If you buy two components to the same array and you update that array, both of those components are going to update because they’re using Angular’s binding. [00:24:00] – Does Kendo UI work with the older versions of Angular? Kendo UI works with Angular 1.x. By the way, AngularJS means Angular 1.x. Meanwhile, Angular means Angular 2 and up. Directives for Angular 1.x wrap Kendo UI components. [00:28:00] – When moving my component in AngularJS to Modern Angular, do I have to include both of those in the product? I can’t provide any guidance here, other than I wouldn’t do that. If you migrate, you’re going to be firing up a new project but you should be able to move your application logic over pretty well. However, we still have this idea of services and injection and those things are transferable. And then, when you use Kendo UI components, the only thing that’s really transferable there is the configuration settings. [00:29:00] – How do you write tests if you’re testing Angular app? Are there other things that you should be testing? That would mean there’s some sort of functional testing and unit testing. If we’re talking about unit testing, you should just test the way that you would normally test Angular. For functional test, you need a functional testing tool like Selenium or Test Studio. [00:30:00] – Is there anything else that people need to know about Kendo UI? We’ve got a lot of other components coming so stay tuned on that. We’re also working on some React stuff. We always love to get feedback. We have a github repo. Picks Burke Holland: Server list Azure Functions Challenge Medium article on Samsung’s weird emoji Twitter at @burkeholland Twitter of Tara Z. Manicsic Charles Max Wood: Serverless library in npm AWS Lambda Slack room for the podcast (adventuresinangular.com/slack) Angular Remote Conf Get A Coder Job Stack for Slack automation MemberPress on WordPress Special Guest: Burke Holland.
AiA 142 Angular and Electron with Ryan Chenkie
On today's episode, Adventures in Angular features Angular and Electron with Ryan Chenkie. Ryan is a product owner, blogger, and JavaScript trainer. His interests in working on Angular with other technologies led him to using it on desktop apps with Electron. Tune in!Special Guest: Ryan Chenkie.
AiA 141 Migrating a Large Angular 1.x App to Angular 2+
How long do you wait to load regular Angular? Today's episode features Migrating a Large Angular 1.x App to Angular 2+ with Ciro Nunes. Ciro is a frontend engineer at CrossEngage. He appeared on episode 89, where he talked about Angular CLI. Now, he shares how they migrated an app and the challenges they faced. Tune in!Special Guest: Ciro Nunes.
AiA 140 NgDoc.Io with Joe Eames and Alyssa Nicoll
On today’s episode, Charles Max Wood and Ward Bell discuss NgDoc.Io with Joe Eames and Alyssa Nicoll. NgDoc.Io is a website that contains all Angular-related content in the community. It includes sample projects and apps. It's a great resource for everyone who wants to learn about Angular. Tune in!
AiA 139 ng-conf Roundup
On today’s episode, Charles Max Wood, Lukas Reubbelke, Ward Bell, Joe Eames, and Alyssa Nicoll discuss ng-conf Roundup. Stay tuned as they share their meaningful experiences in attending the conference!
AiA 138 Progressive Web Apps with Houssein Djirdeh
On today’s episode, Charles Max Wood, Joe Eames, and Alyssa Nicoll discuss Progressive Web Apps with Houssein Djirdeh. Houssein is a front-end engineer based in Toronto. He works for Rangle.io where he builds mobile web apps strictly focused on JavaScript. Stay tuned to learn more about the web apps he is working on and what he's currently up to!Special Guest: Houssein Djirdeh.
AiA 137 NGRx with Mike Ryan
On today’s episode, Charles Max Wood, Ward Bell, and Alyssa Nicoll discuss NGRx with Mike Ryan. Mike is a senior software engineer at Synapse Wireless, Inc. in Huntsville, Alabama and is a core team member of NGRx. What he does in work is that he builds real-time interactive UIs for industrial applications. Stay tuned to learn more about what NGRx and what he currently enjoys doing related to web development!Special Guest: Mike Ryan.