Podcast appearances and mentions of gleb bahmutov

  • 17PODCASTS
  • 43EPISODES
  • 53mAVG DURATION
  • ?INFREQUENT EPISODES
  • Feb 28, 2023LATEST

POPULARITY

20172018201920202021202220232024


Best podcasts about gleb bahmutov

Latest podcast episodes about gleb bahmutov

PodRocket - A web development podcast from LogRocket
Your testing questions answered

PodRocket - A web development podcast from LogRocket

Play Episode Listen Later Feb 28, 2023 36:15


In our first-ever mailbag episode, testing experts Debbie O'Brien, Gleb Bahmutov, and Kent C. Dodds answer your questions about testing. Links https://kentcdodds.com https://www.linkedin.com/in/kentcdodds https://github.com/kentcdodds https://twitter.com/kentcdodds https://kentcdodds.com/s/test https://glebbahmutov.com https://twitter.com/bahmutov https://www.linkedin.com/in/bahmutov https://github.com/bahmutov https://www.cypress.io/blog/author/gleb https://twitter.com/debs_obrien http://youtube.com/c/DebbieOBrien https://debbie.codes https://www.linkedin.com/in/debbie-o-brien-1a199975/ https://github.com/debs-obrien Tell us what you think of PodRocket We want to hear from you! We want to know what you love and hate about the podcast. What do you want to hear more about? Who do you want to see on the show? Our producers want to know, and if you talk with us, we'll send you a $25 gift card! If you're interested, schedule a call with us (https://podrocket.logrocket.com/contact-us) or you can email producer Kate Trahan at kate@logrocket.com (mailto:kate@logrocket.com) Follow us. Get free stickers. Follow us on Apple Podcasts, fill out this form (https://podrocket.logrocket.com/get-podrocket-stickers), and we'll send you free PodRocket stickers! What does LogRocket do? LogRocket combines frontend monitoring, product analytics, and session replay to help software teams deliver the ideal product experience. Try LogRocket for free today. (https://logrocket.com/signup/?pdr) Special Guests: Debbie O'Brien, Gleb Bahmutov, and Kent C. Dodds.

Believe you can because you can!
385. Selling Online Courses with Gleb Bahmutov

Believe you can because you can!

Play Episode Listen Later Dec 23, 2022 44:05


Selling online courses can be a highly beneficial way to share your knowledge and expertise with a wider audience. Not only can it provide a new source of income, but it can also be a rewarding way to make a difference in the lives of others by helping them learn new skills or advance their…

React Round Up
Cypress.io: One Testing Framework to Rule Them All with Gleb Bahmutov - RRU 199

React Round Up

Play Episode Listen Later Sep 28, 2022 48:41


Gleb Bahmutov, who worked with the Cypress.io team for 4 years, joins the panelists to talk all things testing. You may be familiar with Cypress as a popular JavaScript end-to-end testing framework, but did you know it recently began offering component testing as well? This may be just the incentive you need to ditch Jest and Testing Library for unit/integration tests and go all in on Cypress for all your testing needs. Listen up and let us know if you're convinced. Sponsors Top End Devs Coaching | Top End Devs Links Cypress v10 Tips and Tricks Cypress Tricks & Tips Dr. Gleb Bahmutov, PhD Twitter: @bahmutov Picks Gleb- Cypress.io Tips Courses Gleb- Cross Browser Testing, Selenium Testing, Mobile Testing Gleb- 350 - Building a global climate movement. Paige- Kitchen tongs set of 3 TJ- Fresh Food & Meal Kit Delivery Service | HelloFresh

JS Party
The doctor is in (again)

JS Party

Play Episode Listen Later Sep 2, 2022 69:51 Transcription Available


Dr. Gleb Bahmutov returns to the party for a wide-ranging discussion on open source, end-to-end testing, Cypress, and more. Amal, Divya & Chris host.

Changelog Master Feed
The doctor is in (again) (JS Party #241)

Changelog Master Feed

Play Episode Listen Later Sep 2, 2022 69:51 Transcription Available


Dr. Gleb Bahmutov returns to the party for a wide-ranging discussion on open source, end-to-end testing, Cypress, and more. Amal, Divya & Chris host.

Semaphore Uncut
Gleb Bahmutov on Why Testing Pyramid Makes Little Sense

Semaphore Uncut

Play Episode Listen Later Nov 23, 2021 33:31


In this podcast episode, I welcome Gleb Bahmutov, Senior Director of Engineering at Mercari. We talk about about Gleb's engineering experience at Cypress.io and Mercari US, discuss the testing pyramid and why it makes little sense, and talk about what we can use instead.Here's what we talk about:Gleb's story with Cypress.ioTesting pyramid makes little sense; what can we use instead? Gleb's talk at the TestJS SummitWhy is the testing pyramid shapes this way?Testing matrix vs testing pyramidThe cost of bugs and how to set boundaries within teamsWe hope you enjoy the show!About Semaphore UncutIn each episode of Semaphore Uncut, we invite software industry professionals to discuss the impact they are making and what excites them about the emerging technologies.

PodRocket - A web development podcast from LogRocket

In this episode, Ben interviews Gleb Bahmutov, Senior Director of Engineering at Mercari and former Distinguished Engineer at Cypress. Gleb joins us to talk about testing, Cypress, and how companies can successfully introduce end-to-end tests into their workflows. Links https://twitter.com/bahmutov (https://twitter.com/bahmutov) https://glebbahmutov.com (https://glebbahmutov.com) https://www.cypress.io (https://www.cypress.io) https://docs.cypress.io (https://docs.cypress.io) https://docs.cypress.io/guides/continuous-integration/introduction (https://docs.cypress.io/guides/continuous-integration/introduction) Contact us https://podrocket.logrocket.com/contact-us (https://podrocket.logrocket.com/contact-us) @PodRocketpod (https://twitter.com/PodRocketpod) What does LogRocket do? LogRocket combines frontend monitoring, product analytics, and session replay to help software teams deliver the ideal product experience. Try LogRocket for free today. (https://logrocket.com/signup/?pdr) Special Guest: Gleb Bahmutov.

Devchat.tv Master Feed
VUE 138: Vue and Ruby with Austin Story

Devchat.tv Master Feed

Play Episode Listen Later Feb 16, 2021 46:22


In this episode, Lindsay talks with Austin Story, Technical Lead at Doximity, about their adoption of Vue server-side rendering and eventually Nuxt. We talk about the challenges the team faced, and how they reacted to the shift. We also discuss the difference between the Ruby and JavaScript ecosystems, and how those languages impact development choices. Panel Lindsay Wardell Guest Austin Story Sponsors Dev Heroes Accelerator Links Managing a Large in Place Migration to Nuxt js by Austin Story | VueConf US 2020 HTML OVER THE WIRE | Hotwire Phoenix Framework Livewire | Laravel Devchat.tv | VoV 124: Why End-To-End Test using Cypress with Gleb Bahmutov GitHub | vitejs/vite Twitter: Austin Story Picks Austin- Things You Should Never Do, Part 1 - Joel on Software Austin- Dmitry Soshnikov Austin- Roundsy Austin- Work @ Doximity Lindsay- Wayside School (book series) Lindsay- Refactoring UI Contact Lindsay Twitter: Lindsay Wardell ( @lindsaykwardell )

Views on Vue
VUE 138: Vue and Ruby with Austin Story

Views on Vue

Play Episode Listen Later Feb 16, 2021 46:22


In this episode, Lindsay talks with Austin Story, Technical Lead at Doximity, about their adoption of Vue server-side rendering and eventually Nuxt. We talk about the challenges the team faced, and how they reacted to the shift. We also discuss the difference between the Ruby and JavaScript ecosystems, and how those languages impact development choices. Panel Lindsay Wardell Guest Austin Story Sponsors Dev Heroes Accelerator Links Managing a Large in Place Migration to Nuxt js by Austin Story | VueConf US 2020 HTML OVER THE WIRE | Hotwire Phoenix Framework Livewire | Laravel Devchat.tv | VoV 124: Why End-To-End Test using Cypress with Gleb Bahmutov GitHub | vitejs/vite Twitter: Austin Story Picks Austin- Things You Should Never Do, Part 1 - Joel on Software Austin- Dmitry Soshnikov Austin- Roundsy Austin- Work @ Doximity Lindsay- Wayside School (book series) Lindsay- Refactoring UI Contact Lindsay Twitter: Lindsay Wardell ( @lindsaykwardell )

JS Party
Thank you, Dr. Bahmutov!

JS Party

Play Episode Listen Later Oct 16, 2020 70:56 Transcription Available


Gleb Bahmutov, PhD joins the show for a fun conversation around end-to-end testing. We get the skinny on Cypress, find out how it’s structured as both an open source library and a SaaS business, tease apart the various types of tests you may (or may not) want to have, and share a lot of laughs along the way.

Changelog Master Feed
Thank you, Dr. Bahmutov! (JS Party #148)

Changelog Master Feed

Play Episode Listen Later Oct 16, 2020 70:56 Transcription Available


Gleb Bahmutov, PhD joins the show for a fun conversation around end-to-end testing. We get the skinny on Cypress, find out how it’s structured as both an open source library and a SaaS business, tease apart the various types of tests you may (or may not) want to have, and share a lot of laughs along the way.

Devchat.tv Master Feed
VoV 124: Why End-To-End Test using Cypress with Gleb Bahmutov

Devchat.tv Master Feed

Play Episode Listen Later Oct 6, 2020 48:25


In this episode of Views on Vue, we talk with Gleb Bahmutov, VP of Engineering at Cypress, about the importance of end-to-end testing, and why to use Cypress for your tests. We discuss how to write tests that cover a majority of your codebase, as well as new features such as component testing. We also talk about code coverage, and generating reports to determine how well your tests work to validate your application. Sponsors Audible.com CacheFly Panel Lindsay Wardell Steve Edwards Guest Gleb Bahmutov Links http://www.cypress.io/ https://www.cypress.io/features https://on.cypress.io/code-coverage https://github.com/bahmutov/cypress-vue-unit-test https://www.scientistsforxr.earth/slideshttps://350.org/ Picks Gleb Bahmutov:  https://github.com/vitejs/vite https://www.xrebellion.nyc/the-emergency https://rebellion.global/ Steve Edwards: Vacation Lindsay Wardell: https://www.parts-people.com/ https://beta.editor.paperize.io/#/ Follow Views on Vue on Twitter > @viewsonvue

Views on Vue
VoV 124: Why End-To-End Test using Cypress with Gleb Bahmutov

Views on Vue

Play Episode Listen Later Oct 6, 2020 48:25


In this episode of Views on Vue, we talk with Gleb Bahmutov, VP of Engineering at Cypress, about the importance of end-to-end testing, and why to use Cypress for your tests. We discuss how to write tests that cover a majority of your codebase, as well as new features such as component testing. We also talk about code coverage, and generating reports to determine how well your tests work to validate your application. Sponsors Audible.com CacheFly Panel Lindsay Wardell Steve Edwards Guest Gleb Bahmutov Links http://www.cypress.io/ https://www.cypress.io/features https://on.cypress.io/code-coverage https://github.com/bahmutov/cypress-vue-unit-test https://www.scientistsforxr.earth/slideshttps://350.org/ Picks Gleb Bahmutov:  https://github.com/vitejs/vite https://www.xrebellion.nyc/the-emergency https://rebellion.global/ Steve Edwards: Vacation Lindsay Wardell: https://www.parts-people.com/ https://beta.editor.paperize.io/#/ Follow Views on Vue on Twitter > @viewsonvue

The Angular Show
E003 - e2e Testing in Angular with Cypress

The Angular Show

Play Episode Listen Later Mar 11, 2020 65:25


Gleb Bahmutov talks about e2e testing Angular applications with Cypress.

Devchat.tv Master Feed
VoV 082: Developer Tooling and Dev Setup for Working With Vue

Devchat.tv Master Feed

Play Episode Listen Later Oct 8, 2019 62:26


On this episode of Views on Vue the panelists discuss their preferences for their development environments and tools. They begin with their preferences for text editor, font, and theme in their Vue development environments. All three currently use Visual Studio Code as their main text editor. Ari Clark switched to VS Code from Atom because she prefers the support that it has for Vue and Ben Hong switched from Sublime. Ben prefers the night owl theme and the operator mono font. On the other hand, Ari prefers the one dark pro theme for its syntax highlighting and prefers dank mono as her font. The Views on Vue panelists then go on to discuss their preferences on using the terminal. They weigh the pros and cons of using the integrated terminal and when they turn to other shells. The other potential shells that the Vue panelists discuss are Bash, Zsh, and Fish. The panelists focus on the speed and performance of the shells, and make an important note that not all shell commands are valid on other shells and the user will have to be familiar with the shell they are using. The Vue experts discuss whether they use the command line interface (CLI) or VS Code version control to manage their git version control. The panelists then weigh the pros and cons of different terminal shells they like to use. The panelists also briefly discuss how open they are to changing their development environment setup.  The topic then shifts to extensions for VS Code. The Views on Vue podcasters mention their preferences for a bracket colorizer, extension packs, code snippets and other tools. They talk specifically about the following extensions: Vue VS Code Extension Pack and Vue VS Code Snippets by Sarah Drasner, and Vetur created by Pine Wu, the latter of which the panelists identify as a quintessential extension for writing Vue. They discuss the merits of code snippet extensions as reusable code and creating them in VS Code.  They also discuss some of the different types of snippets that exist and how to use them. The Views on Vue panelists discuss ways to enforce best practices in addition to code snippets. They talk about using code generators like Hygen to automatically fill out the template for specific types of files. They share that creating unit tests helps to ensure best practices and that the code works as intended, as well as the differences between unit tests and end to end tests. They go over the strengths of an end to end testing tool called cypress. Tools like Husky or Yorkie allow you to add pre commit hooks to the package.json file that will automatically manage all the linting for a project.  Finally the panelists share their preferences browser tooling for Vue projects in addition to browser developer tools and their browsers of choice. Ari says that she prefers the previous version (version 4) of Vue devtools than the current version (version 5) and her reasons why. Chris Fritz shares that he likes Vimium for setting up quick navigation and Ben shares that he likes to use Keyboard Maestro. Panelists Ben Hong  Ari Clark  Chris Fritz Sponsors Tidelift Sentry.io use code “devchat” for 2 months free React Round Up  Elixir Mix Links Atom  Sublime Vue VS Code Extension Pack by Sarah Drasner Vetur by Pine wu  Vue VS Code Snippets by Sarah Drasner  Hygen  Cypress  VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov Husky Vimium Keyboard Maestro Vue devtools Picks Ari Clark Gris  Ben Hong Ralph Breaks the Internet Chris Fritz Spiderman: Into The Spiderverse Children of Ruin

Views on Vue
VoV 082: Developer Tooling and Dev Setup for Working With Vue

Views on Vue

Play Episode Listen Later Oct 8, 2019 62:26


On this episode of Views on Vue the panelists discuss their preferences for their development environments and tools. They begin with their preferences for text editor, font, and theme in their Vue development environments. All three currently use Visual Studio Code as their main text editor. Ari Clark switched to VS Code from Atom because she prefers the support that it has for Vue and Ben Hong switched from Sublime. Ben prefers the night owl theme and the operator mono font. On the other hand, Ari prefers the one dark pro theme for its syntax highlighting and prefers dank mono as her font. The Views on Vue panelists then go on to discuss their preferences on using the terminal. They weigh the pros and cons of using the integrated terminal and when they turn to other shells. The other potential shells that the Vue panelists discuss are Bash, Zsh, and Fish. The panelists focus on the speed and performance of the shells, and make an important note that not all shell commands are valid on other shells and the user will have to be familiar with the shell they are using. The Vue experts discuss whether they use the command line interface (CLI) or VS Code version control to manage their git version control. The panelists then weigh the pros and cons of different terminal shells they like to use. The panelists also briefly discuss how open they are to changing their development environment setup.  The topic then shifts to extensions for VS Code. The Views on Vue podcasters mention their preferences for a bracket colorizer, extension packs, code snippets and other tools. They talk specifically about the following extensions: Vue VS Code Extension Pack and Vue VS Code Snippets by Sarah Drasner, and Vetur created by Pine Wu, the latter of which the panelists identify as a quintessential extension for writing Vue. They discuss the merits of code snippet extensions as reusable code and creating them in VS Code.  They also discuss some of the different types of snippets that exist and how to use them. The Views on Vue panelists discuss ways to enforce best practices in addition to code snippets. They talk about using code generators like Hygen to automatically fill out the template for specific types of files. They share that creating unit tests helps to ensure best practices and that the code works as intended, as well as the differences between unit tests and end to end tests. They go over the strengths of an end to end testing tool called cypress. Tools like Husky or Yorkie allow you to add pre commit hooks to the package.json file that will automatically manage all the linting for a project.  Finally the panelists share their preferences browser tooling for Vue projects in addition to browser developer tools and their browsers of choice. Ari says that she prefers the previous version (version 4) of Vue devtools than the current version (version 5) and her reasons why. Chris Fritz shares that he likes Vimium for setting up quick navigation and Ben shares that he likes to use Keyboard Maestro. Panelists Ben Hong  Ari Clark  Chris Fritz Sponsors Tidelift Sentry.io use code “devchat” for 2 months free React Round Up  Elixir Mix Links Atom  Sublime Vue VS Code Extension Pack by Sarah Drasner Vetur by Pine wu  Vue VS Code Snippets by Sarah Drasner  Hygen  Cypress  VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov Husky Vimium Keyboard Maestro Vue devtools Picks Ari Clark Gris  Ben Hong Ralph Breaks the Internet Chris Fritz Spiderman: Into The Spiderverse Children of Ruin

TestTalks | Automation Awesomeness | Helping YOU Succeed with Test Automation
256: Cypress.io Hot Seat Questions with Gleb Bahmutov

TestTalks | Automation Awesomeness | Helping YOU Succeed with Test Automation

Play Episode Listen Later Jun 9, 2019 24:19


In this episode, we’ll place Gleb Bahmutov on the hot seat to handle all of the Automation Guild’s questions around Cyress.io. Learn when you should consider using Cypress vs. Selenium and when you shouldn’t. Also, hear common questions and answers about what Cypress.io supports, plus much, much more. Listen up!

Real Talk JavaScript
Episode 11: Web Accessibility with Jen Luker

Real Talk JavaScript

Play Episode Listen Later Dec 11, 2018 47:43


Recording date: 2018-11-13 John Papa https://twitter.com/john_papa Ward Bell https://twitter.com/wardbell Dan Wahlin https://twitter.com/danwahlin Jen Luker https://twitter.com/knitcodemonkey Resources: section 508 https://webaim.org/standards/508/checklist The a11y project https://a11yproject.com/ Jaws https://www.freedomscientific.com/Products/Blindness/JAWS ARIA https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA The https://www.starbucks.com/careers/ Starbucks career site WCAG https://www.w3.org/TR/WCAG20/ Jen helped author https://www.npmjs.com/package/eslint-plugin-jsx-a11y Husky https://www.npmjs.com/package/husky Google A11y https://developers.google.com/web/fundamentals/accessibility/ Lighthouse https://chrome.google.com/webstore/detail/lighthouse/blipmdconlkpinefehnmjammfjpmpbjk?hl=en Azure text to speech https://azure.microsoft.com/en-us/services/cognitive-services/text-to-speech/ amazon polly https://aws.amazon.com/polly/ Amazon Polly on Dan's blog: https://blog.codewithdan.com/8-tips-for-maximizing-your-productivity/ *Someone to follow * Gleb Bahmutov https://twitter.com/bahmutov Tejas Kumar https://twitter.com/TejasKumar_ Rick Strahl https://twitter.com/RickStrahl Transcript { credit to Jen Luker } (Intro Music) 0:00:06.6 Voiceover Welcome to Real Talk JavaScript, the weekly talk show with advice and insight into the technologies and practices currently being used to build web applications in the real world. Each week John Papa and Ward Bell talk to industry experts about their experiences writing, deploying and maintaining web applications in HTML, CSS and JavaScript. And now, here are your hosts, John and Ward. 0:00:40.0 John Papa Welcome back to Real Talk JavaScript, this is Episode 11: Accessibility in JavaScript Apps and this week I’ve got my co-host, Dan Wahlin. How’s it going, Dan? 0:00:48.8 Dan Wahlin Going great, John. 0:00:49.9 John Papa And Dan, today we have a special guest of Jen Luker. How’re you doing, Jen? 0:00:54.6 Jen Luker Doing pretty well today. How are you? 0:00:56.0 John Papa We’re doing pretty good, thank you very much. Jen is a Senior Software Engineer at Formidable, BookBytes Podcast co-host, RxJS Learning Team member, and eslint-plugin-react-native-a11y core contributor. Jen has spent a majority of her career as a full stack developer but has a particular fondness for frontend technologies, thus why she’s here today. And she trains others in ReactJS and Accessibility, and enjoys removing obstacles that slow down productivity and loves optimizing webpack builds. When she’s not finding solutions or mentoring others, her spare time is spent spinning yarn from raw wool and knitting. She’s even better known to 3D print her own tools for the job. 0:01:33.3 Dan Wahlin Nice! 0:01:34.0 John Papa Welcome to the show, Jen. 0:01:35.2 Jen Luker Thank you! 0:01:36.0 John Papa There’s a lot in there. I mean, you’re not- 0:01:37.9 Jen Luker Yeah… 0:01:37.9 John Papa Just a JavaScript coder with ReactJS. It looks like you do a lot of teaching, and knitting! That’s pretty cool. 0:01:44.1 Jen Luker Haha, it’s… I like to say that I’m a knitter first and then a programmer second. So, it’s definitely a large part of my life. 0:01:53.3 John Papa You mean you do something besides coding all day? 0:01:56.1 Jen Luker It happens. 0:01:56.9 John Papa & Dan Wahlin (laughing) 0:01:58.9 Dan Wahlin You know, I have heard more and more people with knitting now. I, like, I hear that, I also do a lot of training, and I hear that all the time now, so it must be a big upcoming... trend I guess, I don’t know. 0:02:11.5 Jen Luker I think it has a little more to do with the fact that what we do as developers is often fleeting. It’s something that exists online, it’s not something tangible. Knitting is a programming language that sticks around long enough for you to wear it. So it’s- 0:02:28.9 John Papa I see. 0:02:30.4 Jen Luker Definitely caters to those that need that tangible aspect in their lives. But one of the coolest things I’ve seen knitting be used for, not just, you know, cryptography World War II, but also things like using it as a programming simulator for people that don’t have access to computers, such as people in Third World countries. So it’s definitely something that caters to the mind of programmers. 0:02:56.6 Dan Wahlin Interesting. Yeah, I’ve… Some of the people, too, have also mentioned it just helps them, it’s very relaxing they said. I don’t know how to knit, I haven’t tried it, but it looks fun. 0:03:04.3 John Papa So now, when we see Dan at his next conference, right before his talk, with a ball of yarn and some needles, we’ll know exactly why that happened. 0:03:10.7 Dan Wahlin Yeah. I’ll say, “Jen inspired me!” 0:03:13.0 John Papa & Dan Wahlin (laughing) 0:03:14.1 Jen Luker Well, you do know that at React Conf they actually had a fiberarts circle that I ran, so I ended up teaching quite a few people to knit, and crochet, and spin at that conference. So- 0:03:24.2 Dan Wahlin That’s so cool! 0:03:25.2 Jen Luker It is a possibility. 0:03:26.3 John Papa Huh! 0:03:26.8 Dan Wahlin There you go. 0:03:27.4 John Papa That is so cool. Yeah, I think we all have different ways of dealing with non programming mindsets. Like, what do you do when you’re not coding? And some people exercise, some people meditate, some people draw, some people play music, some people knit! So, I think it’s great to have something to kind of work different parts of your brain. 0:03:47.0 Jen Luker Definitely. 0:03:47.7 John Papa Hey, Dan! You had a question for us to kick things off about accessibility. 0:03:50.7 Dan Wahlin Yeah! So, I think we hear a lot… I used to work, one of my first jobs out of college was at a government agency and so there it was kind of required to learn about section 508 and things. But with corporations and with a lot of the developers I work with, I’ll have to admit I think we’re a little more in the dark on… 0:04:11.2 What are some of the ways, like, if I were to say, “Hey Jen, what are the key ways from a high level that I could add some accessibility things and like, who can I help with that?” Because I think a lot of us, we think, “Oh, well I just add a title to an image and call it a day.” 0:04:28.0 Jen Luker Mm-hmm (affirmative). 0:04:28.5 Dan Wahlin And I suspect there’s a lot more to it than that. 0:04:30.6 Jen Luker There is a lot more to it but there’s different ways of approaching accessibility on the web. One of the ways is technologically, which is oftentimes what developers deal with, but that’s only 30-50% of the problems you’re going to find in accessibility issues. The other half is going to be content and context and verbiage and language and ways that you say things that make it easier for people that have different disabilities, like neurological issues, or language barriers from interacting with the content on the site. 0:05:08.5 To deal with the technological side though, I tend to point people towards the aXe, Chrome, and Firefox extensions to begin with because it not only runs like, a technological audit on your site, but it also gives you more information. There’s always links that explain why there’s a problem, why the types of people that you’re focusing when you fix an issue, and different ways that you can fix an issue. So it’s a really great educational tool for just getting started. 0:05:43.6 John Papa Excellent. 0:05:44.2 Dan Wahlin Yeah, see, you already hit on a couple things like, you mentioned neurologically how maybe people interpret or have the context for different text. And I actually have a son with some disabilities so I’m very sensitive to this whole, you know, concept. It’s amazing how when you’re not around it, you just don’t think about it. But when you’re around it, it becomes, you know, your whole world. A big deal. So, you know, that’s when I hadn’t ever heard of- Can you tell me a little bit more about that? Is that related to the context you put into, like, the site, then, that helps them understand it better? Or how’s that work? 0:06:18.5 Jen Luker It is. Something that they recommend, or things that I’ve seen regarding recommendations for the level of content does vary depending on who your audience is. If you are a technical journal then chances are you’re going to be catering to a much more technical audience. However, if you’re a generic website you may want to keep your verbiage as low-level as possible, like anything between a third grade level to a high school level education, to allow for people to better understand the words that you’re actually putting on a page, and what the words are trying to tell you. 0:07:00.0 Like, you’ve got one side where you have people with ADHD that is not going to make it to the end of a 6-paragraph description of what it is you’re supposed to do. And then you have people on the other side of the spectrum that really need step-by-step instructions of what it is they need to do to get through your form. So trying to find that happy medium, or trying to find a way of giving a TLDR and then a longer context for different sides of that issue, is also something you may want to look at. 0:07:31.1 Dan Wahlin Interesting, yeah. I’ll have to admit that’s something that I haven’t really, you know, you mentioned third grade through, maybe, high school level and I think, as developers, we, especially if we’re in charge of putting some of the content, you know, out there ourselves, that’s something that I don’t think I’ve really thought through as to, you know, who’s my target that’s going to be reading this? As far as, you know, you think of, “I know these words and I’m sure everyone else will know these words.” But it sounds like you’re a lot better off if you can kind of reign that in a little bit, make it more focused. 0:08:02.3 Jen Luker Something that I’ve found that’s extremely different for even a dev when they’re onboarding into a new company is learning the names of things, and learning the acronyms for things. So if you’re using customized names for your products or your processes or you’re using acronyms, then you’re already losing part of your audience who just doesn’t understand what those things mean. 0:08:28.6 John Papa So, I think that’s a great point. This isn’t just for accessibility for, even for people like, let’s just say vision-impaired on one side. This is for anybody who doesn’t necessarily know your vernacular. 0:08:38.8 Jen Luker Exactly. 0:08:39.8 John Papa You go to a new company, what’s the first thing they do? “Hey, today we’re going to use the TLC with the EBY and then we’re going to talk with the XJ Bots.” And you’re like, “...What does any of that actually mean?” 0:08:49.4 Jen Luker I recently onboarded with a company and someone was very nice enough to put together a cheat sheet of acronyms for me and it was five pages long. 0:08:57.5 John Papa (laughs) 0:08:58.0 Dan Wahlin Wow! (laughs) 0:08:59.0 John Papa When I went to Disney one of my first things they did, like my first week there, was I got a book like that, too. 0:09:05.3 Jen Luker Mm-hmm (affirmative). 0:09:05.8 John Papa And the funny thing at Disney was the every TLA, which is a three-letter acronym which is kind of funny, the first letter of all of them begin with D for "Disney". Which really- 0:09:14.3 Jen Luker Yeah. 0:09:13.8 John Papa Only left two letters for all the rest. (laughs) 0:09:16.8 ALL (laughing) 0:09:17.9 John Papa I don't know if it's changed since then though. (laughs) But let's, let's start back. So on that same note, there's something I've seen a lot of over the years, and when I first encountered this, it's not an acronym but it's an abbreviation, I didn't know what the heck it meant. But, and maybe there's other people in the same boat so I wanted to talk about it with you. A-11-Y. 0:09:39.1 Jen Luker Yes. 0:09:40.0 John Papa Can you explain what that is and why people see that? 0:09:42.6 Jen Luker So back in the days of Twitter when there were only 140 characters, writing out a really long word like "accessibility" which is 13 letter long, took up a lot of space. So due to Twitter and their awesome audience, they shortened it to A11Y which is A-, the first letter in "accessibility", 11 letters, and then Y-, the last letter in "accessibility." You see the same thing with "Kubernetes" with K8S, or "internationalization" which is I18N. So any of those really long words end up getting shortened to first letter, number of characters in between first and last letter, and last letter. 0:10:26.0 John Papa Yeah, that's... that's kind of funny, you know? Once I realized that, I started going, "You know, I've been using I18N for years and I didn't know why it was called that." 0:10:33.1 Jen Luker Mm-hmm (affirmative). 0:10:33.2 John Papa Until I discovered it through A11Y, 'cause we, our nickname for it when we were talking about it was "ally". 0:10:39.0 Jen Luker Which I think is highly appropriate. 0:10:40.7 John Papa Yeah, yep. It kind of is a... 0:10:42.8 Dan Wahlin It fits it. 0:10:43.6 John Papa It kinda worked for us, too. 0:10:44.8 Dan Wahlin Yeah. 0:10:45.3 John Papa So, Dan, you're really D1N and Jen, you're J1n. It doesn't really work for our short first names, does it? 0:10:50.8 Dan Wahlin & Jen Luker (laughing) 0:10:52.0 Jen Luker Well, Jen is already shortened. 0:10:53.9 John Papa Yeah, yeah. It doesn't really help. What if your name is Al? What do you do? You only have two letters. 0:10:58.4 Dan Wahlin Yeah, there you're out of luck. 0:10:59.3 Jen Luker First and last. 0:11:01.0 John Papa A0L I guess? AOL! There you go! That's what AOL stood for. 0:11:05.4 Dan Wahlin Al. 0:11:06.4 John Papa The secret has been revealed, right here. 0:11:07.5 Dan Wahlin Who knew? 0:11:08.3 Jen Luker (laughs) 0:11:09.0 John Papa (laughs) So accessibility. One of the things I think that was really eye-opening to me was understanding how many people this actually affects. When I first started getting into it many years ago on some large projects the things that were introduced to me were,"Well, we're doing this because there are, you know, millions of people who are affected by this and we're really trying to make the web more accessible." You know, it sounds like a grandiose thing, but that was true. We were trying to make our websites more accessible to all these people who either couldn't use our websites, or they could but with much difficulty. 0:11:43.0 Jen Luker Right. 0:11:43.6 John Papa Now, what kind of scale is this really at? Is it just one guy down the street? Or is it, you know? How big is this? 0:11:48.8 Jen Luker Well the World Health Organization estimates that about 15% of the entire world has some sort of disability. This is a highly conservative number. Not everyone wants to identify with the fact that they have a disability. There's definitely a level of taboo that comes with the word "disability." So- 0:12:13.3 Dan Wahlin Yep, I can vouch for that. 0:12:15.6 Jen Luker Right? So there's a lot of people that will not identify with that label and therefore the 15% is, in fact, a very limited number. You know, if you're looking just in the U.S. they estimate, as of the 2012 census so it's been a while, 19% of people, so almost 1 in 5. If you're looking at other numbers we're looking at 8% of you men who are colorblind of some fashion, and it's not an on and off switch, there's a varying degree. There's also people with multiple versions of color blindness. There are people with very slight color blindness so it's almost unnoticeable. The range is quite large and about 1% of women also are colorblind. So you're looking at about 4.5% of the population as a whole just for one type of disability. 0:13:10.8 John Papa That's fascinating, and it hits, at part for me, that's at home, too. 'Cause I also identify as being partially colorblind, I guess you could say. I'm on that scale. 0:13:19.8 Jen Luker Mm-hmm (affirmative). 0:13:20.4 John Papa I don't have full blown color blindness because I can still determine some colors but others I have struggles with. 0:13:25.8 Jen Luker Mm-hmm (affirmative). 0:13:26.4 John Papa But I've also found that when I identify with this I get a lot of backlash from people of, "Well you're not really colorblind." Or, you know, there's a lot of disbelief. It's almost like it's become, "Oh, I'm sorry." So I can totally empathize with you on why people wouldn't want to identify with any of these things ‘cause it's almost like they put them in a category of, "Oh, well... the pity category." 0:13:48.0 Jen Luker Right? And there's differences in color blindness. It's not just grayscale in everything. There's the red/green, there's blue/green, there's you know, the trichotomy side, there's... there's a lot of different variations, and then there's some people that can see the differences between but the colors are all still muted. The more muted they are the less likely you're going to be able to tell the difference between them which really starts to rear its ugly head when you're looking at images or text color changes. So, it gets complicated fast. 0:14:25.8 John Papa Is this the real answer to what color that dress is on the internet streams? 0:14:29.6 ALL (laughing) 0:14:31.5 Dan Wahlin Oh my gosh. 0:14:32.5 Jen Luker That's a whole other fascinating concept- 0:14:34.6 John Papa (laughs) 0:14:34.9 Jen Luker When it comes to how each person perceives color- 0:14:39.2 Dan Wahlin Yeah. That was- 0:14:39.1 Jen Luker And how no one actually perceives them the same way. 0:14:41.5 Dan Wahlin That was pretty freaky, actually. 0:14:42.9 John Papa Yeah, I know. (laughs) Yeah, I get that a lot from folks on, themes for example. I like to create themes for VS Code or for other tools and when you create a theme people get very personal over what theme they choose. And the reason I created my own is because I like mine to look the way I look and it makes me feel good, it makes me more productive, but not everybody likes one theme. There's probably, you know, 100 great themes out there. It's because everybody looks at things differently and they have varying degrees of sensitivity to the colors, too. 0:15:14.0 Jen Luker Mm-hmm (affirmative). 0:15:14.4 John Papa So, you're building an app and you have to pull accessibility in. What kind of apps should use accessibility? 0:15:21.1 Jen Luker All of them. 0:15:22.0 John Papa Good answer. (laughs) 0:15:23.5 Dan Wahlin Yeah, it's a good one. I was gonna say, "Great answer." 0:15:24.3 Jen Luker (laughs) 0:15:25.0 John Papa What does it cost for money? I mean, I a business manager now. Does it cost more money? How much more time is it going to take? Do I need to teach my people how to build web apps for accessibility? What kind of things are affected by it? I don't have time for this, no, let's not do it. I bet you've heard all these things? 0:15:40.3 Jen Luker Oh yeah! Absolutely. 0:15:41.7 John Papa How do you answer those? 0:15:42.9 Jen Luker Well, there's a couple different ways. The not so passive-aggressive way is to find the person closest to them that's colorblind and then sit them down and say, "Can you explain to them why we're not going to write the website in a way that they can use it? This person in that company that works for you." That tends to drop, you know, that tends to pull up some people's shorts. 0:16:06.6 But the other ways is you can start talking about those financials. If you're looking at the return on investment take those 15% of the population. If you are, you know, a $10 million company, by making your website accessible it's an $11.5 million company, and that's just your slice of the 15%. Only 1 in 10 websites is accessible, which means you still have the opportunity to corner the market in your region, your demographic. That means that that 15% could very well be larger than the rest of the people that use your website. 0:16:53.4 Dan Wahlin That's an interesting concept from a, you know, purely financial standpoint. I’d never even thought about that, even cornering your own market. 0:17:00.1 John Papa And that's what a lot of people make decisions on, right? If you're gonna make more money, it's still making- Think like a business manager. You're telling me my $10 million app I can pull in $11.5 million instead; an extra 1.5 million a year, which is, pick some fake numbers for a minute. 0:17:13.9 Jen Luker Mm-hmm (affirmative). 0:17:14.5John Papa What's the cost though? Of building that app, what's the additional cost? 0:17:18.7 Jen Luker If you're designing it from the ground up it's very little additional cost. So a lot of the major issues have to do with color contrasts. Other ones have to do with making sure, you know, as you've said before, title tags on HTML or hrefs or ALT tags on images. A lot of it has to do with the fact that the platform, HTML, is inherently accessible and we, as JavaScript developers, go ahead and run through and override it and make it inaccessible. So, sticking closer to the platform is usually enough to cover the majority of accessibility issues. 0:18:03.4 John Papa Let's take a quick break for a word from our sponsors. 0:18:05.8 Voiceover Looking to learn more about the state of software security? Check out VeraCode’s recently released report, "State of Software Security Volume 9." This year's report highlights the more important open source vulnerabilities and the latest dev sec-ops trends. Dev sec-ops, by the way, is kind of like "devops" plus "security". This is VeraCode’s most developer-focused volume ever. So don't miss out. Get your copy today by visiting www.VeraCode.com/SOSS for State of Software Security. That's www. v-e-r-a- code.com slash S-O-S-S-. 0:18:47.0 John Papa And we're back. Jen, you were just talking about how you can stick to the platform and that might help you build accessible apps. Can you kind of explain what you mean by that? 0:18:55.4 Jen Luker I usually mean by using semantic HTML as much as possible for the reasons it's made. For instance there's a lot of... A lot of developers that still would rather use a div over a button, but the complexities inmaking a div accessible like a button go deeper than you'd expect. So it's not just adding a highlight, adding text or a keyboard interaction. It's also weird things like, in some versions of ios, if you don't add a cursor pointer in the CSS, ios won't detect that it's a link, even if you tell it that it is. 0:19:39.0 John Papa Hmm. That's interesting. 0:19:40.0 Dan Wahlin Yeah, I don't think I've run into that, myself. 0:19:42.5 John Papa Oh, we hear about semantic HTML a lot, right Dan? About, "Don't use divs everywhere!" But yet, I don't know about you, but a lot of apps I get called in to look at it's like, div craziness. 0:19:52.5 Jen Luker Mm-hmm (affirmative). 0:19:53.2 Dan Wahlin I call it div soup. 0:19:54.7 John Papa (laughs) Div soup! 0:19:55.0 Jen Luker (laughs) 0:19:56.4 Dan Wahlin Yeah. How much, so Jen, are there numbers out there, and I'm sure there are, for people- 'cause I know probably the only program I've heard of would be for people with vision, you know, various issues from they're completely blind to partially. How many different apps are out there? What, is there a number one app that you use to actually read these pages to them? Like, I've heard "JAWS", is that still a thing these days? 0:20:21.1 Jen Luker JAWS is definitely a huge things, particularly for windows systems. Other screen readers would be just the default screen reader that Mac uses. Chrome has its own that you can implement, too. There's a dozen major, major players. 0:20:44.0 Dan Wahlin Okay. 0:20:46.1 Jen Luker So, and not all of them, just like the browsers, read the text or the website in the same way. Even ios and android devices have different readers of their own. So, each one kind of reads things a little bit differently. It's important to be aware of those differences once you start really digging deep into accessibility, especially if you're trying to customize something away from semantic HTML. 0:21:13.5 Dan Wahlin Now does, you mentioned, I mean, the thing that I think most developers probably have heard of are title attributes, and like you mentioned, the ALT on images, things like that. One that probably most people have come across, and you're going to have to correct me if I say this wrong, I've already said "ARIA?" [pronounced are-ee-uh] 0:21:30.7 Jen Luker Mm-hmm (affirmative). 0:21:31.3 Dan Wahlin Is it ARIA [pronounced are-ee-uh] or ARIA [pronounced air-ee-uh?] Is it ARIA [pronounced are-ee-uh]? 0:21:32.6 Jen Luker I call it ARIA [pronounced are-ee-uh]. It's WAI-ARIA [pronounced why-are-ee-uh]. 0:21:34.2 Dan Wahlin Okay then. I'm going with you then. So, okay. See, I'm right, everyone! 0:21:38.6 John Papa & Jen Luker (laughing) 0:21:39.3 Dan Wahlin 'Cause Jen says! 0:21:40.8 Jen Luker Ha! 0:21:42.1 Dan Wahlin Now that's one I've only seen a few of the, I guess you could say core attributes that you can do with ARIA, but do those play a, I would assume, a pretty big role then? With some of the screen readers out there? 0:21:54.3 Jen Luker Yes and no. Going back to semantic HTML, if you're using just HTML then there's really no need for the ARIA roles. The roles themselves are built in to the platform-specific HTML; however, if you are deviating from that plan or you are using something a little closer to HTML5 then ARIA can play a role in making sure that exactly what you want read to a screen reader is defined. So, usually the first rule of ARIA is "Don't use ARIA." But there's definitely a place for it. 0:22:40.9 Dan Wahlin Okay, good to know. Yeah. I think that's one area that, you know, I'm comfortable with the semantic tags and it's good to hear that those are still the, kind of, I guess, goal. 0:22:51.3 Jen Luker Mm-hmm (affirmative). 0:22:52.1 Dan Wahlin But I'm not as familiar with the ARIA stuff. You know, you'll see it, for instance, even in some of the, if you use Bootstrap all, the CSS. 0:22:59.2 Jen Luker Mm-hmm (affirmative). 0:22:59.5 Dan Wahlin I've noticed they'll add it here and there. If you use Font Awesome I've noticed there'll even be some ARIA-type stuff. But kind of one of those where you copy and paste it and don't really know what it does, you know, without looking it up more. 0:23:10.5John Papa You bring up a great point there with Font Awesome, Dan. Font Awesome, if my memory serves me right, you take a icon tag, right? The i and then you almost always have to stick in an ARIA attribute into there because you're effectively making a button, sometimes, out of that. So you're making a button out of an icon, which isn't really a button, and maybe you don't want it to be inside of a button control. Which almost always leads to end up using the ARIA attributes on there. Is that a bad thing, Jen? Or is that, I mean, 'cause that's what I see a lot out there. I mean, just 'cause I see it doesn't mean that it's right. 0:23:45.7 Jen Luker For the most part what you want in a button is text; however, we often use icons for those buttons. If you can possibly wrap it in a button control that would be better than just trying to add ARIA items to the icon itself. However, that is a way to get around that. Ideally you'd add a button, you'd tell the button its title and its value and that's what ends up getting read instead of just an empty icon. 0:24:20.0 John Papa Yeah, I hear you. Ideally, I try to do that as well, and I'm actually trying to pull up some code of where I've done this before to kind of get sense for, you know, "Why did I do that as opposed to actually using a button, in that case?” And I think sometimes it's more about styling and maybe it's just about effort. Like, you could put it inside of a button. If you didn't really want it to look like a button you could then restyle the button so it didn't look that way. 0:24:44.7 Jen Luker It is so easy to restyle a button- 0:24:48.1 John Papa Mm-hmm (affirmative). 0:24:47.8 Jen Luker So that it doesn't actually look like a button. 0:24:49.4 John Papa Yeah. 0:24:49.9 Jen Luker It is so easy. It's like three lines of CSS and suddenly it's just your icon. 0:24:55.9 John Papa I think you're right on that. I mean, and that's actually gets back to a thing of, Daniel you'll laugh at this, it makes me think of Silverlight. (laughs) The old Silverlight days. 0:25:04.2 Jen Luker (laughs) Mm-hmm (affirmative). 0:25:05.3 John Papa Where everything was described as a lookless control. And I kind of wish, in some ways, HTML was like that. 0:25:11.8 Dan Wahlin Yeah. 0:25:12.4 John Papa Whereas, out of the box, a button has a certain look and a feel. I wish it didn't. Like, you had to add those things because I feel like because there already is a standard way these things are represented... Like, you stick a button on a page you get a certain look, and it's almost never exactly what you want it to look like anyway. So maybe if there was a lookless feel to these HTML elements- 0:25:32.6 Dan Wahlin Or at least an option for that, right? 0:25:34.7 John Papa Yeah! 0:25:35.0 Dan Wahlin Where if you want it out of the box, great. But if you don't, here's how you can start from scratch and just add your own CSS in. Which wouldn't be too bad because we typically use, especially for public facing, you know, reset-type CSS, stylesheets anyway. So you could just kind of say, "Nope. Start from scratch and here's what I'm using." 0:25:52.3 John Papa Yeah. 0:25:52.8 Jen Luker Mm-hmm (affirmative). 0:25:53.1 Dan Wahlin But on that topic, Jen. Is, you know, for your... You obviously specialize in this and I saw in some of the info John was sharing with me that you worked on a website that implemented some automated accessibility testing to meet, is it WCAG? Is that how you say the standard there? 0:26:10.5 Jen Luker Yeah. 0:26:11.1 Dan Wahlin WCAG 2.0? Okay. 0:26:12.5 Jen Luker Mm-hmm (affirmative). 0:26:13.4 Dan Wahlin Can you tell us more about, kind of that process? And what you need to do there? 0:26:17.6 Jen Luker I actually worked on the Starbucks Careers Site project that was recently released. The benefit of that project is that when they started with a rewrite they started from design up with the intention to comply with WCAG 2.0 AA accessibility. So it was literally baked in from the design up and everybody was on board with engineering it to be as accessible as possible. So it was very much a collaborative effort between the design team, the different developers that worked on it, and even the engineering managers and the product owners. It was a really great process. 0:27:05.2 As far as the testing goes, we actually went through a few different layers of testing. The very first one is we implemented the eslint-jsx... or the eslint-plugin-jsx-a11y ... ESLint plugin. That (laughs)- 0:27:24.8 John Papa Oh, sorry, wait. Just let me make sure I got that one right. It's the eslint-plugin-jsx-a11y, right? 0:27:30.9 Jen Luker Yes! 0:27:31.8 John Papa Okay. Perfect. (laughs) 0:27:32.8 Dan Wahlin Say that 10 times fast. 0:27:33.7 Jen Luker I know. 0:27:34.0 John Papa Exactly. 0:27:34.9 Jen Luker It's really long. Especially when you start talking about the fact that I wrote another one for React Native. So... 0:27:39.4 John Papa (laughs) 0:27:40.0 Jen Luker It's even longer. That was kind of the first line of defense. It was utilized right there with Prettier, which was great. We used husky to run Prettier and the accessibility linter at the same time before someone could push code to the repo. In addition to that, we moved on to using axe-core as implemented into Jest for unit testing. And then we also use axe-core in Enzyme for end-to-end testing once the content was compiled down to static pages. 0:28:26.4 So this allowed us to hit the developers before they even pushed, hit the unit test of each one to make sure that they would comply if given the ideal data, and then made sure that it was still compliant once the data from the APIs was inserted into the page on a real time level. 0:28:52.2 That essentially meant that at every step of the process we made sure that everything was compliant before it made it to live. 0:29:02.1 Dan Wahlin Excellent. This would be public, I guess, right? Is this where people would go to look for a job? Or... is that what it was? It says the careers website, it looks like. 0:29:10.0 Jen Luker Yes, it was actually the... Yeah, it's just Starbucks.com/Careers. 0:29:14.8 John Papa Okay. 0:29:15.5 Jen Luker It was multiple pages, it had its own menu navigation. Once you actually go to look for a job by submitting your resume and stuff, you're transported out to the portal that they use, which we didn't get to go over, but the careers section of the Starbucks.com website is, in fact, accessible. And they're using those to expand that project. 0:29:43.4Dan Wahlin For people that want to learn more about it learn more about it, obviously I guess you could go right click view source on, you know, the careers site, but is there a recommended site that it out there that's considered a really good, almost like cheat sheet of how to get started adding stuff into your site? 0:29:59.5 Jen Luker There is. WCAG 2.0 website. 0:30:03.1Dan Wahlin Okay. 0:30:03.0 Jen Luker Which we will add to the show notes for this. It is on W3's website. That's usually a great place to go dig in and find out what's kind of covered in compliance. If you dig in deep enough you can find examples of how to implement code in an accessible way. They give different formats of how you could implement a menu, different ways of, you know, drop downs, so they do give you examples that would comply with accessibility compliance that I've found isn't always exactly going to suit your needs but gives you a very good idea of what's going to be necessary. 0:30:46.5 Dan Wahlin Okay. And is there, when it comes to, you know, if I'm vision-impaired, as a, from developer standpoint is there a way to really test that? Short of using like JAWS or maybe one of the built in readers you mentioned? Or is there an actual tool out there than can help you, you know, make sure that what you wanted them to hear is actually what gets heard? 0:31:08.0 Jen Luker It's literally manually testing at that point. 0:31:10.8 Dan Wahlin Okay, I kinda figured. But, yeah I'm wondering if there's anything out there. 0:31:14.4 Jen Luker Something I do want to mention about that is when you are dealing with testing screen readers, among other different types of ... you know, accessibility technologies, assistive technologies that help you. Being cold, not knowing them, and going in and trying to test them actually develops a huge amount of frustration. That can actually develop enough frustration that you decide that it's not even worth it for someone else to have to try to deal with this pain even with something is ideal. 0:31:52.0 What you should do is find someone who uses that technology day in and day out. You'll be amazed at how much faster and much easier they navigate through tools. And something that I have found extremely interesting is how they've learned to adapt their interactivity with your site based on how it's already broken. So it can be very fascinating to see how people that interact with it have their actual pain points, which things aren't, and those aren't things that you're going to be able to identify as just a casual user. 0:32:28.8 John Papa Let's take a quick break for a word from our sponsors. 0:32:32.0 Voiceover Are you building a web application? Need to deliver it soon and don’t have the people to do it? Maybe you’re not sure your company has the skillset or experience to do it. Then maybe we can help. 0:32:42.4 I’m your host, Ward Bell, and my day job is building applications for companies like yours. I don’t do it alone, I’m president of IdeaBlade, a consultancy that specializes in enterprise web application development. We’re particularly strong in Angular, RxJS, NgRx Redux on the frontend, and .Net Microsoft technologies on the server. 0:33:03.2 We’re a small tight knit group of people, hand picked by me, for their expertise, experience,integrity, and team spirit. Maybe we can help you with architectural guidance and hands-on development. And if there’s something we don’t know (and in our field, really, there’s too much to know), we can draw on our personal connections in the Microsoft RD, MVP, and Google GDE Networks as well as our international circle of really great developers, people we know and trust personally. 0:33:29.8 If you’ve got a project that’s keeping you up at night shoot us an email at info@ideablade.com. That’s info@IdeaBlade.com. And now back to the show! 0:33:42.0 John Papa And we’re back. Jen, Dan brought up a good question ‘cause I had this same thought, and I know it’s changed throughout the years, too; it’s how do you test for your site being accessible, and I realize, you know, the manual test is the best one. But there’s, and you do some automating as well for this. I noticed you mentioned the eslint plugin that you had. 0:34:01.5 Years ago there was, well it still exists, a Chrome plugin for screen reader which is now labeled as deprecated, and I notice they always link you over to the Lighthouse tools now, the Chrome plugin for that, which does an accessibility audit. I don’t know how you feel but I’m curious, like on, I see for example, the Starbucks Careers site has a, right now, 100 out of 100 score for accessibility. That doesn’t make me feel like it’s done, but it does make me feel like at least, like if there were something missing in that list of what wasn’t 100, I’d know I have some work to do. But when it’s 100 I’m then stuck with the, “What’s my next step?” Like, running Lighthouse step one: make sure those things aren’t barking at you. 0:34:44.9 Jen Luker Mm-hmm (affirmative). 0:34:45.6 John Papa But what do you do after that? 0:34:47.2 Jen Luker After that is when you starting bringing in actually user testers. So previously we were talking about return on investments of adding accessibility features from the viewpoint of someone who wants to add the accessibility demographic, right? The addition of adding those accessibility features actually expands far beyond those with accessibility issues, but also everybody. So, for instance, say that you’re sitting in a really noisy bar and you want to share a video with your friends. You can’t just sit there and play the video and expect them to get everything that’s being said. It’s too loud in the area that you’re in. With either a transcript or subtitles you can actually understand everything that’s going on in the video without having sound. 0:35:39.9 John Papa I’m so glad you brought that up ‘cause that’s something that is near and dear to me on videos. Not just for people who have issues, but it’s also… Just think about the financial side of this, too, and the marketing side. If you want somebody to watch your video and it’s scrolling past them on a screen in a Twitter feed, or Linkedin, or Instagram, or any kind of social media even, or even on the TV. If there’s no sound, if they can see the words sometimes that grabs their attention. 0:36:08.0 And I’ll, gonna share something about myself here, when I watch TV shows, and I love science fiction, things like Game of Thrones for example- 0:36:17.1 Jen Luker (laughs) 0:36:17.5 John Papa I actually put the closed captions on because I can’t tell what the heck name they’re saying. 0:36:21.7 Dan Wahlin I do the same thing. 0:36:23.0 John Papa You know? (laughs) 0:36:23.4 Dan Wahlin Not with Game of Thrones but with other stuff, yeah. 0:36:25.8 John Papa Yeah, I mean if their name was “Dan” I could get it. But when some of these names comes on I’m like, “...” So I love the fact that we… It’s not just for people who can’t understand names like me, but it’s a great thing for videos ‘cause now you’re reading an audience who maybe they don’t understand the slang you’re using, maybe English isn’t their first language. If you’re recording in English. 0:36:46.3 Jen Luker Mm-hmm (affirmative). 0:36:47.9 John Papa So when I talk with other countries they use the closed captions a lot for trying to figure out, “What did John say?” There’s just so many good ways and good reasons to do it and it’s not hard. 0:36:58.4 Jen Luker Unh-unh (negative). It’s not necessarily hard but it is time consuming. And it can be a little bit costly, depending on whether you do it yourself or whether you’re hiring someone to- 0:37:08.6 John Papa Yes. 0:37:09.2 Jen Luker Provide those transcriptions for you. 0:37:11.3 John Papa There are some free ones. Like if you go to YouTube and you upload it they give you one free translation, but then you run the risk of something like, my good buddy, Asim Hussain, his name is spelled A-S-I-M. 0:37:22.9 Jen Luker Mm-hmm (affirmative). 0:37:23.4 John Papa And when he recorded one of the videos it came out on the closed captioning as “Hello, everyone. My name is Awesome Hussein.” 0:37:29.3 Jen Luker (laughs) 0:37:30.2 ALL (laughing) 0:37:31.1 Dan Wahlin We should call him that now, when I see him. 0:37:32.6 John Papa Yes! So that’s now his nickname. (laughs) 0:37:34.6 Jen Luker That’s awesome. Ha ha! 0:37:35.9 John Papa Literally! 0:37:38.2 Jen Luker Oh, goodness. Yeah, YouTube is… I’m so proud of YouTube for at least trying to add like, automated transcriptions to all of the videos that are available. So there is a button you can click on that will show just a real time transcription as it’s developed. Unfortunately our ability to write machine learning that can fully understand different accents, different dialects, different contexts is still lagging behind how quickly communication and language evolves. So it’s not the best. It’s like trying to use Google Translate and it can be difficult. 0:38:23.3 Dan Wahlin Yeah, it’s- I started playing with, so Azure has it, and Amazon has had it though, for quite a while, has a few more voices at this point on AWS, but they have a service on some of my, I guess you could say wordier posts, meaning that there’s not as much code ‘cause it’s hard to convert. 0:38:43.0 This is kinda opposite of what we’re talking about, this is text-to-speech, and I said, you know, it doesn’t really cost me. I mean, it’s negligible, almost free it’s so minimally used by people and looking at the stats, but it’s you know, Amazon Polly and then Azure… I don’t remember what it’s called. what’s it called, John? They have their text-to-speech service. Do you know off the top of your head? I don’t think I remember the name. It’s probably part of the cognitive speech APIs I’m guessing. 0:39:12.9 But anyway it'll, you know, take your text and convert it into like, an mp3. So I’ve been doing that recently on just some of my more text based posts. ‘Case like I said, it’s hard to get context out of code, of course. But, you know, I like having it. I look at the stats. There’s not a ton of usage, per se. Although somebody could download it, almost like a podcast, but what I like about it is somebody that, you know, was vision impaired in some way, and I swear the older I get I’m starting to fall into that category anyway where I’d almost rather listen to it, you know, than read it. 0:39:49.4 But there’s a lot of different things out there like that that I think as technology progresses, you know, hopefully as you’ve mentioned, Jen, the YouTube closed captioning-type thing just keeps getting better and better. Text to speech is definitely getting pretty awesome. The voice I picked I’m just amazed with how high the quality is. So, a lot of cool stuff out there for this. 0:40:08.2 John Papa Yeah, that is called Azure’s text-to-speech cognitive services is the piece of it. You’re right it’s Amazon Polly. I put both those links in the show notes for everybody. 0:40:16.3 Jen Luker I think the biggest take away from all of this is that accessibility isn’t just for the people with disabilities. It literally is for everyone and it’s not just for old people or young people or people suffering from a specific disability. It’s also for people that have temporary or circumstantial disabilities. It’s for people that have you know, issues today, but no issues tomorrow. Or maybe they’re watching a TV show that has really loud explosions and really quiet text and your baby’s sleeping- 0:40:52.9 John Papa Yeah, what’s up with that anyway? 0:40:53.8 Jen Luker (laughs) Right? That’s why I use a screen… You know, that’s why I use subtitles. But, you know, it’s just the more you step back and look at it the more you realize that accessibility isn’t just keyboard tabbing and it’s not just a screen reader. It’s being able to allow people to interact with your content no matter who they are, or where they are, or what they are; and that has a real power. 0:41:22.9 That has the ability to take people that, I mean, arguably needs to be the ones that have the work flexibility in order to support themselves, and to be able to have the insurance to take care of their medical issues, and give them a job that gives them that freedom. I mean we, as devs, have a huge amount of freedom. We can work from anywhere as long as we’ve got an internet connection and a laptop. And as long as we’re working towards making the entire web accessible, whether that’s Game of Thrones, or that’s our technological documentation it really opens up the world to people that would not have otherwise had the opportunity to be able to make the best of it. 0:42:10.9 Dan Wahlin Absolutely. I think that’s, you know, that’s just a win all around for everyone. To kind of tag on that again, real quick… So I was at Dick’s Sporting Goods, which if you’re in the United States listening to this you’ll probably know who that is, they’re a pretty big sporting goods company. But I was out there doing some angular training and we were talking briefly- Jen, that’s why I asked more about the ARIA labels ‘cause that’s came up. And they actually have a full-time, at least one person maybe more but at least one I know full-time for accessibility. 0:42:41.0 So I think kind of challenge we might be able to issue all of us as devs is, if your company’s currently not doing that, there are companies that are. Now, you know, some of them I think are doing it purely out of what you just said, Jen. They just want to make it more accessible to everybody. Some of them probably it’s financial and okay, I think it’s a win either way, whatever they choose. 0:43:02.6 John Papa Sure. 0:43:03.1 Dan Wahlin But I think that’s a challenge we could all probably take on to try to be a little more educated on that and use it more. 0:43:09.6 John Papa there’s even little things you can do that may not fall under the exact category but how many times have you been to a website where there’s so much text jammed onto a screen you can’t actually discern what you’re supposed to be looking at? You know, so just making sites easier to read and having a better user experience. I find user experience and accessibility really flow together, personally. And when you’ve got one and the other together it’s like the beauty of the web. When you have neither of those that’s like when you go back to one of those 1996 websites where you can't figure out what’s going on. 0:43:42.2 Jen Luker (laughs) It’s absolutely true. It’s definitely a situation where making it fantastic for one group of people ends up helping everyone. So I mean, even if you do one thing today, if you add one more ALT tag, or you convert one more div to a button, or one button to a link, you know? That’s one more thing that’s going to be useable. You don’t have to flip the switch and have your entire website accessible tomorrow, but you can make one step today. 0:44:13.9 John Papa Awesome. Jen, we would like to wrap up this show with a section we call “Someone to Follow” where we talk about somebody who may be well known, or may not in the industry who we just want people to take a closer look at. And I’ll kick things off. Today, and I seem to be picking names that I can’t pronounce recently, so I apologize Gleb, but the person I want to point out is Gleb Bahmutov, and it’s… I’ll put his Twitter link up here on the page. He is one of the JavaScript ninjas behind the tool called cyprus.io which, Dan you did a show with us on that a couple of weeks or months ago. 0:44:47.6 Dan Wahlin I love it. Yeah. 0:44:49.1 John Papa Gleb is amazing. I’ve talked with him a few times on, he’s another Twitter friend, and the reason I wanted to call him out was I was working with cyprus.io, ‘cause I switched, Dan convinced me to switch. And I absolutely loved it and I was trying to solve some problems with it and I resent it to him on Twitter and he helped me get over those issues right away. And I just really love how open and friendly he was and he’s just done some amazing technology products that he’s had on the web over the years and cyprus io is just the recent one of those. Dan, do you have somebody to follow? 0:45:20.4 Dan Wahlin Yeah. So I had the chance to have dinner recently with one of my buddies, Rick Strahl. You know Rick, John. 0:45:27.6 John Papa Oh, yeah. 0:45:28.3 Dan Wahlin And for those that don’t know Rick he’s like, world champion I think. He windsurfs a lot (laughs). But Rick’s just a all-around very cool guy and very knowledgeable about frontend and backend type technologies, so he’s @Rick- We’ll put it in the show notes, but @RickStrahl on Twitter. 0:45:51.7 John Papa And Jen, do you have someone to follow? 0:45:53.1 Jen Luker I do. So there’s someone that I’ve been seeing a lot in the conference circuit this year. His name is Tejas Kumar. He is one of the nicest, most upbeat, most enthusiastic, and kindest, and most patient people you will ever meet in your entire life. He has more energy than my child and he’s basically the person who touts love and tolerance and kindness throughout Twitter. It’s a definite highlight in my feed. So I will definitely include his link in the show notes as well. But he’s my person to follow. 0:46:34.2 John Papa Actually I think I met Tejas last week at dotJS in Paris. Super nice guy. I hadn’t met him before but he was just a Twitter friend, so. It’s so nice when you actually meet people in person who you meet on the internet. (laughs) 0:46:46.0Jen Luker Absolutely. 0:46:47.1John Papa Well hey, Jen, it was great having you on here and thank you for coming on and talking to us about accessibility and for everybody who’s listening, thanks for listening to this show. We’re putting a bunch of links in the show notes so go check those out and please listen to us every Tuesday morning. 0:47:03.3 Jen Luker Thank you. (Exit Music) 0:47:08.4 Voiceover Thanks for listening to Real Talk JavaScript. This show and all of our shows are available at www.RealTalkJS.com with links and notes. John and Ward would love to hear what you think, especially about potential guests and topics for future shows. Follow and send them a message on Twitter @RealTalkJS.

The Web Platform Podcast
164: Cypress.io

The Web Platform Podcast

Play Episode Listen Later Jun 28, 2018 51:44


Guests Brian Mann and Gleb Bahmutov join our hosts to discuss Cypress, and open source test runner that's built for the modern web. With fast, easy and reliable testing for anything that runs in a browser, the show discusses how cypress utilizes the platform and the ease of use for end developers. Visit the website for This Week in Web, resources & more: https://thewebplatformpodcast.com/164-cypressio   Follow The Web Platform podcast on Twitter for regular updates @TheWebPlatform.

testing web qa cypress e2e webdriver gleb bahmutov
Devchat.tv Master Feed
VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov

Devchat.tv Master Feed

Play Episode Listen Later Apr 17, 2018 65:03


Panel: Charles Max Wood Joe Eames Erik Hanchett Chris Fritz Special Guests: Gleb Bahmutov In this episode of Views on Vue, the panelists discuss testing Vue.js with Cypress with Gleb Bahmutov. Gleb runs engineering at a small startup called Cypress, which is an end to end test runner.  They talk about what Cypress is, what end to end testing is, and the importance of test driven development. They also touch on the different Cypress features and how using it can help save you time in your testing. In particular, we dive pretty deep on: Gleb intro What is Cypress? Selenium Writing and running unit tests is easy, but could lead to problems You don’t want to waste too much of your time writing tests Test by need not by choice Cypress as a more reliable and easier test runner What is end to end testing? What kinds of testing can Cypress be used for? Deployed systems Test driven development Cypress provides a good testing environment Like the Cypress environment Cypress features Cypress runs in Chrome or Electron browser Are there times when you might want to do something framework specific in Cypress? Vue.js Test the dashboard using Cypress Creating a mock API Keep your end to end tests fast And much, much more! Links: Cypress Selenium Vue.js Gleb’s Website @Bahmutov Gleb’s GitHub Gleb’s Medium Picks: Charles Running With the Demon by Terry Brooks Liars: How Progressives Exploit Our Fears by Glenn Beck Erik Avatar: The Last Airbender Vuetify Video on Vuetify Vue Material Joe My Little Pony Tails of Equestria Santa Clarita Diet Chris Arrival (Stories of Your Life MTI) by Ted Chiang Proun Avatar: The Last Airbender Gleb Service Workers in Safari Renovate App Will be in Copenhagen, Denmark next month

Views on Vue
VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov

Views on Vue

Play Episode Listen Later Apr 17, 2018 65:03


Panel: Charles Max Wood Joe Eames Erik Hanchett Chris Fritz Special Guests: Gleb Bahmutov In this episode of Views on Vue, the panelists discuss testing Vue.js with Cypress with Gleb Bahmutov. Gleb runs engineering at a small startup called Cypress, which is an end to end test runner.  They talk about what Cypress is, what end to end testing is, and the importance of test driven development. They also touch on the different Cypress features and how using it can help save you time in your testing. In particular, we dive pretty deep on: Gleb intro What is Cypress? Selenium Writing and running unit tests is easy, but could lead to problems You don’t want to waste too much of your time writing tests Test by need not by choice Cypress as a more reliable and easier test runner What is end to end testing? What kinds of testing can Cypress be used for? Deployed systems Test driven development Cypress provides a good testing environment Like the Cypress environment Cypress features Cypress runs in Chrome or Electron browser Are there times when you might want to do something framework specific in Cypress? Vue.js Test the dashboard using Cypress Creating a mock API Keep your end to end tests fast And much, much more! Links: Cypress Selenium Vue.js Gleb’s Website @Bahmutov Gleb’s GitHub Gleb’s Medium Picks: Charles Running With the Demon by Terry Brooks Liars: How Progressives Exploit Our Fears by Glenn Beck Erik Avatar: The Last Airbender Vuetify Video on Vuetify Vue Material Joe My Little Pony Tails of Equestria Santa Clarita Diet Chris Arrival (Stories of Your Life MTI) by Ted Chiang Proun Avatar: The Last Airbender Gleb Service Workers in Safari Renovate App Will be in Copenhagen, Denmark next month

All Angular Podcasts by Devchat.tv
AiA 155: Cypress.io and End-to-End Testing with Gleb Bahmutov

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Sep 12, 2017 55:07


Tweet this Episode Show Notes in Progress

progress cypress end testing gleb bahmutov
Devchat.tv Master Feed
AiA 155: Cypress.io and End-to-End Testing with Gleb Bahmutov

Devchat.tv Master Feed

Play Episode Listen Later Sep 12, 2017 55:07


Tweet this Episode Show Notes in Progress

progress cypress end testing gleb bahmutov
Adventures in Angular
AiA 155: Cypress.io and End-to-End Testing with Gleb Bahmutov

Adventures in Angular

Play Episode Listen Later Sep 12, 2017 55:07


Tweet this Episode Show Notes in Progress

progress cypress end testing gleb bahmutov
All Angular Podcasts by Devchat.tv
AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Aug 15, 2017 74:54


AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave On today's episode of Adventures in Angular, we have panelists Ward Bell, Joe Eames and Charles Max Wood. We have special guests, Jeff Whelpley and Kushal Dave. The discussion ranges from the organization of code bases to the benefits of using Monorepo vs Multirepo. Tune in! [00:01:45] – Introduction to Jeff Whelpley and Kushal Dave Kushal is CTO at Scroll, a start-up. Before that, he was at Foursquare, Chartbeat, Google, and IBM. He has worked in a lot of monorepo code base. Although he actually has experience working on a lot of Multirepo situations. Jeff is the CTO of a small startup in Boston called GetHuman that helps people with customer service problems. He has been on Adventures in Angular a couple of times before. He has also been in a couple of other podcasts before, as well as in the open-source community. [00:03:20] – Introduction to the issue Typically, when you’re working in just one or two people team, you don’t really have that many issues centered on dev process, coordinating changes between each other, and trying to figure out the best optimal way to organize your code. Most of the time, you understand the entire code base because you’re working with everything. It gets to be a much different problem once you get to have a larger team. In essence, everything is starting slow down because of different overhead related to the process that was needed in order to make sure got quality changes. You basically have to spend a lot of time and thought around your developer process, how you structure your code, how you physically setup, and organize your entire code base. [00:06:20] – How to organize your code bases? When Kushal worked at Google, everything is in a single giant repository. There are one or two exceptions for client code and some infrastructure things. It allowed people to feel that they could change any of the code and it made it easy to keep everybody in sync with the state of the code. There is some sort of workflow and process things that you have to change in order to get that right. Probably, the biggest one is trying to keep the repo from working in long running branches because things start to diverge. That was the model of Foursquare too. [00:08:15] – How do you run all of the CI across everything? The answer changes to different sizes. At Scroll and for most of the time that Kushal was at Foursquare, it was efficient to run all the builds on every commit. If you just have one mega build that just runs continuously, that’s good enough up until 30 or 40 developers. Once you hit that size, there’s a variety of build tools out there that you can use and understand the structure of your code base. Once you’ve used one of these build tools, declaratively indicate which artifacts depends on which libraries, and what the full dependency thing is, you can build only the relevant CI’s. You can decide whether this change only touches this binary or this test. Chuck also like the approach of having everything in master. If it was experimental, it would still go into master and their CI would effectively run the different builds with the different feature flags. If what you did broke something that somebody else was working on in a process, you could just adjust it midstream. [00:16:00] – Gatekeeper process The gatekeeper process protects the whole code base but at the same time, it’s in the layer of bureaucracy. We’ve been reviewing every piece of code before it’s allowed to land in master. Everybody on our team commits multiple times a day to master. All the changes, as much as possible are really small, especially the feature flag check. In that world, there is this bureaucracy. Hopefully, it’s not holding you up too much. The flipside of that is when you’ll feel really confident that you didn’t break anybody who depends on you and you’re going to have to revisit this change a month from now. For the past 9 months or so, Jeff tried a bunch of different configurations. He tried monorepo and other configurations from the other end of the spectrum - many small packages. As he was interviewing people with their different setups, they’ve all encountered the same types of problems. Regardless if you’re using monorepo or not, as long as you’re trying to keep your changes small and specific, and implemented quickly, it can alleviate any other pains. [00:22:10] – Guard rails The guard rails are just the reviewers. For us, every change that’s getting reviewed means that in some extent, there’s a human check on that. I’m not sure if you can but I certainly know that Reviewable and Fabricate both offer sort of wide range of configuration options. I can imagine the world in which you can programmatically keep people from landing changes that didn’t have that level. In Github, there are guard rails. That actually helps the reviewers. It’s reassuring to have some technology that this person is associated with this set of boundaries. If you want to step outside of the boundaries, they’re going to have to get some other person who understands the code that’s outside of the line to join in approving that. If their organization is big, this is something that they might have to think about. Jeff advises to really be careful about what you’re doing. Is this a change where you are just bumping version numbers or is this something that you have to change a business logic? [00:28:15] – Allowing different people to upgrade dependencies The only way Kushal has ever seen it done is a brutal all-nighter by somebody who has to sit there and get everything working. But one of the things that Google does is they develop a lot of patterns about how to refactor code to make things easier. One solution that Jeff sees is the complete opposite of the spectrum from monorepo. Dr. Gleb Bahmutov is a huge fan of open-source smaller repos - a lot of the mentality of keeping things small, separate and distinct. He’s decided that he’s going to stick in the many repo universe and just create tooling to solve some of these problems. For versioning, he runs this server that detects that a new version has been published. It will automatically try to update it and run all the tests. But according to Kushal, if you have different repos, you can move differently in terms of dependencies but if you’re now out of sync, you may suddenly have incompatible dependencies across what you’re doing. It’s a question of when you want to deal with the problem. Chuck talks about the ways you can get out of sync. With the multirepo, you can get out of sync not just on the dependencies and the build process, but also on the API’s. If you have a module that you’re working on over here and whatever are consuming it on the other side as a driver may not be updated yet so it doesn’t talk properly. Jeff also noticed that with Angular DI, if you aren’t actually using the same version, you run into issues because it has to be the exact same thing at every level or else the injection token is different. [00:36:50] – Develop within Monorepo or develop in a separate repo Chuck thinks that it depends. If there are a lot of dependencies and shortcuts that he can take by relying on the monorepo, he will do it on the monorepo like if it auto loads the correct libraries automatically. And then, they don’t have to do a whole lot of setup. If it’s small, independent, and it’s going to move quickly, then, a separate repo may be the right answer. Kushal adds that there are a lot of benefits in doing it in the monorepo. With feature flags, you have the benefit of reviewing it. It also allows you and others to keep up with everyone in terms of breaking API changes, other than having some brutal merge. Jeff will do it in a separate repo. If this an experimental thing, it disturbs people less. It alleviates the notifications that go on. That is why Kushal’s team also built a lot of custom Slack cooks in order to get some notifications tailored to the parts that they only care about. [00:44:50] – How do you work it out so that things aren’t so tightly coupled? There are no circular dependencies between your packages even transitively. As your monorepo grows you may eventually have some tooling that requires that for your build system. Can this layer have this type of functionality? Or does it need to be moved into a new package? It also means it improves your architecture. Kushal’s team is working on Java. This object that users and organizations create can know about each other’s’ objects but the users can never depend back into organizations or vice versa. You can think of the layered model of networking. We have the pure data model objects are not allowed to know anything about the service layer that interacts with the database. The database can know about those model objects. The web tier can obviously know about both the model objects and the service tier because it utilizes both of those. [00:47:30] – How are those relationships defined? They are defined in build files. If you look at Pants or Blaze or Buck, all those build systems have explicit dependency configurations so you can sort of keeping any of those invariants from being broken.  But Kushal’s team just have a Wiki page that lists out the rules. They also have a test that looks for any cycles in any package dependencies. Jeff’s team created a CLI tool that walks down all subdirectories from where they’re running it. It finds all the package JSON in all your subdirectories and it creates the dependency graphs. They haven’t fully moved to a monorepo but they did start to consolidate. They have a couple of larger repos. This tool will see the dependency graph for all the NPM modules and also see the dependencies between the repos based off of the NPM module dependencies. [00:50:20] – Multimonorepo It’s not perfect to have one larger repo that has basically all of the none-deployable codes. Jeff and his team have a separate set of repos for the actual deployable code. They haven’t made the jump to where Kushal is advocating – using build tools. [00:50:20] – To open-source When you want an open-source portion of what you’re doing but not the entire company’s code base, Jeff thinks that there’s really no way out of having a separate repo for that. Google has this giant internal repo because not everything in it is open-source. Angular is open-source. That’s at least one driver that Angular is in the public Github repo and Google use so much of Angular. And some companies want the sort of open collaboration and free support and upgrades from the community. Other companies see that they’re giving away some kind of competitive advantage that they’re not willing to give up. [00:55:40] – Monorepo is better in all cases Jeff recognizes that there’s a number of organizations that have successfully implemented it but there isn’t an easy way for someone to do it. It’s not common knowledge and does not have a well-known set of tooling and best practices. There’s still a lot to go to get to the point where it’s a no-brainer and everybody knows how to do this the right way. Ward doesn’t know how to do a monorepo but according to him, if he is in an organization or starting an organization, he would go figure out how to do it and would want his organization to have a monorepo. Chuck tends to lean to monorepo but doesn't always do it either. Another caveat is even if he starts with the monorepo, that doesn’t mean that’s where he’s going to end. The answer is if you put them all in separate repos and it turns out that you need benefits of having them all in the same place, you can move them all in one repo. It may not be easy depending on how big and complicated you make your mono or the way you tie together your disparate repos. Kushal is all in. The only time that he wouldn’t do it is if he’s building disparate open-source projects and wanted them to play the open-source ecosystem. The net benefit is that everyone is moving together rapidly because monorepo is optimized for speed. But Kushal wishes that the tooling is better and that many people move to this model. Joe is also open to monorepo in a larger organization. He thinks that the separate repos keep things but monorepo can solve a lot of problems. [01:01:55] – Places to go Jeff has a bunch of articles for people who are pro-monorepo and are advocating for that. He has yet to find one that sets forth like a good mental model or decision framework. This is what Jeff hopes to create in the next couple of weeks before the conference. Picks Ward Bell Hiking Fishing Southern Sierras Chuck Max Wood Book: Profit First by Mike Michalowicz Ketogenic Diet Air-conditioning Joe Eames Book: Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are by Seth Stephens-Davidowitz Rent a scooter to ride around Rome Jeff Whelpley Survey: Monorepo vs Multirepo Twitter: @jeffwhelpley Medium: @jeffwhelpey Kushal Dave Technical Design Reviews Book: The Orphan Master’s Son Twitter: @krave Medium: Workflow

Adventures in Angular
AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave

Adventures in Angular

Play Episode Listen Later Aug 15, 2017 74:54


AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave On today's episode of Adventures in Angular, we have panelists Ward Bell, Joe Eames and Charles Max Wood. We have special guests, Jeff Whelpley and Kushal Dave. The discussion ranges from the organization of code bases to the benefits of using Monorepo vs Multirepo. Tune in! [00:01:45] – Introduction to Jeff Whelpley and Kushal Dave Kushal is CTO at Scroll, a start-up. Before that, he was at Foursquare, Chartbeat, Google, and IBM. He has worked in a lot of monorepo code base. Although he actually has experience working on a lot of Multirepo situations. Jeff is the CTO of a small startup in Boston called GetHuman that helps people with customer service problems. He has been on Adventures in Angular a couple of times before. He has also been in a couple of other podcasts before, as well as in the open-source community. [00:03:20] – Introduction to the issue Typically, when you’re working in just one or two people team, you don’t really have that many issues centered on dev process, coordinating changes between each other, and trying to figure out the best optimal way to organize your code. Most of the time, you understand the entire code base because you’re working with everything. It gets to be a much different problem once you get to have a larger team. In essence, everything is starting slow down because of different overhead related to the process that was needed in order to make sure got quality changes. You basically have to spend a lot of time and thought around your developer process, how you structure your code, how you physically setup, and organize your entire code base. [00:06:20] – How to organize your code bases? When Kushal worked at Google, everything is in a single giant repository. There are one or two exceptions for client code and some infrastructure things. It allowed people to feel that they could change any of the code and it made it easy to keep everybody in sync with the state of the code. There is some sort of workflow and process things that you have to change in order to get that right. Probably, the biggest one is trying to keep the repo from working in long running branches because things start to diverge. That was the model of Foursquare too. [00:08:15] – How do you run all of the CI across everything? The answer changes to different sizes. At Scroll and for most of the time that Kushal was at Foursquare, it was efficient to run all the builds on every commit. If you just have one mega build that just runs continuously, that’s good enough up until 30 or 40 developers. Once you hit that size, there’s a variety of build tools out there that you can use and understand the structure of your code base. Once you’ve used one of these build tools, declaratively indicate which artifacts depends on which libraries, and what the full dependency thing is, you can build only the relevant CI’s. You can decide whether this change only touches this binary or this test. Chuck also like the approach of having everything in master. If it was experimental, it would still go into master and their CI would effectively run the different builds with the different feature flags. If what you did broke something that somebody else was working on in a process, you could just adjust it midstream. [00:16:00] – Gatekeeper process The gatekeeper process protects the whole code base but at the same time, it’s in the layer of bureaucracy. We’ve been reviewing every piece of code before it’s allowed to land in master. Everybody on our team commits multiple times a day to master. All the changes, as much as possible are really small, especially the feature flag check. In that world, there is this bureaucracy. Hopefully, it’s not holding you up too much. The flipside of that is when you’ll feel really confident that you didn’t break anybody who depends on you and you’re going to have to revisit this change a month from now. For the past 9 months or so, Jeff tried a bunch of different configurations. He tried monorepo and other configurations from the other end of the spectrum - many small packages. As he was interviewing people with their different setups, they’ve all encountered the same types of problems. Regardless if you’re using monorepo or not, as long as you’re trying to keep your changes small and specific, and implemented quickly, it can alleviate any other pains. [00:22:10] – Guard rails The guard rails are just the reviewers. For us, every change that’s getting reviewed means that in some extent, there’s a human check on that. I’m not sure if you can but I certainly know that Reviewable and Fabricate both offer sort of wide range of configuration options. I can imagine the world in which you can programmatically keep people from landing changes that didn’t have that level. In Github, there are guard rails. That actually helps the reviewers. It’s reassuring to have some technology that this person is associated with this set of boundaries. If you want to step outside of the boundaries, they’re going to have to get some other person who understands the code that’s outside of the line to join in approving that. If their organization is big, this is something that they might have to think about. Jeff advises to really be careful about what you’re doing. Is this a change where you are just bumping version numbers or is this something that you have to change a business logic? [00:28:15] – Allowing different people to upgrade dependencies The only way Kushal has ever seen it done is a brutal all-nighter by somebody who has to sit there and get everything working. But one of the things that Google does is they develop a lot of patterns about how to refactor code to make things easier. One solution that Jeff sees is the complete opposite of the spectrum from monorepo. Dr. Gleb Bahmutov is a huge fan of open-source smaller repos - a lot of the mentality of keeping things small, separate and distinct. He’s decided that he’s going to stick in the many repo universe and just create tooling to solve some of these problems. For versioning, he runs this server that detects that a new version has been published. It will automatically try to update it and run all the tests. But according to Kushal, if you have different repos, you can move differently in terms of dependencies but if you’re now out of sync, you may suddenly have incompatible dependencies across what you’re doing. It’s a question of when you want to deal with the problem. Chuck talks about the ways you can get out of sync. With the multirepo, you can get out of sync not just on the dependencies and the build process, but also on the API’s. If you have a module that you’re working on over here and whatever are consuming it on the other side as a driver may not be updated yet so it doesn’t talk properly. Jeff also noticed that with Angular DI, if you aren’t actually using the same version, you run into issues because it has to be the exact same thing at every level or else the injection token is different. [00:36:50] – Develop within Monorepo or develop in a separate repo Chuck thinks that it depends. If there are a lot of dependencies and shortcuts that he can take by relying on the monorepo, he will do it on the monorepo like if it auto loads the correct libraries automatically. And then, they don’t have to do a whole lot of setup. If it’s small, independent, and it’s going to move quickly, then, a separate repo may be the right answer. Kushal adds that there are a lot of benefits in doing it in the monorepo. With feature flags, you have the benefit of reviewing it. It also allows you and others to keep up with everyone in terms of breaking API changes, other than having some brutal merge. Jeff will do it in a separate repo. If this an experimental thing, it disturbs people less. It alleviates the notifications that go on. That is why Kushal’s team also built a lot of custom Slack cooks in order to get some notifications tailored to the parts that they only care about. [00:44:50] – How do you work it out so that things aren’t so tightly coupled? There are no circular dependencies between your packages even transitively. As your monorepo grows you may eventually have some tooling that requires that for your build system. Can this layer have this type of functionality? Or does it need to be moved into a new package? It also means it improves your architecture. Kushal’s team is working on Java. This object that users and organizations create can know about each other’s’ objects but the users can never depend back into organizations or vice versa. You can think of the layered model of networking. We have the pure data model objects are not allowed to know anything about the service layer that interacts with the database. The database can know about those model objects. The web tier can obviously know about both the model objects and the service tier because it utilizes both of those. [00:47:30] – How are those relationships defined? They are defined in build files. If you look at Pants or Blaze or Buck, all those build systems have explicit dependency configurations so you can sort of keeping any of those invariants from being broken.  But Kushal’s team just have a Wiki page that lists out the rules. They also have a test that looks for any cycles in any package dependencies. Jeff’s team created a CLI tool that walks down all subdirectories from where they’re running it. It finds all the package JSON in all your subdirectories and it creates the dependency graphs. They haven’t fully moved to a monorepo but they did start to consolidate. They have a couple of larger repos. This tool will see the dependency graph for all the NPM modules and also see the dependencies between the repos based off of the NPM module dependencies. [00:50:20] – Multimonorepo It’s not perfect to have one larger repo that has basically all of the none-deployable codes. Jeff and his team have a separate set of repos for the actual deployable code. They haven’t made the jump to where Kushal is advocating – using build tools. [00:50:20] – To open-source When you want an open-source portion of what you’re doing but not the entire company’s code base, Jeff thinks that there’s really no way out of having a separate repo for that. Google has this giant internal repo because not everything in it is open-source. Angular is open-source. That’s at least one driver that Angular is in the public Github repo and Google use so much of Angular. And some companies want the sort of open collaboration and free support and upgrades from the community. Other companies see that they’re giving away some kind of competitive advantage that they’re not willing to give up. [00:55:40] – Monorepo is better in all cases Jeff recognizes that there’s a number of organizations that have successfully implemented it but there isn’t an easy way for someone to do it. It’s not common knowledge and does not have a well-known set of tooling and best practices. There’s still a lot to go to get to the point where it’s a no-brainer and everybody knows how to do this the right way. Ward doesn’t know how to do a monorepo but according to him, if he is in an organization or starting an organization, he would go figure out how to do it and would want his organization to have a monorepo. Chuck tends to lean to monorepo but doesn't always do it either. Another caveat is even if he starts with the monorepo, that doesn’t mean that’s where he’s going to end. The answer is if you put them all in separate repos and it turns out that you need benefits of having them all in the same place, you can move them all in one repo. It may not be easy depending on how big and complicated you make your mono or the way you tie together your disparate repos. Kushal is all in. The only time that he wouldn’t do it is if he’s building disparate open-source projects and wanted them to play the open-source ecosystem. The net benefit is that everyone is moving together rapidly because monorepo is optimized for speed. But Kushal wishes that the tooling is better and that many people move to this model. Joe is also open to monorepo in a larger organization. He thinks that the separate repos keep things but monorepo can solve a lot of problems. [01:01:55] – Places to go Jeff has a bunch of articles for people who are pro-monorepo and are advocating for that. He has yet to find one that sets forth like a good mental model or decision framework. This is what Jeff hopes to create in the next couple of weeks before the conference. Picks Ward Bell Hiking Fishing Southern Sierras Chuck Max Wood Book: Profit First by Mike Michalowicz Ketogenic Diet Air-conditioning Joe Eames Book: Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are by Seth Stephens-Davidowitz Rent a scooter to ride around Rome Jeff Whelpley Survey: Monorepo vs Multirepo Twitter: @jeffwhelpley Medium: @jeffwhelpey Kushal Dave Technical Design Reviews Book: The Orphan Master’s Son Twitter: @krave Medium: Workflow

Angular Air
ngAir 126 - Managing Code for Multiple Apps and Teams with Jeff Whelpley and Gleb Bahmutov

Angular Air

Play Episode Listen Later Aug 15, 2017 61:59


--- Support this podcast: https://anchor.fm/angularair/support

managing code apps gleb bahmutov jeff whelpley
Devchat.tv Master Feed
AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave

Devchat.tv Master Feed

Play Episode Listen Later Aug 15, 2017 74:54


AiA 152: Multirepo vs Monorepo with Jeff Whelpley and Kushal Dave On today's episode of Adventures in Angular, we have panelists Ward Bell, Joe Eames and Charles Max Wood. We have special guests, Jeff Whelpley and Kushal Dave. The discussion ranges from the organization of code bases to the benefits of using Monorepo vs Multirepo. Tune in! [00:01:45] – Introduction to Jeff Whelpley and Kushal Dave Kushal is CTO at Scroll, a start-up. Before that, he was at Foursquare, Chartbeat, Google, and IBM. He has worked in a lot of monorepo code base. Although he actually has experience working on a lot of Multirepo situations. Jeff is the CTO of a small startup in Boston called GetHuman that helps people with customer service problems. He has been on Adventures in Angular a couple of times before. He has also been in a couple of other podcasts before, as well as in the open-source community. [00:03:20] – Introduction to the issue Typically, when you’re working in just one or two people team, you don’t really have that many issues centered on dev process, coordinating changes between each other, and trying to figure out the best optimal way to organize your code. Most of the time, you understand the entire code base because you’re working with everything. It gets to be a much different problem once you get to have a larger team. In essence, everything is starting slow down because of different overhead related to the process that was needed in order to make sure got quality changes. You basically have to spend a lot of time and thought around your developer process, how you structure your code, how you physically setup, and organize your entire code base. [00:06:20] – How to organize your code bases? When Kushal worked at Google, everything is in a single giant repository. There are one or two exceptions for client code and some infrastructure things. It allowed people to feel that they could change any of the code and it made it easy to keep everybody in sync with the state of the code. There is some sort of workflow and process things that you have to change in order to get that right. Probably, the biggest one is trying to keep the repo from working in long running branches because things start to diverge. That was the model of Foursquare too. [00:08:15] – How do you run all of the CI across everything? The answer changes to different sizes. At Scroll and for most of the time that Kushal was at Foursquare, it was efficient to run all the builds on every commit. If you just have one mega build that just runs continuously, that’s good enough up until 30 or 40 developers. Once you hit that size, there’s a variety of build tools out there that you can use and understand the structure of your code base. Once you’ve used one of these build tools, declaratively indicate which artifacts depends on which libraries, and what the full dependency thing is, you can build only the relevant CI’s. You can decide whether this change only touches this binary or this test. Chuck also like the approach of having everything in master. If it was experimental, it would still go into master and their CI would effectively run the different builds with the different feature flags. If what you did broke something that somebody else was working on in a process, you could just adjust it midstream. [00:16:00] – Gatekeeper process The gatekeeper process protects the whole code base but at the same time, it’s in the layer of bureaucracy. We’ve been reviewing every piece of code before it’s allowed to land in master. Everybody on our team commits multiple times a day to master. All the changes, as much as possible are really small, especially the feature flag check. In that world, there is this bureaucracy. Hopefully, it’s not holding you up too much. The flipside of that is when you’ll feel really confident that you didn’t break anybody who depends on you and you’re going to have to revisit this change a month from now. For the past 9 months or so, Jeff tried a bunch of different configurations. He tried monorepo and other configurations from the other end of the spectrum - many small packages. As he was interviewing people with their different setups, they’ve all encountered the same types of problems. Regardless if you’re using monorepo or not, as long as you’re trying to keep your changes small and specific, and implemented quickly, it can alleviate any other pains. [00:22:10] – Guard rails The guard rails are just the reviewers. For us, every change that’s getting reviewed means that in some extent, there’s a human check on that. I’m not sure if you can but I certainly know that Reviewable and Fabricate both offer sort of wide range of configuration options. I can imagine the world in which you can programmatically keep people from landing changes that didn’t have that level. In Github, there are guard rails. That actually helps the reviewers. It’s reassuring to have some technology that this person is associated with this set of boundaries. If you want to step outside of the boundaries, they’re going to have to get some other person who understands the code that’s outside of the line to join in approving that. If their organization is big, this is something that they might have to think about. Jeff advises to really be careful about what you’re doing. Is this a change where you are just bumping version numbers or is this something that you have to change a business logic? [00:28:15] – Allowing different people to upgrade dependencies The only way Kushal has ever seen it done is a brutal all-nighter by somebody who has to sit there and get everything working. But one of the things that Google does is they develop a lot of patterns about how to refactor code to make things easier. One solution that Jeff sees is the complete opposite of the spectrum from monorepo. Dr. Gleb Bahmutov is a huge fan of open-source smaller repos - a lot of the mentality of keeping things small, separate and distinct. He’s decided that he’s going to stick in the many repo universe and just create tooling to solve some of these problems. For versioning, he runs this server that detects that a new version has been published. It will automatically try to update it and run all the tests. But according to Kushal, if you have different repos, you can move differently in terms of dependencies but if you’re now out of sync, you may suddenly have incompatible dependencies across what you’re doing. It’s a question of when you want to deal with the problem. Chuck talks about the ways you can get out of sync. With the multirepo, you can get out of sync not just on the dependencies and the build process, but also on the API’s. If you have a module that you’re working on over here and whatever are consuming it on the other side as a driver may not be updated yet so it doesn’t talk properly. Jeff also noticed that with Angular DI, if you aren’t actually using the same version, you run into issues because it has to be the exact same thing at every level or else the injection token is different. [00:36:50] – Develop within Monorepo or develop in a separate repo Chuck thinks that it depends. If there are a lot of dependencies and shortcuts that he can take by relying on the monorepo, he will do it on the monorepo like if it auto loads the correct libraries automatically. And then, they don’t have to do a whole lot of setup. If it’s small, independent, and it’s going to move quickly, then, a separate repo may be the right answer. Kushal adds that there are a lot of benefits in doing it in the monorepo. With feature flags, you have the benefit of reviewing it. It also allows you and others to keep up with everyone in terms of breaking API changes, other than having some brutal merge. Jeff will do it in a separate repo. If this an experimental thing, it disturbs people less. It alleviates the notifications that go on. That is why Kushal’s team also built a lot of custom Slack cooks in order to get some notifications tailored to the parts that they only care about. [00:44:50] – How do you work it out so that things aren’t so tightly coupled? There are no circular dependencies between your packages even transitively. As your monorepo grows you may eventually have some tooling that requires that for your build system. Can this layer have this type of functionality? Or does it need to be moved into a new package? It also means it improves your architecture. Kushal’s team is working on Java. This object that users and organizations create can know about each other’s’ objects but the users can never depend back into organizations or vice versa. You can think of the layered model of networking. We have the pure data model objects are not allowed to know anything about the service layer that interacts with the database. The database can know about those model objects. The web tier can obviously know about both the model objects and the service tier because it utilizes both of those. [00:47:30] – How are those relationships defined? They are defined in build files. If you look at Pants or Blaze or Buck, all those build systems have explicit dependency configurations so you can sort of keeping any of those invariants from being broken.  But Kushal’s team just have a Wiki page that lists out the rules. They also have a test that looks for any cycles in any package dependencies. Jeff’s team created a CLI tool that walks down all subdirectories from where they’re running it. It finds all the package JSON in all your subdirectories and it creates the dependency graphs. They haven’t fully moved to a monorepo but they did start to consolidate. They have a couple of larger repos. This tool will see the dependency graph for all the NPM modules and also see the dependencies between the repos based off of the NPM module dependencies. [00:50:20] – Multimonorepo It’s not perfect to have one larger repo that has basically all of the none-deployable codes. Jeff and his team have a separate set of repos for the actual deployable code. They haven’t made the jump to where Kushal is advocating – using build tools. [00:50:20] – To open-source When you want an open-source portion of what you’re doing but not the entire company’s code base, Jeff thinks that there’s really no way out of having a separate repo for that. Google has this giant internal repo because not everything in it is open-source. Angular is open-source. That’s at least one driver that Angular is in the public Github repo and Google use so much of Angular. And some companies want the sort of open collaboration and free support and upgrades from the community. Other companies see that they’re giving away some kind of competitive advantage that they’re not willing to give up. [00:55:40] – Monorepo is better in all cases Jeff recognizes that there’s a number of organizations that have successfully implemented it but there isn’t an easy way for someone to do it. It’s not common knowledge and does not have a well-known set of tooling and best practices. There’s still a lot to go to get to the point where it’s a no-brainer and everybody knows how to do this the right way. Ward doesn’t know how to do a monorepo but according to him, if he is in an organization or starting an organization, he would go figure out how to do it and would want his organization to have a monorepo. Chuck tends to lean to monorepo but doesn't always do it either. Another caveat is even if he starts with the monorepo, that doesn’t mean that’s where he’s going to end. The answer is if you put them all in separate repos and it turns out that you need benefits of having them all in the same place, you can move them all in one repo. It may not be easy depending on how big and complicated you make your mono or the way you tie together your disparate repos. Kushal is all in. The only time that he wouldn’t do it is if he’s building disparate open-source projects and wanted them to play the open-source ecosystem. The net benefit is that everyone is moving together rapidly because monorepo is optimized for speed. But Kushal wishes that the tooling is better and that many people move to this model. Joe is also open to monorepo in a larger organization. He thinks that the separate repos keep things but monorepo can solve a lot of problems. [01:01:55] – Places to go Jeff has a bunch of articles for people who are pro-monorepo and are advocating for that. He has yet to find one that sets forth like a good mental model or decision framework. This is what Jeff hopes to create in the next couple of weeks before the conference. Picks Ward Bell Hiking Fishing Southern Sierras Chuck Max Wood Book: Profit First by Mike Michalowicz Ketogenic Diet Air-conditioning Joe Eames Book: Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are by Seth Stephens-Davidowitz Rent a scooter to ride around Rome Jeff Whelpley Survey: Monorepo vs Multirepo Twitter: @jeffwhelpley Medium: @jeffwhelpey Kushal Dave Technical Design Reviews Book: The Orphan Master’s Son Twitter: @krave Medium: Workflow

Frontend Lunch Podcast
Frontend Lunch 16 - SharedArrayBuffer, Vue.js

Frontend Lunch Podcast

Play Episode Listen Later Jan 3, 2017 14:08


関連リンク 2016-12-27のJS: SharedArrayBufferとAtomics API、Node.js Stream、JavaScript obfuscator - JSer.info GitHub - tc39/ecmascript_sharedmem: Shared memory and atomics for ECMAscript 20161113-nodefest // Speaker Deck Add language to define Agents by lars-t-hansen · Pull Request #522 · tc39/ecma262 · GitHub Release v1.0.0 · yeoman/generator · GitHub SAO CSS Writing Modes ◆ 24 ways かずぽんブログ • Vue.js 2016年まとめ & 今後 Best way for artists and creators to get sustainable income and connect with fans | Patreon Firebug lives on in Firefox DevTools ★ ServiceWorker内にExpressサーバーを立てる - Qiita Browser is the new server - NodeFest Tokyo by Gleb Bahmutov GitHub - javascript-obfuscator/javascript-obfuscator: JavaScript obfuscator for Node.js

Method Matters: Smart Software Engineering Methods
TP 024: Gleb Bahmutov with Kensho Technologies: Modern JavaScript Application Deployment Tools

Method Matters: Smart Software Engineering Methods

Play Episode Listen Later Nov 18, 2016 33:14


TP 024: Gleb Bahmutov with Kensho Technologies: Modern JavaScript Application Deployment Tools by Method Matters

Devchat.tv Master Feed
114 AiA Life Lessons from Angular Air - Jeff Whelpley - Angular Remote Conf

Devchat.tv Master Feed

Play Episode Listen Later Oct 13, 2016 46:28


1:50 - Introducing Jeff Whelpley at Angular Remote Conf Twitter Github Angular Air 3:40 -  Working on Angular Air 6:25 - Lessons from Ben Lesh Episode Link 8:20 - Lessons from Gleb Bahmutov Episode Link 11:50 - Lessons from Aaron Frost Episode Link 14:00 - Lessons from Shai Reznik Episode Link 16:50 - Lessons from Joe Eames Episode Link 19:10 - Lessons from Uri Goldshtein 21:40 - Lessons from Wesley Cho and Jesus Rodriguez Episode Link 25:40 - Lessons from Brad Green 28:50 - Lessons from Igor Minar 31:40 - Lessons from Victor Savkin and Dan Abramov Episode Link 34:30 - Lessons from Amy Knight 36:05 - Lessons from Patrick Stapleton 39:00 - Lessons from Jamie King and Kyle Newman Fanboys movie Episode Link

lessons life lessons github fanboys jamie king kyle newman dan abramov brad green jesus rodriguez amy knight aaron frost ben lesh joe eames shai reznik uri goldshtein gleb bahmutov angular air victor savkin igor minar jeff whelpley angular remote conf patrick stapleton
All Angular Podcasts by Devchat.tv
114 AiA Life Lessons from Angular Air - Jeff Whelpley - Angular Remote Conf

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Oct 13, 2016 46:28


1:50 - Introducing Jeff Whelpley at Angular Remote Conf Twitter Github Angular Air 3:40 -  Working on Angular Air 6:25 - Lessons from Ben Lesh Episode Link 8:20 - Lessons from Gleb Bahmutov Episode Link 11:50 - Lessons from Aaron Frost Episode Link 14:00 - Lessons from Shai Reznik Episode Link 16:50 - Lessons from Joe Eames Episode Link 19:10 - Lessons from Uri Goldshtein 21:40 - Lessons from Wesley Cho and Jesus Rodriguez Episode Link 25:40 - Lessons from Brad Green 28:50 - Lessons from Igor Minar 31:40 - Lessons from Victor Savkin and Dan Abramov Episode Link 34:30 - Lessons from Amy Knight 36:05 - Lessons from Patrick Stapleton 39:00 - Lessons from Jamie King and Kyle Newman Fanboys movie Episode Link

lessons life lessons github fanboys jamie king kyle newman dan abramov brad green jesus rodriguez amy knight aaron frost ben lesh joe eames shai reznik uri goldshtein gleb bahmutov angular air victor savkin igor minar jeff whelpley angular remote conf patrick stapleton
Adventures in Angular
114 AiA Life Lessons from Angular Air - Jeff Whelpley - Angular Remote Conf

Adventures in Angular

Play Episode Listen Later Oct 13, 2016 46:28


1:50 - Introducing Jeff Whelpley at Angular Remote Conf Twitter Github Angular Air 3:40 -  Working on Angular Air 6:25 - Lessons from Ben Lesh Episode Link 8:20 - Lessons from Gleb Bahmutov Episode Link 11:50 - Lessons from Aaron Frost Episode Link 14:00 - Lessons from Shai Reznik Episode Link 16:50 - Lessons from Joe Eames Episode Link 19:10 - Lessons from Uri Goldshtein 21:40 - Lessons from Wesley Cho and Jesus Rodriguez Episode Link 25:40 - Lessons from Brad Green 28:50 - Lessons from Igor Minar 31:40 - Lessons from Victor Savkin and Dan Abramov Episode Link 34:30 - Lessons from Amy Knight 36:05 - Lessons from Patrick Stapleton 39:00 - Lessons from Jamie King and Kyle Newman Fanboys movie Episode Link

lessons life lessons github fanboys jamie king kyle newman dan abramov brad green jesus rodriguez amy knight aaron frost ben lesh joe eames shai reznik uri goldshtein gleb bahmutov angular air victor savkin igor minar jeff whelpley angular remote conf patrick stapleton
The Web Platform Podcast
94: Reactive Programming in JavaScript

The Web Platform Podcast

Play Episode Listen Later Jun 24, 2016 57:18


Gleb Bahmutov (@bahmutov) chats with the panel on Reactive Programming in JavaScript. What is Reactive Programming? Join Gleb and the panel to learn about event streams, sequences over time, and how these help developers build complex JavaScript applications. Resources Gleb's 2016 OSConf Talk on Reactive Programming - http://conferences.oreilly.com/oscon/open-source-us/public/schedule/detail/49290 The talk is mostly how to train anyone coming to JavaScript in different techniques, each more powerful than the previous one. Slides, video and all links to futher information in https://glebbahmutov.com/blog/oscon/ I posted the list of interesting things from OSCON at https://glebbahmutov.com/blog/oscon/#interesting-things-i-saw-at-oscon Companion code repo showing the same simple example (literally multiply numbers then print them) implemented using different styles https://github.com/bahmutov/javascript-journey - from imperative to FRP and beyond. The long and evolving blog post https://glebbahmutov.com/blog/journey-from-procedural-to-reactive-javascript-with-stops/ that I have been updating for the past two years. Feathersjs - http://feathersjs.com/ Horizon.js from RethinkDB team - https://horizon.io/ Most.js stream library - https://github.com/cujojs/most Cycle.js - pure reactive web framework - http://cycle.js.org/ Xstream - tiny stream library targeted at Cycle.js https://github.com/staltz/xstream

The Web Platform Podcast
88: Cypress.io

The Web Platform Podcast

Play Episode Listen Later May 13, 2016 65:24


Summary Cypress.io is geared toward making testing easy and painless. Gleb Bahmutov (@bahmutov) and Brian Mann (@be_mann) chat with us on this upcoming project. Cypress eliminate the need for PhantomJS and Selenium. It aims to provide developers with instant feedback, reliable automation, and painless debugging, It is an interesting and different way of approaching how we think about testing code.   Show Links Cypress.io - https://www.cypress.io/ Gitter - https://gitter.im/cypress-io/cypress Docs - https://docs.cypress.io Gleb's blog post: https://glebbahmutov.com/blog/web-testing-nirvana-with-cypress/  

Angular Air
52 ngAir - The Internet of Things (and Angular)

Angular Air

Play Episode Listen Later Feb 12, 2016 61:31


IoT Hangout URL: https://hangouts.google.com/call/hlfajots7uwohxjlpphdk7pkrua First 5-10 mins Intros Guests: Zach Dunn, Atticus White Panelists: PatrickJS, Gleb Bahmutov, Ari Lerner Announcements Upcoming shows: Thursday November 11th - Angular 2 Reactive Redux with Victor Savkin, Dan Abramov and Rob Wormald #topics Intro What is IoT? Atticus: The “Things” in Internet of Things Smart devices (“dumb” hardware embedded with “smart” electronics, ie: Hue Lights) Information providing devices (sensors, ie: motion sensor) Service that ties it all together  Atticus: How IoT fits into the JS ecosystem. A comparison of the event driven characteristics found in both Javascript and the IoT environment. IoT support in the open source community.  Zach: How we think about IoT application development: Personify rooms and devices, enable them to answer questions. Environment data (i.e. sensors, occupants) result in frequent I/O for apps. Lot of states to track.  Atticus: Some IoT labs worked on Grocery list automation: Barcode scanner + rPi + Node Motion sensor night light: Motion sensor + Arduino + rPi + Node + Hue lights  How do you decide on what to build next? How do you guys use Angular?  Zach: Highly task/location-centric apps running on dedicated devices. Interesting side effect is more freedom to use new DOM safely. IoT and security IoT allows access to sometimes devices inside our homes and businesses. Adding more libraries and frameworks on top adds to the security headache. What precautions do we as developers should take? Good practices? How to test it? Where do you see IoT going in the future? What’s next? Final 10 Minutes Links: https://tessel.io https://developer.nest.com http://johnny-five.io http://dweet.io Tips & Picks  Ari          Picks: Go to Death Valley. It’s beautiful Tips: http://perfect.org is cool Patrick Stapleton Picks: [Reactive Redux AngularAir] (https://plus.google.com/events/cf3aue086abasnlah35lgr373fs) Jeff Whelpley          Picks: http://onehungrymind.com/build-better-angular-2-application- redux-ngrx/ Atticus White Links: https://github.com/rwaldron/johnny-five https://github.com/samyk/skyjack  Tips: Picks:[Johnny Five - JS Robotics & IoT programming framework] (https://github.com/rwaldron/johnny-five) [SkyJack - Drone autonomously seeks out other drones, taking them over, creating an army of zombie drones under your control] (https://github.com/samyk/skyjack) Zach Dunn Links: Search engine for sensors, based on geolocation: [Thingful] (https://thingful.net/) Simple messaging for devices (think Twitter, but for sensor data) [dweet.io](https://dweet.io/) Tips:Picks: Hardware development board, powered by NPM https://tessel.io/ Angular Air is a video podcast all about Angular hosted by Jeff Whelpley. Please visit the Angular Air website (http://angularair.com) to see upcoming and past episodes. Also be sure to follow Angular Air on Twitter and Google+ to stay up to date with future episodes. Also, all episodes are on the YouTube channel as well.   AngularClass Learn AngularJS, Angular 2, and Modern Web Development form the best. Looking for corporate Angular training, want to host us, or Angular consulting? twitter: @AngularClass email: info@angularclass.com chat: Join AngularClass Chat --- Support this podcast: https://anchor.fm/angularair/support

Angular Air
27 ngAir - Performance, Testing, and Everything in-between

Angular Air

Play Episode Listen Later Aug 17, 2015 56:25


Performance, testing and everything in-between - Gleb Bahmutov, also known as "The Doctor", is fanatic about performance, quality and developer happiness. Gleb has done some amazing work to squeeze the highest level of performance out of Angular 1.x and he has a number of open source libraries that help improve the quality of your web app. Guests: Gleb Bahmutov Panelists: Aimee Knight, Scott Moss, PatrictJS, and Jeff Whelpley Picks/Tips: Gleb - AngularJS in Action, Angular Remote Conf Aimee - Perceived Performance Fluent Conf talks: "Speed, Performance, and Human Perception" | How Users Perceive the Speed of The Web Jeff - Kent C. Dodds at MidwestJS: angular-formly: Abstracting Away Complexity, spot.email Angular Air is a video podcast all about Angular hosted by egghead.io instructor Kent C. Dodds. Please visit the Angular Air website (http://angular-air.com) to see upcoming and past episodes. Also be sure to follow Angular Air on Twitter and Google+ to stay up to date with future episodes. Also, all episodes are on the YouTube channel as well. --- Support this podcast: https://anchor.fm/angularair/support

Adventures in Angular
050 AiA Angular Meteor with Uri Goldshtein

Adventures in Angular

Play Episode Listen Later Jul 9, 2015 48:12


02:07 - Uri Goldshtein Introduction Twitter GitHub LinkedIn MindMeister 02:27 - What is Meteor? angular-meteor 03:23 - The Meteor Company 03:54 - Structure & Deployment Matt DeBergalis: What's coming in Meteor 1.2, and beyond 11:51 - Revenue Story (Scaling) Galaxy 13:44 - Sync/Client-side Cache 19:19 - How Does Angular Work with DDP? 22:43 - Angular 2.0 angular-meteor: angular2 26:02 - Observables Jafar Husain at MWJS on Observables Gleb Bahmutov at MWJS (Journey from procedural to reactive JavaScript with stops) 30:48 - Publish Functions 36:09 - Client-side (Cont’d) GroundDB   More Resources Uri Goldshtein: Angular-Meteor - Angular2, migration and Angular-Server @ ng-vegas 2015 Angular Tutorial on the Meteor Site Angular-Server Uri Goldshtein: Thoughts on angular-meteor as a great MEAN Stack David Yahalomi: When a Meteor finally hits production Matt Debergalis: The design and implementation of the Meteor platform Sashko Stubailo: Optimistic UI with Meteor Telescope Meteor Roadmap | Trello How to Meteor is production Forbes article about Meteor JavaScript Jabber Episode #076: Meteor.js with Marcus Phillips and Fred Zirdung Picks AngularConnect (Joe) ng-click.com (Joe) mdn.io (Joe) Ward and Victor Savkin's Angular 2 Samples (Ward) Downcast (Chuck) iPhone 6 Plus (Chuck) Côte&Ciel Isar Rucksack (Uri) Solar Panel for Bag (Uri) Angular-Meteor - Angular2, migration and Angular-Server (Uri @ ng-vegas 2015) (Uri)

iphone forbes clients structure galaxy ward cont github bag javascript samples deployment meteors cache solar panels telescope uri angular ddp downcast mindmeister observables marcus phillips gleb bahmutov uri goldshtein jafar husain victor savkin angular connect javascript jabber episode fred zirdung urigo
All Angular Podcasts by Devchat.tv
050 AiA Angular Meteor with Uri Goldshtein

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Jul 9, 2015 48:12


02:07 - Uri Goldshtein Introduction Twitter GitHub LinkedIn MindMeister 02:27 - What is Meteor? angular-meteor 03:23 - The Meteor Company 03:54 - Structure & Deployment Matt DeBergalis: What's coming in Meteor 1.2, and beyond 11:51 - Revenue Story (Scaling) Galaxy 13:44 - Sync/Client-side Cache 19:19 - How Does Angular Work with DDP? 22:43 - Angular 2.0 angular-meteor: angular2 26:02 - Observables Jafar Husain at MWJS on Observables Gleb Bahmutov at MWJS (Journey from procedural to reactive JavaScript with stops) 30:48 - Publish Functions 36:09 - Client-side (Cont’d) GroundDB   More Resources Uri Goldshtein: Angular-Meteor - Angular2, migration and Angular-Server @ ng-vegas 2015 Angular Tutorial on the Meteor Site Angular-Server Uri Goldshtein: Thoughts on angular-meteor as a great MEAN Stack David Yahalomi: When a Meteor finally hits production Matt Debergalis: The design and implementation of the Meteor platform Sashko Stubailo: Optimistic UI with Meteor Telescope Meteor Roadmap | Trello How to Meteor is production Forbes article about Meteor JavaScript Jabber Episode #076: Meteor.js with Marcus Phillips and Fred Zirdung Picks AngularConnect (Joe) ng-click.com (Joe) mdn.io (Joe) Ward and Victor Savkin's Angular 2 Samples (Ward) Downcast (Chuck) iPhone 6 Plus (Chuck) Côte&Ciel Isar Rucksack (Uri) Solar Panel for Bag (Uri) Angular-Meteor - Angular2, migration and Angular-Server (Uri @ ng-vegas 2015) (Uri)

iphone forbes clients structure galaxy ward cont github bag javascript samples deployment meteors cache solar panels telescope uri angular ddp downcast mindmeister observables marcus phillips gleb bahmutov uri goldshtein jafar husain victor savkin angular connect javascript jabber episode fred zirdung urigo
Devchat.tv Master Feed
050 AiA Angular Meteor with Uri Goldshtein

Devchat.tv Master Feed

Play Episode Listen Later Jul 9, 2015 48:12


02:07 - Uri Goldshtein Introduction Twitter GitHub LinkedIn MindMeister 02:27 - What is Meteor? angular-meteor 03:23 - The Meteor Company 03:54 - Structure & Deployment Matt DeBergalis: What's coming in Meteor 1.2, and beyond 11:51 - Revenue Story (Scaling) Galaxy 13:44 - Sync/Client-side Cache 19:19 - How Does Angular Work with DDP? 22:43 - Angular 2.0 angular-meteor: angular2 26:02 - Observables Jafar Husain at MWJS on Observables Gleb Bahmutov at MWJS (Journey from procedural to reactive JavaScript with stops) 30:48 - Publish Functions 36:09 - Client-side (Cont’d) GroundDB   More Resources Uri Goldshtein: Angular-Meteor - Angular2, migration and Angular-Server @ ng-vegas 2015 Angular Tutorial on the Meteor Site Angular-Server Uri Goldshtein: Thoughts on angular-meteor as a great MEAN Stack David Yahalomi: When a Meteor finally hits production Matt Debergalis: The design and implementation of the Meteor platform Sashko Stubailo: Optimistic UI with Meteor Telescope Meteor Roadmap | Trello How to Meteor is production Forbes article about Meteor JavaScript Jabber Episode #076: Meteor.js with Marcus Phillips and Fred Zirdung Picks AngularConnect (Joe) ng-click.com (Joe) mdn.io (Joe) Ward and Victor Savkin's Angular 2 Samples (Ward) Downcast (Chuck) iPhone 6 Plus (Chuck) Côte&Ciel Isar Rucksack (Uri) Solar Panel for Bag (Uri) Angular-Meteor - Angular2, migration and Angular-Server (Uri @ ng-vegas 2015) (Uri)

iphone forbes clients structure galaxy ward cont github bag javascript samples deployment meteors cache solar panels telescope uri angular ddp downcast mindmeister observables marcus phillips gleb bahmutov uri goldshtein jafar husain victor savkin angular connect javascript jabber episode fred zirdung urigo
Devchat.tv Master Feed
045 AiA Performance with Gleb Bahmutov

Devchat.tv Master Feed

Play Episode Listen Later Jun 4, 2015 54:52


Check out Ruby Remote Conf!   02:19 - Gleb Bahmutov Introduction Twitter GitHub Blog 03:21 - Perceptual Performance Paul Irish: "Delivering the goods" Fluent 2014 Keynote Gleb Bahmutov: Improving Angular web app performance example. [YouTube] Gleb Bahmutov: Profile and Optimize Your JavaScript Like a Ninja 07:09 - Getting User Feedback 12:15 - Profiling, Tools and Techniques code-snippets 16:45 - Performance Optimization The Pareto Principle Chrome DevTools 20:38 - Benchmarks 22:20 - Extracting Value from Profiling angular-vs-repeat 26:11 - Top Performance Problems Two-Way Binding Keeping Up-to-Date with Versions Minimize the Number of Expressions in Template Elements 28:44 - Performance Lessons Ng-webworker Dave Smith: Angular + React = Speed @ ng-conf 2015 34:30 - Public Opinion on Performance in Angular 40:57 - Drive-by Optimizations 42:26 - Angular 2 Performance Predictions Minko Gechev: Bringing Immutability to Angular @ ng-vegas 2015   More From Gleb: Fast Legoization Angular plus React equals Speed revisited JavaScript and AngularJs learning resources Picks The CodeNewbie Podcast (Chuck) Ruby Remote Conf (Chuck) Wait Wait... Don't Tell Me! (Chuck) Ask Me Another (Chuck) Ruby Rogues (Chuck) JavaScript Jabber (Chuck) The Freelancers’ Show (Chuck) The iPhreaks Show (Chuck) RailsClips (Chuck) Car Talk (Gleb) Colorsublime (Gleb)      

All Angular Podcasts by Devchat.tv
045 AiA Performance with Gleb Bahmutov

All Angular Podcasts by Devchat.tv

Play Episode Listen Later Jun 4, 2015 54:52


Check out Ruby Remote Conf!   02:19 - Gleb Bahmutov Introduction Twitter GitHub Blog 03:21 - Perceptual Performance Paul Irish: "Delivering the goods" Fluent 2014 Keynote Gleb Bahmutov: Improving Angular web app performance example. [YouTube] Gleb Bahmutov: Profile and Optimize Your JavaScript Like a Ninja 07:09 - Getting User Feedback 12:15 - Profiling, Tools and Techniques code-snippets 16:45 - Performance Optimization The Pareto Principle Chrome DevTools 20:38 - Benchmarks 22:20 - Extracting Value from Profiling angular-vs-repeat 26:11 - Top Performance Problems Two-Way Binding Keeping Up-to-Date with Versions Minimize the Number of Expressions in Template Elements 28:44 - Performance Lessons Ng-webworker Dave Smith: Angular + React = Speed @ ng-conf 2015 34:30 - Public Opinion on Performance in Angular 40:57 - Drive-by Optimizations 42:26 - Angular 2 Performance Predictions Minko Gechev: Bringing Immutability to Angular @ ng-vegas 2015   More From Gleb: Fast Legoization Angular plus React equals Speed revisited JavaScript and AngularJs learning resources Picks The CodeNewbie Podcast (Chuck) Ruby Remote Conf (Chuck) Wait Wait... Don't Tell Me! (Chuck) Ask Me Another (Chuck) Ruby Rogues (Chuck) JavaScript Jabber (Chuck) The Freelancers’ Show (Chuck) The iPhreaks Show (Chuck) RailsClips (Chuck) Car Talk (Gleb) Colorsublime (Gleb)      

Adventures in Angular
045 AiA Performance with Gleb Bahmutov

Adventures in Angular

Play Episode Listen Later Jun 4, 2015 54:52


Check out Ruby Remote Conf!   02:19 - Gleb Bahmutov Introduction Twitter GitHub Blog 03:21 - Perceptual Performance Paul Irish: "Delivering the goods" Fluent 2014 Keynote Gleb Bahmutov: Improving Angular web app performance example. [YouTube] Gleb Bahmutov: Profile and Optimize Your JavaScript Like a Ninja 07:09 - Getting User Feedback 12:15 - Profiling, Tools and Techniques code-snippets 16:45 - Performance Optimization The Pareto Principle Chrome DevTools 20:38 - Benchmarks 22:20 - Extracting Value from Profiling angular-vs-repeat 26:11 - Top Performance Problems Two-Way Binding Keeping Up-to-Date with Versions Minimize the Number of Expressions in Template Elements 28:44 - Performance Lessons Ng-webworker Dave Smith: Angular + React = Speed @ ng-conf 2015 34:30 - Public Opinion on Performance in Angular 40:57 - Drive-by Optimizations 42:26 - Angular 2 Performance Predictions Minko Gechev: Bringing Immutability to Angular @ ng-vegas 2015   More From Gleb: Fast Legoization Angular plus React equals Speed revisited JavaScript and AngularJs learning resources Picks The CodeNewbie Podcast (Chuck) Ruby Remote Conf (Chuck) Wait Wait... Don't Tell Me! (Chuck) Ask Me Another (Chuck) Ruby Rogues (Chuck) JavaScript Jabber (Chuck) The Freelancers’ Show (Chuck) The iPhreaks Show (Chuck) RailsClips (Chuck) Car Talk (Gleb) Colorsublime (Gleb)