POPULARITY
Panel: Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story/My Angular Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275 . Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Charles NG Conf Angular Dev Summit Angular Air Podcast
Panel: Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story/My Angular Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275 . Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Charles NG Conf Angular Dev Summit Angular Air Podcast
Panel: Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story/My Angular Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275 . Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Charles NG Conf Angular Dev Summit Angular Air Podcast
Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275. Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to projects like NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Shai Reznik Charles NG Conf Angular Dev Summit Angular Air Podcast
Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275. Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to projects like NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Shai Reznik Charles NG Conf Angular Dev Summit Angular Air Podcast
Charles Max Wood Guest: Austin McDaniel This week on My JavaScript Story, Charles speaks with Austin McDaniel. Austin is a return guest and was previously featured on JavaScript Jabber episode 275. Austin talks about his journey getting into programming as an 11year old, to recently, as a web developer with more complex technologies. Austin talks about building widgets, working in Angular, JavaScript, and more in-depth web development on many different platforms. Lastly, Austin talks about his contributions to projects like NGX Charts and speaking at a variety of developer conferences. In particular, we dive pretty deep on: How did you get into programming? 11 years old Cue Basic Web developer College jobs was in web developing IE6 Building Widgets Components jquery Web is the future How did you get into Angular? 2013, v1.2 Backbone Angular 1 & 2 NG X Charts Speaking at Conferences Augmented Reality and VR Web AR Angular Air Podcast Working as a contractor with Google and much, much more! Links: JavaScript Jabber episode 275 jquery http://amcdnl.com Angular Air Podcast @amcdnl github.com/amcdnl Picks Austin Todd Motto Shai Reznik Charles NG Conf Angular Dev Summit Angular Air Podcast
0:15 We’re live! Let take our shirts up and talk about X. John talks about his recent shit storm rant on YouTube. John mention some had told him about starting a Twich channel. John says he likes doing the live videos and he gets great audience interaction with live video. 5:00 John talks about doing a live show called “Let Take Our Shirts Off and Talk About…” The Ted talks about Simple Programmer. 6:30 Josh mentions catching up on sleep after a trip to Wisconsin, for a Perry Marshall Round Table meeting. Josh talks about the ins and outs of building the membership program for their products. Josh talks about the direction their product or programs are about, after analyzing the marketing and platform. 11:45 Josh talk about defining what this membership off is about before launching it. John and Josh talk about how this would be a different kind of launch. 15:50 Chuck mentions that Thrive Cart is still in beta and only by invitation. Josh talk about the 900 amazon bill and bring that bill down. John talks about the membership course and products. Josh talks about setting up some email redirects. 19:00 John talks about recording 40 chapters of his audiobook, and 20 chapters to go. John talks about the crude language and titles of his YouTube videos, and how they don’t something serve the buttoned-up business corporations. 22:00 Chuck talks about the numbers of attendees of the Ruby Dev Summit and Angular Dev Summit. But some were paid passes and free passes to the conferences. 25:00 Chuck talks about some of the topics like machine learning and how nothing has really changed in Ruby, but on other platforms have constant change 27:00 John talks about finding an audience with those who were unpaid attendees to the recent conferences. Chuck talks about updating the websites and sites for the conferences. 31:00 Josh says that these different elements of the conferences help build Chuck’s podcast empire. The EntreProgrammers suggest the many ideas to help Chuck with making a profit on the conference tickets. Chuck talks about the pricing model for the conferences. 42:00 The EntreProgrammers talks about the various ways to make money from conferences paid or fee. John lists off several ways to create revenue streams from these annual conferences. 45:00 Chuck talks about the speakers doing talks for free and ways compensate them. John talks about the doing affiliate links and paying a percentage of the ticket sales. 55:00 Chuck talks about setting up the conferences as a kind of lead magnet for emails or product sales. Josh talks about talks with a person whose was not ready to become an e-commerce store. John says e-commerce is very different. 1:00:00 Chuck says that everyone he has talked to says he needs to get the sponsorship stuff down. John again talks about spinning up more podcasts and podcast audience. More podcasts views, listeners, downloads, equals more money for sponsorships. Thoughts for the Week Chuck - Take a break when you need one. John - Show up consistently to not fear failure Josh - Getting away, getting clear
Panel: Ward Alyssa Joe Charles In this episode of Adventures in Angular the panel tackles the topic of build systems for Angular. Since the building process is subjective to experience and options. The panel talks about different ways to build based on their own qualification and prior knowledge of things like web pack, system JS, and many more. Joe, Ward, Alyssa, and Charles discuss how Web Pack is used, and individual problems they encounter in areas of the CLI and other areas. Ward and the team discuss guides to the CLI and deployments. Also, some talks about working backward to figure issues out. Also the key four lines of code. In particular, we dive pretty deep on: Issues with Web pack Using Node Server Encounter problems with the CLI Manually making sure production line of code do not change and many more Links Web Pack CLI Heroku Picks: Ward The Annual Procrastination Conference Angular in Memory Web API Fences Alyssa Joe Plural Sight Course - Migrating from Angular JS to Angular Sara Cooper Charles Angular Dev Summit Zapier Angular Materical NG Conf.
Panel: Ward Alyssa Joe Charles In this episode of Adventures in Angular the panel tackles the topic of build systems for Angular. Since the building process is subjective to experience and options. The panel talks about different ways to build based on their own qualification and prior knowledge of things like web pack, system JS, and many more. Joe, Ward, Alyssa, and Charles discuss how Web Pack is used, and individual problems they encounter in areas of the CLI and other areas. Ward and the team discuss guides to the CLI and deployments. Also, some talks about working backward to figure issues out. Also the key four lines of code. In particular, we dive pretty deep on: Issues with Web pack Using Node Server Encounter problems with the CLI Manually making sure production line of code do not change and many more Links Web Pack CLI Heroku Picks: Ward The Annual Procrastination Conference Angular in Memory Web API Fences Alyssa Joe Plural Sight Course - Migrating from Angular JS to Angular Sara Cooper Charles Angular Dev Summit Zapier Angular Materical NG Conf.
Panel: Ward Alyssa Joe Charles In this episode of Adventures in Angular the panel tackles the topic of build systems for Angular. Since the building process is subjective to experience and options. The panel talks about different ways to build based on their own qualification and prior knowledge of things like web pack, system JS, and many more. Joe, Ward, Alyssa, and Charles discuss how Web Pack is used, and individual problems they encounter in areas of the CLI and other areas. Ward and the team discuss guides to the CLI and deployments. Also, some talks about working backward to figure issues out. Also the key four lines of code. In particular, we dive pretty deep on: Issues with Web pack Using Node Server Encounter problems with the CLI Manually making sure production line of code do not change and many more Links Web Pack CLI Heroku Picks: Ward The Annual Procrastination Conference Angular in Memory Web API Fences Alyssa Joe Plural Sight Course - Migrating from Angular JS to Angular Sara Cooper Charles Angular Dev Summit Zapier Angular Materical NG Conf.
Tweet this Episode John-David Dalton is probably best known for the Lodash library. He's currently working at Microsoft on the Edge team. He makes sure that libraries and frameworks work well in Edge. The JavaScript Jabber panel discusses the ECMAScript module system port to Node.js. John wanted to ship the ES module system to Node.js for Lodash to increase speed and decrease the disk space that it takes up. This approach allows you to gzip the library and get it down to 90 kb. This episode dives in detail into: ES Modules, what they are and how they work The Node.js and NPM package delivery ecosystem Module loaders in Node.js Babel (and other compilers) versus ES Module Loader and much, much more... Links: Lodash ES Module Loader for Node Node CommonJS Babel TypeScript FlowType Microsoft ESM Blog Post Meteor Reify ESM Spec PhantomJS zlib module in Node AWS Lambda NPM Webpack Rollup John-David Dalton on Twitter Picks: Cory: Trending Developer Skills The Devops Handbook Aimee: Nodevember ES Modules in Node Today (blog post) Dating is Dead Aaron: Ready Player One trailer breakdown Jim Jefferies Show I Can't Make This Up by Kevin Hart Work with Aaron at SaltStack Chuck: Angular Dev Summit ZohoCRM Working on Cars - Therapeutic working with your hands doing physical work John: TC39 Proposal for Optional Chaining ToyBox 3D Printer
0:15 We're live. Just Chuck and Josh. Josh talks about a Chrome bug that is not letting him use his good mic. Also, some tech tech about Josh’s new screen. Chuck says it is rain and he is not going to fix this leaking pipe. 2:30 Chuck says he was doing Angular Dev Summit all week, and gain some 700 emails for his list. Chuck say it was a good summit ad great talks. Chuck mentions that he is home alone with he kiddos. 5:00 Chuck talks about working with Fulcrum an automation tool. Chuck mentions that he has a new process with his podcast production. Chuck is also working on the renewals of sponsorships. 8:00 Chuck says he is finally releasing the episode before the show notes are done, then he can catch up with the show notes later. Josh talks about maybe using a place holder for the show notes. Chuck talks about the downward spiral with a show note writer. 10:00 Josh ask about the Angular Dev Summit, and some general attendee questions. Chuck talks about sending a email out about the summit to those who did not show up. Chuck says he want to find some to do this leg work for coordinating the summits and conferences. 15:00 Josh ask about how the “Free Model” work this time around. Chuck says the emails he gain were worth the whole event. This is a 5% bump for Chuck’s list. Josh asks about the popularity of Angular to React. Chuck explains the difference 17:00 Josh and Chuck talk about the Angular JS, and how React is growing. Chuck says he does not have a React show on yet. But he is working on it. Chuck talks about the mainstream support of the different programming languages. 20:00 Chuck talks about the banner issue that was not happening with the sponsors. Josh mentions hat John is flying home now. 23:00 Josh talks about the revenue and reach of the sponsorship. Josh talks about finding the qualified leads and get the customer value. Josh talks about the $6 a click. Josh talks about how is learning and reinventing the wheel for the sponsorships and sales. Josh thinks that they need to out source sponsorship sales. Maybe a 15 -20% commission. 28:00 Josh thinks this is outside of his niche to do the sponsorship sales. Chuck talks about the sales process from his point of view. Josh thinks that his would be a full time job for him, but he might have better use for his time. 30:00 Chuck talks about what a new show means for the revenue of sponsorships. Chuck and Josh talks about all the task for doing sales call and working with the CRM. 37:00 Chuck says he wants to build his own CRM. Josh and Chuck about their biggest problems with a CRMs. Josh says he want to mash a CRM with Trello. 39:00 Josh says he is looking for someone who does media sales. Josh talks about doing some experimentation with LinkedIn Ads. But they’re expensive. Josh talks about the campaign he did, and who he targeted. 42:00 Josh talks about how LinkedIn ads work. Josh says the is probably how he was find someone to help them. Chuck says he would give an introduction to someone who does marketing for podcasts. 44:00 Josh talks about a new licensing program they’re apart of for the new book and podcasts. Next this is working on the audio book. 47:00 Chuck says he like listening to audio. Josh says he does both kindle and audio. Chuck and Josh discuss the next process of the show notes on the podcasts. Thoughts of the Week! Chuck - Creating the process and trusting the process. Josh - It talks some time in marketing…
Tweet this Episode This is a talk given by Uri Shaked at the recent Angular Dev Summit. If you'd like to be notified about the next Angular Dev Summit, go to the Angular Dev Summit website and register for an attendee ticket. Uri is a Google Developer Expert in Web Technologies and Angular. He also works for BlackBerry. Uri shows us how to build a static website using Angular and other web technologies. Links: Github Pages Jekyll yarn Core JS Zone JS TypeScript Visual Studio Code Angular CLI SystemJS Webpack Fuse-box Angular Universal ts-node urish.org (Uri's website) firebase hosting ng2-fused preboot angular-iot
Tweet this Episode John-David Dalton is probably best known for the Lodash library. He's currently working at Microsoft on the Edge team. He makes sure that libraries and frameworks work well in Edge. The JavaScript Jabber panel discusses the ECMAScript module system port to Node.js. John wanted to ship the ES module system to Node.js for Lodash to increase speed and decrease the disk space that it takes up. This approach allows you to gzip the library and get it down to 90 kb. This episode dives in detail into: ES Modules, what they are and how they work The Node.js and NPM package delivery ecosystem Module loaders in Node.js Babel (and other compilers) versus ES Module Loader and much, much more... Links: Lodash ES Module Loader for Node Node CommonJS Babel TypeScript FlowType Microsoft ESM Blog Post Meteor Reify ESM Spec PhantomJS zlib module in Node AWS Lambda NPM Webpack Rollup John-David Dalton on Twitter Picks: Cory: Trending Developer Skills The Devops Handbook Aimee: Nodevember ES Modules in Node Today (blog post) Dating is Dead Aaron: Ready Player One trailer breakdown Jim Jefferies Show I Can't Make This Up by Kevin Hart Work with Aaron at SaltStack Chuck: Angular Dev Summit ZohoCRM Working on Cars - Therapeutic working with your hands doing physical work John: TC39 Proposal for Optional Chaining ToyBox 3D Printer
Tweet this Episode This is a talk given by Uri Shaked at the recent Angular Dev Summit. If you'd like to be notified about the next Angular Dev Summit, go to the Angular Dev Summit website and register for an attendee ticket. Uri is a Google Developer Expert in Web Technologies and Angular. He also works for BlackBerry. Uri shows us how to build a static website using Angular and other web technologies. Links: Github Pages Jekyll yarn Core JS Zone JS TypeScript Visual Studio Code Angular CLI SystemJS Webpack Fuse-box Angular Universal ts-node urish.org (Uri's website) firebase hosting ng2-fused preboot angular-iot
Tweet this Episode John-David Dalton is probably best known for the Lodash library. He's currently working at Microsoft on the Edge team. He makes sure that libraries and frameworks work well in Edge. The JavaScript Jabber panel discusses the ECMAScript module system port to Node.js. John wanted to ship the ES module system to Node.js for Lodash to increase speed and decrease the disk space that it takes up. This approach allows you to gzip the library and get it down to 90 kb. This episode dives in detail into: ES Modules, what they are and how they work The Node.js and NPM package delivery ecosystem Module loaders in Node.js Babel (and other compilers) versus ES Module Loader and much, much more... Links: Lodash ES Module Loader for Node Node CommonJS Babel TypeScript FlowType Microsoft ESM Blog Post Meteor Reify ESM Spec PhantomJS zlib module in Node AWS Lambda NPM Webpack Rollup John-David Dalton on Twitter Picks: Cory: Trending Developer Skills The Devops Handbook Aimee: Nodevember ES Modules in Node Today (blog post) Dating is Dead Aaron: Ready Player One trailer breakdown Jim Jefferies Show I Can't Make This Up by Kevin Hart Work with Aaron at SaltStack Chuck: Angular Dev Summit ZohoCRM Working on Cars - Therapeutic working with your hands doing physical work John: TC39 Proposal for Optional Chaining ToyBox 3D Printer
Tweet this Episode This is a talk given by Uri Shaked at the recent Angular Dev Summit. If you'd like to be notified about the next Angular Dev Summit, go to the Angular Dev Summit website and register for an attendee ticket. Uri is a Google Developer Expert in Web Technologies and Angular. He also works for BlackBerry. Uri shows us how to build a static website using Angular and other web technologies. Links: Github Pages Jekyll yarn Core JS Zone JS TypeScript Visual Studio Code Angular CLI SystemJS Webpack Fuse-box Angular Universal ts-node urish.org (Uri's website) firebase hosting ng2-fused preboot angular-iot
0:15 We’re Live! Just Josh and Chuck today. Josh is calling in form a rotary phone. Chuck mentions he had to write show notes. Chuck is firing again. Chuck talks about a high utility bill and trying to find out why? Leaking pipes! Murphy lives here. 7:00 Chuck mentions getting a new sponsor and getting some help to fund the month till sponsors pay. 10:00 Chuck says he is going to hire 4 writers to be responsible for the show’s notes. Also Chuck is working to keep production ahead so the production line has some buffer. Chuck and Josh talks about evergreen content and how podcasting and publishing works to help traffic. 18:00 Josh mentions that Chuck could recycle some shows to buy some time to till production catches up. Chuck talks about planning ahead with the other podcast hosts to replace topics. 20:00 Josh talks what the process is on producing the show notes for one episode. Josh asks is the writers need to know code to write the notes. Chuck says no, that is no needed. 23:00 Josh suggests hiring 10 people to write the notes from UpWork. Chuck talks about getting off of Slack and switching to MatterMost for podcast production. 28:00 Chuck says that his podcast production broken and his house broke, but Angular Dev Summit is working out just fine. Josh says this production line needs to be a Zero Tolerance policy. 32:00 Josh talks about working at a new paper and making sure that things get done. Josh says this maybe because they are doing this on a budget, is the big reason things fall apart. 33:00 Josh talks about Hub Spot and the free CRM. Josh describes his issues with loading data into these kinds of tools, and trying to build tasks. Josh talks about the G Mail plugin in Hub Spot. 38:00 Josh talks about he issues with his email tools. Chuck talks about the kind of features he needs to these CRM tools. 40:00 Josh says he is struggling with the outreach, and these tools need to be configurable to cater to their needs. Josh talks about doing Cold Out Reach and Warm Follow up, using these tools. 45:00 More talk on how similar CRMs are, and the one or two small differences. Josh talks about finally setting up their membership site. Josh talks about flipping the switch and making the site go live, but with a test first. 50:00 Josh talks about how the title on the membership site was broken due to the title. Josh talks about how he was not impress by Digital Access Pass. 56:00 Chuck says he was to take a look into this, because he wants to do something similar. Josh says he has not hear from John. He should be back this coming week. More talk on CRM features. 1:02:00 Josh and Chuck mentioned scripting or writing a bit of code, or learning new things. Thoughts for the Week Chuck - Don’t go to victim-land. Josh - Taking the time to figure out the steps.
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
JSJ 275: Zones in Node with Austin McDaniel The panel for this week on JavaScript Jabber is Cory House, Aimee Knight, and Charles Max Wood. They speak with special guest Austin McDaniel about Zones in Node. Tune in to learn more about this topic! [00:01:11] Introduction to Austin Austin has worked in JavaScript for the past ten years. He currently works in Angular development and is a panelist on Angular Air. He has spent most of his career doing work in front-end development but has recently begun working with back-end development. With his move to back-end work he has incorporated front-end ideas with Angular into a back-end concept. [00:02:00] The Way it Works NodeJS is an event loop. There is no way to scope the context of a call stack. So for example, Austin makes a Node request to a server and wants to track the life cycle of that Node request. Once deep in the scope, or deep in the code, it is not easy to get the unique id. Maybe he wants to get the user from Passport JS. Other languages – Python, Java – have a concept called thread local storage. They can associate context with the thread and throughout the life cycle of that request, he can retrieve that context. There is a TC39 proposal for zones. A zone allows you to do what was just described. They can create new zones and associate data with them. Zones can also associate unique ids for requests and can associate the user so they can see who requested later in the stack. Zones also allow to scope and create a context. And then it allows scoping requests and capturing contacts all the way down. [00:05:40] Zone Uses One way Zone is being used is to capture stack traces, and associating unique ids with the requests. If there is an error, then Zone can capture a stack request and associate that back to the request that happened. Otherwise, the error would be vague. Zones are a TC39 proposal. Because it is still a proposal people are unsure how they can use it. Zones are not a new concept. Austin first saw Zones being used back when Angular 2 was first conceived. If an event happened and they wanted to isolate a component and create a scope for it, they used Zones to do so. Not a huge fan of how it worked out (quirky). He used the same library that Angular uses in his backend. It is a specific implementation for Node. Monkey patches all of the functions and creates a scope and passes it down to your functions, which does a good job capturing the information. [00:08:40] Is installing the library all you need to get this started? Yes, go to npminstallzone.js and install the library. There is a middler function for kla. To fork the zone, typing zone.current. This takes the Zone you are in and creates a new isolated Zone for that fork. A name can then be created for the Zone so it can be associated back with a call stack and assigned properties. Later, any properties can be retrieved no matter what level you are at. [00:09:50] So did you create the Zone library or did Google? The Google team created the Zone library. It was introduced in 2014 with Angular 2. It is currently used in front-end development. [00:10:12] Is the TC39 proposal based on the Zone library? While Austin has a feeling that the TC39 proposal came out of the Zone library, he cannot say for sure. [00:10:39] What stage is the proposal in right now? Zone is in Stage Zero right now. Zone JS is the most popular version because of its forced adoption to Angular. He recommends people use the Angular version because it is the most tested as it has a high number of people using it for front-end development. [00:11:50] Is there an easy way to copy the information from one thread to another? Yes. The best way would probably be to manually copy the information. Forking it may also work. [00:14:18] Is Stage Zero where someone is still looking to put it in or is it imminent? Austin believes that since it is actually in a stage, it means it is going to happen eventually but could be wrong. He assumes that it is going to be similar to the version that is out now. Aimee read that Stage Zero is the implementation stage where developers are gathering input about the product. Austin says that this basically means, “Implementation may vary. Enter at your own risk.” [00:16:21] If I’m using New Relic, is it using Zone JS under the hood? Austin is unsure but there something like that has to be done if profiling is being used. There has to be a way that you insert yourself in between calls. Zone is doing that while providing context, but probably not using Zone JS. There is a similar implementation to tracing and inserting logging in between all calls and timeouts. [00:17:22] What are the nuances? Why isn’t everybody doing this? Zone is still new in the JavaScript world, meaning everyone has a ton of ideas about what should be done. It can be frustrating to work with Zone in front-end development because it has to be manually learned. But in terms of implementation, only trying to create a context. Austin recommends Zone if people want to create direct contacts. The exception would be 100 lines of Zone traces because they can get difficult. Another issue Austin has is Node’s native basic weight. Weight hooks are still up in the air. The team is currently waiting on the Node JS community to provide additional information so that they can finish. Context can get lost sometimes if the wrong language is used. He is using Typescript and doesn’t have that problem because it is straightforward. [00:21:44:] Does this affect your ability to test your software at all? No, there have not been any issues with testing. One thing to accommodate for is if you are expecting certain contexts to be present you have to mock for those in the tests. After that happens, the tests should have no problems. Picks Cory: Apple AirPods Aimee: Blackmill Understanding Zones Charles: Classical Reading Playlist on Amazon Building stairs for his dad Angular Dev Summit Austin: NGRX Library Redux Links Twitter GitHub
JSJ 275: Zones in Node with Austin McDaniel The panel for this week on JavaScript Jabber is Cory House, Aimee Knight, and Charles Max Wood. They speak with special guest Austin McDaniel about Zones in Node. Tune in to learn more about this topic! [00:01:11] Introduction to Austin Austin has worked in JavaScript for the past ten years. He currently works in Angular development and is a panelist on Angular Air. He has spent most of his career doing work in front-end development but has recently begun working with back-end development. With his move to back-end work he has incorporated front-end ideas with Angular into a back-end concept. [00:02:00] The Way it Works NodeJS is an event loop. There is no way to scope the context of a call stack. So for example, Austin makes a Node request to a server and wants to track the life cycle of that Node request. Once deep in the scope, or deep in the code, it is not easy to get the unique id. Maybe he wants to get the user from Passport JS. Other languages – Python, Java – have a concept called thread local storage. They can associate context with the thread and throughout the life cycle of that request, he can retrieve that context. There is a TC39 proposal for zones. A zone allows you to do what was just described. They can create new zones and associate data with them. Zones can also associate unique ids for requests and can associate the user so they can see who requested later in the stack. Zones also allow to scope and create a context. And then it allows scoping requests and capturing contacts all the way down. [00:05:40] Zone Uses One way Zone is being used is to capture stack traces, and associating unique ids with the requests. If there is an error, then Zone can capture a stack request and associate that back to the request that happened. Otherwise, the error would be vague. Zones are a TC39 proposal. Because it is still a proposal people are unsure how they can use it. Zones are not a new concept. Austin first saw Zones being used back when Angular 2 was first conceived. If an event happened and they wanted to isolate a component and create a scope for it, they used Zones to do so. Not a huge fan of how it worked out (quirky). He used the same library that Angular uses in his backend. It is a specific implementation for Node. Monkey patches all of the functions and creates a scope and passes it down to your functions, which does a good job capturing the information. [00:08:40] Is installing the library all you need to get this started? Yes, go to npminstallzone.js and install the library. There is a middler function for kla. To fork the zone, typing zone.current. This takes the Zone you are in and creates a new isolated Zone for that fork. A name can then be created for the Zone so it can be associated back with a call stack and assigned properties. Later, any properties can be retrieved no matter what level you are at. [00:09:50] So did you create the Zone library or did Google? The Google team created the Zone library. It was introduced in 2014 with Angular 2. It is currently used in front-end development. [00:10:12] Is the TC39 proposal based on the Zone library? While Austin has a feeling that the TC39 proposal came out of the Zone library, he cannot say for sure. [00:10:39] What stage is the proposal in right now? Zone is in Stage Zero right now. Zone JS is the most popular version because of its forced adoption to Angular. He recommends people use the Angular version because it is the most tested as it has a high number of people using it for front-end development. [00:11:50] Is there an easy way to copy the information from one thread to another? Yes. The best way would probably be to manually copy the information. Forking it may also work. [00:14:18] Is Stage Zero where someone is still looking to put it in or is it imminent? Austin believes that since it is actually in a stage, it means it is going to happen eventually but could be wrong. He assumes that it is going to be similar to the version that is out now. Aimee read that Stage Zero is the implementation stage where developers are gathering input about the product. Austin says that this basically means, “Implementation may vary. Enter at your own risk.” [00:16:21] If I’m using New Relic, is it using Zone JS under the hood? Austin is unsure but there something like that has to be done if profiling is being used. There has to be a way that you insert yourself in between calls. Zone is doing that while providing context, but probably not using Zone JS. There is a similar implementation to tracing and inserting logging in between all calls and timeouts. [00:17:22] What are the nuances? Why isn’t everybody doing this? Zone is still new in the JavaScript world, meaning everyone has a ton of ideas about what should be done. It can be frustrating to work with Zone in front-end development because it has to be manually learned. But in terms of implementation, only trying to create a context. Austin recommends Zone if people want to create direct contacts. The exception would be 100 lines of Zone traces because they can get difficult. Another issue Austin has is Node’s native basic weight. Weight hooks are still up in the air. The team is currently waiting on the Node JS community to provide additional information so that they can finish. Context can get lost sometimes if the wrong language is used. He is using Typescript and doesn’t have that problem because it is straightforward. [00:21:44:] Does this affect your ability to test your software at all? No, there have not been any issues with testing. One thing to accommodate for is if you are expecting certain contexts to be present you have to mock for those in the tests. After that happens, the tests should have no problems. Picks Cory: Apple AirPods Aimee: Blackmill Understanding Zones Charles: Classical Reading Playlist on Amazon Building stairs for his dad Angular Dev Summit Austin: NGRX Library Redux Links Twitter GitHub
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
JSJ 275: Zones in Node with Austin McDaniel The panel for this week on JavaScript Jabber is Cory House, Aimee Knight, and Charles Max Wood. They speak with special guest Austin McDaniel about Zones in Node. Tune in to learn more about this topic! [00:01:11] Introduction to Austin Austin has worked in JavaScript for the past ten years. He currently works in Angular development and is a panelist on Angular Air. He has spent most of his career doing work in front-end development but has recently begun working with back-end development. With his move to back-end work he has incorporated front-end ideas with Angular into a back-end concept. [00:02:00] The Way it Works NodeJS is an event loop. There is no way to scope the context of a call stack. So for example, Austin makes a Node request to a server and wants to track the life cycle of that Node request. Once deep in the scope, or deep in the code, it is not easy to get the unique id. Maybe he wants to get the user from Passport JS. Other languages – Python, Java – have a concept called thread local storage. They can associate context with the thread and throughout the life cycle of that request, he can retrieve that context. There is a TC39 proposal for zones. A zone allows you to do what was just described. They can create new zones and associate data with them. Zones can also associate unique ids for requests and can associate the user so they can see who requested later in the stack. Zones also allow to scope and create a context. And then it allows scoping requests and capturing contacts all the way down. [00:05:40] Zone Uses One way Zone is being used is to capture stack traces, and associating unique ids with the requests. If there is an error, then Zone can capture a stack request and associate that back to the request that happened. Otherwise, the error would be vague. Zones are a TC39 proposal. Because it is still a proposal people are unsure how they can use it. Zones are not a new concept. Austin first saw Zones being used back when Angular 2 was first conceived. If an event happened and they wanted to isolate a component and create a scope for it, they used Zones to do so. Not a huge fan of how it worked out (quirky). He used the same library that Angular uses in his backend. It is a specific implementation for Node. Monkey patches all of the functions and creates a scope and passes it down to your functions, which does a good job capturing the information. [00:08:40] Is installing the library all you need to get this started? Yes, go to npminstallzone.js and install the library. There is a middler function for kla. To fork the zone, typing zone.current. This takes the Zone you are in and creates a new isolated Zone for that fork. A name can then be created for the Zone so it can be associated back with a call stack and assigned properties. Later, any properties can be retrieved no matter what level you are at. [00:09:50] So did you create the Zone library or did Google? The Google team created the Zone library. It was introduced in 2014 with Angular 2. It is currently used in front-end development. [00:10:12] Is the TC39 proposal based on the Zone library? While Austin has a feeling that the TC39 proposal came out of the Zone library, he cannot say for sure. [00:10:39] What stage is the proposal in right now? Zone is in Stage Zero right now. Zone JS is the most popular version because of its forced adoption to Angular. He recommends people use the Angular version because it is the most tested as it has a high number of people using it for front-end development. [00:11:50] Is there an easy way to copy the information from one thread to another? Yes. The best way would probably be to manually copy the information. Forking it may also work. [00:14:18] Is Stage Zero where someone is still looking to put it in or is it imminent? Austin believes that since it is actually in a stage, it means it is going to happen eventually but could be wrong. He assumes that it is going to be similar to the version that is out now. Aimee read that Stage Zero is the implementation stage where developers are gathering input about the product. Austin says that this basically means, “Implementation may vary. Enter at your own risk.” [00:16:21] If I’m using New Relic, is it using Zone JS under the hood? Austin is unsure but there something like that has to be done if profiling is being used. There has to be a way that you insert yourself in between calls. Zone is doing that while providing context, but probably not using Zone JS. There is a similar implementation to tracing and inserting logging in between all calls and timeouts. [00:17:22] What are the nuances? Why isn’t everybody doing this? Zone is still new in the JavaScript world, meaning everyone has a ton of ideas about what should be done. It can be frustrating to work with Zone in front-end development because it has to be manually learned. But in terms of implementation, only trying to create a context. Austin recommends Zone if people want to create direct contacts. The exception would be 100 lines of Zone traces because they can get difficult. Another issue Austin has is Node’s native basic weight. Weight hooks are still up in the air. The team is currently waiting on the Node JS community to provide additional information so that they can finish. Context can get lost sometimes if the wrong language is used. He is using Typescript and doesn’t have that problem because it is straightforward. [00:21:44:] Does this affect your ability to test your software at all? No, there have not been any issues with testing. One thing to accommodate for is if you are expecting certain contexts to be present you have to mock for those in the tests. After that happens, the tests should have no problems. Picks Cory: Apple AirPods Aimee: Blackmill Understanding Zones Charles: Classical Reading Playlist on Amazon Building stairs for his dad Angular Dev Summit Austin: NGRX Library Redux Links Twitter GitHub
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
MAS 018: Gil Fink This episode is a My Angular Story with Gil Fink. Listen to learn more about Gil and his story! [00:02:16] Introduction to Gil Gil is the CEO of Sparxys, a consulting company he created. wrote a book called the Pro Single Page Application Development. He was a co-organizer of Angular App, which is a conference in Israel, which was held just last month. [00:04:39] How did you get into programming? Gil first owned a computer at ten years old. It was an IBM compatible computer with an MS-DOS operating system. He used it to play games like Pac Man, which he would attempt to edit and claims was the first time he tried to program anything. Gil wanted to learn computer science in high school. In grades tenth through twelfth, he learned Turbo Pascal and Excel. During this time he wrote unprofessional programs. He went to college for computer science. His first job as a web developer was helping to write a government portal for the Israeli government. What ultimately led him to computer science is the curiosity to know how things that operate hardware work. “If you’re curious about something, go and learn it.” [00:12:12] How did you go from government to working with Angular? Gil describes his story to Angular as one of progression and “moving on with everybody else.” He worked with the government project from 2005-2007. He was then involved with a web app project using jQuery and Backbone. The VP while he was at the job asked why he was using backbone, so Gil researched Angular. It looked like it included everything he needed. After reading more on it, he began using it and created an Angular JS course for his employer. He learned it through creating that course. [00:15:35] What was it about Angular that made you decide you wanted to be doing it? Gil thinks the community is one of the best things about Angular. The team is approachable. Gil had issues with other libraries and did not get the same vibe from people. They were not as welcoming and eager to help as they are in the Angular community. There is a lot of collaboration. The tools and frameworks around Angular are developing and people help each other as they develop. [00:23:30] Contributions Gil has made several contributions to the Angular community. Most recently he has created the Angular 2-indexeddb service. It is a library that can be found GitHub. He has written directives in the past that people use and is amazed that people use things that he wrote. He wrote Story.js, another library that wrapped all storages in one browser, which he does recommend anyone use. He has published several online videos and was featured on an Angular Connect workshop recently. Gil is always willing to help mentor other developers. He has started writing blog posts in order to help junior freelancers. Currently he is involved with two start up accelerators. They are Google Launchpad Accelerator and University Accelerator. Both are where people come with ideas and they help make their ideas startups. Picks Gil: Goodness Squad Angular2-indexeddb Library Spider-Man Homecoming Charles: The Millionaire Mind The Freelancer Show Toastmasters club Angular Dev Summit Links Twitter http://gilfink.azurewebsites.net/ Medium Sparxys
MAS 018: Gil Fink This episode is a My Angular Story with Gil Fink. Listen to learn more about Gil and his story! [00:02:16] Introduction to Gil Gil is the CEO of Sparxys, a consulting company he created. wrote a book called the Pro Single Page Application Development. He was a co-organizer of Angular App, which is a conference in Israel, which was held just last month. [00:04:39] How did you get into programming? Gil first owned a computer at ten years old. It was an IBM compatible computer with an MS-DOS operating system. He used it to play games like Pac Man, which he would attempt to edit and claims was the first time he tried to program anything. Gil wanted to learn computer science in high school. In grades tenth through twelfth, he learned Turbo Pascal and Excel. During this time he wrote unprofessional programs. He went to college for computer science. His first job as a web developer was helping to write a government portal for the Israeli government. What ultimately led him to computer science is the curiosity to know how things that operate hardware work. “If you’re curious about something, go and learn it.” [00:12:12] How did you go from government to working with Angular? Gil describes his story to Angular as one of progression and “moving on with everybody else.” He worked with the government project from 2005-2007. He was then involved with a web app project using jQuery and Backbone. The VP while he was at the job asked why he was using backbone, so Gil researched Angular. It looked like it included everything he needed. After reading more on it, he began using it and created an Angular JS course for his employer. He learned it through creating that course. [00:15:35] What was it about Angular that made you decide you wanted to be doing it? Gil thinks the community is one of the best things about Angular. The team is approachable. Gil had issues with other libraries and did not get the same vibe from people. They were not as welcoming and eager to help as they are in the Angular community. There is a lot of collaboration. The tools and frameworks around Angular are developing and people help each other as they develop. [00:23:30] Contributions Gil has made several contributions to the Angular community. Most recently he has created the Angular 2-indexeddb service. It is a library that can be found GitHub. He has written directives in the past that people use and is amazed that people use things that he wrote. He wrote Story.js, another library that wrapped all storages in one browser, which he does recommend anyone use. He has published several online videos and was featured on an Angular Connect workshop recently. Gil is always willing to help mentor other developers. He has started writing blog posts in order to help junior freelancers. Currently he is involved with two start up accelerators. They are Google Launchpad Accelerator and University Accelerator. Both are where people come with ideas and they help make their ideas startups. Picks Gil: Goodness Squad Angular2-indexeddb Library Spider-Man Homecoming Charles: The Millionaire Mind The Freelancer Show Toastmasters club Angular Dev Summit Links Twitter http://gilfink.azurewebsites.net/ Medium Sparxys
MAS 018: Gil Fink This episode is a My Angular Story with Gil Fink. Listen to learn more about Gil and his story! [00:02:16] Introduction to Gil Gil is the CEO of Sparxys, a consulting company he created. wrote a book called the Pro Single Page Application Development. He was a co-organizer of Angular App, which is a conference in Israel, which was held just last month. [00:04:39] How did you get into programming? Gil first owned a computer at ten years old. It was an IBM compatible computer with an MS-DOS operating system. He used it to play games like Pac Man, which he would attempt to edit and claims was the first time he tried to program anything. Gil wanted to learn computer science in high school. In grades tenth through twelfth, he learned Turbo Pascal and Excel. During this time he wrote unprofessional programs. He went to college for computer science. His first job as a web developer was helping to write a government portal for the Israeli government. What ultimately led him to computer science is the curiosity to know how things that operate hardware work. “If you’re curious about something, go and learn it.” [00:12:12] How did you go from government to working with Angular? Gil describes his story to Angular as one of progression and “moving on with everybody else.” He worked with the government project from 2005-2007. He was then involved with a web app project using jQuery and Backbone. The VP while he was at the job asked why he was using backbone, so Gil researched Angular. It looked like it included everything he needed. After reading more on it, he began using it and created an Angular JS course for his employer. He learned it through creating that course. [00:15:35] What was it about Angular that made you decide you wanted to be doing it? Gil thinks the community is one of the best things about Angular. The team is approachable. Gil had issues with other libraries and did not get the same vibe from people. They were not as welcoming and eager to help as they are in the Angular community. There is a lot of collaboration. The tools and frameworks around Angular are developing and people help each other as they develop. [00:23:30] Contributions Gil has made several contributions to the Angular community. Most recently he has created the Angular 2-indexeddb service. It is a library that can be found GitHub. He has written directives in the past that people use and is amazed that people use things that he wrote. He wrote Story.js, another library that wrapped all storages in one browser, which he does recommend anyone use. He has published several online videos and was featured on an Angular Connect workshop recently. Gil is always willing to help mentor other developers. He has started writing blog posts in order to help junior freelancers. Currently he is involved with two start up accelerators. They are Google Launchpad Accelerator and University Accelerator. Both are where people come with ideas and they help make their ideas startups. Picks Gil: Goodness Squad Angular2-indexeddb Library Spider-Man Homecoming Charles: The Millionaire Mind The Freelancer Show Toastmasters club Angular Dev Summit Links Twitter http://gilfink.azurewebsites.net/ Medium Sparxys
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
RR 318 Metaprogramming with Jordan Hudgens Today's Ruby Rogues podcast features Metaprogramming with Jordan Hudgens. We have panelists Jerome Hardaway, Brian Hogan, Dave Kimura and Charles Max Wood. Tune in and learn more about metaprogramming! [00:02:00] – Introduction to Jordan Hudgens Jordan is the Lead Instructor at Bottega. Bottega has locations in Salt Lake City, Utah and in Phoenix, Arizona. They’re a full-stack development code school. [00:02:55] – Metaprogramming Metaprogramming was one of those scary concepts. At the code school, when the students learn about metaprogramming and how it works, you can tell that it’s definitely a pretty exciting thing. Its formal definition is it’s a code that writes code. It can dynamically, at run-time, render other methods available to the program. [00:04:10] – Use cases for metaprogramming The best use case that Jordan has ever seen is implemented in Rails and that’s code that can run database queries such as User.find_by_email. By passing the email, it will go and find the user with that particular email. Now, there is no method in active record or in the user model that is called find_by_email. That’s something that is created at run-time. Another one is something that Jordan has implemented and that’s a phone parser gem. It essentially parses and validates a phone number. It also has a country code lookup. With all the countries in the world, that would be very time-consuming. But within 8 lines of code, it could do what a hundred lines could do without metaprogramming. [00:06:50] – Performance implications Jordan never had performance issues because the generation of methods is not something that’s incredibly memory intensive. You might run into that but it would be a poor choice to do in terms of readability. In Brian’s experience, it comes down to the type of metaprogramming you do. If you have a bunch of logic somewhere and method_missing, that’s going to be a performance bottleneck. And if you’re generating a bunch of methods when the application starts up, it might increase the start-up time of the application. But after that, the performance of the application seems to not have any fluctuation at all. There are 2 main types Jordan works with. First is method_missing. Method_missing could have a little bit of performance hit because of how Ruby works. The system is going to look at every single method. The second type is define_method. In define_method, you’re really just creating a large dynamic set of methods at runtime. When you start up the Rails server, it’s going to build all those methods but it’s not going to be when you’re calling it. Whereas in method_missing, it has a different type of lookup process. [00:11:55] – Method collisions on monkey patching That’s one of the reasons why monkey patching can have a bad reputation. You don’t know who else may be overriding those set of methods or opening up that class. Jordan’s personal approach is trying to separate things out as much as humanly possible. If there’s something that can be done in the lib directory, you can place that functionality inside of a separate module. And if you’re creating a gem, you have to be sensitive to other gems in that space or even the Rails core. [00:17:25] – How to be good citizens to other developers Metaprogramming has a lot of potentials to do great things but it also has a potential to cause a number of problems in the application. For Jordan’s students, what he usually does is walk them through some examples of metaprogramming where it can be done poorly. But then, he will follow it up with showing exactly when this is done right. He shows examples of poorly written classes that have dozen nearly identical methods. And then, he also shows how they could take all those methods, put the names in an array, and show how to leverage things like define_method to generate them. He also shows them how doing monkey patching can cause issues, how they can actually open up the string class and change one of the basic functionalities. Show that when they override that, that affects the entire rest of the application. [00:24:45] – Worst examples of metaprogramming Jordan ran into this hive of metaprogramming. When he opened up one of its classes, he had no idea what that class did. It was method_missing all over the place. Usually, there are 4 or 5 lines of code inside of that. It’s relatively straightforward and makes logical sense when you read it. This was nothing like that. They had multiple conditionals inside of the method_missing. One other hard thing about it is it does not have any test whatsoever. You need some test to make sure you’re capturing that functionality and to check if changes broke anything. You can’t also decipher what the inputs and outputs are. [00:28:35] – Testing Follow as much as real world examples. For example, in the phone parser gem, you can see some tests in there for that. You can also pass in the input that you plan to give. See if that matches the output. Jordan tells his students that respond_to_missing is as important to putting method_missing in there [00:35:25] – Resources to get started Paolo Perrotta’s book Metaprogramming Ruby is one of the standards for metaprogramming in Ruby. He also gave some fantastic examples. He created a story about a new developer who goes into a company and learns how to implement metaprogramming from senior devs. It’s very entertaining and it also covers all the different aspects to think of metaprogramming, when to use it and when it could be a very bad idea to use it. Picks Jerome Hardaway Don’t Know Metaprogramming in Ruby? By Gavin Morrice Dave Kimura Sherlock TV Series on BBC Brian Hogan iOS application: Workflow Overwatch Charles Max Wood Ruby Dev Summit Angular Dev Summit Focuster Jordan Hudgens Petergate Comprehensive Ruby Programming by Jordan Hudgens Twitter @jordanhudgens Instagram @jordanhudgens Blog crondose.com
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
RR 318 Metaprogramming with Jordan Hudgens Today's Ruby Rogues podcast features Metaprogramming with Jordan Hudgens. We have panelists Jerome Hardaway, Brian Hogan, Dave Kimura and Charles Max Wood. Tune in and learn more about metaprogramming! [00:02:00] – Introduction to Jordan Hudgens Jordan is the Lead Instructor at Bottega. Bottega has locations in Salt Lake City, Utah and in Phoenix, Arizona. They’re a full-stack development code school. [00:02:55] – Metaprogramming Metaprogramming was one of those scary concepts. At the code school, when the students learn about metaprogramming and how it works, you can tell that it’s definitely a pretty exciting thing. Its formal definition is it’s a code that writes code. It can dynamically, at run-time, render other methods available to the program. [00:04:10] – Use cases for metaprogramming The best use case that Jordan has ever seen is implemented in Rails and that’s code that can run database queries such as User.find_by_email. By passing the email, it will go and find the user with that particular email. Now, there is no method in active record or in the user model that is called find_by_email. That’s something that is created at run-time. Another one is something that Jordan has implemented and that’s a phone parser gem. It essentially parses and validates a phone number. It also has a country code lookup. With all the countries in the world, that would be very time-consuming. But within 8 lines of code, it could do what a hundred lines could do without metaprogramming. [00:06:50] – Performance implications Jordan never had performance issues because the generation of methods is not something that’s incredibly memory intensive. You might run into that but it would be a poor choice to do in terms of readability. In Brian’s experience, it comes down to the type of metaprogramming you do. If you have a bunch of logic somewhere and method_missing, that’s going to be a performance bottleneck. And if you’re generating a bunch of methods when the application starts up, it might increase the start-up time of the application. But after that, the performance of the application seems to not have any fluctuation at all. There are 2 main types Jordan works with. First is method_missing. Method_missing could have a little bit of performance hit because of how Ruby works. The system is going to look at every single method. The second type is define_method. In define_method, you’re really just creating a large dynamic set of methods at runtime. When you start up the Rails server, it’s going to build all those methods but it’s not going to be when you’re calling it. Whereas in method_missing, it has a different type of lookup process. [00:11:55] – Method collisions on monkey patching That’s one of the reasons why monkey patching can have a bad reputation. You don’t know who else may be overriding those set of methods or opening up that class. Jordan’s personal approach is trying to separate things out as much as humanly possible. If there’s something that can be done in the lib directory, you can place that functionality inside of a separate module. And if you’re creating a gem, you have to be sensitive to other gems in that space or even the Rails core. [00:17:25] – How to be good citizens to other developers Metaprogramming has a lot of potentials to do great things but it also has a potential to cause a number of problems in the application. For Jordan’s students, what he usually does is walk them through some examples of metaprogramming where it can be done poorly. But then, he will follow it up with showing exactly when this is done right. He shows examples of poorly written classes that have dozen nearly identical methods. And then, he also shows how they could take all those methods, put the names in an array, and show how to leverage things like define_method to generate them. He also shows them how doing monkey patching can cause issues, how they can actually open up the string class and change one of the basic functionalities. Show that when they override that, that affects the entire rest of the application. [00:24:45] – Worst examples of metaprogramming Jordan ran into this hive of metaprogramming. When he opened up one of its classes, he had no idea what that class did. It was method_missing all over the place. Usually, there are 4 or 5 lines of code inside of that. It’s relatively straightforward and makes logical sense when you read it. This was nothing like that. They had multiple conditionals inside of the method_missing. One other hard thing about it is it does not have any test whatsoever. You need some test to make sure you’re capturing that functionality and to check if changes broke anything. You can’t also decipher what the inputs and outputs are. [00:28:35] – Testing Follow as much as real world examples. For example, in the phone parser gem, you can see some tests in there for that. You can also pass in the input that you plan to give. See if that matches the output. Jordan tells his students that respond_to_missing is as important to putting method_missing in there [00:35:25] – Resources to get started Paolo Perrotta’s book Metaprogramming Ruby is one of the standards for metaprogramming in Ruby. He also gave some fantastic examples. He created a story about a new developer who goes into a company and learns how to implement metaprogramming from senior devs. It’s very entertaining and it also covers all the different aspects to think of metaprogramming, when to use it and when it could be a very bad idea to use it. Picks Jerome Hardaway Don’t Know Metaprogramming in Ruby? By Gavin Morrice Dave Kimura Sherlock TV Series on BBC Brian Hogan iOS application: Workflow Overwatch Charles Max Wood Ruby Dev Summit Angular Dev Summit Focuster Jordan Hudgens Petergate Comprehensive Ruby Programming by Jordan Hudgens Twitter @jordanhudgens Instagram @jordanhudgens Blog crondose.com
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
RR 318 Metaprogramming with Jordan Hudgens Today's Ruby Rogues podcast features Metaprogramming with Jordan Hudgens. We have panelists Jerome Hardaway, Brian Hogan, Dave Kimura and Charles Max Wood. Tune in and learn more about metaprogramming! [00:02:00] – Introduction to Jordan Hudgens Jordan is the Lead Instructor at Bottega. Bottega has locations in Salt Lake City, Utah and in Phoenix, Arizona. They’re a full-stack development code school. [00:02:55] – Metaprogramming Metaprogramming was one of those scary concepts. At the code school, when the students learn about metaprogramming and how it works, you can tell that it’s definitely a pretty exciting thing. Its formal definition is it’s a code that writes code. It can dynamically, at run-time, render other methods available to the program. [00:04:10] – Use cases for metaprogramming The best use case that Jordan has ever seen is implemented in Rails and that’s code that can run database queries such as User.find_by_email. By passing the email, it will go and find the user with that particular email. Now, there is no method in active record or in the user model that is called find_by_email. That’s something that is created at run-time. Another one is something that Jordan has implemented and that’s a phone parser gem. It essentially parses and validates a phone number. It also has a country code lookup. With all the countries in the world, that would be very time-consuming. But within 8 lines of code, it could do what a hundred lines could do without metaprogramming. [00:06:50] – Performance implications Jordan never had performance issues because the generation of methods is not something that’s incredibly memory intensive. You might run into that but it would be a poor choice to do in terms of readability. In Brian’s experience, it comes down to the type of metaprogramming you do. If you have a bunch of logic somewhere and method_missing, that’s going to be a performance bottleneck. And if you’re generating a bunch of methods when the application starts up, it might increase the start-up time of the application. But after that, the performance of the application seems to not have any fluctuation at all. There are 2 main types Jordan works with. First is method_missing. Method_missing could have a little bit of performance hit because of how Ruby works. The system is going to look at every single method. The second type is define_method. In define_method, you’re really just creating a large dynamic set of methods at runtime. When you start up the Rails server, it’s going to build all those methods but it’s not going to be when you’re calling it. Whereas in method_missing, it has a different type of lookup process. [00:11:55] – Method collisions on monkey patching That’s one of the reasons why monkey patching can have a bad reputation. You don’t know who else may be overriding those set of methods or opening up that class. Jordan’s personal approach is trying to separate things out as much as humanly possible. If there’s something that can be done in the lib directory, you can place that functionality inside of a separate module. And if you’re creating a gem, you have to be sensitive to other gems in that space or even the Rails core. [00:17:25] – How to be good citizens to other developers Metaprogramming has a lot of potentials to do great things but it also has a potential to cause a number of problems in the application. For Jordan’s students, what he usually does is walk them through some examples of metaprogramming where it can be done poorly. But then, he will follow it up with showing exactly when this is done right. He shows examples of poorly written classes that have dozen nearly identical methods. And then, he also shows how they could take all those methods, put the names in an array, and show how to leverage things like define_method to generate them. He also shows them how doing monkey patching can cause issues, how they can actually open up the string class and change one of the basic functionalities. Show that when they override that, that affects the entire rest of the application. [00:24:45] – Worst examples of metaprogramming Jordan ran into this hive of metaprogramming. When he opened up one of its classes, he had no idea what that class did. It was method_missing all over the place. Usually, there are 4 or 5 lines of code inside of that. It’s relatively straightforward and makes logical sense when you read it. This was nothing like that. They had multiple conditionals inside of the method_missing. One other hard thing about it is it does not have any test whatsoever. You need some test to make sure you’re capturing that functionality and to check if changes broke anything. You can’t also decipher what the inputs and outputs are. [00:28:35] – Testing Follow as much as real world examples. For example, in the phone parser gem, you can see some tests in there for that. You can also pass in the input that you plan to give. See if that matches the output. Jordan tells his students that respond_to_missing is as important to putting method_missing in there [00:35:25] – Resources to get started Paolo Perrotta’s book Metaprogramming Ruby is one of the standards for metaprogramming in Ruby. He also gave some fantastic examples. He created a story about a new developer who goes into a company and learns how to implement metaprogramming from senior devs. It’s very entertaining and it also covers all the different aspects to think of metaprogramming, when to use it and when it could be a very bad idea to use it. Picks Jerome Hardaway Don’t Know Metaprogramming in Ruby? By Gavin Morrice Dave Kimura Sherlock TV Series on BBC Brian Hogan iOS application: Workflow Overwatch Charles Max Wood Ruby Dev Summit Angular Dev Summit Focuster Jordan Hudgens Petergate Comprehensive Ruby Programming by Jordan Hudgens Twitter @jordanhudgens Instagram @jordanhudgens Blog crondose.com
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
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
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