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 154: Angular Animations with Gil Fink
AiA 154: Angular Animations with Gil Fink This episode of Adventures in Angular features panelists Ward Bell, Joe Eames, and Charles Max Wood. Special Guest Gil Fink is on the podcast this week to discuss Angular Animations. Tune in to find out more about this topic! [00:01:05] Introduction to Gil Gil is the CEO of Sparxys, which is a small consulting company that he owns in Israel. He has been working for Microsoft for nine years in web development. He wrote the book Pro Single Page Application Development. Currently, he is also speaking in conferences and consulting for companies in Israel. [00:02:06] Introduction to Angular Animation Angular Animation is a model that has been used since Angular 2.0. In the full version it received it’s own model and expanded from Angular core. It is based on Web Animation API and gives a specific language to write Animations declaratively using Typescript in the components. It is also easy to write. Animations are not used to make web pages a “swirling vortex of text.” It instead is something that is used to capture the attention of the user to let them know what is new or where they should pay attention. It gives the user a better overall experience. For example, how to show a user they have a validation error: use a red blinking border. It does not have to be sophisticated or complicated, but can be if that is what is wanted. [00:05:48] Web Animation API Animation mobile in Angular has been available for roughly two years. There is a function called animate which gives the ability for an application to be animated. Web Animation API runs animation for you but is not simple. [00:07:35] What kinds of things do you see people doing with Animations? A common thing for developers is to make Animations make transitions between pages in SPA. Animations also can be used for appearing, or fading in or out elements. More transitions can be made for panel, where they slide from one side to the other, which grabs the attention of the user. SVG and Canvas also are used for Animations by developers. [00:10:33] Starting with Animations Most developers are in a hurry to write their first animations. First, they have to understand animations because understanding concepts are helpful. Reading examples of what CSS 3 and Web Development API are can be a helpful tool. Gil suggests MDM and Mozilla to gain a better understanding. After grasping these concepts, read about how to use the Angular Animation model and how it was created. The Angular Animation model is actually not needed to create Animation in websites – you can use CSS 3 animation and Web Development API. [00:14:15] How do I add Angular Animations to my Angular app? Grab a browser Animation model, which is part of Animation. Create a trigger. This is something that triggers the effect or Animation. Create a state, move from one state to another state using the API. Once you have a trigger, write inside the web component in the templates. Take the trigger, which is a function, and pass the function in component declaration to the Animations property. [00:18:09] When and where should you be using Animations? There needs to be a balance when using Animations. Gil’s rule is not to use experts to understand where to put them. Not everything should be filled with Animations. He prefers to start without them and then add according to specs or expert guidelines. Animations can be distracting and should be there to help the user. [00:21:43] Ideas on How to Use Animations in Applications For example, you can use Animations for models. If a model appears at once, it might shock the user. Instead, make sure that they appear smoothly. It should indicate something is either happening or has happened. If everything happens at once, it may not be as effective for the user. [00:25:25] At what point in the process do you decide this component needs Animation? Gil works with experts in the companies that he works for that have guidelines for the components he creates. Because of this, he creates what they want him to create. [00:28:44] Is there a way of testing these animations are happening? Yes, you can use tools like Protractor, Selenium, and Test IO. Test IO gives the option to record a screen. These tools won’t help understand animations because they can’t test animations. They can check for existents of a class name. You can use a manual tester for quality assurance or have a person check for you. To really see if an effect is working you have to just see it working. Picks Joe: Go see an eclipse Charles: Secrets of the Millionaire Mind by T.Harv Eker You are the Placebo by Dr. Joe Dispenzo Gil: Web Animations Deep Dive with Angular JavaScript Israel Rick and Morty Links www.gilfink.net www.sparxys.com Special Guest: Gil Fink.
AiA 153: Conferences and Speaking
AiA 153: Conferences and Speaking On this episode of Adventures and Angular the panelists are Alyssa Nicoll, Joe Eames, John Papa, Charles Max Wood. They discuss attending and speaking at conferences. Tune in to listen to their opinions! [00:01:23] Benefits of Conferences Joe believes that attending somewhere between two and four conferences is good for a developer’s career. The minimum should be attending one conference a year. Some companies believe that people are wasting time because they are taking time away from work. They are of the mindset that they could learn the same information from a video. But John looks at it as developers learning how to communicate. If developers use their time well, they can potentially solve problems and find ideas they have never heard of and can learn how to implement them at work. John believes the benefits to the developer verses the company are different. Developers could meet a potential employer who would pay you more than your current employer. For companies, if people want to leave, forcing them to stay may not be the best thing to do. Forcing someone to stay could lead to low productivity, which is not the best thing for the company. The more educated the employee the happier they will be, and happy employees stick around. Charles believes that the reason you go is for things you can’t do at home. These are interactions, new thought processes, and mindshare. Companies that don’t give their employees chances to go to conferences are missing out on reasons why they hired them in the first place. [00:09:00] Why Attend Conferences? If the goal of attending conferences is to try to be better than everybody else, there are better goals. Go to conferences for yourself and your own education. Go to be the best developer that you can be. Before you get to a conference ask - What are the problems you’re trying to solve at work? How do you keep up? How could a conference help me? How are people feeling about the technology? If you cannot find out information online, it makes it a huge asset. Charles once heard a financial expert say you should get three to five times out of anything you do as you put in. Be sure to make the conference worth it. [00:13:40] – New Trend at Conferences There has been a noticeable trend at conferences for smaller groups to not watch sessions. They do not go to workshops, listen to speakers, or seemingly network with other developers. Instead, they just go to the parties with their friends. This could be a reason employers feel it is a waste of time and money for employees to attend conferences. Alyssa still thinks that people will take away something even by simply being around like-minded individuals. [00:15:50] Companies Perspective on Conferences Companies will want people who have experience with speaking at conferences. They will want those people who have influence in the community they have been speaking to. But sometimes, once the company hires them, they do not want them to speak at any more conferences. They get the job because of the extra things they do, but now they want people to focus on the job and don’t want to risk people finding another job. People need to have a conversation about the values they and their new company have to see if they match. To do this they need make sure to ask questions to see if something they value, such as conferences, will be allowed to continue once they are employed. Some companies may not want them to go to or speak at conferences. Any company’s core value is to do business and make money. If they are not doing that then they cannot employ people. They may think that letting people attend conferences is holding up their production. People need to be sure to think about the concerns the company has when negotiating. For example, there was an employee that wanted to speak at conferences, but was so valuable to his company that he could not leave. That led him to train someone who could handle things while he was gone. People have to earn trust from their employer. Some people do not think about how to do this; instead they give away swag from the company or tell secrets while speaking at conferences. This is a way to lose trust and potentially be fired. [00:27:18] Alternative Perspectives Some companies will send and pay for people to go to conferences; no questions asked. They will be happy that their employees were invited to represent their company. There may be rules about what they are allowed to speak about. One thing to do as an employee is to always clarify if the contract is the same before going to speak at a conference. Make sure to continuously ask, “does this still fit for me?” [00:30:45] Developers and Conferences As a developer, attending conferences is good for your career. Should attend two a year. There are no negatives. Could never talk to another person, and still have benefits from sitting in the room. [00:31:54] Becoming a Speaker What do you want? All developers want different things. Some want to write great software, have a job, contribute, learn, but do not want to build a reputation. Some feel like they can make a difference and get excited about speaking. There’s not a right or wrong as long as you get what you want out of your career. Speaking is valuable and a good way to give back to the community. [00:36:20] How do you get into speaking? Start speaking at meet ups. Talk for five-minute intervals. Afterwards ask people to give feedback and do not take it personally. It will help to make you a better speaker. It is easier to know what you need to improve. Meetup.com helps you to find places to speak. Contact the organizer of a meet up and ask to speak. Two to three times a year hire a speaking coach. Look at this as a perspective of a professional who can give you advice to get better. It is easier to have feedback rather than self-evaluate. This also teaches how to get better at communicating with people. Picks: Joe: Valerie Kittel Alyssa: NG Houston John: Do not speak at the audience; bring them on the same journey you went through when you learned that thing you're speaking about. Charles: Angular Dev Summit
AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave
AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave On today's episode of Adventures in Angular, we have panelists Ward Bell, Joe Eames and Charles Max Wood. We have special guests, Jeff Whelpley and Kushal Dave. The discussion ranges from the organization of code bases to the benefits of using Monorepo vs Multirepo. Tune in! [00:01:45] – Introduction to Jeff Whelpley and Kushal Dave Kushal is CTO at Scroll, a start-up. Before that, he was at Foursquare, Chartbeat, Google, and IBM. He has worked in a lot of monorepo code base. Although he actually has experience working on a lot of Multirepo situations. Jeff is the CTO of a small startup in Boston called GetHuman that helps people with customer service problems. He has been on Adventures in Angular a couple of times before. He has also been in a couple of other podcasts before, as well as in the open-source community. [00:03:20] – Introduction to the issue Typically, when you’re working in just one or two people team, you don’t really have that many issues centered on dev process, coordinating changes between each other, and trying to figure out the best optimal way to organize your code. Most of the time, you understand the entire code base because you’re working with everything. It gets to be a much different problem once you get to have a larger team. In essence, everything is starting slow down because of different overhead related to the process that was needed in order to make sure got quality changes. You basically have to spend a lot of time and thought around your developer process, how you structure your code, how you physically setup, and organize your entire code base. [00:06:20] – How to organize your code bases? When Kushal worked at Google, everything is in a single giant repository. There are one or two exceptions for client code and some infrastructure things. It allowed people to feel that they could change any of the code and it made it easy to keep everybody in sync with the state of the code. There is some sort of workflow and process things that you have to change in order to get that right. Probably, the biggest one is trying to keep the repo from working in long running branches because things start to diverge. That was the model of Foursquare too. [00:08:15] – How do you run all of the CI across everything? The answer changes to different sizes. At Scroll and for most of the time that Kushal was at Foursquare, it was efficient to run all the builds on every commit. If you just have one mega build that just runs continuously, that’s good enough up until 30 or 40 developers. Once you hit that size, there’s a variety of build tools out there that you can use and understand the structure of your code base. Once you’ve used one of these build tools, declaratively indicate which artifacts depends on which libraries, and what the full dependency thing is, you can build only the relevant CI’s. You can decide whether this change only touches this binary or this test. Chuck also like the approach of having everything in master. If it was experimental, it would still go into master and their CI would effectively run the different builds with the different feature flags. If what you did broke something that somebody else was working on in a process, you could just adjust it midstream. [00:16:00] – Gatekeeper process The gatekeeper process protects the whole code base but at the same time, it’s in the layer of bureaucracy. We’ve been reviewing every piece of code before it’s allowed to land in master. Everybody on our team commits multiple times a day to master. All the changes, as much as possible are really small, especially the feature flag check. In that world, there is this bureaucracy. Hopefully, it’s not holding you up too much. The flipside of that is when you’ll feel really confident that you didn’t break anybody who depends on you and you’re going to have to revisit this change a month from now. For the past 9 months or so, Jeff tried a bunch of different configurations. He tried monorepo and other configurations from the other end of the spectrum - many small packages. As he was interviewing people with their different setups, they’ve all encountered the same types of problems. Regardless if you’re using monorepo or not, as long as you’re trying to keep your changes small and specific, and implemented quickly, it can alleviate any other pains. [00:22:10] – Guard rails The guard rails are just the reviewers. For us, every change that’s getting reviewed means that in some extent, there’s a human check on that. I’m not sure if you can but I certainly know that Reviewable and Fabricate both offer sort of wide range of configuration options. I can imagine the world in which you can programmatically keep people from landing changes that didn’t have that level. In Github, there are guard rails. That actually helps the reviewers. It’s reassuring to have some technology that this person is associated with this set of boundaries. If you want to step outside of the boundaries, they’re going to have to get some other person who understands the code that’s outside of the line to join in approving that. If their organization is big, this is something that they might have to think about. Jeff advises to really be careful about what you’re doing. Is this a change where you are just bumping version numbers or is this something that you have to change a business logic? [00:28:15] – Allowing different people to upgrade dependencies The only way Kushal has ever seen it done is a brutal all-nighter by somebody who has to sit there and get everything working. But one of the things that Google does is they develop a lot of patterns about how to refactor code to make things easier. One solution that Jeff sees is the complete opposite of the spectrum from monorepo. Dr. Gleb Bahmutov is a huge fan of open-source smaller repos - a lot of the mentality of keeping things small, separate and distinct. He’s decided that he’s going to stick in the many repo universe and just create tooling to solve some of these problems. For versioning, he runs this server that detects that a new version has been published. It will automatically try to update it and run all the tests. But according to Kushal, if you have different repos, you can move differently in terms of dependencies but if you’re now out of sync, you may suddenly have incompatible dependencies across what you’re doing. It’s a question of when you want to deal with the problem. Chuck talks about the ways you can get out of sync. With the multirepo, you can get out of sync not just on the dependencies and the build process, but also on the API’s. If you have a module that you’re working on over here and whatever are consuming it on the other side as a driver may not be updated yet so it doesn’t talk properly. Jeff also noticed that with Angular DI, if you aren’t actually using the same version, you run into issues because it has to be the exact same thing at every level or else the injection token is different. [00:36:50] – Develop within Monorepo or develop in a separate repo Chuck thinks that it depends. If there are a lot of dependencies and shortcuts that he can take by relying on the monorepo, he will do it on the monorepo like if it auto loads the correct libraries automatically. And then, they don’t have to do a whole lot of setup. If it’s small, independent, and it’s going to move quickly, then, a separate repo may be the right answer. Kushal adds that there are a lot of benefits in doing it in the monorepo. With feature flags, you have the benefit of reviewing it. It also allows you and others to keep up with everyone in terms of breaking API changes, other than having some brutal merge. Jeff will do it in a separate repo. If this an experimental thing, it disturbs people less. It alleviates the notifications that go on. That is why Kushal’s team also built a lot of custom Slack cooks in order to get some notifications tailored to the parts that they only care about. [00:44:50] – How do you work it out so that things aren’t so tightly coupled? There are no circular dependencies between your packages even transitively. As your monorepo grows you may eventually have some tooling that requires that for your build system. Can this layer have this type of functionality? Or does it need to be moved into a new package? It also means it improves your architecture. Kushal’s team is working on Java. This object that users and organizations create can know about each other’s’ objects but the users can never depend back into organizations or vice versa. You can think of the layered model of networking. We have the pure data model objects are not allowed to know anything about the service layer that interacts with the database. The database can know about those model objects. The web tier can obviously know about both the model objects and the service tier because it utilizes both of those. [00:47:30] – How are those relationships defined? They are defined in build files. If you look at Pants or Blaze or Buck, all those build systems have explicit dependency configurations so you can sort of keeping any of those invariants from being broken. But Kushal’s team just have a Wiki page that lists out the rules. They also have a test that looks for any cycles in any package dependencies. Jeff’s team created a CLI tool that walks down all subdirectories from where they’re running it. It finds all the package JSON in all your subdirectories and it creates the dependency graphs. They haven’t fully moved to a monorepo but they did start to consolidate. They have a couple of larger repos. This tool will see the dependency graph for all the NPM modules and also see the dependencies between the repos based off of the NPM module dependencies. [00:50:20] – Multimonorepo It’s not perfect to have one larger repo that has basically all of the none-deployable codes. Jeff and his team have a separate set of repos for the actual deployable code. They haven’t made the jump to where Kushal is advocating – using build tools. [00:50:20] – To open-source When you want an open-source portion of what you’re doing but not the entire company’s code base, Jeff thinks that there’s really no way out of having a separate repo for that. Google has this giant internal repo because not everything in it is open-source. Angular is open-source. That’s at least one driver that Angular is in the public Github repo and Google use so much of Angular. And some companies want the sort of open collaboration and free support and upgrades from the community. Other companies see that they’re giving away some kind of competitive advantage that they’re not willing to give up. [00:55:40] – Monorepo is better in all cases Jeff recognizes that there’s a number of organizations that have successfully implemented it but there isn’t an easy way for someone to do it. It’s not common knowledge and does not have a well-known set of tooling and best practices. There’s still a lot to go to get to the point where it’s a no-brainer and everybody knows how to do this the right way. Ward doesn’t know how to do a monorepo but according to him, if he is in an organization or starting an organization, he would go figure out how to do it and would want his organization to have a monorepo. Chuck tends to lean to monorepo but doesn't always do it either. Another caveat is even if he starts with the monorepo, that doesn’t mean that’s where he’s going to end. The answer is if you put them all in separate repos and it turns out that you need benefits of having them all in the same place, you can move them all in one repo. It may not be easy depending on how big and complicated you make your mono or the way you tie together your disparate repos. Kushal is all in. The only time that he wouldn’t do it is if he’s building disparate open-source projects and wanted them to play the open-source ecosystem. The net benefit is that everyone is moving together rapidly because monorepo is optimized for speed. But Kushal wishes that the tooling is better and that many people move to this model. Joe is also open to monorepo in a larger organization. He thinks that the separate repos keep things but monorepo can solve a lot of problems. [01:01:55] – Places to go Jeff has a bunch of articles for people who are pro-monorepo and are advocating for that. He has yet to find one that sets forth like a good mental model or decision framework. This is what Jeff hopes to create in the next couple of weeks before the conference. Picks Ward Bell Hiking Fishing Southern Sierras Chuck Max Wood Book: Profit First by Mike Michalowicz Ketogenic Diet Air-conditioning Joe Eames Book: Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are by Seth Stephens-Davidowitz Rent a scooter to ride around Rome Jeff Whelpley Survey: Monorepo vs Multirepo Twitter: @jeffwhelpley Medium: @jeffwhelpey Kushal Dave Technical Design Reviews Book: The Orphan Master’s Son Twitter: @krave Medium: Workflow Special Guests: Jeff Whelpley and Kushal Dave.
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!