Podcasts about i18n

Process of making software accessible to people in different areas of the world

  • 33PODCASTS
  • 43EPISODES
  • 54mAVG DURATION
  • ?INFREQUENT EPISODES
  • Apr 16, 2025LATEST
i18n

POPULARITY

20172018201920202021202220232024


Best podcasts about i18n

Latest podcast episodes about i18n

CTO Mastermind: Il Podcast per i CTO
Cosa Rischiano le Aziende che Ignorano l'Accessibilità - European Accessibility Act

CTO Mastermind: Il Podcast per i CTO

Play Episode Listen Later Apr 16, 2025 55:50


In questa puntata della rubrica Hacking Expert, parliamo con Emiliano Pisu, mentor e divulgatore esperto in accessibilità, per capire cosa prevede l'European Accessibility Act, quali sono le responsabilità legali e pratiche per le aziende e perché l'accessibilità non riguarda solo le persone con disabilità.

The Seen and the Unseen - hosted by Amit Varma
Ep 387: The Life and Times of the Indian Economy

The Seen and the Unseen - hosted by Amit Varma

Play Episode Listen Later Jun 24, 2024 593:33


Our greatest moral imperative is to solve the problem of poverty -- and after over 75 years, we still have some distance to travel. Rajeswari Sengupta joins Amit Varma in episode 387 of The Seen and the Unseen for a deep dive into how we got here, where we went wrong, what we got right, and how we should look at the Indian economy going forward. (FOR FULL LINKED SHOW NOTES, GO TO SEENUNSEEN.IN.) Also check out:1. Rajeswari Sengupta's homepage. 2. Demystifying GDP — Episode 130 of The Seen and the Unseen (w Rajeswari Sengupta). 3. Twelve Dream Reforms — Episode 138 of The Seen and the Unseen (w Shruti Rajagopalan, Rajeswari Sengupta & Vivek Kaul). 4. Two-and-a-Half Bengalis Have an Economics Adda -- Episode 274 of The Seen and the Unseen (w Rajeswari Sengupta and Shrayana Bhattacharya). 5. Talks & Discussions on the Indian Economy featuring Rajeswari Sengupta. 6. Rajeswari Sengulta's writings on the Indian economy. 7. Rajeswari Sengupta's writing for Ideas for India. 8. Rajeswari Sengupta's writing on the Leap Blog. 9. Rajeswari Sengupta's pieces on GDP: 1, 2, 3, 4, 5. 10. Rajeswari Sengupta's pieces on fiscal policy: 1, 2, 3. 11. Rajeswari Sengupta's pieces on the banking crisis: 1, 2, 3, 4, 5. 12. Rajeswari Sengupta's pieces on the financial sector: 1, 2, 3, 4, 5, 6, 7. 13. Rajeswari Sengupta's pieces on Covid: 1, 2, 3, 4. 14. Getting the State out of Our Lives -- Rajeswari Sengupta's TEDx talk. 15. Why Freedom Matters -- Episode 10 of Everything is Everything. 16. The Reformers -- Episode 28 of Everything is Everything. 17. The Importance of the 1991 Reforms — Episode 237 of The Seen and the Unseen (w Shruti Rajagopalan and Ajay Shah). 18. The Life and Times of Montek Singh Ahluwalia — Episode 285 of The Seen and the Unseen. 19. The Forgotten Greatness of PV Narasimha Rao — Episode 283 of The Seen and the Unseen (w Vinay Sitapati). 20. India's Lost Decade — Episode 116 of The Seen and the Unseen (w Puja Mehra). 21. The Life and Times of KP Krishnan -- Episode 355 of The Seen and the Unseen. 22. Lant Pritchett Is on Team Prosperity -- Episode 379 of The Seen and the Unseen. 23. Josh Felman Tries to Make Sense of the World — Episode 321 of The Seen and the Unseen. 24. Rohit Lamba Will Never Be Bezubaan -- Episode 378 of The Seen and the Unseen. 25. Yugank Goyal Is out of the Box — Episode 370 of The Seen and the Unseen. 26. The State of Our Farmers — Ep 86 of The Seen and the Unseen (w Gunvant Patil, in Hindi). 27. India's Agriculture Crisis — Ep 140 of The Seen and the Unseen (w Barun Mitra & Kumar Anand). 28. The Tragedy of Our Farm Bills — Episode 211 of The Seen and the Unseen (w Ajay Shah). 29. The Art and Science of Economic Policy — Episode 154 of The Seen and the Unseen (w Vijay Kelkar & Ajay Shah). 30. Two Economic Crises (2008 & 2019) — Episode 135 of The Seen and the Unseen (w Mohit Satynanand). 31. The Indian Economy in 2019 — Episode 153 of The Seen and the Unseen (w Vivek Kaul). 32. Subhashish Bhadra on Our Dysfunctional State -- Episode 333 of The Seen and the Unseen. 33. The Importance of Data Journalism — Episode 196 of The Seen and the Unseen (w Rukmini S). 34. Rukmini Sees India's Multitudes — Episode 261 of The Seen and the Unseen (w Rukmini S). 35. Pramit Bhattacharya Believes in Just One Ism — Episode 256 of The Seen and the Unseen. 36. Understanding the State -- Episode 25 of Everything is Everything. 37. When Should the State Act? -- Episode 26 of Everything is Everything. 38. Public Choice Theory Explains SO MUCH -- Episode 33 of Everything is Everything. 39. Our Population Is Our Greatest Asset -- Episode 20 of Everything is Everything. 40. What's Wrong With Indian Agriculture? -- Episode 18 of Everything is Everything. 41. The Long Road to Change -- Episode 36 of Everything is Everything. 42. India Needs Decentralization -- Episode 47 of Everything is Everything. 43. Beware of These Five Fallacies! -- Episode 45 of Everything is Everything. 44. Stay Away From Luxury Beliefs -- Episode 46 of Everything is Everything. 45. Graduating to Globalisation -- Episode 48 of Everything is Everything (on I18N). 46. Ask Me ANYTHING! -- Episode 50 of Everything is Everything. 47. Four Papers That Changed the World -- Episode 41 of Everything is Everything. 48. The Populist Playbook -- Episode 42 of Everything is Everything. 49. The 1991 Project. 50. The quest for economic freedom in India — Shruti Rajagopalan. 51. What I, as a development economist, have been actively “for” — Lant Pritchett. 52. National Development Delivers: And How! And How? — Lant Pritchett. 53. Economic growth is enough and only economic growth is enough — Lant Pritchett with Addison Lewis. 54. Is India a Flailing State?: Detours on the Four Lane Highway to Modernization — Lant Pritchett. 55. Is Your Impact Evaluation Asking Questions That Matter? A Four Part Smell Test — Lant Pritchett. 56. The Perils of Partial Attribution: Let's All Play for Team Development — Lant Pritchett. 57. Some episodes of The Seen and the Unseen on the state of the economy: 1, 2, 3, 4, 5. 58. Accelerating India's Development — Karthik Muralidharan. 59. Unshackling India -- Ajay Chhibber and Salman Soz. 60. India Grows At Night -- Gurcharan Das. 61. India's Problem is Poverty, Not Inequality -- Amit Varma. 62. Mohit Satyanand's newsletter post on the informal sector. 63. Pratap Bhanu Mehta's column on mission mode interventions. 64. The Hedonistic Treadmill. 65. 77% low-income households saw no income increase in the past 5 yrs -- Vasudha Mukherjee. 66. Pandit's Mind — The 1951 Time magazine cover story on Jawaharlal Nehru. 67. Economic Facts and Fallacies -- Thomas Sowell. 68. An Autobiography -- Jawaharlal Nehru. 69. The Double 'Thank You' Moment -- John Stossel. 70. Profit = Philanthropy — Amit Varma. 71. India After Gandhi -- Ramachandra Guha. 72. The China Dude Is in the House -- Episode 231 of The Seen and the Unseen (w Manoj Kewalramani). 73. The Dragon and the Elephant -- Episode 181 of The Seen and the Unseen (w Hamsini Hariharan and Shibani Mehta). 74. Caste, Capitalism and Chandra Bhan Prasad — Episode 296 of The Seen and the Unseen. 75. The Collected Writings and Speeches of Dr Babasaheb Ambedkar. 76. Population Is Not a Problem, but Our Greatest Strength -- Amit Varma. 77. How to assess the needs for aid? The answer: Don't ask -- William Easterly. 78. The White Man's Burden -- William Easterly. 79. The Elusive Quest for Growth -- William Easterly. 80. The Tyranny of Experts -- William Easterly. 81. Planners vs. Searchers in Foreign Aid — William Easterly. 82. Pandit's Mind — The 1951 Time magazine cover story on Jawaharlal Nehru. 83. 75 Years of India's Foreign Exchange Controls -- Bhargavi Zaveri Shah. 84. Breaking the Mould: Reimagining India's Economic Future — Raghuram Rajan and Rohit Lamba. 85. The History of the Planning Commission — Episode 306 of The Seen and the Unseen (w Nikhil Menon). 86. Adam Smith on The Man of System. 87. The Use of Knowledge in Society — Friedrich Hayek. 88. Price Controls Lead to Shortages and Harm the Poor -- Amit Varma. 89. The Great Redistribution -- Amit Varma. 90. Backstage: The Story behind India's High Growth Years -- Montek Singh Ahluwalia. 91. The Indian State Is the Greatest Enemy of the Indian Farmer -- Amit Varma piece, which contains the Sharad Joshi shair. 92. India's Massive Pensions Crisis — Episode 347 of The Seen and the Unseen (w Ajay Shah & Renuka Sane). 93. The Economic Legacies of Colonial Rule in India -- Tirthankar Roy. 94. The Semiconductor Wars — Episode 358 of The Seen and the Unseen (w Pranay Kotasthane & Abhiram Manchi). 95. BR Shenoy on Wikipedia and Indian Liberals. 96. BR Shenoy: Stature and Impact -- Peter Bauer. 97. The Foreign Exchange Crisis and India's Second Five Year Plan -- VKRV Rao. 98. India's Water Crisis — Episode 60 of The Seen and the Unseen (w Vishwanath S aka Zenrainman). 99. The Delhi Smog — Episode 44 of The Seen and the Unseen (w Vivek Kaul). 100. Fixing Indian Education — Episode 185 of The Seen and the Unseen (w Karthik Muralidharan). 101. Education in India — Episode 77 of The Seen and the Unseen (w Amit Chandra). 102. The Profit Motive in Education — Episode 9 of The Seen and the Unseen (w Parth Shah). 103. Our Unlucky Children (2008) — Amit Varma. 104. Where Has All the Education Gone? — Lant Pritchett. 105. Every Act of Government Is an Act of Violence -- Amit Varma. 106. Narendra Modi takes a Great Leap Backwards -- Amit Varma on DeMon & Mao killing sparrows. 107. The Emergency: A Personal History — Coomi Kapoor. 108. Coomi Kapoor Has the Inside Track — Episode 305 of The Seen and the Unseen. 109. Seven Stories That Should Be Films -- Episode 23 of Everything in Everything, in which Amit talks about the Emergency. 110. Milton Friedman on the minimum wage. 111. The Commanding Heights -- Daniel Yergin and Joseph Stanislaw. 112. Bootleggers and Baptists: The Education of a Regulatory Economist -- Bruce Yandle. 113. Raees: An Empty Shell of a Gangster Film — Amit Varma. 114. Josh Felman on Twitter, Project Syndicate, JH Consulting and The Marginal Economist. 115. Obituaries of SV Raju by Niranjan Rajadhyaksha and Samanth Subramanian. 116. Breaking Out -- Padma Desai. 117. Breaking Through -- Isher Judge Ahluwalia. 118. India's Far From Free Markets (2005) — Amit Varma in the Wall Street Journal. 119. Naushad Forbes Wants to Fix India — Episode 282 of The Seen and the Unseen. 120. The Struggle And The Promise — Naushad Forbes. 121. Half-Lion -- Vinay Sitapati's biography of PV Narasimha Rao. 122. A Game Theory Problem: Who Will Bell The Congress Cat? — Amit Varma. 123. India Transformed -- Rakesh Mohan. 124. Highway to Success: The Impact of the Golden Quadrilateral -- Ejaz Ghani, Arti Grover Goswami and William R Kerr. 125. The Cantillon Effect. 126. The Lost Decade -- Puja Mehra. 127. Modi's Domination – What We Often Overlook — Keshava Guha. 128. XKDR Forum. 129. Beware of the Useful Idiots — Amit Varma. 130. Some of Amit Varma's pieces and episodes against Demonetisation: 1, 2, 3, 4, 5, 6, 7, 8. 131. Episode of The Seen and the Unseen on GST: 1, 2, 3. 132. Miniature episodes of The Seen and the Unseen on PSBs, NPAs and NBFCs. 133. The Bankable Wisdom of Harsh Vardhan -- Episode 352 of The Seen and the Unseen. 134. Politics of Economic Growth in India, 1980-2005 -- Atul Kohli. 135. The Economic Consequences of the Peace -- John Maynard Keynes. 136. India's GDP Mis-estimation: Likelihood, Magnitudes, Mechanisms, and Implications -- Arvind Subramanian. 137. What a Long Strange Trip It's Been -- Episode 188 of The Seen and the Unseen (w Arvind Subramanian). 138. Episodes of The Seen and the Unseen on Covid-19: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14. 139. A Venture Capitalist Looks at the World -- Episode 213 of The Seen and the Unseen (w Sajith Pai). 140. The Indus Valley Playbook — Sajith Pai. 141. India's Trade Policy Is Working Great — for Vietnam -- Andy Mukherjee. 142. A Trade Deficit With a Babysitter -- Tim Harford. 143. The City & the City — China Miéville. 144. A Decade of Credit Collapse in India -- Harsh Vardhan. 145. The Low Productivity Trap of Collateralised Lending for MSMEs -- Harsh Vardhan. 146. Economic Learnings of India for Make Benefit Glorious Nation of Bihar -- Episode 345 of The Seen and the Unseen (w Mohit Satyanand and Kumar Anand). 147. They Stole a Bridge. They Stole a Pond -- Amit Varma. 148. Yes Minister and Yes Prime Minister -- Jonathan Lynn and Antony Jay. 149. The Right to Property — Episode 26 of The Seen and the Unseen (w Shruti Rajagopalan). 150. Episodes of The Seen and the Unseen on agriculture: 1, 2, 3, 4, 5, 6, 7, 8. 151. Some of Amit Varma's pieces on agriculture: 1, 2, 3. 152. The Crisis in Indian Agriculture — Brainstorm on Pragati. 153. Where are the Markets? — Kumar Anand. 154. Empower Women Farmers -- Mrinal Pande. 155. The Mystery of Capital — Hernando De Soto. 156. India Unbound -- Gurcharan Das. 157. In Service of the Republic — Vijay Kelkar & Ajay Shah. 158. We, The Citizens: Strengthening the Indian Republic — Khyati Pathak, Anupam Manur and Pranay Kotasthane. 159. Making Policy Fun with Khyati Pathak and Friends -- Episode 374 of The Seen and the Unseen. 160. Seeing Like a State — James C Scott. 161. Free To Choose — Milton Friedman and Rose Friedman. 162. Classical Liberalism- A Primer -- Eamonn Butler. 163. Friedrich Hayek: The ideas and influence of the libertarian economist -- Eamonn Butler. 164. Milton Friedman: A concise guide to the ideas and influence of the free-market economist -- Eamonn Butler. 165. Public Choice – A Primer -- Eamonn Butler. 166. Adam Smith – A Primer: Eamonn Butler. 167. The Clash of Economic Ideas -- Lawrence H White. 168. Just a Mercenary?: Notes from My Life and Career -- D Subbarao. 169. Who Moved My Interest Rate? -- D Subbarao. 170. Advice & Dissent: My Life in Public Service -- YV Reddy. 171. A Business History of India -- Tirthankar Roy. 172. Courage to Act: A Memoir of a Crisis and Its Aftermath -- Ben Bernanke. 173. Whole Numbers And Half Truths -- Rukmini S. 174. Fragile by Design -- Charles Calomiris and Stephen Haber. 175. Universal Man: The Seven Lives of John Maynard Keynes -- Richard Davenport-Hines. 176. A Life in Our Times -- John Kenneth Galbraith. 177. The Age of Uncertainty -- John Kenneth Galbraith. 178. Fixing the Knowledge Society -- Episode 24 of Everything is Everything. Amit's newsletter is active again. Subscribe right away to The India Uncut Newsletter! It's free! Amit Varma and Ajay Shah have launched a new video podcast. Check out Everything is Everything on YouTube. Check out Amit's online course, The Art of Clear Writing. Episode art: ‘It's Complicated' by Simahina.

Rocket Ship
#043 - React Native Best Practices Template with Youssouf El Azizi

Rocket Ship

Play Episode Listen Later Jun 18, 2024 51:57


Yousouf El-Azizi, mobile tribe lead at Obytes and core team member of the GeeksBlaBla community in Morocco, discusses his path into technology and becoming a React Native developer. He also talks about his role as the leader of the mobile tribe at Obytes and the benefits of using their open-source starter template. The template, which has gained popularity on GitHub, includes Expo, TypeScript, Tailwind CSS, Husky, Lint-staged, Expo Router, React Query, React Hook Form, and localization with I18n. The conversation covers various topics related to the Obytes Starter template for React Native. The main themes include the use of Tailwind CSS, the benefits of using the template, the integration of GitHub actions for automation, the use of React Query Kit and TanStack Query for data fetching, the use of Maestro for end-to-end testing, and the importance of documentation. The conversation also touches on the negative aspects of social media and the benefits of following the right people on GitHub.Learn React Native - https://galaxies.devYoussouf El AziziYoussouf Twitter: https://twitter.com/ElaziziYoussoufYoussouf Website: https://elazizi.com/LinksObytes starter: https://starter.obytes.com/GitHub Feed is underrated: https://elazizi.com/posts/github-feed-is-underrated/TakeawaysThe mobile tribe at Obytes follows the Spotify model of managing teams, with tribes focusing on technology and squads focusing on projects.The Obytes starter template is an opinionated template that helps align teams and projects, providing a strong foundation and best practices.The template includes Expo, TypeScript, Tailwind CSS, Husky, Lint-staged, Expo Router, React Query, React Hook Form, and localization with I18n.Yousuf discusses the decision-making process behind adopting technologies for the starter template, such as Expo Router and Native Wind. The Obytes Starter template for React Native is designed to incorporate best practices and provide a solid foundation for new projects.Tailwind CSS is a popular framework for styling in React Native and is widely used in the React Native ecosystem.GitHub actions are used in the template for automation, including validation, testing, and building the app for different environments.React Query Kit and TenStack Query are used for data fetching and provide an easy way to manage queries and mutations.Maestro is used for end-to-end testing and provides a simple and intuitive way to write tests.Documentation is an important aspect of the template and guides how to use the various features and technologies.Following the right people on GitHub can be a valuable source of learning and discovering new projects and best practices.Social media platforms like Twitter can be overwhelming and cause anxiety, and it's important to be mindful of the time spent on them.

Everything is Everything
Ep 48: Graduating to Globalisation

Everything is Everything

Play Episode Listen Later Jun 7, 2024 60:59


In these insular times of shrill nationalistic rhetoric, there is a danger that we may become less globalised instead of more. But internationalisation (aka I18N) is key to India's progress. The more Indian firms learn to compete in the global marketplace, the more our nation will prosper. Welcome to Episode 48 of Everything is Everything, a weekly podcast hosted by Amit Varma and Ajay Shah. In this episode, Ajay shares his thinking around what I18N implies, how it involves more than exports, and how Indian firms can make that journey. This episode was first published on YouTube on May 24, 2024. For magnificent, detailed, juicy show notes, click here.

Call Kent C. Dodds
i18n and Remix

Call Kent C. Dodds

Play Episode Listen Later Jul 27, 2022 2:57


Internationalization is an essential topic in many projects. However, as there is nothing about i18n in the official documentation, I wonder if you have any advice or best practices. remix-i18next i18n and Remix

remix i18n
For the Love of Language
Linguistics and Tech: Sentiment Analysis and Internationalization

For the Love of Language

Play Episode Listen Later Apr 30, 2022 38:03


The Bike Shed
333: Tapas

The Bike Shed

Play Episode Listen Later Apr 12, 2022 41:53


Being pregnant is hard, but this tapas episode is good! Steph discovered and used a #yelling Slack channel and attended a remote magic show. Chris touches on TypeScript design decisions and edge cases. Then they answer a question captured from a client Slack channel regarding a debate about whether I18n should be used in tests and whether tests should break when localized text changes. This episode is brought to you by ScoutAPM (https://scoutapm.com/bikeshed). Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy. Emma Bostian (https://twitter.com/EmmaBostian) Ladybug Podcast (https://www.ladybug.dev/) Gerrit (https://www.gerritcodereview.com/) Gregg Tobo the Magician (https://astonishingproductions.com/) Sean Wang - swyx - better twitter search (https://twitter.com/swyx/status/1328086859356913664) Twemex (https://twemex.app/) GitHub Pull Request File Tree Beta (https://github.blog/changelog/2022-03-16-pull-request-file-tree-beta/) Sam Zimmerman - CEO of Sagewell Financial on Giant Robots (https://www.giantrobots.fm/414) TypeScript 4.1 feature (https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/) The Bike Shed: 269: Things are Knowable (Gary Bernhardt) (https://www.bikeshed.fm/269) TSConfig Reference - Docs on every TSConfig option (https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess) Rails I18n (https://guides.rubyonrails.org/i18n.html) This episode is brought to you by Studio 3T (https://studio3t.com/free). Try Studio 3T's full suite of features for 30 days, no payment details needed. Become a Sponsor (https://thoughtbot.com/sponsorship) of The Bike Shed! Transcript: CHRIS: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Chris Toomey. STEPH: And I'm Steph Viccari. CHRIS: And together, we're here to share a bit of what we've learned along the way. So, Steph, what's new in your world? STEPH: Hey, Chris. There are a couple of new things in my world, so one of them that I wanted to talk about is the fact that being pregnant is hard. I feel like this is probably a known thing, but I feel like I don't hear it talked about as much as I'd really like, especially in sort of like a professional context. And so I just wanted to share for anyone else that may be listening, if you're also pregnant, this is hard. And I also really appreciate my team. Going through the first trimester is typically where you experience a lot of morning sickness and fatigue, and I had all of that. And so I was at the point that most of my days, I didn't even start till about noon and even some days, starting at noon was a struggle. And thankfully, the thoughtbot client that I'm working with most of the teams are on West Coast hours, so that worked out pretty well. But I even shared a post internally and was like, "Hey, I'm not doing great in the mornings. And so I really can't facilitate any morning meetings. I can't be part of some of the hiring intros that we do," because we like to have a team lead provide a welcoming and then closing for anyone that's coming for interview day. I couldn't do those, and those normally happen around 9:00 a.m. for Eastern Time. And everybody was super supportive of it. So I really appreciate all of thoughtbot and my managers and team being so great about this. Also, the client team they're wonderful. It turns out growing a little human; I'm learning how hard it is and working full time. It's an interesting challenge. Oh, and as part of that appreciation because…so there's just not a lot of women that I've worked with. This may be one of those symptoms of being in tech where one, I haven't worked with tons of women, and then two, working with a woman who is also pregnant and going through that as well. So it's been a little bit isolating in that experience. But there is someone that I follow on Twitter, @EmmaBostian. She's also one of the co-hosts for the Ladybug Podcast. And she has been just sharing some of her, like, I am two months sleep deprived. She's had her baby now, and she is sharing some of that journey. And I really appreciate people who just share that journey and what they're going through because then it helps normalize it for me in terms of what I'm feeling. I hope this helps normalize it for anybody else that might be listening too. CHRIS: I certainly can't speak to the specifics of being pregnant. But I do think it's wonderful for you to use this space that we have here to try and forward that along and say what your experience is like and share that with folks and hopefully make it a little bit better for everyone else out there. Also, you snuck in a sneaky pro-tip there, which is work on the East Coast and have a West Coast team. That just sounds like the obvious correct way to go about this. STEPH: That has worked out really well and been very helpful for me. I'm already not a great morning person; I've tried. I've really strived at times to be a morning person because I just have this idea in my head morning people get more stuff done. I don't think that's true, but I just have that idea. And I'm not the world's best morning person, so it has worked out for many reasons but yeah, especially in helping me get through that first trimester and also just supporting family and other things that are going on. Oh, I also learned a pro-tip about Twitter. This is going to seem totally random, but it was relevant when I was searching for stuff on Twitter [laughs] that was related to tech and pregnancy. But I learned...because I wanted to be able to search for something that someone that I follow what they said but I couldn't remember who said it. And so I found that in the search bar, I can add filter:follows. So you can have your search term like if you're looking for cake or pregnancy, or sleep-deprived and then look for filter:follows, and then that will filter the search results to everybody that you follow. I imagine that that probably works for followers too, but I haven't tried it. CHRIS: I like the left turn you took us on there but still keeping it connected. On the topic of Twitter search, they apparently have a very powerful search, but it's also hidden, and you got to know the specific syntax and whatnot. But there is a wonderful project by Shawn Wang, AKA Swyx, on the internet, bettertwitter.netlify.com is the URL for it. I will share a link to his tweet introducing it. But it's a really wonderful tool that just provides a UI for all of these different filters and configurations. And both make discoverability that much better and then also make it easy to just compose one of these searches and use that. The other thing that I'll recommend is, I think it's a Chrome plugin. I'm guessing is what I'm working with here like a browser extension, but it's called Twemex, T-W-E-M-EX. And there's a sidebar in Twitter now, which just seems wonderful and useful. So as I'm looking at a Swyx post here, or a tweet as they're called on Twitter because I know that vernacular, there's a sidebar which is specific to Shawn Wang. And there's a search at the top so I can search within it. But it's just finding their most popular tweets and putting that on a sidebar. It's a very useful contextual addition to Twitter that I found just awesome. So that combination of things has made my Twitter experience much better. So yeah, we'll have show notes for both of those as well. STEPH: Nice. I did not know about those. This may cause someone to laugh at me because maybe it's easier than I think. But I can never remember that advanced search that Twitter does offer; I have to search it every time. I just go to Google, and I'm like, advanced Twitter search, and then it brings up a site for me, and then I use that as the one that Twitter does provide. But yeah, from the normal UI, I don't know how to get there. Maybe I haven't tried hard enough. Maybe it's hidden. CHRIS: It's like they're hiding it. STEPH: Yeah, one of those. [laughs] CHRIS: It's very costly. They have to like MapReduce the entire internet in order to make that search work. So they're like, well, what if we hide it because it's like 50 cents per query? And so maybe we shouldn't promote this too much. STEPH: [laughs] CHRIS: And let's just live in the moment, everybody. Let's just swim in the Twitter stream rather than look back at the history. I make guesses about the universe now. STEPH: [laughs] On a different note, I also discovered at thoughtbot in our variety of Slack channels that we have a yelling channel, and I had not used it before. I had not hung out there before. It's a delightful channel. It's a place that you just go, and you type in all caps. You can yell about anything that you would like to. And I specifically needed to yell about Gerrit, which is the replacement or the alternative that we're using for GitHub or GitLab, or Bitbucket, or any of those services. So we're using Gerrit, and I've been working to feel comfortable with the UI and then be able to review CRs and things like that. My vernacular is also changing because my team refers to them as change requests instead of pull requests. So I'm floating back and forth between CRs and PRs. And because I'm in Gerrit world, I missed some of the updates that GitHub made to their pull request review screen. And so then I happened to hop in GitHub one day, and I saw it, and I was like, what is this? So that was novel. But going back to yelling, I needed to yell about Gerrit because I have not found a way to collaborate with someone who has already pushed up changes. I have found ways that I can pull their changes which then took a little while. I found it in a sneaky little tab called download. I didn't expect it to be there. But then the actual snippet it's like, run this in your terminal, and this is then how you pull down the changes. And I'm like, okay, so I did that. But I can't push to their existing changes because then I get like, well, you're not the owner, so we're going block you, which is like, cool, cool, cool. Okay, I kind of get that because you don't want me messing up somebody else's content or something that they've done. But I really, really, really want to collaborate with this person, and we're trying to do something together, and you're blocking me. And so I had to go to the yelling channel, and I felt better. And I'm yelling again. [laughs] Maybe I don't feel that great because I'm getting angry again talking about it. CHRIS: You vented a little into the yelling channel; maybe not everything, though. STEPH: Yeah, I still have more to vent because it's made life hard. Every time I wanted to push up a change or pull down someone else's changes, there are now all these CRs that then I just have to go and abandon, which is then the terminology for then essentially closing it and ignoring it, so I'm constantly going through. And if I do want to pull in changes or collaborate, then there's a flow of either where I abandon mine, or I pull in their changes, but then I have to squash everything because if you push up multiple commits to Gerrit, it's going to split those commits into different CRs, don't like that. So there are a couple of things that have been pain points. And yeah, so plus-one for yelling channels, let people get it out. CHRIS: Okay, so definitely some feelings that you are working through here. I'm happy to work together as a team to get through some of them. One thing that I want to touch on is you very quickly hinted at GitHub has got a bunch of new things that are cool. I want to talk about those. But I want to touch [laughs] on an anecdote. You talked about pushing something up to someone else's branch. You're like, oh, you know, I made some changes locally, and I'm going to push them up. I had an interesting experience once where I was interacting with another developer. I had done some code review. They weren't quite understanding where I was. They had a lot of questions. And finally, I said, you know what? This will just be easier. Here, I pushed up a commit to your branch, so now you can see what I'm talking about. And I thought of this as a very innocuous act, but it was not interpreted that way. That individual interpreted it in a very aggressive sort of; it was not taken well. And I think part of that was related to I think of Git commits as just these little ephemeral things where you're like, throw it out, feel free. This is just the easiest way for me to communicate this change in the context of the work that you're doing. I thought I was doing a nice favor thing here. That was not how it went. We had a good conversation after I got to the heart of where we both were emotionally on this thing. It was interesting. The interaction of emotion and tech is always interesting. But as a result, I'm very, very careful with that now. I do think it's a great way as long as I've gotten buy-in from the person beforehand. But I will always spot check and be like, "Hey, just to confirm, I can just push up a commit to your branch, but are you okay with that? Is that fine with you?" So I've become very cautious with that. STEPH: Yeah, that feels like one of those painful moments where it highlights that the people that you work with that you are accustomed to having a certain level of trust or default trust with those individuals, and then working with someone else that they don't have that where the cup is half-full in terms of that trust, or that this person means well kind of feelings towards a colleague or towards someone that they're working with. So it totally makes sense that it's always good to check and just to be like, "Hey, I'd love to push up some changes to your branch. Is that cool?" And then once you've established that, then that just makes it easier. But I do remember that happening, and yeah, that was a bit painful and shocking because we didn't see that coming and then learned from it. CHRIS: I do think it's an important thing to learn, though, because for me, in that moment, this was this throwaway operation that I thought almost nothing of, but then another individual interpreted it in a very different way. And that can happen, that can happen across tons of different things. And I don't even want to live in the idealized world where it's just tech; we're just pushing around zeros and ones; there's no human to this. But no, I actually believe it's a deeply human thing that we're doing here. It's our job to teach the computers to be a little closer to us humans or something like that. And so it was a really pointed clarification of that for me where it was this thing that I didn't even think once about, no less twice, and yet someone else interpreted it in such a different way. So it was a useful learning situation for me. STEPH: Yeah, I totally agree. I think that's a really wise default to have to check in with people before assuming that they'll be comfortable with something that we're comfortable with. CHRIS: Indeed. But shifting back to what you mentioned of GitHub, a bunch of new stuff came in GitHub, and you were super excited about it. And then you went on to say other things about another system. [laughs] But let's talk about the great things in GitHub. What are the particular ones that have caught your eye? I've seen some, but I'm intrigued. Let's compare notes. STEPH: So this is one of those where I hadn't seen GitHub in quite a while, and then I hopped in, and I was like, this is different. But some of the things that did stand out to me right away is that on the left-hand side, I can see all of the files that have been changed, and so that's a really nice tree where I just then immediately know. Because that was one of the things that I often did going to a PR is that I would see what files are involved in this change because it was just a nice overview of what part of the applications am I walking through? Are there tests for this? Have they altered or added tests? And so I really like that about it. I'm sure there's other stuff. But that is the main thing that stood out to me. How about you? CHRIS: Yeah, that sidebar file tree is very, very nice, which I find surprising because I don't use a file tree in my editor. I only do fuzzy finding to jump to files. But I think there's something about whenever GitHub had the file list; these are all the files that are changed. I'm like, this is just noise. I can't look at this and get anything out of it. But the file tree is so much more...there's a shape to it that my brain can sort of pattern match on. And it's just a much more discoverable way to observe that information. So I've really loved that. That was a wonderful one. The other one that I was surprised by is GitHub semantic code analysis; stuff has gotten much, much better over time subtly. I didn't even notice this happening. But I was discussing something with someone today, and we were looking at it on GitHub, and I just happened to click on an identifier, and it popped up a little thing that says, "Oh, do you want to hop to the references or the definition of this?" I was like, that is what I want to do. And so I hopped to the definition, hopped to the definition of another thing, and was just jumping around in the code in a way that I didn't know was available. So that was really neat. But then also, I was in a pull request at one point, and someone was writing a spec, and they had introduced a helper just like stub something at the bottom of a given spec file. And it's like, I feel like we have this one already. And I just clicked on the identifier. I think it might have actually been a matcher in RSpec, so it was like, have alert. And I was like, oh, I feel like we have this one, a matcher specific to flash message alerts on the page. And I clicked on it, and GitHub provided me a nice little inline dialog that showed me all of the definitions of have alert, which I think we were up to like four of them at that point. So it had been copied and pasted across a couple of different files, which I think is totally fine and a great way to start, but they were very similar implementations. I was like, oh, looks like we actually already have this in a couple of places, maybe we clean it up and extract it to a common spec support thing, and ta-da, I was able to do all of that from the GitHub pull requests UI. And I was like, this is awesome. So kudos to the GitHub team for doing some nifty stuff. Also, can I get into the merge queue? Thank you. ... STEPH: [laughs] There it is. That is very cool. I didn't know I could do that from the pull request screen. I've seen it where if I'm browsing code that, then I can see a snippet of where everything's defined and then go there, but I hadn't seen that from the pull request. I did find the changelogs for GitHub that talk about the introduction of having the tree, so we'll be sure to include a link in the show notes for that too. But yes, thank you for letting me use our podcast as a yelling channel. It's been delightful. [laughs] Mid-roll Ad Hi, friends, and now a quick break to hear from today's sponsor, Scout APM. Scout APM is an application performance monitoring tool that's designed to help developers find and fix performance issues quickly. With an intuitive user interface, Scout will tie bottlenecks to source code so you can quickly pinpoint and resolve performance abnormalities like N+1 queries, slow database queries, and memory bloat. Scout also recently implemented external service monitoring, adding even more granularity when it comes to HTTP requests and API calls. So give Scout a try today with a free 14-day trial and experience first-hand why developers worldwide call Scout their best friend. And as an added bonus for Bike Shed listeners, Scout will donate $5 to the open-source project of your choice when you deploy. To learn more, visit scoutapm.com/bikeshed. That's scoutapm.com/bikeshed. CHRIS: Well, speaking of podcasts, actually, there was an interesting thing that happened where the CEO of Sagewell Financial, the company of which I am the CTO of, Sam Zimmerman is his name, and he went on the Giant Robots Podcast with Chad a couple of weeks ago. So that is now available. We'll link to that in the show notes. I'll be honest; it was a very interesting experience for me. I listened to portions of it. If we're being honest, I searched for my name in the transcript, and it showed up, and I was like, okay, that's cool. And it was interesting to hear two different individuals that I've worked with either in the past or currently talking about it. But then also, for anyone that's been interested in what I'm building over at Sagewell Financial and wants to hear it from someone who can probably do a much better job of pitching and describing the problem space that we're working in, and all of the fun challenges that we have, and that we're hopefully living up to and building something very interesting, I think Sam does a really fantastic job of that. That's the reason I'm at the company, frankly. So yeah, if anyone wants to hear a little bit more about that, that is a very interesting episode. It was a little weird for me to listen to personally, but I think everybody else will probably have a normal experience listening to it because they're not the CTO of the company. So that's one thing. But moving on, I feel like today's going to be a grab bag episode or tapas episode, lots of small plates, as we were discussing as we were prepping for this episode. But to share one little thing that happened, I've been a little more removed from the code of late, something that we've talked about on and off in previous episodes. Thankfully, I have a wonderful team that's doing an absolutely fantastic job moving very rapidly through features and bug fixes and all those sorts of things. But also, I'm just not as involved even in code review at this point. And so I saw one that snuck through today that, I'm going to be honest, I had an emotional reaction to. I've talked myself down; we're fine now. But the team collectively made the decision to move from a line length of 80 characters to a line length of 120 characters, and I had some feelings. STEPH: Did you fire everybody? [laughs] CHRIS: No. I immediately said, doesn't really matter. This is the whole conversation around auto-formatting tools is like we're just taking the decision away. I personally am a fan of the smaller line length because I like to have multiple files open left to right. That is my reason for it, but that's my reason. A collective of the developers that are frankly working more in the code than I am at this point decided this was meaningful. It was a thing that we could automate. I think that we can, you know, it's not a thing that we have to manage. So I was like, cool. There we go. The one thing that I did follow up on I was like, okay; y'all snuck this one in, it's fine, I'm fine with it. I feel fine; everything's fine. But let's add that to the git-blame-ignore-revs file, which is a useful thing to know about. Because otherwise, we have a handful of different changes like this where we upgrade Prettier, and suddenly, the manner in which it formats the files changes, so we have to reformat everything at once. And this magical file that exists in Git to say, "Hey, ignore this revision because it is not relevant to the semantic history of the app," and so it also takes that decision out of the consideration like yeah, should we reformat or not? Because then it'll be noisy. That magical file takes that decision away, and so I love that. STEPH: I so love the idea because you took vacation recently twice. So I love the idea of there was a little coup and people are applauding, and they're like, while Chris is on vacation, we're going to merge this change [laughs] that changes the character line. And yeah, that brings me joy. Well, I'm glad you're working through it. Sounds like we're both working through some hard emotional stuff. [laughs] CHRIS: Life's tricky, is all I'm going to say. STEPH: I am curious, what prompted the 80 characters versus 120? This is one of those areas that's like, yeah, I have my default preference like you said. But I'm more intrigued just when people are interested in changing it and what goes with it. So do you remember one of the reasons that 120 just suited their preferences better? CHRIS: Frankly, again, I was not super involved in the discussion or what led them to it. STEPH: [laughs] CHRIS: My guess is 120 is used...I think 80 is a pretty common one. I think 120 is another of the common ones. So I think it's just a thing that exists out there in the mindshare. But also, my guess is they made the switch to 120 and then reformatted a few files that had like, ah, this is like 85 characters, and that's annoying. What does it look like if we bump it up? And so 120 provided a meaningful change of like, this is a thing that splits to four lines if we have an 80 character thing, or it's one line if it's 120 characters, which is a surprising thing to say, but that's actually the way it plays out in certain cases because the way Prettier will break lines isn't just put stuff on the next line always. It's got to break across multiple lines, actually. All right, now that we're back in the opinion space, I have a strong one. STEPH: This is The Bikeshed. We can live up to that name. [laughs] CHRIS: So I do want an additional configuration in Prettier Ruby. This is the thing I'll say. Maybe I can chase down Kevin Newton and see if he's open to this. But when Prettier does break method call with arguments going into it but no parens on that method call, and it breaks out to multiple lines, it does the dangling indent thing, which I do not like. I find it distasteful; I find it noisy, the shape of the code. I'm a big fan of the squint test. I know that from Sandi Metz, I believe, or maybe it's Avdi Grimm. I associate it with both of them in my mind. But it's just a way to look at the code and kind of squint, and you see the shape of it, and it tells you something. And when the lines break in that weird way, and you have these arbitrary dangling indents, the shape of the code is broken up. And I don't feel so strongly. I actually regularly stop myself from commenting on pull requests on this because it's very easy. All you need to do is add explicit parens, and then Prettier will wrap the line in what I believe is a much more aesthetically pleasing, concise, consistent, lots of other good adjectives here that are definitely just my preferences and not facts about the world. But so what I want is, Prettier, hey, if you're going to break this line across multiple lines, insert the parens. Parens are no longer optional for breaking across multiple lines; parens are only optional within a given line. So if we're not breaking across lines, I want that configuration because this is now one of those things where I could comment on this. And if they added the optional parens, then Prettier would reform it in a different way. And I want my auto formatter don't give me ways to do stuff. Like, constrain me more but also within the constraints of the preferences that I have, please, thank you. STEPH: I love all the varying levels there [laughter] of you want a thing, but you know it's also very personal to you and how you're walking that line and hopping back and forth on each side. I also love the idea. We have the idea of clean code. I really want something that's called distasteful code now [laughs] where you just give examples of distasteful code, yes. Well, I wish you good luck in your journey [laughs] and how this goes and how you continue to battle. I also appreciate that you mentioned when you're reviewing code how you know it's something that you really want, but you will refrain from commenting on that. I just appreciate when people have that filter to recognize, like, is this valuable? Is it important? Or, like you said, how can we just make this more of the default so then we don't even have to talk about it? And then lean into whatever the default the team goes with. CHRIS: Well, thank you. I very much appreciate that because, frankly, it's been very difficult. STEPH: I do have something I want to yell about but in a very positive way or pranting as we determined or, you know, raving, the actual real term that wonderful listeners pointed out to us. CHRIS: Prant for life. That's my stance. STEPH: We had a magic show at thoughtbot. It was all remote, but the wonderful Gregg Tobo, the magician, performed a magic show for us where we all showed up on Zoom. And it was interactive, and it was delightful, and it was so much fun. And so if you need something fun for your team that you just want to bring folks together, highly recommend. I had no idea I was going to enjoy a magic show this much, but it was a lot of fun. So I'll be sure to include some links in the show notes in case that interests anyone. But yeah, magic. I'm doing jazz hands. People can't see it, but magic. I like how you referred earlier, saying that today is more of like a tapas episode. And I'm realizing that all of my tapas are related to being pregnant, yelling, and magic shows, and I'm okay with that. [laughs] But on that note, what else is on your tapas plate? CHRIS: Actually, a nice positive one that came into the world...I always like when we get those. So this is interesting because I was actually looking back at the history, and I had Gary Bernhardt on The Bike Shed back in Episode 269. We'll include a link in the show notes. But we talked a bunch about various things, including TypeScript. And I was lamenting what I saw as a pretty big edge case in TypeScript. So the goal of TypeScript is like, all right, JavaScript exists, this is true. What can we do on top of that? Let's not fundamentally change it, but let's build a type system on top of it and try and make it so that we can enforce correctness but understand that JavaScript is a highly dynamic language and that we don't want to overconstrain and that we've got to meet it where it is. And so one of the design decisions early on with TypeScript is if you have an array and you say like it's an array of integers, so you have typed that array to be this is an array of int, or it will be an array of number in JavaScript because JavaScript doesn't have integers; they only have numbers. Cool. [laughs] Setting aside other JavaScript variables here, you have an array of numbers. And so if you use element access to say, like, say the name of array is array of nums and then use brackets and you say zero, so get me the first element of that array. TypeScript will infer the type of that to be a number. Of course, it's a number, right? You got an array of numbers, you take a number out of it, of course, you're going to have a number, except you know what's also an array of numbers? An empty array. Well, of course. So there's no way for TypeScript because that's a runtime thing, whether or not the array is full of things or not. Or imagine you get the third element from the array. Well, JavaScript will either return you the third element, which indeed is a number, or undefined because there's no third element in this array. So that is an unfortunate but very understandable edge case that TypeScript was like, listen, this is how JavaScript works. So we're not going to…frankly, we don't think the people embracing TypeScript and bringing it into their world would accept this amount of noise because this is everywhere. Anytime you interact with an array, you are going to run into this, this sort of uncertainty of did I actually get the thing? And it's like, yeah, no, I know how many things are in the array that I'm working with. Spoiler, you maybe don't is the answer. And so, we ran into this edge case in our codebase. We were accessing an element, but TypeScript was telling us, "Yes, definitively, you have an object of that type because you just got it out of an array, which is an array of that type." But we did not; we had undefined. And so we had, you know blah is not a method on undefined or whatever that classic JavaScript runtime error is. And I was like, well, that's very sad. But now we get to the fun part of the story, TypeScript, as of version 4.1, which came out like the week that I recorded with Gary Bernhardt, which was interesting to look at the timeline here. TypeScript has added a new configuration. So a new strictness dial that you can configure in your tsconfig called noUncheckedIndexedAccess. So if you have an array and you are getting an element out of it by index, TypeScript will say, "Hey, you got to check if that's undefined," because to be clear, very much could be undefined. And I was so happy to find this. We turned it on in our codebase. It found the error in the place that we actually had an error and then found a few others that I think probably had errored at some times. But it was just one of those for me very nice things to be able to dial up the strictness and enforce correctness within our codebase, and so I was very happy about it. Other folks may say that seems like too much work. And, you know, I get that, I get that take. I'm definitely on the side of I'm willing to go through the effort to have enforced correctness, but you know, that's a choice. STEPH: Yeah, that's thoughtful. I like that, how you said you can dial up the strictness so then as you are introducing TypeScript, then people have that option. There is an argument there in the back of my head that's like, well, if you're introducing types, then you want to start more strict because then you're just creating problems for yourself down the road. But I also understand that that can make things very difficult to then introduce it to teams in existing codebases. So that seems like a really nice addition where then people can say, "Yeah, no, I really want the strictness. This is why I'm here," and then they can turn that on. CHRIS: So TypeScript in the configuration has strict mode, so you say strict true. And that is a moving target with each new version of TypeScript. But it's their sort of [inaudible 28:14] set of things that are part of strict, but apparently, this one's not in it. So now I'm like, wait, can I have a stricter? Can I have a strictest option? Can I have dial it to 11, please? [laughs] Really rough me up and make sure my code is correct. But it is the sort of thing like when we turn any of these on; it will find things in our codebase. Some of them, we have to appease the compiler even though we know the code to be correct. But the code is not provably correct as it sits in our file. So I am, again, happy to make that exchange. And I like that TypeScript as a project gives us configurability. But again, I am on team where's the strictest button? I would like to push that as hard as I can and live that life. STEPH: Yeah, I like that phrasing that you just said about provably correct. That's nice. CHRIS: That's the world I want to live in, everything you own in the box to the left, which is probably correct. STEPH: [laughs] That's how that song goes. CHRIS: Yeah. This is a reference to move errors to the left, which I think I've referenced before. But now that I'm just referencing Beyoncé and not the actual article, it's probably worth referencing the article, but the idea of, like, if a user hits an error, that's not great. So let's move it back to QA, that's a little further to the left in sort of the timeline. But what if we could move it to an automated test in CI? But what if we could move it into your editor? What if we could move it even further to the left? And so, a type system tends to be sort of very far ratcheted up to the left. It's as early as possible that you can catch these. So again, to reference Beyoncé, everything you own in a box to the left. STEPH: [singing] Everything you own in the box to the left. CHRIS: Thank you for doing the needful work there. STEPH: [laughs] Mid-roll Ad And now a quick break to hear from today's sponsor, Studio 3T. When you're developing applications, it can often be a chore to work with your underlying data. Studio 3T equips you with a complete set of tools to work with MongoDB data. From building queries with drag and drop, to creating complex aggregation pipelines; Studio 3T makes it easy. And now, there's Studio 3T Free, a free edition of Studio 3T, which delivers an essential core of tools. This means you can get started, for free, with Studio 3T Free, and when you're ready, you can upgrade and enjoy even more features through Studio 3T Pro and Studio 3T Ultimate. The different editions unlock more tools and additional integrations with MongoDB, SQL, Oracle, and Sybase. You can start today by downloading Studio 3T Free, which also includes a 30-day free trial of all the features of Studio 3T Ultimate, so you can try out some of the enterprise features as well. No credit card required. To start your trial, head to studio3t.com/free that's studio3t.com/free. STEPH: I have a question for you that I'd really love to get your opinion on because I myself I'm waffling back and forth where someone brought up some really great points about a concern or just a question they had brought up around testing and i18n specifically. And I agree with the things that they're saying, but yet, there's also a part of me that doesn't, and so I'm Stephanie divided. And so, I'm trying to figure out where I stand on this. So let me dive in and give you some context; I'm going to share the statement/question that they had asked. So here we go. "One of my priorities has been I should be able to review a test without having to reference any other code. References to i18n means that I have to go over to YAML and make sure the right keys have the right values, and that seems error-prone. In some cases, a lack of a hit in the YAML defers to defaults. If the intent is to override the name of model attribute and error messages and it is coded incorrectly, the code fails silently without translating and uses the humanized attribute name, and that would go undetected. If libraries change structure, it might also fail silently as well, so to me, the only failsafe way is to be fully explicit in test." So this goes with the idea that if you're writing tests and then you're testing text, but it's on the screen or perhaps an email, that you're actually going to assert against that string that is shown to the user instead of referencing the i18n keys. And then that also backs up this person's idea that you really want to not have to jump around. If you're reading a test, everything you really need to know about that test should live very close by. And I really agree with that initial statement; I want everything that's very close to the test, especially if it's anywhere in that expectation line, I really want it close, so I can understand what's the expectation, what's under test, what are the inputs, what's the expected outcome. So I wholeheartedly support that idea. But yet, I am in the camp that I then will use YAML keys instead of providing that exact string because I do look at i18n as a helpful abstraction, and I want to trust that i18n is doing its job. And so that way, I don't have to provide that string that's there because then we're also choosing, okay, well, which language are we going to always use for our test? So this is the part where I feel divided. So I'm going to walk you through some of the reasons that I really support this idea and other reasons that I still use the i18n keys and then get your take on it. So there is a part of me that when I'm using the i18n YAML keys, it does make me sad because it reduces the readability in tests. Sometimes the keys are really well named where maybe it's a mailer.welcomemessage. And I'm like, okay, I understand the gist. I don't need to go see the actual string. I also think they highlighted a really good use case where if you're overriding behavior and it could default to something else, your test is still going to pass, and you don't actually know. So I could see the use case there where if you are overriding, then you want to be explicit about the string that you expect back. I also think there are some i18n messages that are fairly complex, and where then I really would like to see the string. So if you are formatting a date or a time or you're passing in just a lot of variables, then there's a chance that I do want to see how did that actually get generated for the person who's going to be reading it versus just maybe it's garbage text that came out? And I want to validate that the message that we think we're crafting is actually the one that the user is going to see. The case against actually being explicit, my biggest one is because then I do see i18n as a helpful abstraction. And I want to trust this abstraction that it's doing its job and it's doing it well. Because then if I do use explicit strings, it makes me sad if I change text from like hello to welcome, and now I have a failing test. I don't like that idea either. So I'm torn between these two worlds of it is very nice to have everything that you need in a test to be able to understand what is the expectation, but then I also lean into this abstraction and reference the i18n keys. So, Chris, with all of that, that was a bit of a whirlwind, [laughs] what are your thoughts? How do you test this stuff? CHRIS: Honestly, I'm surprised that you've got that much division in your own answer because for me, this is very obvious there's one...no, I'm kidding. This is obviously complicated. Similar to you, I think I'm going to have to give a grab bag of answers because I don't have a singular thought of like it is concretely this or that. I tend to go for explicit strings and tests all the way to...so like the readability of a test, and the conciseness of a test is interesting. I will often see developers extract. Say they're creating a user with a specific email, and then they log in with that email later, and then they expect something else. And so the email is referenced a few times, and they'll extract that into a variable called email. And I personally will tend to not do that. I will inline the literal string like user@example.com, and I'll do it in a few places. And I'm fine with that duplication because I like the readability of any given line that you're reading. So I will make that trade-off within tests. This is the thing I think we've talked about before, but the idea of DRY in tests is like I want to be careful applying that idea, Don't Repeat Yourself, to break apart the acronym. Those abstractions I will use them less than tests. And so I want the explicitness, I want the readability, I want to tell a little story, all of that feels true. That said, to flip it around, one of the things that I'm hearing...so I think I'm hearing a part of this that is around well, we can fail silently because we fail symmetrically in both the implementation and our test. Then an assertion may actually match even though it's matching on a fallback. I think that's a configurable thing. I would actually want my test to raise if I'm referencing an i18n key that is not defined. Now, granted, that's different for languages. And maybe this becomes a more complex story of like in production; in a different locale, it will fail because we don't have 100% parity across all our locale files. But fundamentally, I want to make sure that at least exists in our base, which I think typically would be en-US as the locale. I want to make sure all keys are looked up and found, and it's an error otherwise in our test. So that's a feeling. But am I misunderstanding that part of the story or how that configuration typically works? STEPH: No, I think you've got it. But just to make sure we're on the same page, so if you reference a key that doesn't exist, then it is going to fail. So at least you have your test failure is going to let you know that you've referenced something that doesn't exist. But if you are referencing, like if you want to override the defaults that Rails or i18n has provided for a model and say for an error message, if you reference that, but you want to override it, but then you've forgotten, that does exist. So you're not going to get the failure; you're going to get a different message. So it's probably not a terrible experience for the user. It's not going to crash. They're going to see something, but they're not going to see the custom message that you intended them to see. CHRIS: Gotcha. Okay, well, just to name it, the thing that I was describing, I don't know that that would be the configuration for every system. So I would strongly encourage any system where i18n just has a singular behavior which is we fall back to the key. I want my test to absolutely tell me if that's happening. And that should be a failure of the test. But to the discoverability documentation bit, I do wonder if tooling can actually help answer the question. And as I was describing the wonderful experience I had on GitHub the other day, viewing code as just static characters in a file is both true and also, I think increasingly, a limited view of it. We have editors, and we have code hosting tools that can understand semantically our code a little bit better. There's got to be like 20 Different VS Code plugins that, when you hover on an i18n reference, it will do the lookup for you. That feels like a thing that exists, and if it doesn't, well, now I've nerd-sniped myself, and I got a weekend project. JK, I'm definitely not building that this weekend. But that feels like can we use that to solve this? Maybe not. But that's just another thought of where we have these limitations where it's static, like those abstractions can be useful. But if we can very quickly dereference them, then the cost of the abstraction or that separation becomes smaller, and so the pain is reduced. And I wonder if that's a way to sort of offset it. STEPH: If I can poke at that a little bit more, because I think you're touching on something that I haven't expressed or thought through explicitly, but it's the idea of, like, why do I like the abstraction? What is it that's drawing me towards using these keys? And I think it's because most of the cases, I don't care. I don't care what the string is, and so that feels nice. Like, I understand that, yes, we're referencing something. If that key didn't exist, I'm going to see a failure. So I know that there's text there, and that's why I do lean into referencing the keys instead of the text because it feels good to not have to care about that stuff. And if we do make changes to the text, then it suddenly doesn't fail, and then I have to go update a test because we added a period or added a comma. I think that's the path of more sadness for me. And my goal is always a path of least sadness. So I think that's why I lean into it [laughs], I'm guessing. Is that why you lean into it as well? Or what do you like about referencing the keys over the explicit text? CHRIS: No, I think I share your inclination there, and the reason that you're in favor of it, and I think the consistency like if we're going to use i18n, then we should lean in because it's a non-trivial thing to do like porting to i18n projects, and they're tricky. Getting it right from the first step is also tricky. If you're going to do it, then let's lean in, and thus let's use that abstraction overall. But yeah, same ideas as you. STEPH: Cool. I think that helps validate where I'm at in terms of how I rationalize about this where ultimately, I do like leaning into that abstraction. And as you'd mentioned, some of those porting projects, I haven't been on one specifically, but I've seen that they are a lot of work. And so, if we have that in our system, then we want to continue to use it. It does reduce some of the readability. Like you said, maybe there's a VS Code plugin or some way that then we can help people be able to see if they want that full context in the test and not have to jump over to YAML. But yeah, otherwise, unless it's overriding default behavior or complex, then that's what I'm going to go with is with the keys. But I really appreciate this person's very thoughtful question and approach to testing because, normally or typically, I fully agree with I want full context in the test. And this one was one of those outliers that came up for me, and I had to really think through all the feelings and the reasons that I have for those feelings. On that note, shall we wrap up? CHRIS: Let's wrap up. The show notes for this episode can be found at bikeshed.fm. STEPH: This show is produced and edited by Mandy Moore. CHRIS: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review on iTunes, as it really helps other folks find the show. STEPH: If you have any feedback for this or any of our other episodes, you can reach us at @_bikeshed or reach me on Twitter @SViccari. CHRIS: And I'm @christoomey. STEPH: Or you can reach us at hosts@bikeshed.fm via email. CHRIS: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!! ANNOUNCER: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.

The Angular Show
E064 - Transloco

The Angular Show

Play Episode Listen Later Aug 11, 2021 49:27


Internationalization (i18n) and localization (l10n) can be critical for Angular applications that are used throughout a country, continent, or around the globe. As Angular developers, we have several tools at our disposal to accomplish i18n and l10n. As you might expect, since Angular is an opinionated framework that comes with batteries included, there is a solution provided by the Angular Team. We recently sat down with Kaitlyn Ekdahl to learn about the built-in solution to i18n provided by Angular. Kaitlyn taught us how to get started, some of the recent improvements, as well as the pros and cons of this solution. We also briefly mentioned that there are a few open-source community-led efforts at solving i18n with Angular, such as ngx-translate and Transloco.As engineers, the panelists for the Angular Show (Aaron, Jennifer and Brian) are always curious. We want to learn more, and we endeavor to share our learnings with you! We were excited to learn more about Transloco from Inbal Sinai, a member of the ngneat team, and a Senior Front End Developer at Datorama Salesforce. Inbal shares with us how Transloco works, how easy it is to use, and some of the runtime advantages that Transloco provides. Transloco also makes it easy to get started using the provided `ng add` command. And, if you're currently using Angular's i18n library, Transloco has documentation on how you can easily switch. Oh, did we mention docs? Yeah, they have that covered too (and quite well we might add).If you are considering supporting i18n and l10n in your Angular application we recommend you listen to this episode of the Angular Show, check out Transloco, and don't forget to subscribe so you can go back and listen to the show we did with Kaitlyn to learn about Angular's localization library.Show Notes:https://ngneat.github.io/translocoConnect with us:Inbal Sinai - @SinaiInbalBrian F Love - @brian_loveJennifer Wadella - @likeOMGitsFEDAY

Mastermind Joomla!
Los idiomas en Joomla

Mastermind Joomla!

Play Episode Listen Later Aug 2, 2021 37:30


Los idiomas son una de las fortalezas de Joomla! pero ¿Sabes qué peculiaridades tienen? ¿Cómo se pueden modificar las traducciones en un sitio Joomla? Te contamos los secretos de la gestión de idiomas en Joomla. ¿Cuál es el idioma menos habitual que has usado en un sitio web? Cuéntanoslo en los comentarios del artículo del episodio: https://www.mastermindjomla.com/110-los-idiomas-en-joomla

Mastermind Joomla!
Los idiomas en Joomla

Mastermind Joomla!

Play Episode Listen Later Aug 2, 2021 37:30


Los idiomas son una de las fortalezas de Joomla! pero ¿Sabes qué peculiaridades tienen? ¿Cómo se pueden modificar las traducciones en un sitio Joomla? Te contamos los secretos de la gestión de idiomas en Joomla. ¿Cuál es el idioma menos habitual que has usado en un sitio web? Cuéntanoslo en los comentarios del artículo del episodio: https://www.mastermindjomla.com/110-los-idiomas-en-joomla

The Angular Show
E059 - i18n and l10n

The Angular Show

Play Episode Listen Later Jun 2, 2021 52:32


Internationalization (i18n) and localization (l10n) can be critical for Angular applications that are used throughout a country, continent, or around the globe. As Angular developers, we have several tools at our disposal to accomplish i18n and l10n. As you might expect, since Angular is an opinionated framework that comes with batteries included, there is a solution provided by the Angular Team. What you might know is that the Angular Team made some big improvements in the localize package when Ivy, the new compilation and rendering pipeline for Angular that was released in version 9, was released that improves the development of Angular applications that support i18n and l10n. There are also a few community-driven open-source solutions for i18n with Angular, including Transloco and ngx-translate. With all of these options, which one should you choose?Thankfully, as loyal subscribers and listeners to this very podcast, we want to help you make an informed decision. And to do that, as usual, we turn to an expert in the community. Please welcome, Kaitlyn Ekdahl, a Senior Software Engineer at Narwhal Technologies, to the Angular Show to teach us about i18n and l10n with Angular. Kaitlyn shares her experience and in-depth knowledge of using Angular's localize solution, Transloco, and ngx-translate. We discuss the pros and cons, and why you might choose one over the other.Whether or not your current Angular applications require i18n and l10 today, this is an episode of the Angular Show that you do not want to miss. Share this with your colleagues and other Angular developers so that we the community can be educated, informed, and ready to build applications that can be used throughout our communities and throughout the world.Show Notes:i18n vs l10n - https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/Locl - https://www.locl.app/Introducing Transloco - https://netbasal.com/introducing-transloco-angular-internationalization-done-right-54710337630cRuntime i18n with Ivy by Olivier Comb: https://www.youtube.com/watch?v=miG-ghJhFPcAngular Athens: https://www.meetup.com/Angular-Athens/events/277017190/Connect with us:Kaitlyn Ekdahl - @kaitlynekdahlAaron Frost - @aaronfrostBrian F Love - @brian_love

Null Pointers
34: I18N and L10N

Null Pointers

Play Episode Listen Later Jan 6, 2021 38:30


Steven is currently in the process of localizing the unofficial Microsoft MVP App. So we took this opportunity to discuss I18N and L10N. What is there to look out for and what things can you localize within your app. And is using Icons cheating? Well tune in and find out our opinions.

icons i18n
The State of the Web
Globalization Tools - The State of the Web

The State of the Web

Play Episode Listen Later Jul 8, 2020 19:04


(September 4, 2019) Developing for the global web is so much more than just translating content into multiple languages. In this episode of the State of the Web, Rick Viscomi (Developer Programs Engineer at Google) sits down with Andrey Sitnik (Lead Frontend Engineer at Evil Martians) to talk about considerations for globalization and the tools available to web developers. For more info about everything discussed in this video, check out the original video→ https://goo.gle/2Z5dYq6

Humans of MITPU
#301 | Internationalization (i18n)

Humans of MITPU

Play Episode Listen Later May 19, 2020 68:20


3 дугаар улирлын салхийг хагалж манай энэ удаагийн дугаарт маань Stripe компаний ахлах инженер Э. Хонгор оролцож өсөж буй гарааны бизнэст Internationalization (i18n) буюу интернационалчлах нь хэмээх сэдвийн талаар Facebook компанид ажиллаж байсан туршлагаасаа хуваалцан ярилцлаа. Тэрээр тухайн компаниудын Internationalization системийн үндсэн ойлголтууд, дэд бүтэц, болон бизнесийн шаардлагуудын таалаар ярихдаа компаний дотоод инженерийн соёл маш чухал болохыг олцоллоо. Та бүхэн таалан сонсоорой. Мөн цааш нь сонирхон суралцая гэвэл доорх материалуудыг сонирхоорой. 1. https://github.com/unicode-org/cldr 2. http://userguide.icu-project.org/formatparse/messages 3. https://increment.com/internationalization/

stripe i18n
Real Talk JavaScript
Episode 82: i18n and l10n with N3i M3r

Real Talk JavaScript

Play Episode Listen Later May 5, 2020 43:21


Recording date: 2020-03-24John Papa @John_PapaWard Bell @WardBellDan Wahlin @DanWahlinCraig Shoemaker @craigshoemakerNaomi Meyer @Nae_OhmiBrought to you byag-Grid Narwhal Visit nx.dev to get the preeminent open-source toolkit for monorepo development, today.Resources:What's the difference between i18n and l10n?I18n on AzureVideo of Naomi Meyer presening i18n and l10n at AngularConnectintl object in javascriptintl object in caniuse.comReact IntlAngular i18nVue i18nSvelte i18nSpectrum International DesignWhat every JavaScript developer should know about UnicodemomentJSReact Berlin Data Visualizations and InternationalizationDate Fns - Date libraryContent Localization on AzureCodeTour VS Code ExtensionThe VS Code Extension for Code Tour by Jonathan CarterTimejumps02:44 Guest introduction04:52 What are the terms we're talking about?10:01 Why should we care about this?11:10 Sponsor: Narwhal11:43 Advice for designers building sites16:35 What about ALT text?27:30 Is it worth the extra time and investment?33:28 Sponsor: Ag Grid34:27 How do I work with unicode?39:41 Final thoughts

Letscode.hu
i18n

Letscode.hu

Play Episode Listen Later Apr 6, 2020 52:15


undefined See acast.com/privacy for privacy and opt-out information.

i18n
Letscode.hu
i18n

Letscode.hu

Play Episode Listen Later Apr 6, 2020 52:15


i18n by Letscode.hu

i18n
Wo wir sind ist vorne.
A11Y I18N FTW! WTF?

Wo wir sind ist vorne.

Play Episode Listen Later Mar 29, 2020 76:37


Web Accessibility Basics, Internationalisierung in Manifestation der JS Intl API, und viele Tools und Tipps, ganz frisch in euren Podcatcher! (Kein Verb!). Nebenher lernen wir, dass in Österreich das Eurozeichen vor dem Betrag steht, es verschiedene arabische Plurale gibt und wagen einen Blick ins Präkambrium des World Wide Webs.

The Global Podcast
The Global Podcast

The Global Podcast

Play Episode Listen Later Mar 25, 2020 5:41


The future is global and global is multilingual. The Global Podcast is a conversation meant to engage and empower those curious about success in foreign markets, global brands, and all factors that have created a language industry worth over $50 billion. People and technology are critical in a future where we really understand each other. Hosts, Renato Beninatto and Michael Stevens, bring their curiosity to conversations with the most interesting people in the world.

Conversas em Código
Ep. 20 - Internacionalização, bandeiras, e inputs

Conversas em Código

Play Episode Listen Later May 19, 2019 24:14


Why Flags do not represent languages Language icon HTML5 input number localization Momentjs Date.prototype.toLocaleDateString Intl

DEVNAESTRADA
DNE 202 - i18n - Internacionalização

DEVNAESTRADA

Play Episode Listen Later Apr 18, 2019 52:35


O quer quer dizer i18n? Será que sabemos mesmo o que quer dizer internacionalização? No episódio de hoje nosso time de especialistas Leo Balter, Eduardo Shiota, Rafael Xaviers, Eduardo Matos e Ramon Sanches dissecam o que é essa tal de internacionalização.

internacionaliza i18n leo balter
DevTales Podcast
33. adás: F1 Websites, Moment.js, State Of Browsers, i18n

DevTales Podcast

Play Episode Listen Later Mar 25, 2019 47:00


A harmincharmadik adásban betekintettünk a F1 istállók site-jainak F1 versenyébe. Momentjs pro és contra mellett a beépitett rendszerfontok és browserpiac is kielemzésre került. Végül, de nem utolsó sorban – hallgatói kérésre – szó esett az internationalization problémakörről is. Résztvevők: Edu Róka Tibi System Font StackWhy you shouldn’t use Moment.jsWho has the fastest website in F1?TC39 […]

This Old App
Building an App (and Learning) with Vue.js

This Old App

Play Episode Listen Later Mar 18, 2019 61:07


Randy has started working on the Chasms project again, and after the previous episode with David Rogers, he chose to use (and learn) Vue.js to get it started. Don and Randy discuss the various libraries being used to build the app, along with some strategies for other folks to get started with the framework.

Working Draft » Podcast Feed
Revision 370: Internationalisierung und Lokalisierung

Working Draft » Podcast Feed

Play Episode Listen Later Dec 23, 2018 69:25


Zu fünft griffen Peter, Hans, Schepp, Rodney und Mehrfach-Gast Sebastian Golasch (Web, Twitter) die Themen Internationalisierung und Lokalisierung frontal an. Rodney und Sebastian konnten dabei auf ihrem reichen Erfahrungsschatz aus einem großen IOT-Projekt schöpfen und plaudern munter drauflos. Schaunotizen [00:01:28] I18N und L10N Nachdem wir die Begriffe Internationalisierung (I18N, technische Vorbereitung einer Software für Lokalisierung) […]

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.

CocoaHeads Brasil
S03E28 - Localização (i18n)

CocoaHeads Brasil

Play Episode Listen Later Jul 12, 2018 86:21


Neste episódio Tales, Igor, e Guilherme apresentam as dificuldades em internacionalização dos aplicativos, como o iOS te ajuda, e o que dar mais atenção. Links: Awesome Falsehood https://github.com/kdeldycke/awesome-falsehood Carta entregue, mesmo com endereço incompleto https://twitter.com/loriskumo/status/735851511331356672 Diferenças no mapa entre USA e Japão https://twitter.com/jeremywsherman/status/1012900981921771525 Google i18n https://github.com/googlei18n Falsehood sobre telephone https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md Falsehoods Programmers Believe https://spaceninja.com/2015/12/07/falsehoods-programmers-believe/ One Sky app https://www.oneskyapp.com/ Lokalise https://lokalise.co/features Linguan https://itunes.apple.com/br/app/linguan/id477163052?l=en&mt=12 AI School https://aischool.microsoft.com/learning-paths Wendover Productions https://www.youtube.com/user/Wendoverproductions Origin of Everything https://www.pbs.org/show/origin-everything

The Local Maximum
Ep. 2 - Maryam Aly on Building a Global User Base: Translation, Localization, and I18n

The Local Maximum

Play Episode Listen Later Feb 19, 2018 35:17


In my first interview, I speak to Google engineer Maryam Aly who worked on Foursquare's Internationalization Stack for several years. This includes making sure that the foursquare city guide and swarm apps work all around the world. Sometimes, a simple translation isn't enough - we had to deal with the quirks of each language, and puns and cultural references that don't carry through.

RWpod - подкаст про мир Ruby и Web технологии
05 выпуск 06 сезона. Rails 5.2: Active Storage and beyond, Embedding Go into Ruby applications, Localer, Webpack demos и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later Feb 4, 2018 28:29


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Using Ruby 2.5's new Integer#sqrt method, Rails 5.2: Active Storage and beyond и Fast JSON API serialization with Ruby on Rails Embedding Go into Ruby applications, Localer - a tool that automatically detects missing I18n translations и Ruby on Rails - Tips and Tricks (video) JavaScript 8 Things Every Front-End Developer Must Learn, JavaScript: What's new in ECMAScript 2018 (ES2018)? и An Introduction to GraphQL Debugging JavaScript With A Real Debugger You Did Not Know You Already Have, How to use variable fonts in the real world (Decovar шрифт) и Webpack demos Conferences Ruby Meditation #20

Angular Air
ngAir 118 - i18n and Translation with Olivier Combe and Victor Berchet

Angular Air

Play Episode Listen Later Jun 20, 2017 60:28


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

Tech In Ten
#16 El Problema de la Traducción

Tech In Ten

Play Episode Listen Later Apr 18, 2017 10:13


Ernesto wants to read our website in Spanish. We discuss problems with translation, internationalization, and related issues.

Zone Of Front-Enders
ZOFE #37 - Podcast I18n

Zone Of Front-Enders

Play Episode Listen Later Dec 4, 2016 41:06


Como uma deusa você me mantém fênix, o ZOFE voltou! Bruno, Caio e Daniel batendo um papo. Mais dando uma satisfação sobre o sumiço que qualquer outra coisa.

Devchat.tv Master Feed
267 RR Internationalization with Cameron Dutro

Devchat.tv Master Feed

Play Episode Listen Later Jul 6, 2016 61:38


02:39 - Cameron Dutro Introduction Twitter GitHub Lumosity 02:39 - Internationalization vs Localization 05:28 - How important is internationalization? 13:54 - Internationalization and Accessibility The Tragedy of the Commons Developer Ignorance/Indifference 19:43 - Tools Twitter Translation Center Rosette txgh Transifex 24:48 - How can small companies internationalize? 26:22 - Crowdsourcing Contributor Covenant 30:34 - People Have Names Patrick McKenzie: Falsehoods Programmers Believe About Names Falsehoods Programmers Believe About Phone Numbers Carina C. Zona: Schemas for the Real World @ RubyConf AU 2013 34:54 - Gender I18n, l10n, m10n: Abbreviations for Internationalization, Localization, and Minimization 39:35 - Educational Resources Rails Guides on Internationalization ICU - International Components for Unicode twitter-cldr-rb CLDR - Unicode Common Locale Data Repository 47:14 - Unicode Unicode Consortium Aditya Mukerjee: I Can Text You A Pile of Poo, But I Can’t Write My Name   Picks I17n.rb - Intranumeralization (David) Patrick McKenzie: Falsehoods Programmers Believe About Names (David) Mogo Portable Active Office Chair (Sam) Richard Schneems: Saving Sprockets (Coraline) Calvino Noir (Coraline) ICU (Cameron) CLDR (Cameron) twitter-cldr-rb (Cameron) Hacknet (Cameron) Golden State Warriors (Cameron)

Ruby Rogues
267 RR Internationalization with Cameron Dutro

Ruby Rogues

Play Episode Listen Later Jul 6, 2016 61:38


02:39 - Cameron Dutro Introduction Twitter GitHub Lumosity 02:39 - Internationalization vs Localization 05:28 - How important is internationalization? 13:54 - Internationalization and Accessibility The Tragedy of the Commons Developer Ignorance/Indifference 19:43 - Tools Twitter Translation Center Rosette txgh Transifex 24:48 - How can small companies internationalize? 26:22 - Crowdsourcing Contributor Covenant 30:34 - People Have Names Patrick McKenzie: Falsehoods Programmers Believe About Names Falsehoods Programmers Believe About Phone Numbers Carina C. Zona: Schemas for the Real World @ RubyConf AU 2013 34:54 - Gender I18n, l10n, m10n: Abbreviations for Internationalization, Localization, and Minimization 39:35 - Educational Resources Rails Guides on Internationalization ICU - International Components for Unicode twitter-cldr-rb CLDR - Unicode Common Locale Data Repository 47:14 - Unicode Unicode Consortium Aditya Mukerjee: I Can Text You A Pile of Poo, But I Can’t Write My Name   Picks I17n.rb - Intranumeralization (David) Patrick McKenzie: Falsehoods Programmers Believe About Names (David) Mogo Portable Active Office Chair (Sam) Richard Schneems: Saving Sprockets (Coraline) Calvino Noir (Coraline) ICU (Cameron) CLDR (Cameron) twitter-cldr-rb (Cameron) Hacknet (Cameron) Golden State Warriors (Cameron)

All Ruby Podcasts by Devchat.tv
267 RR Internationalization with Cameron Dutro

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Jul 6, 2016 61:38


02:39 - Cameron Dutro Introduction Twitter GitHub Lumosity 02:39 - Internationalization vs Localization 05:28 - How important is internationalization? 13:54 - Internationalization and Accessibility The Tragedy of the Commons Developer Ignorance/Indifference 19:43 - Tools Twitter Translation Center Rosette txgh Transifex 24:48 - How can small companies internationalize? 26:22 - Crowdsourcing Contributor Covenant 30:34 - People Have Names Patrick McKenzie: Falsehoods Programmers Believe About Names Falsehoods Programmers Believe About Phone Numbers Carina C. Zona: Schemas for the Real World @ RubyConf AU 2013 34:54 - Gender I18n, l10n, m10n: Abbreviations for Internationalization, Localization, and Minimization 39:35 - Educational Resources Rails Guides on Internationalization ICU - International Components for Unicode twitter-cldr-rb CLDR - Unicode Common Locale Data Repository 47:14 - Unicode Unicode Consortium Aditya Mukerjee: I Can Text You A Pile of Poo, But I Can’t Write My Name   Picks I17n.rb - Intranumeralization (David) Patrick McKenzie: Falsehoods Programmers Believe About Names (David) Mogo Portable Active Office Chair (Sam) Richard Schneems: Saving Sprockets (Coraline) Calvino Noir (Coraline) ICU (Cameron) CLDR (Cameron) twitter-cldr-rb (Cameron) Hacknet (Cameron) Golden State Warriors (Cameron)

Angular Air
08 ngAir - i18n with Angular

Angular Air

Play Episode Listen Later Mar 31, 2015 69:40


Internationalization (generally referred to as i18n because that's frankly easier to tweet) is a big deal when the entire world can reach your application. Pascal, the creator of angular-translate and Chirayu, Angular core team member, have put a lot of time and effort into making applications accessible to anyone anywhere. And with some exciting things brewing for i18n in Angular, we're excited to invite Pascal and Chirayu to chat with us about what's coming.P.S. This show is on Pascal's birthday :-) There's a bit at the end that you can't hear very well, it's the Happy Birthday Song from Emperor's New GrooveLinks: angular-translateAngular Air is a video podcast all about Angular hosted by egghead.io instructor Kent C. Dodds. Please visit the Angular Air website (http://ng-air.github.io) to ask and vote on questions that will be answered during the last bit of the episode. Also be sure to follow @AngularAir on Twitter and Google+ to stay up to date with future episodes. Also, all episodes are on the YouTube channel as well (https://www.youtube.com/channel/UCdCOpvRk1lsBk26ePGDPLpQ). --- Support this podcast: https://anchor.fm/angularair/support

pascal angular dodds kent c dodds i18n chirayu angular air
Ruby NoName podcast
Ruby NoName Podcast S06E13

Ruby NoName podcast

Play Episode Listen Later Jul 4, 2014 22:44


Новости https://www.imperialviolet.org/2014/06/05/earlyccs.html http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.html Swift vs RubyMotion и предыстория Пост От создателя Rust Object Oriented Swift Git 2.0 RSPEC 3 transpec Rails 4.1.2rc2 Avoid Rails When Generating JSON responses with PostgreSQL Protocol Buffets Несколько советов для простого улучшения работы с I18n Кол-во npm-пакетов превысило кол-во гемов Выпустили Lotus целиком Новый Sidekiq Pro sidekiqlimitfetch OSXC для конфигурации Mac Про merge Rails и Merb Монады на руби pow + foreman А также выражаем благодарность Стасу Спиридонову за помощь с мастерингом этого выпуска.

RailsCasts (Mobile)
#338 Globalize3

RailsCasts (Mobile)

Play Episode Listen Later Apr 4, 2012 5:57


Rails has great internationalization (I18n) support making it easy to translate static text into other languages, but how do we translate database content? Learn how using Globalize 3 in this episode.

RailsCasts
#338 Globalize3

RailsCasts

Play Episode Listen Later Apr 4, 2012 5:57


Rails has great internationalization (I18n) support making it easy to translate static text into other languages, but how do we translate database content? Learn how using Globalize 3 in this episode.

RailsCasts (Mobile)
#336 Copycopter

RailsCasts (Mobile)

Play Episode Listen Later Mar 27, 2012 6:48


Copycopter provides a nice interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using Heroku and integrate it in a Rails application through I18n.

RailsCasts
#336 Copycopter

RailsCasts

Play Episode Listen Later Mar 27, 2012 6:48


Copycopter provides a nice interface that clients can use to edit the text in a Rails application. Learn how to deploy a Copycopter server using Heroku and integrate it in a Rails application through I18n.

RailsCasts
#256 I18n Backends

RailsCasts

Play Episode Listen Later Mar 7, 2011 11:11


Internationalization is easy to add in Rails, but the YAML files can be difficult to manage. In this episode I show how to use Redis for managing the translations through a web interface.

RailsCasts (Mobile)
#256 I18n Backends

RailsCasts (Mobile)

Play Episode Listen Later Mar 7, 2011 11:11


Internationalization is easy to add in Rails, but the YAML files can be difficult to manage. In this episode I show how to use Redis for managing the translations through a web interface.

Ruby Rogues
Rails I18n Manager with Weston Ganger - RUBY 586

Ruby Rogues

Play Episode Listen Later Jan 1, 1970 59:49


Weston Ganger is a Software Architect and an Expert in Ruby-on-Rails. He joins the show to discuss "rails_i18n_manager". He starts off by discussing his professional career and projects. He talks about translations, some of his approaches, and the challenges he encounteredSponsorsChuck's Resume TemplateDeveloper Book ClubBecome a Top 1% Dev with a Top End Devs MembershipLinksrails_i18n_managerSocialsWeston GangerGitHub: westongangerAdvertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy