POPULARITY
Patrick highlights the challenges students face today with technology like smartphones and AI affecting their learning and motivation. He discusses the importance of unity within the Catholic Church and addresses pro-life advocacy and the need for grassroots involvement. Patrick shares options for parents wanting a stronger educational foundation for their children, including homeschooling and resources like Kolbe Academy. Cardinal Fridolin Ambongo – “there is a gap between what is said in the media and reality” (00:56) Audio: Former Teacher Goes Viral: These Kids Don't Care…Cut Off AI (13:18) Alex - How do you recommend handling a Jehovah's Witness? I don’t want to argue with them. What do I do? (18:31) Congress to honor Pope Leo (28:38) Michael - LGBT companies like CVS and Walgreens provide abortion pills. Should we boycott them? (39:42) David - I don't see the rationale that Jehovah’s witnesses see Catholics as satanic. (43:08) Esther - What do you think about husbands doing homeschooling? (46:46)
In today's episode, Patrick explores enriching discussions, including strategies for raising children in faith despite a non-Catholic environment, the nuances of redemption versus salvation, and the role of AI in daily life. With heartfelt advice and real-life experiences, Patrick offers valuable insights, ensuring that listeners walk away with courage on their spiritual and personal journeys. Jillian - How do you help your kids love their faith (1:18) Alex - How can evolutionary theory be true if creation is subject to corruption through sin? (13:00) Cally - My son and his wife said they are willing to baptize their children for our sake, but not because they believe (22:37) Lane - I helped deliver a stillborn baby and baptized her. Was this baptism valid? (40:57) Patrick - What is the difference between redemption and salvation? (46:46)
Elva - As a Catholic, can I carry a concealed weapon? (03:22) Bruce - Can you explain more the connection of Demonology and mass shootings? (05:59) Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jennifer- My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? (11:56) Maria - What is the proper way to do the first 5 Saturday devotions? (18:38) Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? (22:58) Alex - How can I become a catechist for First communion? (29:56) What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins (26:31) Joseph - Is the Catholic Church against artificial insemination of farm animals? (41:14) Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? (42:23) Patrick recommends “The Lamb's Supper” by Scott Hahn
Special Guest Host Fr. Matthew Spencer tackles the question of sacramental marriages, takes a young listeners insightful question and talks with a young man who is discerning the priesthood. Cynthia - A priest told me I have a sacramental marriage even though you said I didn't have one last time I called. Could you clarify this for me? Marisol 8-years-old - Why does God love the devil? Alex - How did you become a priest? I am discerning myself. Why can deacons be married? Stacy - Can I go to a baby shower of a couple that is not married in the Church? James - I have a set of beads that has 1 Our Father, three Hail Mary's, in 12 sets and a medal of Saint Joseph on it. What kind of rosary is this? Carl - After communion, is it okay to sit down when Jesus is put back in the tabernacle? During the Our Father prayer, can we raise our hands? Matt - I run a parish ministry and some people in my group are having difficulties with Pope Francis. How can I talk with them about this?
Elva - As a Catholic, can I carry a concealed weapon? Bruce - Can you explain more the connection of Demonology and mass shootings? Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jesse - My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? Maria - What is the proper way to do the first 5 Saturday devotions? Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? Alex - How can I become a catechist for First communion? What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins Joseph - Is the Catholic Church against artificial insemination of farm animals? Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? Patrick recommends “The Lamb's Supper” by Scott Hahn
Encore Presentation from 7/8/22 Elva - As a Catholic, can I carry a concealed weapon? Bruce - Can you explain more the connection of Demonology and mass shootings? Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jesse - My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? Maria - What is the proper way to do the first 5 Saturday devotions? Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? Alex - How can I become a catechist for First communion? What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins Joseph - Is the Catholic Church against artificial insemination of farm animals? Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? Patrick recommends “The Lamb's Supper” by Scott Hahn
Elva - As a Catholic, can I carry a concealed weapon? Bruce - Can you explain more the connection of Demonology and mass shootings? Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jesse - My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? Maria - What is the proper way to do the first 5 Saturday devotions? Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? Alex - How can I become a catechist for First communion? What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins Joseph - Is the Catholic Church against artificial insemination of farm animals? Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? Patrick recommends “The Lamb's Supper” by Scott Hahn
Encore Presentation (from July 8th) Can Catholics carry concealed weapons? Elva - As a Catholic, can I carry a concealed weapon? Bruce - Can you explain more the connection of Demonology and mass shootings? Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jesse - My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? Maria - What is the proper way to do the first 5 Saturday devotions? Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? Alex - How can I become a catechist for First communion? What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins Joseph - Is the Catholic Church against artificial insemination of farm animals? Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? Patrick recommends “The Lamb's Supper” by Scott Hahn
Patrick answers listener questions about Sunday readings, how to pray the Rosary, how often should we go to confession, and how to explain to children the statement to “fear the Lord.” Elena - Is there a book that relates the readings on Sunday with each other? Patrick responds to an email asking how to best address God in a prayer Patrick responds to an email asking about the history of Mass Patrick recommends “How Christ Celebrated the First Mass” Bob - Regarding working on Sunday: My property got wrecked in Florida, so I needed to work on Sunday, and I am a CTA and sometimes I NEED to work on Sundays? Do I need to pray the Rosary in a particular way? Alex – How often should we go to confession? Sam - How were the guidelines for the mysteries made for the daily Rosary? Mark - Can I go to a wedding for lapsed Catholic. He was baptized and confirmed against his will. He has always been atheist, so he never wanted to be Catholic anyway. Can I participate in his wedding? Harold - Teachers, priests and music ministers are always busy on Sundays. How does that work with resting on Sundays? Carlos - Can you redo the confirmation sacrament in the Catholic Church? Christopher - My friend is a transgender. Are there resources I can give to her to help figure this out spiritually and medically? Sue - How can I explain the statement “'Fear of the Lord” to my Children?
Patrick gives advice on how to talk to adult children living in sin, what really happened to the demons after Jesus sent them into the swine, and if it's okay for Catholics to carry concealed weapons. Elva - As a Catholic, can I carry a concealed weapon? Bruce - Can you explain more the connection of Demonology and mass shootings? Patrick recommends “The Devil in the City of Angels: My Encounters with the Diabolical” by Jesse Romero Jesse - My daughter has been with a man for 6 years and moved in together for a year. The boyfriend is wanting to propose to her but they don't go to church. How can I talk to them about needing to get married in the church? Maria - What is the proper way to do the first 5 Saturday devotions? Elizabeth - My son is getting married. The parish is asking for 1,000 dollars to get married in the church, so they are going to get married outside the church. What should we do? Alex - How can I become a catechist for First communion? What happened to the Demons after they killed the swine that Jesus sent them in? Patrick answers an email about going to confession and not being able to have the time to confess all her sins Joseph - Is the Catholic Church against artificial insemination of farm animals? Darmen - At the last supper, weren't the Apostles wondering why there wasn't a lamb? Patrick recommends “The Lamb's Supper” by Scott Hahn
Intro Banter - This is the (mostly) unscripted intro to the show! We catch up, play games, talk about games that perhaps did not make the main show, and just gab, Welcome! First Impressions – We talk about the first time with a title, from the acquisition to the first look, to the first play and deliver thoughts on the show. Alex - Isle of cats Explore and Draw By Frank West Published by The City of Games Released in 2022 Larry - Bees The secret Kingdom By Kamil 'Sanex' Cieśla Published by Van Ryder Games Released in 2019 What's new - (Kickstarter) What's new with Us. Alex - Tiny Epic Vikings By Scott Almes Published by Gamelyn Games Released in 2023 Larry - Maglev Metro Maps By Ted Alspach Published by Bézier Games Released in 2023 The Reading Room - We talk about board game related books. Where to get them, why you should and of course our thoughts. Larry - Fail Faster Playtester Journal Alex - How to Create Your First Board Game (6th Edition) By Aaron Frias What's NEW(s) - We discuss current relevant news AND or new things to us in the boardgaming world! Viticulture World Announced and on the way. Hasbro purchases digital Toolset D&D Beyond from Awaken Realms (Via Dicebreaker) Digimon TCG is vibrant and well! BanDai is releasing a Once Piece TCG DC Deckbuilding game celebrates its 10th Anniversary! Links: Podstudio1 BGG Dicebreaker Some news this episode is linked from this site, be sure to check them out! Music: As always from the amazing community of gifted musicians, arrangers, and composers over at ocremix.org go visit and support them for the full project and so much more amazing music! Outro : De Nuit / by mv feat. Jeff Ball Original Track - The Phantom Forest Album - Final Fantasy VI: Balance and Ruin Project Page - Final Fantasy VI: Balance and Ruin | OC ReMix Content Group - Final Fantasy VI Original Copyright - Square Enix Original Composers - Nobuo Uematsu
Ask Austin Anything! In this episode Austin answers questions from listeners just like you. Get your question answered on a future Ask Austin Anything episode by submitting it to the link below.Time Stamped Show Notes:[0:25] - #AAA for November 2021[1:42] - Matt - When you started planning Cultivated Culture, what were some of the things you did to get started, for example, what was your process for creating/starting your website?[11:32] - Alex - How does an individual contributor move into a management role, whether internally or externally, with little to no experience?[17:55] - Gaurav - How do you increase visibility on LinkedIn so that more recruiters contact you during your job search?[22:31] - Tom - What quote has had the most impact on your personal life philosophy?[26:55] - Dennis - What's your favorite pizza and drink to go along with it?Have questions about your job search? Text them to Austin at (201) 479-9511.Ask Austin Anything:Click here to get your question answered on a future #AAA episodeShare Your Feedback:Want a free resume or LinkedIn profile review from Austin? Leave us a rating or review on iTunes to automatically be entered to win. We choose winners every week, click here to learn how to leave a review and enter to win.What should Austin talk about next? Ask a question or share your thoughts at CultivatedCulture.com/FeedbackConnect With Austin:Cultivated CultureLinkedInInstagramTry Austin's free Resume Builder, free Resume Scanner, and free Mailscoop email finder tool
Alexander Pugh is a software engineer at Albertsons. He has worked in Robotic Process Automation and the cognitive services industry for over five years.This episode originally aired on Software Engineering Radio.Related LinksAlexander Pugh's personal siteEnterprise RPA Solutions Automation Anywhere UiPath blueprism Enterprise "Low Code/No Code" API Solutions appian mulesoft Power Automate RPA and the OS Office primary interop assemblies Office Add-ins documentation Task Scheduler for developers The Component Object Model The Document Object Model TranscriptYou can help edit this transcript on GitHub.[00:00:00] Jeremy: Today, I'm talking to Alexander Pugh. He's a solutions architect with over five years of experience working on robotic process automation and cognitive services. Today, we're going to focus on robotic process automation. Alexander welcome to software engineering radio. [00:00:17] Alex: Thank you, Jeremy. It's really good to be here. [00:00:18] Jeremy: So what does robotic process automation actually mean? [00:00:23] Alex: Right. It's a, it's a very broad nebulous term. when we talk about robotic process automation, as a concept, we're talking about automating things that humans do in the way that they do them. So that's the robotic, an automation that is, um, done in the way a human does a thing.Um, and then process is that thing, um, that we're automating. And then automation is just saying, we're turning this into an automation where we're orchestrating this and automating this. and the best way to think about that in any other way is to think of a factory or a car assembly line. So initially when we went in and we, automated a car or factory, automation line, what they did is essentially they replicated the process as a human did it. So one day you had a human that would pick up a door and then put it on the car and bolt it on with their arms. And so the initial automations that we had on those factory lines were a robot arm that would pick up that door from the same place and put it on the car and bolt it on there.Um, so the same can be said for robotic process automation. We're essentially looking at these, processes that humans do, and we're replicating them, with an automation that does it in the same way. Um, and where we're doing that is the operating system. So robotic process automation is essentially going in and automating the operating system to perform tasks the same way a human would do them in an operating system.So that's, that's RPA in a nutshell, Jeremy: So when you say you're replicating something that a human would do, does it mean it has to go through some kind of GUI or some kind of user interface?[00:02:23] Alex: That's exactly right, actually. when we're talking about RPA and we look at a process that we want to automate with RPA, we say, okay. let's watch the human do it. Let's record that. Let's document the human process. And then let's use the RPA tool to replicate that exactly in that way.So go double click on Chrome, launch that click in the URL line and send key in www.cnn.com or what have you, or servicenow hit enter, wait for it to load and then click, you know, where you want to, you know, fill out your ticket for service. Now send key in. So that's exactly how an RPA solution at the most basic can be achieved.Now and any software engineer knows if you sit there and look over someone's shoulder and watch them use an operating system. Uh, you'll say, well, there's a lot of ways we can do this more efficiently without going over here, clicking that, you know, we can, use a lot of services that the operating system provides in a programmatic way to achieve the same ends and RPA solutions can also do that.The real key is making sure that it is still achieving something that the human does and that if the RPA solution goes away, a human can still achieve it. So if you're, trying to replace or replicate a process with RPA, you don't want to change that process so much so that a human can no longer achieve it as well.that's something where if you get a very technical, and very fluent software engineer, they lose sight of that because they say, oh, you know what? There's no reason why we need to go open a browser and go to you know, the service now portal and type this in when I can just directly send information to their backend.which a human could not replicate. Right? So that's kind of where the line gets fuzzy. How efficiently can we make this RPA solution? [00:04:32] Jeremy: I, I think a question that a lot of people are probably having is a lot of applications have APIs now. but what you're saying is that for it to, to be, I suppose, true RPA, it needs to be something that a user can do on their own and not something that the user can do by opening up dev tools or making a post to an end point.[00:04:57] Alex: Yeah. And so this, this is probably really important right now to talk about why RPA, right? Why would you do this when you could put on a server, a a really good, API ingestion point or trigger or a web hook that can do this stuff. So why would we, why would we ever pursue our RPA?There there's a lot of good reasons for it. RPA is very, very enticing to the business. RPA solutions and tools are marketed as a low code, no code solution for the business to utilize, to solve their processes that may not be solved by an enterprise solution and the in-between processes in a way.You have, uh, a big enterprise, finance solution that everyone uses for the finance needs of your business, but there are some things that it doesn't provide for that you have a person that's doing a lot of, and the business says, Okay. well, this thing, this human is doing this is really beneath their capability. We need to get a software solution for it, but our enterprise solution just can't account for it. So let's get a RPA capability in here. We can build it ourselves, and then there we go. So there, there are many reasons to do that. financial, IT might not have, um, the capability or the funding to actually build and solve the solution. Or it it's at a scale that is too small to open up, uh, an IT project to solve for. Um, so, you know, a team of five is just doing this and they're doing it for, you know, 20 hours a week, which is uh large, but in a big enterprise, that's not really. Maybe um, worth building an enterprise solution for it. or, and this is a big one. There are regulatory constraints and security constraints around being able to access this or communicate some data or information in a way that is non-human or programmatic. So that's really where, um, RPA is correctly and best applied and you'll see it most often.So what we're talking about there is in finance, in healthcare or in big companies where they're dealing with a lot of user data or customer data in a way. So when we talk about finance and healthcare, there are a lot of regulatory constraints and security reasons why you would not enable a programmatic solution to operate on your systems. You know, it's just too hard. We we're not going to expose our databases or our data to any other thing. It would, it would take a huge enterprise project to build out that capability, secure that capability and ensure it's going correctly. We just don't have the money the time or the strength honestly, to afford for it.So they say, well, we already have. a user pattern. We already allow users to, to talk to this information and communicate this information. Let's get an RPA tool, which for all intents and purposes will be acting as a user. And then it can just automate that process without us exposing to queries or any other thing, an enterprise solution or programmatic, um, solution.So that's really why RPA, where and why you, you would apply it is there's, there's just no capability at enterprise for one reason or another to solve for it. [00:08:47] Jeremy: as software engineers, when we see this kind of problem, our first thought is, okay, let's, let's build this custom application or workflow. That's going to talk to all these API APIs. And, and what it sounds like is. In a lot of cases there just isn't the time there just isn't the money, to put in the effort to do that.And, it also sounds like this is a way of being able to automate that. and maybe introducing less risk because you're going through the same, security, the same workflow that people are doing currently. So, you know, you're not going to get into things that they're not supposed to be able to get into because all of that's already put in place.[00:09:36] Alex: Correct. And it's an already accepted pattern and it's kind of odd to apply that kind of very IT software engineer term to a human user, but a human user is a pattern in software engineering. We have patterns that do this and that, and, you know, databases and not, and then the user journey or the user permissions and security and all that is a pattern.And that is accepted by default when you're building these enterprise applications okay.What's the user pattern. And so since that's already established and well-known, and all the hopefully, you know, walls are built around that to enable it to correctly do what it needs to do. It's saying, Okay. we've already established that. Let's just use that instead of. You know, building a programmatic solution where we have to go and find, do we already have an appropriate pattern to apply to it? Can we build it in safe way? And then can we support it? You know, all of a sudden we, you know, we have the support teams that, you know, watch our Splunk dashboards and make sure nothing's going down with our big enterprise application.And then you're going to build a, another capability. Okay. WHere's that support going to come from? And now we got to talk about change access boards, user acceptance testing and, uh, you know, UAT dev production environments and all that. So it becomes, untenable, depending on your, your organization to, to do that for things that might fall into a place that is, it doesn't justify the scale that needs to be thrown upon it.But when we talk about something like APIs and API exist, um, for a lot of things, they don't exist for everything. And, a lot of times that's for legacy databases, that's for mainframe capability. And this is really where RPA shines and is correctly applied. And especially in big businesses are highly regulated businesses where they can't upgrade to the newest thing, or they can't throw something to the cloud.They have a, you know, their mainframe systems or they have their database systems that have to exist for one reason or the other until there is the motivation and the money and the time to correctly migrate and, and solve for them. So until that day, and again, there's no, API to, to do anything on a, on a mainframe, in this bank or whatnot, it's like, well, Okay. let's just throw RPA on it.Let's, you know, let's have a RPA do this thing, uh, in the way that a human does it, but it can do it 24 7. and an example, or use cases, you work at a bank and, uh, there's no way that InfoSec is going to let you query against this database with, your users that have this account or your customers that have this no way in any organization at a bank.Is InfoSec going to say, oh yeah. sure. Let me give you an Odata query, you know, driver on, you know, and you can just set up your own SQL queries and do whatever they're gonna say no way. In fact, how did you find out about this database in the first place and who are you.How do we solve it? We, we go and say, Okay. how does the user get in here well they open up a mainframe emulator on their desktop, which shows them the mainframe. And then they go in, they click here and they put this number in there, and then they look up this customer and then they switch this value to that value and they say, save.And it's like, okay. cool. That's that RPA can do. And we can do that quite easily. And we don't need to talk about APIs and we don't need to talk about special access or doing queries that makes, you know, Infosec very scared. you know, a great use case for that is, you know, a bank say they, they acquire, uh, a regional bank and they say, cool, you're now part of our bank, but in your systems that are now going to be a part of our systems, you have users that have this value, whereas in our bank, that value is this value here. So now we have to go and change for 30,000 customers this one field to make it line up with our systems. Traditionally you would get a, you know, extract, transform load tool an ETL tool to kind of do that. But for 30,000 customers that might be below the threshold, and this is banking. So it's very regulated and you have to be very, very. Intentional about how you manipulate and move data around.So what do we have to do? okay. We have to hire 10 contractors for six months, and literally what they're going to do eight hours a day is go into the mainframe through the simulator and customer by customer. They're going to go change this value and hit save. And they're looking at an Excel spreadsheet that tells them what customer to go into.And that's going to cost X amount of money and X, you know, for six months, or what we could do is just build a RPA solution, a bot, essentially that goes, and for each line of that Excel spreadsheet, it repeats this one process, open up mainframe emulator, navigate into the customer profile and then changes value, and then shut down and repeat.And It can do that in one week and, and can be built in two, that's the, the dream use case for RPA and that's really kind of, uh, where it would shine.[00:15:20] Jeremy: It sounds like the. best use case for it is an old system, a mainframe system, in COBOL maybe, uh, doesn't have an API. And so, uh, it makes sense to rather than go, okay, how can we get directly into the database?[00:15:38] Alex: How can we build on top of it? Yeah,[00:15:40] Jeremy: we build on top of it? Let's just go through the, user interface that exists, but just automate that process. And, the, you know, the example you gave, it sounds very, very well-defined you're gonna log in and you're going to put in maybe this ID, here's the fields you want to get back.and you're going to save those and you didn't have to make any real decisions, I suppose, in, in terms of, do I need to click this thing or this thing it's always going to be the same path to, to get there.[00:16:12] Alex: exactly. And that's really, you need to be disciplined about your use cases and what those look like. And you can broadly say a use case that I am going to accept has these features, and one of the best ways to do that is say it has to be a binary decision process, which means there is no, dynamic or interpreted decision that needs to, or information that needs to be made.Exactly like that use case it's very binary either is, or it isn't you go in you journey into there. and you change that one thing and that's it there's no oh, well this information says this, which means, and then I have to go do this. Once you start getting in those if else, uh, processes you're, you're going down a rabbit hole and it could get very shaky and that introduces extreme instability in what you're trying to do.And also really expands your development time cause you have to capture these processes and you have to say, okay. tell me exactly what we need to build this bot to do. And for, binary decision processes, that's easy go in here, do this, but nine times out of 10, as you're trying to address this and solution for it, you'll find those uncertainties.You'll find these things where the business says, oh, well, yeah. that happens, you know, one times out of 10 and this is what we need to do. And it's like, well, that's going to break the bot. It, you know, nine times out of 10, this, this spot is going to fall over. this is now where we start getting into, the machine learning and AI, realm.And why RPA, is classified. Uh, sometimes as a subset of the AI or machine learning field, or is a, a pattern within that field is because now that you have this bot or this software that enables you to do a human process, let's enable that bot to now do decision-making processes where it can interpret something and then do something else.Because while we can just do a big tree to kind of address every capability, you're never going to be able to do that. And also it's, it's just a really heavy, bad way to build things. So instead let's throw in some machine learning capability where it just can understand what to do and that's, you know, that's the next level of RPA application is Okay. we've got it. We've, we've gone throughout our organization. We found every kind of binary thing, that can be replaced with an RPA bot. Okay.Now what are the ones that we said we couldn't do? Because it had some of that decision-making that, required too much of a dynamic, uh, intelligence behind it. And let's see if we can address those now that we have this. And so that's, that's the 2.0, in RPA is addressing those non-binary, paths. I would argue that especially in organizations that are big enough to justify bringing in an RPA solution to solve for their processes. They have enough binary processes, binary decision processes to keep them busy.Some people, kind of get caught up in trying to right out the gate, say, we need to throw some machine learning. We need to make these bots really capable instead of just saying, well, we we've got plenty of work, just changing the binary processes or addressing those. Let's just be disciplined and take that, approach.Uh, I will say towards RPA and bots, the best solution or the only solution. When you talk about building a bot is the one that you eventually turn off. So you can say, I built a bot that will go into our mainframe system and update this value. And, uh, that's successful.I would argue that's not successful. When that bot is successful is when you can turn it off because there's an enterprise solution that addresses it. and, and you don't have to have this RPA bot that lives over here and does it instead, you're enterprise, capability now affords for it. And so that's really, I think a successful bot or a successful RPA solution is you've been able to take away the pain point or that human process until it can be correctly addressed by your systems that everyone uses. [00:21:01] Jeremy: from, the business perspective, you know, what are some of the limitations or long-term problems with, with leaving an RPA solution in place?[00:21:12] Alex: that's a, that's a good question. Uh, from the business there, isn't, it's solved for. leaving it in place is other than just servicing it and supporting it. There's no real issue there, especially if it's an internal system, like a mainframe, you guys own that. If it changes, you'll know it, if it changes it's probably being fixed or addressed.So there's no, problem. However, That's not the only application for RPA. let's talk about another use case here, your organization, uses, a bank and you don't have an internal way to communicate it. Your user literally has to go to the bank's website, log in and see information that the bank is saying, Hey, this is your stuff, right?The bank doesn't have an API for their, that service. because that would be scary for the bank. They say, we don't want to expose this to another service. So the human has to go in there, log in, look at maybe a PDF and download it and say, oh, Okay.So that is happens in a browser. So it's a newer technology.This isn't our mainframe built in 1980. You know, browser based it's in the internet and all that, but that's still a valid RPA application, right? It's a human process. There's no API, there's no easy programmatic way to, to solution for it. It would require the bank and your it team to get together and, you know, hate each other. Think about why this, this is so hard. So let's just throw a bot on it. That's going to go and log in, download this thing from the bank's website and then send it over to someone else. And it's going to do that all day. Every day. That's a valid application. And then tomorrow the bank changes its logo. And now my bot is it's confused.Stuff has shifted on the page. It doesn't know where to click anymore. So you have to go in and update that bot because sure enough, that bank's not going to send out an email to you and saying, Hey, by the way, we're upgrading our website in two weeks. Not going to happen, you'll know after it's happened.So that's where you're going to have to upgrade the bot. and that's the indefinite use of RPA is going to have to keep until someone else decides to upgrade their systems and provide for a programmatic solution that is completely outside the, uh, capability of the organization to change. And so that's where the business would say, we need this indefinitely.It's not up to us. And so that is an indefinite solution that would be valid. Right? You can keep that going for 10 years as long, I would say you probably need to get a bank that maybe meets your business needs a little easier, but it's valid. And that would be a good way for the business to say yes, this needs to keep running forever until it doesn't.[00:24:01] Jeremy: you, you brought up the case of where the webpage changes and the bot doesn't work anymore. specifically, you're, you're giving the example of finance and I feel like it would be basically catastrophic if the bot is moving money to somewhere, it shouldn't be moving because the UI has moved around or the buttons not where it expects it to be.And I'm kind of curious what your experience has been with that sort of thing.[00:24:27] Alex: you need to set organizational thresholds and say, this is this something this impacting or something that could go this wrong. It is not acceptable for us to solve with RPA, even though we could do it, it's just not worth it. Some organizations say that's anything that touches customer data healthcare and banking specialists say, yeah, we have a human process where the human will go and issue refunds to a customer, uh, and that could easily be done via RPA solution, but it's fraught with, what, if it does something wrong, it's literally going to impact.Uh, someone somewhere they're their moneys or their, their security or something like that. So that, that definitely should be part of your evaluation. And, um, as an organization, you should set that up early and stick to it and say, Nope, this is outside our purview. Even we can do it. It has these things.So I guess the answer to that is you should never get to that process, but now we're going to talk about, I guess, the actual nuts and bolts of how RPA solutions work and how they can be made to not action upon stuff when it changes or if it does so RPA software, by and large operates by exposing the operating system or the browsers underlying models and interpreting them.Right. So when we talk about something like a, mainframe emulator, you have your RPA software on Microsoft windows. It's going to use the COM the component operating model, to see what is on the screen, what is on that emulator, and it's gonna expose those objects. to the software and say, you can pick these things and click on that and do that.when we're talking about browser, what the RPA software is looking at is not only the COM the, the component object model there, which is the browser, itself. But then it's also looking at the DOM the document object model that is the webpage that is being served through the browser. And it's exposing that and saying, these are the things that you can touch or, operate on.And so when you're building your bots, what you want to make sure is that the uniqueness of the thing that you're trying to access is something that is truly unique. And if it changes that one thing that the bot is looking for will not change. So we let's, let's go back to the, the banking website, right?We go in and we launch the browser and the bot is sitting there waiting for the operating system to say, this process is running, which is what you wanted to launch. And it is in this state, you know, the bot says, okay. I'm expecting this kind of COM to exist. I see it does exist. It's this process, and it has this kind of name and cool Chrome is running. Okay. Let's go to this website. And after I've typed this in, I'm going to wait and look at the DOM and wait for it to return this expected a webpage name, but they could change their webpage name, the title of it, right. They can say, one day can say, hello, welcome to this bank. And the next day it says bank website, all of a sudden your bot breaks it no longer is finding what it was told to expect.So you want to find something unique that will never change with that conceivably. And so you find that one thing on the DOM on the banking website, it's, you know, this element or this tag said, okay, there's no way they're changing that. And so it says cool the page is loaded. Now click on this field, which is log in.Okay. You want to find something unique on that field that won't change when they upgrade, you know, from bootstrap to this kind of, you know, UI framework. that's all well, and good. That's what we call the happy path. It's doing this perfectly. Now you need to define what it should do when it doesn't find these things, which is not keep going or find similar it's it needs to fail fast and gracefully and pass on that failure to someone and not keep going. And that's kind of how we prevent that scary use case where it's like. okay. it's gone in, it's logged into the bank website now it's transactioning, bad things to bad places that we didn't program it for it, Well you unfortunately did not specify in a detailed enough way what it needs to look for.And if it doesn't find that it needs to break, instead of saying that this is close enough. And so, in all things, software engineering, it's that specificity, it's that detail, that you need to hook onto. And that's also where, when we talk about this being a low-code no-code solutions that sometimes RPA is marketed to the business.It's just so often not the case, because yes. It might provide a very user, business, friendly interface for you to build bots. But the knowledge you need to be able to ensure stability and accuracy, um, to build the bots is, is a familiarity that's probably not going to be had in the business. It's going to be had by a developer who knows what the DOM and COM are and how the operating system exposes services and processes and how.JavaScript, especially when we're talking about single page apps and react where you do have this very reactive DOM, that's going to change. You need to be fluent with that and know, not only how HTML tags work and how CSS will change stuff on you in classes, but also how clicking on something on a single page app is as simple as a username input field will dynamically change that whole DOM and you need to account for it. so, it is it's, traditionally not as easy as saying, oh, the business person can just click, click, click, click, and then we have a bot. You'll have a bot, but it's probably going to be break breaking quite often. It's going to be inaccurate in its execution.this is a business friendly user-friendly non-technical tool. And I launch it and it says, what do you want to do? And it says, let me record what you're going to do. And you say, cool.And then you go about you open up Chrome and you type in the browser, and then you click here, click there, hit send, and then you stop recording. The tool says, cool, this is what you've done. Well, I have yet to see a, a solution that is that isn't able to not need further direction or, or defining on that process, You still should need to go in there and say, okay, yeah.you recorded this correctly, but you know, you're not interpreting correctly or as accurate as you need to that field that I clicked on.And if you know, anybody hits, you know, F12 on their keyboard while they have Chrome open and they see how the DOM is built, especially if this is using kind of any kind of template, Webpage software. It's going to have a lot of cruft in that HTML. So while yes, the recording did correctly see that you clicked on the input box.What it's actually seen is that you actually clicked on the div. That is four levels scoped above it, whereas the parent, and there are other things within that as well. And so the software could be correctly clicking on that later, but other things could be in there and you're going to get some instability.So the human or the business, um, bot builder, the roboticist, I guess, would need to say, okay, listen, we need to pare this down, but it's, it's even beyond that. There are concepts that you can't get around when building bots that are unique to software engineering as a concept. And even though they're very basic, it's still sometimes hard for the business user to, they felt to learn that.And I I'm talking concepts as simple as for loops or loops in general where the business of course has, has knowledge of what we would call a loop, but they wouldn't call it a loop and it's not as accurately defined. So they have to learn that. And it's not as easy as just saying, oh Yeah.do a loop. And the business will say, well, what's a loop.Like I know, you know, conceptually what a loop could be like a loop in my, when I'm tying my shoe. But when you're talking about loop, that's a very specific thing in software and what you can do. And when you shouldn't do it, and that's something that these, no matter how good your low code, no code solution might be, it's going to have to afford for that concept.And so a business user is still going to have to have some lower level capability to apply those concepts. And, and I I've yet to see anybody be able to get around that in their RPA solutions.[00:33:42] Jeremy: So in your experience, even though these vendors may sell it as being a tool that anybody can just sit down and use but then you would want a developer to, to sit with them or, or see the result and, and try and figure out, okay, what do you, what do you really want this, this code to do?Um, not just sort of these broad strokes that you were hoping the tool was gonna take care of for you? Yeah.[00:34:06] Alex: that that's exactly right. And that's how every organization will come to that realization pretty quickly. the head of the game ones have said, okay, we need to have a really good, um, COE structure to this robotic operating model where we can have, a software engineering, developer capability that sits with the business, capability.And they can, marry with each other, other businesses who may take, um, these vendors at their word and say, it's a low code meant for business. It just needs to make sure it's on and accessible. And then our business people are just gonna, uh, go in there and do this. They find out pretty quickly that they need some technical, um, guidance to go in because they're building unstable or inaccurate bots.and whether they come to that sooner or later, they, they always come to that. Um, and they realize that, okay, there there's a technical capability And, this is not just RPA. This is the story of all low-code no-code solutions that have ever existed. It always comes around that, while this is a great interface for doing that, and it's very easy and it makes concepts easy.Every single time, there is a technical capability that needs to be afforded. [00:35:26] Jeremy: For the. The web browser, you mentioned the DOM, which is how we typically interact with applications there. But for native applications, you, you briefly mentioned, COM. And I was wondering when someone is writing, um, you know, a bot, uh, what are the sorts of things they see, or what are the primitives they're working with?Like, is there a name attached to each button, each text, field, [00:35:54] Alex: wouldn't that be a great world to live in, so there's not. And, and, as we build things in the DOM. People get a lot better. We've seen people are getting much better about using uniqueness when they build those things so that they can latch onto when things were built or built for the COM or, you know, a .NET for OS that might, that was not no one no one was like oh yeah, we're going to automate this.Or, you know, we need to make this so that this button here is going to be unique from that button over there on the COM they didn't care, you know, different name. Um, so yeah, that is, that is sometimes a big issue when you're using, uh, an RPA solution, you say, okay. cool. Look at this, your calculator app. And Okay. it's showing me the component object model that this was built. It that's describing what is looking at, but none of these nodes have, have a name. They're all, you know, node one node, 1.1 node two, or, or whatnot, or button is just button and there's no uniqueness around it. And that is, you see a lot of that in legacy older software, um, E legacy is things built in 2005, 2010.Um, you do see that, and that's the difficulty at that point. You can still solve for this, but what you're doing is you're using send keys. So instead of saying, Okay.RPA software, open up this, uh, application and then look for. You know, thing, this object in the COM and click on it, it's going to, you know, it can't, there is no uniqueness.So what you say is just open up the software and then just hit tab three times, and that should get you to this one place that was not unique, but we know if you hit tab three times, it's going to get there now. That's all well and good, but there's so many things that could interfere with that and break it.And the there's no context for the bot to grab onto, to verify, Okay. I am there. So any one thing, you could have a pop-up which essentially hijacks your send key, right? And so the bot yes, absolutely hit tab three times and it should be in that one place. It thinks it is, and it hits in enter, but in between the first and second tab, a pop-up happened and now it's latched onto this other process, hits enter. And all of a sudden outlook's opening bot doesn't know that, but it's still going on and it's going to enter in some financial information into oops, an email that it launched because it thought hitting enter again would do so. Yeah.That's, that's where you get that instability. Um, there are other ways around it or other solutions.and this is where we get into the you're using, um, lower level software engineering solutioning instead of doing it exactly how the user does it. When we're talking about the operating system and windows, there are a ton of interop services and assemblies that a, uh, RPA solution can access.So instead of cracking open Excel, double-clicking on Excel workbook waiting for it to load, and then reading the information and putting information in, you can use the, you know, the office 365 or whatnot that, um, interop service assembly and say, Hey, launch this workbook without the UI, showing it, attach to that process that, you know, it is.And then just send to it, using that assembly send information into it. And the human user can't do that. It can't manipulate stuff like that, but the bot can, and it it's the same end as the human users trying. And it's much more efficient and stable because the UI couldn't afford for that kind of stability.So that would be a valid solution. But at that point, you're really migrating into a software engineering, it developer solution of something that you were trying not to do that for. So when is that? Why, you know, why not just go and solve for it with an enterprise or programmatic solution in the first place?So that's the balance. [00:40:18] Jeremy: earlier you're talking about the RPA needs to be something that, uh, that the person is able to do. And it sounds like in this case, I guess there still is a way for the person to do it. They can open up the, the Excel sheet and right it's just that the way the, the RPA tool is doing it is different. Yeah.[00:40:38] Alex: Right. And more efficient and more stable. Certainly. Uh, especially when we're talking about Excel, you have an Excel with, you know, 200,000 lines, just opening that that's, that's your day, that's going to Excel it, just going to take its time opening and visualizing that information for you. Whereas you, you know, an RPA solution doesn't even need to crack that open.Uh, it can just send data right directly to that workbook and it that's a valid solution. And again, some of these processes, it might be just two people at your organization that are essentially doing it. So it's, you know, you don't really, it's not at a threshold where you need an enterprise solution for it, but they're spending 30 minutes of their day just waiting for that Excel workbook to open and then manipulating the data and saving it.And then, oh, their computer crashed. So you can do an RPA solution. It's going to be, um, to essentially build for a more efficient way of doing it. And that would be using the programmatic solution, but you're right. It is doing it in a way that a human could not achieve it. Um, and that again is. The where the discipline and the organizational, aspect of this comes in where it's saying, is that acceptable?Is it okay to have it do things in this way, that are not human, but achieving the same ends. And if you're not disciplined that creeps, and all of a sudden you have a RPA solution that is doing things in a way that where the whole reason to bring that RPA solution is to not have something that did something like that. And that's usually where the stuff falls apart. IT all of a sudden perks their head up and says, wait, I have a lot of connections coming in from this one computer doing stuff very quickly with a, you know, a SQL query. It's like, what is going on? And so all of a sudden, someone built a bot to essentially do a programmatic connection.And it is like, you should not be who gave you this permissions who did this shut down everything that is RPA here until we figure out what you guys went and did. So that's, that's the dance. [00:42:55] Jeremy: it's almost like there's this hidden API or there's this API that you're not intended to use. but in the process of trying to automate this thing, you, you use it and then if your, IT is not aware of it, then things just kind of spiral out of control.[00:43:10] Alex: Exactly. Right. So let's, you know, a use case of that would be, um, we need to get California tax information on alcohol sales. We need to see what each county taxes for alcohol to apply to something. And so today the human users, they go into the California, you know, tobacco, wildlife, whatever website, and they go look up stuff and okay, let's, that's, that's very arduous.Let's throw a bot on that. Let's have a bot do that. Well, the bot developers, smart person knows their way around Google and they find out, well, California has an API for that. instead of the bot cracking open Chrome, it's just going to send this rest API call and it's going to get information back and that's awesome and accurate and way better than anything. but now all of a sudden IT sees connections going in and out. all of a sudden it's doing very quickly and it's getting information coming into your systems in a way that you did not know was going to be, uh, happening. And so while it was all well and good, it's, it's a good way for, the people whose job it is to protect yourself or know about these things, to get very, um, angry, rightly so that this is happening.that's an organizational challenge, uh, and it's an oversight challenge and it's a, it's a developer challenge because, what you're getting into is the problems with having too technical people build these RPA bots, right? So on one hand we have business people who are told, Hey, just crack this thing open and build it.And it's like, well, they don't have enough technical fluency to actually build a stable bot because they're just taking it at face value. Um, on the other hand, you have software engineers or developers that are very technical that say, oh, this process. Yeah. Okay. I can build a bot for that. But what if I used, you know, these interop services, assemblies that Microsoft gives me and I can access it like that.And then I can send an API call over here. And while I'm at it, I'm going to, you know, I'm just going to spin up a server just on this one computer that can do this. When the bot talks to it. And so you have the opposite problem. Now you have something that is just not at all RPA, it's just using the tool to, uh, you know, manipulate stuff, programmatically.[00:45:35] Jeremy: so, as a part of all this, is using the same credentials as a real user, right. You're you're logging in with a username and password. if the form requires something like two factor authentication or, you know, or something like that, like, how does that work since it's not an actual person?[00:45:55] Alex: Right. So in a perfect world, you're correct. Um, a bot is a user. I know a lot of times you'll hear, say, people will be like, oh, hi, I have 20 RPA bots. What they're usually saying is I have 20 automations that are being run for separate processes, with one user's credentials, uh, on a VDI. So you're right.They, they are using a user's credentials with the same permissions that any user that does that process has, that's why it's easy. but now we have these concepts, like two factor authentication, which every organization is using that should require something that exists outside of that bot users environment. And so how do you afford for that in a perfect world? It would be a service account, not a user account and service accounts are governed a little differently. A lot of times service accounts, um, have much more stringent rules, but also allow for things like password resets, not a thing, um, or two factor authentication is not a thing for those.So that would be the perfect solution, but now you're dragging in IT. Um, so, you know, if you're not structurally set up for that, that's going to be a long slog. Uh, so what would want to do some people actually literally have a, we'll have a business person that has their two factor auth for that bot user on their phone.And then just, you know, they'll just go in and say, yeah.that's me. that's untenable. So, um, sometimes what a lot of these, like Microsoft, for instance, allow you to do is to install a two factor authentication, application, um, on your desktop so that when you go to log in a website and says, Hey, type in your password.Cool. Okay. Give me that code. That's on your two factor auth app. The bot can actually launch that. Copy the code and paste it in there and be on its way. But you're right now, you're having to afford for things that aren't really part of the process you're trying to automate. They are the incidentals that also happen.And so you have to build your bot to afford for those things and interpret, oh, I need to do two factor authentication. And a lot of times, especially if you have an entirely business focused PA um, robotic operating model, they will forget about those things or find ways around them that the bot isn't addressing, like having that authenticator app on their phone.that's, um, stuff that definitely needs to be addressed. And sometimes is only, found at runtime like, oh, it's asking for login. And when I developed it, I didn't need to do that because I had, you know, the cookie that said you're good for 30 days, but now, oh, no. [00:48:47] Jeremy: yeah. You could have two factor. Um, you could have, it asking you to check your email for a code. There could be a fraud warning. There's like all sorts of, you know, failure cases that can happen. [00:48:58] Alex: exactly. And those things are when we talk about, uh, third-party vendors, um, third-party provider vendors, like going back to the banking website, if you don't tell them that you're going to be using a bot to get their information or to interface with that website, you're setting yourself up for a bad time because they're going to see that kind of at runtime behavior that is not possible at scale by user.And so you run into that issue at runtime, but then you're correct. There are other things that you might run into at runtime that are not again, part of the process, the business didn't think that that was part of the process. It's just something they do that actually the bot has to afford for. that's part of the journey, uh, in building these. [00:49:57] Jeremy: when you're, when you're building these, these bots, what are the types of tools that, that you've used in the past? Are these commercial, packages, are these open source? Like what, what does that ecosystem look like?[00:50:11] Alex: Yeah, in this space, we have three big ones, which is, uh, automation anywhere UI path and, blue prism. Those are the RPA juggernauts providing this software to the companies that need it. And then you have smaller ones that are, trying to get in there, or provide stuff in a little different way. and you even have now, big juggernauts that are trying to provide for it, like Microsoft with something like power automate desktop.So all of these, say three years ago, all of these softwares existed or all of these RPA solution softwares existed or operated in the same kind of way, where you would install it on your desktop. And it would provide you a studio to either record or define, uh, originally the process that was going to be automated on that desktop when you pushed play and they all kind of expose or operate in the same way they would interpret the COM or the DOM that the operating system provided. Things like task scheduler have traditionally, uh, exposed, uh, and they all kind of did that in the same way. Their value proposition in their software was the orchestration capability and the management of that.So I build a bot to do this, Jim over there built a bot to do that. Okay. This RPA software, not only enabled you to define those processes, But what their real value was is they enable a place where I can say this needs to run at this time on this computer.And it needs to, you know, I need to be able to monitor it and it needs to return information and all that kind of orchestration capability. Now all of these RPA solutions actually exist in that, like everything else in the browser. So instead of installing, you know, the application and launching it and, and whatnot, and the orchestration capability being installed on another computer that looked at these computers and ran stuff on them.Now it's, it's all in the cloud as it were, and they are in the browser. So I go to. Wherever my RPA solution is in my browser. And then it says, okay, cool. You, you still need to install something on the desktop where you want the spot to run and it deploys it there. But I define and build my process in the provided browser studio.And then we're going to give you a capability to orchestrate, monitor, and, uh, receive information on those things that you have, those bots that you have running, and then what they're now providing as well is the ability to tie in other services to your bot so that it has expanded capability. So I'm using automation anywhere and I built my bot and it's going, and it's doing this or that.And automation anywhere says, Hey, that's cool. Wouldn't you like your bot to be able to do OCR? Well, we don't have our own OCR engine, but you probably as an enterprise do. Just use, you know, use your Kofax OCR engine or Hey, if you're really a high speed, why don't you use your Azure cognitive services capability?We'll tie it right into our software. And so when you're building your bot, instead of just cracking open a PDF and send key control C and key control V to do stuff instead, we'll use your OCR engine that you've already paid for to, to understand stuff. And so that's, how they expand, what they're offering, um, into addressing more and more capabilities.[00:53:57] Alex: But now we're, we're migrating into a territory where it's like, well, things have APIs why even build a bot for them. You know, you can just build a program that uses the API and the user can drive this. And so that's where people kind of get stuck. It's they they're using RPA on a, something that just as easily provides for a programmatic solution as opposed to an RPA solution.but because they're in their RPA mode and they say, we can use a bot for everything, they don't even stop and investigate and say, Hey, wouldn't this be just as easy to generate a react app and let a user use this because it has an API and IT can just as easily monitor and support that because it's in an Azure resource bucket.that's where an organization needs to be. Clear-eyed and say, Okay. at this point RPA is not the actual solution. We can do this just as easy over here and let's pursue that. [00:54:57] Jeremy: the experience of making these RPAs. It sounds like you have this browser-based IDE, there's probably some kind of drag and drop set up, and then you, you, you mentioned JavaScript. So I suppose, does that mean you can kind of dive a little bit deeper and if you want to set up specific rules or loops, you're actually writing that in JavaScript.[00:55:18] Alex: Yeah. So not, not necessarily. So, again, the business does not know what an IDE is. It's a studio. Um,so that's, but you're correct. It's, it's an IDE. Um, each, whether we're talking about blue prism or UiPath or automation anywhere, they all have a different flavor of what that looks like and what they enable.Um, traditionally blue prism gave you, uh, a studio that was more shape based where you are using UML shapes to define or describe your process. And then there you are, whereas automation anywhere traditionally used, uh, essentially lines or descriptors. So I say, Hey, I want to open this file. And your studio would just show a line that said open file.You know, um, although they do now, all of them have a shape based way to define your process. Go here, here. You know, here's a circle which represents this. Uh, let's do that. Um, or a way for you to kind of more, um, creatively define it in a, like a text-based way. When we talk about Java script, um, or anything like that, they provide predefined actions, all of them saying, I want to open a file or execute this that you can do, but all of them as well, at least last time I checked also allow you for a way to say, I want to programmatically run something I want to define.And since they're all in the browser, it is, uh, you know, Javascript that you're going to be saying, Hey, run this, this JavaScript, run this function. Um, previously, uh, things like automation anywhere would, uh, let you write stuff in, in .NET essentially to do that capability. But again, now everything's in the browser.So yeah, they do, They do provide for a capability to introduce more low level capability to your automation. That can get dangerous. Uh, it can be powerful and it can be stabilizing, but it can be a very slippery slope where you have an RPA solution bot that does the thing. But really all it does is it starts up and then executes code that you built.[00:57:39] Alex: Like what, what was the, the point in the first place? [00:57:43] Jeremy: Yeah. And I suppose at that point, then anybody who knows how to use the RPA tool, but isn't familiar with that code you wrote, they're just, they can't maintain it [00:57:54] Alex: you have business continuity and this goes back to our, it has to be replicable or close as close to the human process, as you can make. Because that's going to be the easiest to inherit and support. That's one of the great things about it. Whereas if you're a low level programmer, a dev who says, I can easily do this with a couple of lines of, you know, dot net or, you know, TypeScript or whatever.And so the bot just starts up in executes. Well, unless someone that is just as proficient comes along later and says, this is why it's breaking you now have an unsupportable business, solution. that's bad Juju. [00:58:38] Jeremy: you have the software engineers who they want to write code. then you have the people who are either in business or in IT that go, I don't want to look at your code.I don't want to have to maintain it. Yeah. So it's like you almost, if you're a software engineer coming in, you almost have to fight that urge to, to write anything yourself and figure out, okay, what can I do with the tool set and only go to code if I can't do it any other way.[00:59:07] Alex: That's correct. And that's the, it takes discipline. more often than not, not as fun as writing the code where you're like, I can do this. And this is really where the wheels come off is. You went to the business that is that I have this process, very simple. I need to do this and you say, cool, I can do that.And then you're sitting there writing code and you're like, but you know what? I know what they really want to do. And I can write that now. And so you've changed the process and while it is, and nine times out of 10, the business will be like, oh, that's actually what we wanted. The human process was just as close as we could get nothing else, but you're right.That's, that's exactly what we needed. Thank you nine times out of 10. They'll love you for that. But now you own their process. Now you're the one that defined it. You have to do the business continuity. You have to document it. And when it falls over, you have to pick it back up and you have to retrain.And unless you have an organizational capacity to say, okay, I've gone in and changed your process. I didn't automate it. I changed it. Now I have to go in and tell you how I changed it and how you can do it. And so that, unless you have built your robotic operating model and your, your team to afford for that, your developer could be writing checks bigger than they can cash.Even though this is a better capability. [01:00:30] Jeremy: you, you sort of touched on this before, and I think this is probably the, the last topic we'll cover, but you've been saying how the end goal should be to not have to use the RPAs anymore And I wonder if you have any advice for how to approach that process and, and what are some of the mistakes you've seen people make[01:00:54] Alex: Mm Hmm. I mean the biggest mistake I've seen organizations make, I think is throwing the RPA solution out there, building bots, and they're great bots, and they are creating that value. They're enabling you to save money and also, enabling your employees to go on and do better, more gratifying work. but then they say, that's, it that's as far as we're going to think, instead of taking those savings and saying, this is for replacing this pain point that we had to get a bot in the first place to do so.That's a huge common mistake. Absolutely understandable if I'm a CEO or even, you know, the person in charge of, you know, um, enterprise transformation. Um, it's very easy for me to say, ha victory, here's our money, here's our savings. I justified what we've done. Go have fun. Um, and instead of saying, we need to squirrel this money away and give it to the people that are going to change the system. So that, that's definitely one of the biggest things.The problem with that is that's not realized until years later when they're like, oh, we're still supporting these bots. So it is upfront having a turnoff strategy. When can we turn this bot off? What is that going to look like? Does it have a roadmap that will eventually do that?And that I think is the best way. And that will define what kind of processes you do indeed build bots for is you go to it and say, listen, we've got a lot of these user processes, human processes that are doing this stuff. Is there anything on your roadmap that is going to replace that and they say, oh yeah you know, in three years we're actually going to be standing up our new thing.We're going to be converting. And part of our, uh, analysis of the solution that we will eventually stand up will be, does it do these things? And so yes, in three years, you're good. And you say, cool, those are the processes I'm going to automate and we can shut those off. That's your point of entry for these things not doing that leads to bots running and doing things even after there is a enterprise solution for that. And more often than not, I would say greater than five times out of 10, when we are evaluating a process to build a bot for easily five times out of 10, we say, whoa, no, actually there's, you don't even need to do this.Our enterprise application can do this. you just need retraining, because your process is just old and no one knew you were doing this. And so they didn't come in and tell you, Hey, you need to use this.So that's really a lot of times what, what the issue is. And then after that, we go in and say, Okay.no, there's, there's no solution for this. This is definitely a bot needs to do this. Let's make sure number one, that there isn't a solution on the horizon six months to a year, because otherwise we're just going to waste time, but let's make sure there is, or at least IT, or the people in charge are aware that this is something that needs to be replaced bot or no bot.And so let's have an exit strategy. Let's have a turn-off strategy. When you have applications that are relatively modern, like you have a JIRA, a ServiceNow, you know, they must have some sort of API and it may just be that nobody has come in and told them, you just need to plug these applications together.[01:04:27] Alex: And so kind of what you're hitting on and surfacing is the future of RPA. Whereas everything we're talking about is using a bot to essentially bridge a gap, moving data from here to there that can't be done, programmatically. Accessing something from here to there that can't be done programmatically.So we use a bot to do it. That's only going to exist for so long. Legacy can only be legacy for so long, although you can conceivably because we had that big COBOL thing, um, maybe longer than we we'd all like, but eventually these things will be. upgraded. and so either the RPA market will get smaller because there's less legacy out there.And so RPA as a tool and a solution will become much more targeted towards specific systems or we expand what RPA is and what it can afford for. And so that I think is more likely the case. And that's the future where bots or automations aren't necessary interpreting the COM and the DOM and saying, okay, click here do that.But rather you're able to quickly build bots that utilize APIs that are built in and friendly. And so what we're talking about there is things like Appian or MuleSoft, which are these kind of API integrators are eventually going to be classified as RPA. They're going to be within this realm.And I think, where, where you're seeing that at least surfaced or moving towards is really what Microsoft's offering in that, where they, uh, they have something called power automate, which essentially is it just a very user-friendly way to access API. that they built or other people have built.So I want to go and I need to get information to service now, service now has an API. Yeah. Your, IT can go in and build you a nice little app that does a little restful call to it, or a rest API call to it gets information back, or you can go in and, you know, use Microsoft power automate and say, okay, I want to access service now.And it says, cool. These are the things you can do. And I say, okay, I just want to put information in this ticket and we're not talking about get or patch or put, uh, or anything like that. We're just saying, ah, that's what it's going to do. And that's kind of what Microsoft is, is offering. I think that is the new state of RPA is being able to interface in a user-friendly way with APIs. Cause everything's in the browser to the point. where, you know, Microsoft's enabling add ins for Excel to be written in JavaScript, which is just the new frontier. Um, so that's, that's kind of going to be the future state of this. I believe. [01:07:28] Jeremy: so, so moving from RPAs being this thing, that's gonna click through website, click through, um, a desktop application instead it's maybe more of this high, higher level tool where the user will still get this, I forget the term you used, but this tool to build a workflow, right. A studio. Okay. Um, and instead of saying, oh, I want this to click this button or fill in this form.It'll be, um, I want to get this information from service now. And I want to send a message using that information to slack or to Twilio, or, um, you're basically, talking directly to these different services and just telling it what you want and where it should go.[01:08:14] Alex: That's correct. So, as you said, everything's going to have an API, right? Seemingly everything has an API. And so instead of us, our RPA bots or solutions being UI focused, they're going to be API focused, um, where it doesn't have to use the user interface. It's going to use the other service. And again, the cool thing about APIs in that way is that it's not, directly connecting to your data source.It's the same as your UI for a user. It sits on top of it. It gets the request and it correctly interprets that. And does it the same thing with your UI where I say I click here and you know, wherever it says. okay. yeah. You're allowed to do that. Go ahead. So that's kind of that the benefit to that.Um, but to your point, the, the user experience for whether you're using a UI or API to build up RPA bot, it's going to be the same experience for the user. And then at this point, what we're talking about, well, where's the value offering or what is the value proposition of RPA and that's orchestration and monitoring and data essentially.we'll take care of hosting these for you. we'll take care of where they're going to run, uh, giving you a dashboard, things like that.[01:09:37] Alex: That's a hundred percent correct. It's it's providing a view into that thing and letting the business say, I want to no code this. And I want to be able to just go in and understand and say, oh, I do want to do that. I'm going to put these things together and it's going to automate this business process that I hate, but is vital, and I'm going to save it, the RPA software enables you to say, oh, I saw they did that. And I see it's running and everything's okay in the world and I want to turn it on or off. And so it's that seamless kind of capability that that's what that will provide. And I think that's really where it isn't, but really where it's going. Uh, it'll be interesting to see when the RPA providers switch to that kind of language because currently and traditionally they've gone to business and said, we can build you bots or no, no, your, your users can build bots and that's the value proposition they can go in.And instead of writing an Excel where you had one very, very advanced user. Building macros into Excel with VBA and they're unknown to the, the IT or anybody else instead, you know, build a bot for it. And so that's their business proposition today. Instead, it's going to shift, and I'd be interested to see when it shifts where they say, listen, we can provide you a view into those solutions and you can orchestrate them in, oh, here's the studio that enables people to build them.But really what you want to do is give that to your IT and just say, Hey, we're going to go over here and address business needs and build them. But don't worry. You'll be able to monitor them and at least say, yeah okay. this is, this is going.[01:11:16] Jeremy: Yeah. And that's a, a shift. It sounds like where RPA is currently, you were talking about how, when you're configuring them to click on websites and GUIs, you really do still need someone with the software expertise to know what's going on. but maybe when you move over to communicating with API, Um, maybe that won't be as important maybe, somebody who just knows the business process really can just use that studio and get what they need.[01:11:48] Alex: that's correct. Right. Cause the API only enables you to do what it defined right. So service now, which does have a robust API, it says you can do these things the same as a user can only click a button that's there that you've built and said they can click. And so that is you can't go off the reservation as easy with that stuff, really what's going to become prime or important is as no longer do I actually have an Oracle server physically in my location with a database.Instead I'm using Oracle's cloud capability, which exists on their own thing. That's where I'm getting data from. What becomes important about being able to monitor these is not necessarily like, oh, is it falling over? Is it breaking? It's saying, what information are you sending or getting from these things that are not within our walled garden.And that's really where, it or the P InfoSec is, is going to be maybe the main orchestrator owner of RPA, because they're, they're going to be the ones to say you can't, you can't get that. You're not allowed to get that information. It's not necessarily that you can't do it. Um, and you can't do it in a dangerous way, but it's rather, I don't want you
Mike O'Brien, commonly referred to as OB, joins Rick and Rob to share his expertise in networking and stories on some of the ways he's had to be creative in architecting network solutions for businesses. OB also discusses wireless connectivity, the advantages of Wi-Fi 6, and his favorite food to grill. Featured questions from this episode's "Let's Taco 'bout IT" segment: Tim: "What is your favorite antivirus and why?" Alex: "How do you address ransomware for SaaS providers? Have questions you want to be answered in our next episode? Submit them here or email us at marketing@aqueducttech.com. Visit www.aqueducttech.com for more information about our solutions and services.
Alex Collins joins us on the BlueBay Insights podcast to discuss the main challenges of ESG in Emerging Markets.We asked Alex:How should we think about ESG in Emerging Markets?What should investors keep in mind when applying ESG methodologies?Can you summarise the main challenges of ESG in Emerging Markets?
Alex - How to act in humility Jon - Energy for our spiritual life Ted - Put your foot in the Jordan!
In this conversation, we discussed: Becoming aware of the fortunate family and environment she was brought up inLiving in a society that are not trained to ask why and think criticallyChallenging the norms of protesting against climate change by actually asking 'what am I doing to make a difference'Not being the biggest fan of Greta ThunbergLearning about the importance of inclusive design - to allow websites to be more accessible by those with disabilitiesCreating a tool that can help kids understand emotions betterWhat do you think of the Nike's new 'Back to the Future' shoe?Approaching the Global School for Social Leaders and starting her own podcastDo you think the values that makes up a good leader has evolved over time? Quotes by Alex "How dare I not use all the privilege that I have to help somebody to make the world a better place for them""How dare I ask my maid, that I know how much money she makes, and supports her kids... how dare I ask her to not feed her family for a week, and to use it to buy a re-usable straw" "I want to be able to make something that makes somebody else's life better" "It's not about the role anymore, it's about the goal" "I think if you're a good leader, you know when to step back and when to follow somebody else" always be curious about other people's experiences before judging them - because the second that you look at them for their experiences, not just their labels, you can learn so much from them" "Change doesn't happen to you, it can happen with you - so be a part of the things, and look at opportunities, because life can be more than expected" Connect with Alex on socials: Instagram: www.instagram.com/theofficialjune10thWebsite: june10th.site Get in touch: Instagram: www.instagram.com/thejourneyonwardspodcastWebsite: thejourneyonwards.com/podcast
Jamie Lee is a stand-up comedian, actor, and established television writer/producer whom Elle Magazine recently named one of the top comedians to watch. In December 2016, Lee released her debut book Weddiculous (Harper Collins), which quickly rose to #1 on Bustle.com's list of best wedding books. The book was adapted as an upcoming series, The Wedding Coach, for Netflix hosted and Executive Produced by Jamie. It premiered on April 7th, 2021. Jamie starred as Ali Reissen, the female lead in the second season of the Judd Apatow-produced HBO series CRASHING, opposite Pete Holmes. Jamie wrote and starred in “The Viewing Party” episode of CRASHING, which was directed by Judd Apatow and honored by the New York Times in their piece on The Best TV Episodes of 2019. In addition to being one of the core cast members of MTV's hit show “Girl Code,” Lee has appeared on “Conan,” “The Late Late Show with James Corden,” “Last Call with Carson Daly,” “Chelsea Lately” and “@Midnight.” Big Takeaways When it came to planning her own wedding, and the day of, Jamie's favorite parts were in the little pieces in the in-betweens. Like a walk to get iced coffee, and moments of lightness spontaneity that helped her snap out of the dreamlike flow of the day. Find people that make you feel calm, and cared for to surround you on your big day. It can be very stressful, and having people around that want to help and do so with ease can make all the difference. Jamie's experience with her wedding planner (who was essentially a Venue Coordinator) was not super positive. Ultimately the planner did not ease the duties and stresses of the day in the way that would have actually been helpful. Do not just suffer through a bad planner! You are allowed to say no thank you and move on to someone new. Love your wedding planner! Questions from our live audience of Zoom Watchers Myriah: What do I do with my dress after the wedding? - Everyone recommended donating! Especially since she has already worn it twice and isn't going to wear it again. Alex: How can we celebrate our engagement if our wedding is quite a ways down the road, and we haven't started planning? - Enjoy each other. Take that slow time. You don't have to do anything yet. Just enjoy that new title. You can also spread out your fun special events. The showers, and parties, etc. Gabrielle: After our elopement, can we put our registry on the announcements/reception invitation? The reception will be small and intimate later. - Jamie said she wouldn't even think twice about it, if she got invited to the reception, but not the wedding. People want to give gifts. You can share your wedding website that would have the registry on it, too. Links We Referenced Weddiculous - Jamie Lee's Book (https://www.amazon.com/Weddiculous-Unfiltered-Guide-Being-Bride/dp/0062455605) Kleinfeld Bridal (https://www.kleinfeldbridal.com/) Spear Travel Group (https://speartravelgroup.com/) The Big Wedding Planning Master Class (https://www.thebigweddingplanningmasterclass.com/) Quotes “I don't like how people minimize wedding stress.” - Jamie “On the Wedding Coach, I kind of made up for all my lost time as a bad bridesmaid, by being the superstar bridesmaid and really just getting everything done that needed to get done.” - Jamie “It's a really important reminder, if you feel like your relationship incurring damage because of the wedding, the thing that's supposed to celebrate the relationship, then what is happening? What is it all for?” - Jamie The Big Wedding Planning Podcast is... * Hosted and produced by Christy Matthews and Michelle Martinez. * Edited by Veronica Gruba. * Music by Steph Altman of Mophonics. * On Instagram @thebigweddingplanningpodcast and be sure to use #planthatwedding when posting, so you can get our attention! * Inviting you to become part of our Facebook Group! Join us and our amazing members. Just search for The Big Wedding Planning Podcast Community on Facebook. * Easy to get in touch with. Email us at thebigweddingplanningpodcast@gmail.com or Call and leave a message at 415-723-1625 and you might hear your voice on an episode * On Patreon. Become a member and with as little as $5 per month, you get bonuse episodes, special newsletters and Zoom Cocktail Hours with Christy & Michelle! Our Partners (https://www.thebigweddingplanningpodcast.com/partners) Special Deals for Listeners - TBWPP Enthusiastically Approved! Wedfuly (https://wedfuly.com/bigwedding/) FlowerMoxie (https://flowermoxie.com/pages/the-big-wedding-podcast) The Flashdance (https://www.theflashdance.com/virtual-party-the-big-wedding-planning-podcast) Cactus Collective (https://www.cactus-collective.com/the-big-wedding-planning-podcast/) Unboring Officiant (https://www.unboringofficiant.com/bigwedding/) Special Guest: Jamie Lee.
Get excited for Aries season! And make sure to live your life in the first part of this month because when the monster moon comes on April 26, who knows what will happen! Susan Miller herself can't even tell us what to expect. In this episode, Laura and Alex continue to be confused about Susan's posting habits (she was on time again and it wasn't even an April Fools' Day prank) and work through their fears about the ominous monster moon in Scorpio that will bring unexpected and unwelcome obstacles and changes to all of the signs. They discuss Susan's note to her readers, geezers versus geysers, Scorpio hate, and of course, all of Susan's practical advice for getting through the monster moon and the pandemic. Horoscope highlights for each sign can be found at the following timestamps: Aries: 6:46 Taurus: 11:30 Gemini: 15:44 Cancer: 17:41 Leo: 19:29 Virgo: 21:36 Libra: 22:35 Scorpio: 23:32 Sagittarius: 29:19 Capricorn: 30:52 Aquarius: 33:16 Pisces: 35:12 Practical advice from Susan Miller: 36:25 Share your own thoughts on Susan Miller's Astrology Zone with us (and let us know about your experience with the monster moon!) by emailing astrologyzoned@gmail.com. Links: Order “If You Really Love Me, Throw Me off the Mountain,” by Erin Clark, a strong and powerful Aries woman: https://www.erinclarkwriter.com (https://www.erinclarkwriter.com) Help Laura reach the full potential of her Susan Miller legacy by buying her romance novels: http://lauralovelybooks.com (http://Lauralovelybooks.com) Listen to Laura's other podcasts, The Mermaid Podcast and You're Doing Great, at: http://mermaidpodcast.com (http://mermaidpodcast.com) and http://fairybossmother.com (http://fairybossmother.com) TRANSCRIPT: Laura: Hello, everybody! Welcome to April 2021. We made it this far! Yay! Alex: Hi everyone. Hi Laura! Laura: Oh, hi Alex! Alex: How are you doing? Laura: I think I'm okay but then I read our horoscopes and now I have some concerns for something, but you know, I think we'll get through. We'll talk about why we're scared, but also I feel like we've lived through so much already that maybe I shouldn't be so scared, but I don't know, I got nervous. Alex: The fact that we have lived through so much and we're scared though maybe says something. Laura: Maybe it says something. Yeah, yeah. Well let's get into, as usual, when Susan Miller released the horoscopes for April. Again, another surprise. Another surprise, she released them on April 1. Wow. And I think, you know, last month in March we were so shocked because she released them a day early and that was really out of character and now it was just on time. So you and I agree that that while we don't like it and we're perturbed by her promptness— Alex: Extremely Laura: Extremely—we are just going to now keep track of like this streak and see how long it goes and also if we ever get an answer about why it's after 25 years she's suddenly become prompt with her horoscopes. It's a mystery. Alex: Right, so it's like a challenge. Susan, can you keep this up? But also why? Laura: Also why? Yeah we don't know why is it happening. Alex: Why are you doing this to us? Laura: Yeah why you're doing this, what's changed about your process, what's going on. But she released them on time. It was April 1. I had just gotten my second dose of the vaccine and I was really out of it so it took me a few days to read. But now we have and I think we should start off with the note from Susan Miller. Alex: Yes, so she starts off the note by saying: April will be a good, cheerful, and productive month until we get to the monster full moon in Scorpio on April 26. I know. And then she wrote: I know I am writing this on April 1, April Fool's Day, and I wish I were pranking you. This full moon will be no joke. Laura: Oh no, but see I got scared. Alex: It's incredibly ominous but also I was wondering if she like crafted this and she was like, Oh, this is
1. Interview with Alex: How did he become a Steelers fan? What is it like living up in NE repping the black and gold?(01:03) 2. Are the 2020 Steelers a fraud? Chase Claypool, who should be given the most credit for the early season success?(03:22) 3. Where do the Steelers rank in the AFC?(10:27) 4. Sam Darnold to Pittsburgh?(14:40) 5. Tua is named the Dolphins starter for the remainder of the season...thoughts?(18:52) 6. Colbys Milk Monsters talk/ fantasy football talk, we discuss our midseason struggles(21:55) 7. Bell goes to the Chiefs, what does this mean for NFL and or fantasy football purposes?(32:47) 8. Alex and I talk sports cards and how there is a real opportunity to make some cash(37:10) 9. Are the Titans REAL?(47:18) 10. Will the Patriots make the playoffs after their poor performance against the Broncos?(50:10)
In this episode of BizQuik, Julie & Corey sit down with Alex Vonderhaar, the CEO, and Founder of Hidden Falls Media, a marketing company that bridges the gap between neuroscience and digital marketing. . Topics discussed include: Why the psychology of customers is so important with marketing How visiting a float tank business turned into a marketing company for Alex How to use different sensations in marketing Why being an underdog is a great place to be as a small business owner Why copy is so important to your marketing The importance of sensory acuity as a small business owner The future of paid ads for the rest of 2020 How to leverage Maslow's Hierarchy of Needs in your marketing How much is too much when it comes to blending your personal brand into the business brand on social media The importance of content strategy How having a servant mentality is great for your business If you're interested in learning more about Alex Vonderhaar and Hidden Falls Media, check them out here: Website - www.hiddenfallsmedia.com Instagram - https://www.instagram.com/alex.vonderhaar/ Instagram - https://www.instagram.com/hidden.falls.media/ If you're interested in learning more about BizQuik - check out our website BizQuikPodcast.com. You can also check out Instagram @BizQuik.Podcast or Twitter @BizQuikPodcast And if you want to learn more about SB PACE, you can head on over to SBPACE.com. You can also find us on the following social media platforms: Facebook: facebook.com/sbpace Instagram: @sb.pace LinkedIn: Linkedin.com/sbpace Twitter: @sb_pace You can buy our book, Seriously? Now What?! A Small Business Guide to Disaster Preparedness, on Amazon. BizQuik is a Traxler-Harris production. --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app
Coaching Scenario: “Alex, I thought I should send you for coaching with Coach Setumo Chiloane. I have already asked my secretary, Mercy, to set up a meeting between you and coach Setumo Chiloane tomorrow to start with your session”; say Alex’s boss. What is wrong with this approach by Alex’s boss? How best should Alex’s boss introduce the coaching topic to Alex? How can Coach Setumo Chiloane rectify this situation? Hear it all in this Coaching 101 Conversation between coaches, Sam Tsima and Setumo Chiloane.
Alex Levy is ultra important to the RMP, as he is our first gay guest and member of our Fire Circle Community. His sexual orientation has given him a unique and valuable glimpse into masculine culture. Regardless of our identities, there are areas in our lives where we feel inadequate and shame for not fitting in. Alex shatters those illusions, and reminds us that every expression and iteration of Man is equally respected. We also cover common misconceptions about gay men, the importance of being rock solid in our core beliefs, and advice on creating safe environments for open expression. Show Notes: The damaging effects of using words like “gay” in a condescending or hurtful manner Why men fear being thought of as gay, bisexual, or anything besides hetero The healing potential of men's work, especially when dealing with wounds dealt by other men Sometimes trauma's are so repressed that we don't even know they are there Straight men subconsciously believe that if they even spend time with gay men, they will be perceived as feminine, weak, or gay. Pop culture and the media's role in how we perceive the LGBTQA community “Do I Sound Gay?” - documentary recommended by Alex How do we create an environment where gay men feel free to express and be their true selves? Alex shares his story about simultaneously dealing with health issues and diving into shadow work Common misconceptions that straight men hold towards gay men How being solid in your core beliefs will greatly relieve resistance Connect with Alex: Instagram @alexlevy_intuitive Website: Alexlevyonline.com for info about his intuitive readings, spiritual life coaching, and more! Rising Man Links: The Rising Man Fire Circles - our online platform where men come together and put into practice all the greatness talked about on the podcast. You'll find accountability, support, friendship, and challenges all designed to stimulate growth and healing. If you feel called to something greater, reach out! Initiations - Compass Program - a 4 day 4 night Vision Fast in the wilderness, with preparation and incorporation calls in the months before and after. Instagram @therisingmanpodcast Instagram @jeddyazuma Check out our newly launched YouTube Channel, where you can catch video versions of the Monday Morning Meditations! The Rising Man Facebook Group
Podcast Listeners, on this episode of #AskGaryVee, I sit down with Faisal Sublaban aka @thehotelboss and discuss the importance of DOING instead of just thinking about building your business. Enjoy, and I hope you're going to love this episode! Share your feedback on LinkedIn and / or tweet at me @garyvee, would love to hear what you think! TIMESTAMPS: 1:30 - Intros 3:45 - Faisal’s Childhood story 5:15 - Radical candor and wanting the pressure 6:30 - Optimistic management 9:40 - Shower pressure and gummy bears 12:25 - First Question: Alex “Implementing hospitality undertones to medicine and for doctors” 18:00 - Second question: Patrick “Having a challenge at scaling his business” 19:50 - There’s no universal correct answer, it’s what’s correct for you 29:00 - Raghav TikTok Fail 30:30 - Third question: Alex “How can I start, trying to figure out if it’s a good idea
It's time to answer your questions. We've put together 5 questions from the Keep Productive community and Patreon. Ranging from using productivity tools less, to tackling a 500+ long Todoist list. Our August Sponsor Sanebox is our first sponsor back. Time to get your email under-control! And get $25 off and 14-day free trial with our link (new accounts): https://www.sanebox.com/toolstheyuse (https://www.sanebox.com/toolstheyuse) Questions from you Should you remove productivity technologies when you do technology audits? - Adam Staples I have 500+ tasks in my Todoist account, how do I deal with that? - No name - RGauffman If you could build a new app from scratch - but with all the resources in the world - what would it be? (Alex) How do you guys externalise your productivity system? For example friends/family/SO who are less reliable, so even delegations become more stressful where you have to constantly check up on (how's the party planning coming along, how's your visa application, etc) - Edison Do productivity tools actually make people more productive? Or are they just making people less forgetful and enabling easier reporting on what you've done/have to do - No Name What is the recurring “pain point” that you see in task/productivity management, and what are some of the solutions that either you or others have come up with to address it? - Eric Bower
Elementary students (A0 to A2 levels) usually come up with unrealistic goals for their learning and soon enough lose all their original enthusiasm. They want to be able to read a book in English, to listen to music and to watch films without subtitles on their own language. These are goals to be achieved later on in your learning process but if you are an elementary student you should first master the art of repetition. On this episode I give you tips on how to use a simple Workbook exercise to maximise your repetition and consequently your Speaking skills. Books mentioned on this episode: RAWLINGS, Alex: How to speak any language fluently - Fun, stimulating and effective methods to help anyone learn languages faster; ROBINSON, UK, 2017. Chapter 2: Using your time is mentioned, and pages 21 and 22 are read out loud (The 15/30/15 Routine). LATHAM-KOENIG, Christina; OXENDEN, Clive; SELIGSON, Paul; HUDSON, Jane: English File Pre-Intermediate Workbook, 3rd Edition, OXFORD, 2012. --- Send in a voice message: https://anchor.fm/nerrian-possamai/message
This episode's guest is Alex Viada from Complete Human Performance. Alex Viada, NSCA Certified Strength and Conditioning Specialist and USA Triathlon Coach, is the founder and co-owner of Complete Human Performance. A lifelong athlete, he has participated and competed in nearly every sport imaginable (some with greater success than others), since being dragged to his first swim meet when he was four years old. Alex has close to 13 years of personal training and coaching experience with over 300 athletes of all ages and levels, in sports ranging from bodybuilding to ultra running to triathlon to cycling to powerlifting. He has also prepared close to 40 individuals for Ranger School, SFAS, BUD/s, and other selective military programs.A graduate of Duke University, currently on hiatus from a Masters of Physiology program at NC State University, Alex enjoys lifting heavy things, biking, running long distances, and otherwise pushing himself to his limit (though his body is not always on board with the program). He is also an avid homebrewer, and if you give him much of an opening, he will happily bore you with details on hop schedules and yeast strain flocculation. You’ve been warned. On this episode Alex and I discuss: Alex's background & Influences What are the good and not so good things that Alex currently see's with the physical preparation profession, and what solutions would he offer for the not so good things he is seeing? I ask Alex how did he get into Hybrid (Concurrent Training)? I ask Alex - what considerations need to be made for strength athletes wanting to start endurance sports, and what considerations do endurance athletes need to mark when they want to get into strength sports I ask Alex what is it like to deal with the different personality types between strength athletes vs endurance athletes when they begin their journey into concurrent training I ask Alex about the nutritional needs for the hybrid athlete I ask Alex - How does he calculate an Athletes caloric needs when they begin to engage in concurrent training I ask Alex - what are the common myths that he consistently has to dismiss with concurrent training and what are the benefits for strength athletes to incorporate some endurance work into their training regimes and vice versa for the endurance athlete I ask Alex to discuss his design of training cycles for concurrent training and how he consolidates stressors I ask how does he peak individuals for powerlifting meets and endurance events that are very close together on the competition calendar? I ask Alex - How does his learn? I ask Alex - what have been the biggest Lessons he has learned so far in his life? I ask Alex for his top resources I ask Alex for his top life advice I ask Alex if he only had 1 year left on Planet Earth - how would he spend that year and why? I ask Alex if he could invite 5 people to dinner, dead or alive, who would he invite and why? This was an outstanding episode and I hope you all enjoy it as much as we did! Stay Strong, RB Show Notes: Website - Complete Human PerformanceFacebook - Complete Human Performance LLCTwitter - @HumPerformanceInstagram - alex.viada Books Mentioned:Bad Science Bad Pharma Science and Practice of Strength Training Supertraining Hybrid Training People and Resources Mentioned:Dr. Bryan Walsh Berndt MuellerLyle McDonaldDan DuchaineVladimir ZatsiorskyTheodore RoosveltDonald TrumpRobin WilliamsAlexander The GreatElon Musk Show Sponsors: Ultimate Performance Online MentorshipTo get INSTANT ACCESS to almost 20 hours of World Class online video Strength and Conditioning Information go to upmentorship.com ALTIS ALTIS 360 ALTIS Education Ultimate Athlete Concepts Ultimate Athlete Concepts is a multi faceted company, providing the most sophisticated scientific material in sport science. UAC is the worlds leading resource for translated sport preparation educational material. National Sports Performance Association Certified Program Design Specialist Certified Speed and Agility CoachCerfitied Weightlifting Performance Coach Certified Sports Nutrition Coach Athletes AccelerationComplete Warm UpComplete Speed Training Complete Speed GamesComplete Jumps TrainingComplete Olympic Lifting Complete Youth TrainingComplete Guide to Training the Female Athlete Complete Core Complete Sports Conditioning Complete Sports Nutrition Complete Program Design Sports Camp Empire Patreon Help support the podcast by becoming a Patreon to the show here - Patreon
Panel: Charles Max Wood Chris Fritz Special Guest: Kyle Holmberg & Alex Regan In this episode, the panel talks with two guests Kyle and Alex who work together in opensource. Kyle is a software engineer at AutoGravity interested in full-stack web development, graphic design, integrated systems, data visualizations, and soccer. Alex writes code and works with Parametric Studios, and he also loves puppies. Check out today’s episode where the panel and the two guests talk about the different frameworks and contributing to opensource. Show Topics: 3:03 – We got together because Alex mentioned his project. He was looking for something to get up running nice and easy. Boot Strap 4. That is a nice choice and I was contributing as a core team member at the time. He started with how do I get started with Boot Strap Vue. At the time I asked how do you do this...? And that’s how we got started. 4:03 – Guest continues more with this conversation. 4:30 – Chris: How did you start contributing within your company? 4:44 – Guest: There is a lot of autonomy with the last company I was working with (3 people there). I needed more fine tooth hooks and modals. Someone says X and you try to figure it out. So I was looking at the transitions, and there was a bug there. They hadn’t implemented any hooks, and I thought I could figure this out. From there, if you want a change I can help out. I don’t know if that change got implemented first. I started contributing some things to the library. I really got involved where someone (the creator of the library said you could be a core member. He took a trust in me. I started a lot in test coverage. That might not be the normal path to take. 6:39 – How long have you been developing? 6:42 – Guest: A year and a half. 7:00 – Chris: Any tips to opensource for beginners. 7:10 – Guest: Yes, having a thick skin. Everyone is anonymous on the Internet. People say things that they normally wouldn’t say in person. I figure if you put something out there someone will correct you. How can I get feedback? If you put yourself out there it’s like: failure to success. That process is what makes you better. 8:21 – Chris: Issues and chat like that. There is a lot of context that gets lost. When you just see the text it may seem angry 8:43 – Guest: I have a tendency towards sarcasm, and I have to save that to last. People come from different languages, and I’m not talking about software languages. English isn’t everyone’s first language. Good thing to keep in-mind. 9:14 – Internet is an international community. 9:22 – Guest continues this talk. Opensource is good to work on to get started with contributions. Especially with Operation Code it’s geared towards beginners; less complex. 10:30 – That is a good difference to show. 11:01 – Question. 11:05 – Guest. If you are a person with a lot of skin in their projects – I take pride in my work – I think if you have that mentality that you will want to submit to every request. Find some way to test every request against a...is this my concern or their concern? Figure out the boundaries. You will make mistakes and that’s fine. 11:54 – Panelist. 12:02 – Guest: Coming up with good interface boundaries for your libraries. 12:11 – Chuck: Once we figured out what really mattered than it makes it easier to say: yes or no. 12:26 - Guest: Conventional Commits. 13:06 – So Kyle what did you getting into opensource look like? 13:19 – Alex: Boot Strap. Operation Code. 15:07 – Chuck chimes-in about Aimee Knight and other people. Serving people and their country. You are helping people who have sacrificed. 15:58 – It is totally volunteer-based. 16:05 – Chris: What kind of questions did you ask Alex? How did you decide what to put in an issue? 16:25 – Alex: I tend to go to Stack Overflow. If it is in regards to a library I go to GitHub. Real time texts. Next.js – I just contributed to this this week. 19:21 – Chris: This question is for either one of you. For Questions and Answers – do you have any suggestions on what NOT to do when seeking help? 19:46 – Stay away from only asking a question in one sentence. There is so much information/context that you are leaving out, and that can often lead to more questions. Reasonable amount of contexts can go a long way. Code samples. Please Google the details for the markdown if it is a huge code. Context, context, context! 20:44 – I have an error, please fix it. Maybe that needs more context? 20:53 – Guest: What were you doing? There is a bigger overarching element. The problem they can see in front of them and what is the thing that you are TRYING to solve? 21:44 – More contexts that can help with a helpful answer. 21:53 – Guest: If someone used some learning tool... 22:13 – Chuck chimes-in. Chuck: It is something different that it could do something that you didn’t expect. 22:47 – Alex: Those are great moments. I love it when Kyle sees... That snowflake of your problem can help with documentation caveats. 23:44 – People are probably copying pasting. 24:05 – It can be the difference between understanding the page and not especially What not to do and what to do – any other tips? Can you have too much information? 24:32 – Guest: I am guilty of this sometimes. You can have too much information. The ability to converse in a real-time conversation is better. That’s my route to go. Maybe your problem is documented but documented poorly. Go to a real-time conversation to hash things out. 26:15 – Guest: If you do your homework with the different conversations: questions vs. concerns. Real-time conversation. He talks about GitHub issues and Stack Overflow. 27:48 – Chuck: My password is 123... If they can duplicate... Alex: Yeah too much information isn’t good. Some places mandate recreation like a JS Fiddle. Like Sandbox are cool tools. 29:32 – Is there a way to do the code wrong? 29:38 – Advertisement. 30:25 – Guest chimes-in with his answer. 31:31 – Question. If it’s opensource should they share? 31:33 – Absolutely. The difference that makes it for me is great. I can spot things that the machine can help me find. One small tip is when you provide code samples and GitHub issues use... The further you go out to recreate the problem there is a high payoff because they can get something working. The big difference is that it’s a huge pain to the person trying to convey the issue. If I do the simple version...I think you have to weigh your options. What tools are out there? Generate your data structure – there are costs to recreate the issue. 33:35 – Chris: 500 files, apps within the app – intercommunicating. All you do is download this, install this, it takes you ½ a day and how does this all work? 34:03 – Guest: You have to rein it in. Provide the easiest environment for it to occur. If you are having someone download a table and import it, and use a whole stack – you can try it – but I would advise to work really hard to find... 34:50 – In creating a demo keep it simple? 35:52 – Guests reply. 36:02 – Chuck. 36:07 – Chris: I learned about your experiences coming to opensource. Anything else that you would like to share with new contributors? 36:25 – Guest: Start with something that you have a genuine interest in. Something like a curiosity light bulb is on. It makes it more interesting. It’s a nice way to give back. Something that interests you. I have not found a case yet that I’m not compelled to help someone. Putting yourself out there you might be given a plate you don’t know what to do with. My learning experience is how welcoming opensource is. Maybe things are changing? 38:31 – Chuck: I have seen those communities but generally if they are there people frown down upon it. The newer opensource communities are very friendly. These projects are trying to gain adoptions, which is for the newer users. 39:17 – Guest: Final statements on opensource. Even if you think it is a small contribution it still helps. 40:55 – Guest chimes-in. It is important to have a platter for newcomers. 41:15 – Chris: I am curious to talk to you about how you’ve written React applications among others. Any advice? What resources should they 41:46 – Guest: Yeah. If you are making your new React application (from Vue land) there are many things that are similar and things that are different. As for preparing yourself, I am a huge fan of this one course. I had been coding (plus school) so 5 years, it’s okay to dive-into community courses. Dive-into a tutorial. Understand the huge core differences. He goes into those differences between React, Angular, and Vue. 43:30 – Guest talks about this, too. 45:50 – React doesn’t have an official router. Vue provides (he likes Vue’s mentality) other things. There is a library called One Loader. 46:50 – Guest: I was at a Meetup. One guy was doing C-sharp and game development. His wife had a different background, and I think they were sampling Angular, Vue, and React - all these different frameworks. That was interesting to talk with them. I relayed to them that Vue has free tutorials. Jeffry had an awesome Vue Cast. I think that’s what got me started in Vue. I learned from this tool and so can you! 48:11 – Chris: You aren’t starting from scratch if you know another framework? Do they translate well? 48:33 – Guest: I think so. There are a lot of ways to translate those patterns. 49:34 – Guest: React Rally – I just went to one. 49:50 – Chris chimes-in. Slots is mentioned 50:27 – Guest mentions the different frameworks. Guest: I went into functional components in Vue. I learned about the way... It helps you translate ideas. I don’t recommend it to everyone, but if you want to dig deep then it can help bridge the gap between one frameworks to another. 51:24 – Chris adds to this conversation. 51:36 – Guest: They are translatable. They are totally map-able. 5:46 – Chuck: Say someone was going to be on a Summit where they could meet with the React Core Team. What things would you suggest with them – and say these things are working here and these are working there. 52:12 – Guest: I would love to see... 53:03 – React doesn’t have a reactivity system you’d have to tell it more to... 53:15 – Guest chimes-in. Panel and guests go back-and-forth with this topic. 54:16 – Tooling. 55:38 – Guest: With React coming out with time slicing features how does that map to Vue and what can you say from one team to another. What is there to review? There is a lot of great things you can do with... 56:44 – Conversation continues. 57:59 – React has some partial answers to that, too. Progress. 58:10 – When Vue came onto the scene everyone felt like why do we need another framework? We have Ember, and... But with Vue it felt cohesive. It had an opportunity to learn from all the other frameworks. In terms of progress everyone is on the frontlines and learning from each other. Everyone has a different view on it. How can se learn from this and...? 59:12 – Chris: I am grateful for the different frameworks. Anyone comes out with a new tool then it’s the best. Creating something that is even better than before. 59:38 – Guest. 59:49 – Chuck: There are good frameworks out there why do I need another one. That’s the point. Someone will come along and say: I like what’s out there but I want to make... That’s what Vue was right? In some ways Vue was a leap forward and some ways it wasn’t – that’s how I feel. We need something to make things a bit easier to save 10 hours a week. 1:01:11 – Even Vue’s... 1:02:20 – Guest: In terms of why do we need another framework conversation – I don’t think we need another reason. Go ahead, what if it is groundbreaking it makes everyone do things differently and keep up. I love the idea that JavaScript is saying: what is the new framework today? The tradeoff there is that there are so many different ways to do things. It is hard for beginners. 1:03:88 – Chuck: How to find you online? 1:03:49 – Kyle states his social media profiles, so does Alex, too. 1:04:06 – Chuck: Let’s do some picks! 1:04:10 – Code Badges’ Advertisement Links: JSON Generator Ember.js Vue React Angular JavaScript Udemy One-Loader YouTube Talk: Beyond React 16 by Dan Abramov Badgr Kickstarter: CodeBadge.org Alex Sasha Regan’s Twitter Kyle Holmberg’s Twitter Kyle’s website Dev.to – Alex’s information DevChat TV GitHub Meetup Operation Code Sponsors: Kendo UI Digital Ocean Code Badge Cache Fly Picks: Chris Home decorating shows Charles TerraGenesis GetaCoderJob.com Swag.devchat.tv Codebadge.org Kyle OperationCode Yet Another React vs.Vue Article Hacktoberfest Alex Uplift Standing Desk System 76 Rust
Panel: Charles Max Wood Chris Fritz Special Guest: Kyle Holmberg & Alex Regan In this episode, the panel talks with two guests Kyle and Alex who work together in opensource. Kyle is a software engineer at AutoGravity interested in full-stack web development, graphic design, integrated systems, data visualizations, and soccer. Alex writes code and works with Parametric Studios, and he also loves puppies. Check out today’s episode where the panel and the two guests talk about the different frameworks and contributing to opensource. Show Topics: 3:03 – We got together because Alex mentioned his project. He was looking for something to get up running nice and easy. Boot Strap 4. That is a nice choice and I was contributing as a core team member at the time. He started with how do I get started with Boot Strap Vue. At the time I asked how do you do this...? And that’s how we got started. 4:03 – Guest continues more with this conversation. 4:30 – Chris: How did you start contributing within your company? 4:44 – Guest: There is a lot of autonomy with the last company I was working with (3 people there). I needed more fine tooth hooks and modals. Someone says X and you try to figure it out. So I was looking at the transitions, and there was a bug there. They hadn’t implemented any hooks, and I thought I could figure this out. From there, if you want a change I can help out. I don’t know if that change got implemented first. I started contributing some things to the library. I really got involved where someone (the creator of the library said you could be a core member. He took a trust in me. I started a lot in test coverage. That might not be the normal path to take. 6:39 – How long have you been developing? 6:42 – Guest: A year and a half. 7:00 – Chris: Any tips to opensource for beginners. 7:10 – Guest: Yes, having a thick skin. Everyone is anonymous on the Internet. People say things that they normally wouldn’t say in person. I figure if you put something out there someone will correct you. How can I get feedback? If you put yourself out there it’s like: failure to success. That process is what makes you better. 8:21 – Chris: Issues and chat like that. There is a lot of context that gets lost. When you just see the text it may seem angry 8:43 – Guest: I have a tendency towards sarcasm, and I have to save that to last. People come from different languages, and I’m not talking about software languages. English isn’t everyone’s first language. Good thing to keep in-mind. 9:14 – Internet is an international community. 9:22 – Guest continues this talk. Opensource is good to work on to get started with contributions. Especially with Operation Code it’s geared towards beginners; less complex. 10:30 – That is a good difference to show. 11:01 – Question. 11:05 – Guest. If you are a person with a lot of skin in their projects – I take pride in my work – I think if you have that mentality that you will want to submit to every request. Find some way to test every request against a...is this my concern or their concern? Figure out the boundaries. You will make mistakes and that’s fine. 11:54 – Panelist. 12:02 – Guest: Coming up with good interface boundaries for your libraries. 12:11 – Chuck: Once we figured out what really mattered than it makes it easier to say: yes or no. 12:26 - Guest: Conventional Commits. 13:06 – So Kyle what did you getting into opensource look like? 13:19 – Alex: Boot Strap. Operation Code. 15:07 – Chuck chimes-in about Aimee Knight and other people. Serving people and their country. You are helping people who have sacrificed. 15:58 – It is totally volunteer-based. 16:05 – Chris: What kind of questions did you ask Alex? How did you decide what to put in an issue? 16:25 – Alex: I tend to go to Stack Overflow. If it is in regards to a library I go to GitHub. Real time texts. Next.js – I just contributed to this this week. 19:21 – Chris: This question is for either one of you. For Questions and Answers – do you have any suggestions on what NOT to do when seeking help? 19:46 – Stay away from only asking a question in one sentence. There is so much information/context that you are leaving out, and that can often lead to more questions. Reasonable amount of contexts can go a long way. Code samples. Please Google the details for the markdown if it is a huge code. Context, context, context! 20:44 – I have an error, please fix it. Maybe that needs more context? 20:53 – Guest: What were you doing? There is a bigger overarching element. The problem they can see in front of them and what is the thing that you are TRYING to solve? 21:44 – More contexts that can help with a helpful answer. 21:53 – Guest: If someone used some learning tool... 22:13 – Chuck chimes-in. Chuck: It is something different that it could do something that you didn’t expect. 22:47 – Alex: Those are great moments. I love it when Kyle sees... That snowflake of your problem can help with documentation caveats. 23:44 – People are probably copying pasting. 24:05 – It can be the difference between understanding the page and not especially What not to do and what to do – any other tips? Can you have too much information? 24:32 – Guest: I am guilty of this sometimes. You can have too much information. The ability to converse in a real-time conversation is better. That’s my route to go. Maybe your problem is documented but documented poorly. Go to a real-time conversation to hash things out. 26:15 – Guest: If you do your homework with the different conversations: questions vs. concerns. Real-time conversation. He talks about GitHub issues and Stack Overflow. 27:48 – Chuck: My password is 123... If they can duplicate... Alex: Yeah too much information isn’t good. Some places mandate recreation like a JS Fiddle. Like Sandbox are cool tools. 29:32 – Is there a way to do the code wrong? 29:38 – Advertisement. 30:25 – Guest chimes-in with his answer. 31:31 – Question. If it’s opensource should they share? 31:33 – Absolutely. The difference that makes it for me is great. I can spot things that the machine can help me find. One small tip is when you provide code samples and GitHub issues use... The further you go out to recreate the problem there is a high payoff because they can get something working. The big difference is that it’s a huge pain to the person trying to convey the issue. If I do the simple version...I think you have to weigh your options. What tools are out there? Generate your data structure – there are costs to recreate the issue. 33:35 – Chris: 500 files, apps within the app – intercommunicating. All you do is download this, install this, it takes you ½ a day and how does this all work? 34:03 – Guest: You have to rein it in. Provide the easiest environment for it to occur. If you are having someone download a table and import it, and use a whole stack – you can try it – but I would advise to work really hard to find... 34:50 – In creating a demo keep it simple? 35:52 – Guests reply. 36:02 – Chuck. 36:07 – Chris: I learned about your experiences coming to opensource. Anything else that you would like to share with new contributors? 36:25 – Guest: Start with something that you have a genuine interest in. Something like a curiosity light bulb is on. It makes it more interesting. It’s a nice way to give back. Something that interests you. I have not found a case yet that I’m not compelled to help someone. Putting yourself out there you might be given a plate you don’t know what to do with. My learning experience is how welcoming opensource is. Maybe things are changing? 38:31 – Chuck: I have seen those communities but generally if they are there people frown down upon it. The newer opensource communities are very friendly. These projects are trying to gain adoptions, which is for the newer users. 39:17 – Guest: Final statements on opensource. Even if you think it is a small contribution it still helps. 40:55 – Guest chimes-in. It is important to have a platter for newcomers. 41:15 – Chris: I am curious to talk to you about how you’ve written React applications among others. Any advice? What resources should they 41:46 – Guest: Yeah. If you are making your new React application (from Vue land) there are many things that are similar and things that are different. As for preparing yourself, I am a huge fan of this one course. I had been coding (plus school) so 5 years, it’s okay to dive-into community courses. Dive-into a tutorial. Understand the huge core differences. He goes into those differences between React, Angular, and Vue. 43:30 – Guest talks about this, too. 45:50 – React doesn’t have an official router. Vue provides (he likes Vue’s mentality) other things. There is a library called One Loader. 46:50 – Guest: I was at a Meetup. One guy was doing C-sharp and game development. His wife had a different background, and I think they were sampling Angular, Vue, and React - all these different frameworks. That was interesting to talk with them. I relayed to them that Vue has free tutorials. Jeffry had an awesome Vue Cast. I think that’s what got me started in Vue. I learned from this tool and so can you! 48:11 – Chris: You aren’t starting from scratch if you know another framework? Do they translate well? 48:33 – Guest: I think so. There are a lot of ways to translate those patterns. 49:34 – Guest: React Rally – I just went to one. 49:50 – Chris chimes-in. Slots is mentioned 50:27 – Guest mentions the different frameworks. Guest: I went into functional components in Vue. I learned about the way... It helps you translate ideas. I don’t recommend it to everyone, but if you want to dig deep then it can help bridge the gap between one frameworks to another. 51:24 – Chris adds to this conversation. 51:36 – Guest: They are translatable. They are totally map-able. 5:46 – Chuck: Say someone was going to be on a Summit where they could meet with the React Core Team. What things would you suggest with them – and say these things are working here and these are working there. 52:12 – Guest: I would love to see... 53:03 – React doesn’t have a reactivity system you’d have to tell it more to... 53:15 – Guest chimes-in. Panel and guests go back-and-forth with this topic. 54:16 – Tooling. 55:38 – Guest: With React coming out with time slicing features how does that map to Vue and what can you say from one team to another. What is there to review? There is a lot of great things you can do with... 56:44 – Conversation continues. 57:59 – React has some partial answers to that, too. Progress. 58:10 – When Vue came onto the scene everyone felt like why do we need another framework? We have Ember, and... But with Vue it felt cohesive. It had an opportunity to learn from all the other frameworks. In terms of progress everyone is on the frontlines and learning from each other. Everyone has a different view on it. How can se learn from this and...? 59:12 – Chris: I am grateful for the different frameworks. Anyone comes out with a new tool then it’s the best. Creating something that is even better than before. 59:38 – Guest. 59:49 – Chuck: There are good frameworks out there why do I need another one. That’s the point. Someone will come along and say: I like what’s out there but I want to make... That’s what Vue was right? In some ways Vue was a leap forward and some ways it wasn’t – that’s how I feel. We need something to make things a bit easier to save 10 hours a week. 1:01:11 – Even Vue’s... 1:02:20 – Guest: In terms of why do we need another framework conversation – I don’t think we need another reason. Go ahead, what if it is groundbreaking it makes everyone do things differently and keep up. I love the idea that JavaScript is saying: what is the new framework today? The tradeoff there is that there are so many different ways to do things. It is hard for beginners. 1:03:88 – Chuck: How to find you online? 1:03:49 – Kyle states his social media profiles, so does Alex, too. 1:04:06 – Chuck: Let’s do some picks! 1:04:10 – Code Badges’ Advertisement Links: JSON Generator Ember.js Vue React Angular JavaScript Udemy One-Loader YouTube Talk: Beyond React 16 by Dan Abramov Badgr Kickstarter: CodeBadge.org Alex Sasha Regan’s Twitter Kyle Holmberg’s Twitter Kyle’s website Dev.to – Alex’s information DevChat TV GitHub Meetup Operation Code Sponsors: Kendo UI Digital Ocean Code Badge Cache Fly Picks: Chris Home decorating shows Charles TerraGenesis GetaCoderJob.com Swag.devchat.tv Codebadge.org Kyle OperationCode Yet Another React vs.Vue Article Hacktoberfest Alex Uplift Standing Desk System 76 Rust
Alex Matchneer: @machty | FutureProof Retail Show Notes: Charles and Alex Matchneer have a great discussion that centers around routing in Ember.js: what they want to see in a router, what problems it solves, what's wrong with the routing solutions we currently have, and what the ideal future looks like in respect to routing. Resources: Episode 067: ember-concurrency with Alex Matchneer Cordova ember-rideshare react-router Transcript: CHARLES: Hello everybody and welcome to The Frontside Podcast, Episode #86. My name is Charles Lowell, your developer here at the Frontside and podcast host-in-training. I'm flying solo today. It's been a while but that's okay because I've got a really fantastic guest on. Actually, we debated this at the beginning of the show, whether this was the third or the fourth time he's actually been on but no times are too many so hello, Alex Matchneer. Welcome back to the podcast. ALEX: Thank you. It's great to be back. CHARLES: You're still at the same place that you were the last time. ALEX: Yeah. Still working at FutureProof Retail. I'm still working on bunch of mobile ember-cordova apps and that's definitely occupying on my time. CHARLES: Nice. Because FutureProof Retail has a large hardware component and we were doing a series on IoT, we were originally going to have you on the show to actually talk about that experience of what it's like to be a part of a startup and develop software that's going to be running on a bunch of devices and the unique set of problems that poses. But in the pre-show, we decided to scrap that because there's actually a topic that we're both very interested in and you've been heavily involved in lately and might be a really interesting preview as to what's coming in the Ember community and at large. Today we're actually going to go back to talking about the same subject that we talked about in our first podcast, which is routing: what we want to see in a router, what problems does it solve, what's wrong with the routing solutions that we have today. Talk about what that beautiful, ideal future that we want to live in looks like with respect to routing. You've been thinking about this a lot lately. What have you been thinking? ALEX: I'm an Ember core team emeritus and back when I was on it and I'm a lot more active, I did a lot of work on the router, particularly with how it handles asynchronously loading data when you click on links and go to different sections of your app. I spend a lot of time over the last three or four years figuring out the nice patterns for what you actually want to use if you're building out lots of Ember apps. Then kind of around that time, right after landing some cool stuff and some not cool such us query params, which has been a challenging aspect, I start working at this company FutureProof Retail that is like 90% of the Ember work that I do there is in mobile apps. We use Cordova so we're basically running these apps inside a web view, inside either iOS or Android so that we can stay with the technologies we are most familiar with, such as JavaScript and CSS and HTML and build apps using that. We can use Ember to do that. What I found was that I couldn't really apply a lot of the same patterns, all these nice conventions that Ember router gives you. I couldn't really find a way to map that onto what I need to build in mobile apps and there's a few different reasons. I got really busy with the startup, just trying to build these things and kind of went off the happy path where I really just couldn't find a way to make it look like an Ember app. One of the nice things about the whole points of convention over configuration as this sort of Ember and Rails philosophy is that, one of the benefits is that if you know Ember and know Rails, you can drop into someone else's apps as long they're following these basic conventions and immediately know how to be productive and know how it's structured, know how to make a change to it and have it maintain a convention and not just have everybody who's using some framework build these totally different apps from each other that have no shared conventions and whatnot. Everyone is supposed to be able to learn from each other, grow with each other as long as they stay with these conventions. I couldn't really find out how to stay within Ember conventions and build this mobile apps. For a long time, I just didn't really contribute too much to the Ember router at all. I kind of fell out of touch with how most people are using it because most people are building these desktop-centric apps and here I am working on these mobile apps after three years. CHARLES: What are some of the specific use cases that were just impossible to, or not impossible but presented a challenge? ALEX: The first one is which is I think is actually one of the easier problems to solve but still some challenging is that you want something that's called stack routing or stack navigation in a mobile app, which is if you're actually building a native iOS app or an Android app, they both have different names for how they provide you this. But you're thinking of things in terms of stacks. In Android, you might open another activity, which is a full frame of a page in your app and you can push it and then when you press the back button, which is built in in Android phones, it'll pop that off the stack and take you back to where you were. In iOS, they give you a UI navigation controller and let you push and pop view controllers and that is how they want you to think about these applications. That is contrasting to what Ember makes you think about, which is go and define your static hierarchy of all the different places that you can be in an app. But with stack-based navigation, you don't necessarily know upfront all the different orderings of which frames are going to be pushed onto what and you might have situations where you want to be able to dynamically push, say an 'Add a Credit Card' page to where you are and maybe it depends on some data that's been loaded at some lower level in the stack and you can't model that as nested routes in the way that you might think about it in classic Ember apps. It's a different structure -- CHARLES: Now, when you say lower in the stack, I'm curious, if you're entered in aren't you... Oh, you mean... I see, previously in the stack. Okay, so lower in the stack so you're thinking like your current position is at the top of the stack. ALEX: Right, yeah. CHARLES: I see. Now, let me just clarify this in my own head. Your Ember routing structure is ultimately realizes a static tree but at any moment, you are entered into one path through that tree so you do have something resembling a stack. It's just is it the pathways that the ways that you can actually get nodes onto the top of the stack is you're limited because that can't be dynamic. ALEX: Yeah, but even then, it's hard to describe what the difference is but the kind of stack that you're thinking of in terms of the classic Ember router map is more like you're in these different substates than you are different frames that you've pushed onto your -- CHARLES: There's a finite and fully enumerated set of next states. ALEX: Right. To be very concrete, if you have a post route and then a post show route and then a comments route under that and these are all nested in a row, then if you're in the comments route, you are in a kind of hierarchical stack that might have loaded the post that you're looking at and maybe the post call-to-action above that and the comments for that but you're still in one thing. You've just expressed that one thing in terms of these substates so that every other state that's in the parent state can share the same data loading. That's different from saying, "I'm on this page and now, I want to push another page on it and maybe tap some of the data that has been loaded on previous pages." That's more of a navigation stack in a hierarchical substates stack. CHARLES: Is the difference then, the data dependency? Because if you think of the Ember classic where you got the static tree, at least theoretically all of the data in the leaf nodes depends on the data that's above. It's not just being able to dynamically push stuff onto the new stack but it's also saying, you want to be able to push stuff that might have no dependency on the stuff further up and it doesn't need to be re-rendered if stuff further up the stack changes. ALEX: Correct. CHARLES: But sometimes it might. ALEX: Right so there are a lot of corner cases that come out if you try to model this new way that a lot of corner cases have been thought out of if everything matched nicely to this hierarchical substate classic Ember stack but not for navigation. If you want to do something that's stacked routing-based, I've had a few different approaches. At our company, we maintain a suite of different apps that are sort of retailer or grocery-centric and the first one we did, which is more popular flagship one is Mobile Checkout, which is an app that lets you going to stores, scan items with your phone and checkout and skip the cashier line, which is great if there's huge lines and you just want to buy a little handful of things or maybe in your shopping cart. But that is like any other mobile app is really conducive to this step navigation approach. Then we had to make a few apps after that such as like another app that is [inaudible] do a manual check then ordering app and other of handful things that you can imagine is might be used on a grocery store. I took the opportunity to like, "I don't really like how the routing turn out the main mobile checkout shopper apps so let's try different things." If you approaches, at least have their pros and cons without really feeling you're solving the problem and one is to maintain your own in-memory stack of where you were, every link to you, you might recall where you were and then use that logic in addition to what's in a URL to decide what transitions to make, which to use Liquid Fire for that. But already, there's these weird growing questions like, "Why are you even using the URL? Is it helping you at all?" That was the main issue with the main app that we did. The other approach was to try and not even use any of the 'router.map' stuff at all. I use the router.map to basically just create one wildcard route. You can use normal Ember to use it like '*half' and that basically collects the rest of the URL as a param that you can use to do whatever you want with. I was using that to basically pass to another, which is internally used by Ember to do the stack-based parsing like grab a little bit of the URL and then parse the param for that then grab another. Every time you could see your stack in the URL. That has its benefits but the worst part about it is that it's getting further away from Ember so any add on that you might want to use at Internet of Things in terms of which route you're in and has conventions like that you just can't use. I can't think of a good example at the top my head but it's like the further you get away from those norms, the less the Ember system can help you and on your own building your own framework. This is all to say that I think I have enough experience at this point to bring home some of the things to Ember and I'm excited to get back into contributing to Ember with this one particular thing that I'm focusing on now, which is... I don't even know what to call it. It's like -- CHARLES: What does it do? The route stuff? ALEX: It's route stuff. Actually, let me get into the other... That's what is tricky about stack routing and tricky to sort of, if you already have to go through a mental hurdle with thinking of the Ember router and as a stack of states or substates and you train your brain to think that way, it's really hard to take yourself out of it and realize that what you're trying to build with like a classic mobile navigation is almost looks like the same thing but it's really different. The other challenging problem, which is specific to our particular app is that you wouldn't think of it as a very heavily server-driven app but if you're writing an application that at any point can get a message from the server like, "Hey, your status has changed," and that state is heavily coupled to navigation of where you're allowed to be in your apps for the state of some certain model, then you're going to have a really hard time, I'd say in modeling an Ember. I have a really hard time convincing people of this until they've actually tried to do it themselves, which is why I'm going off and just building things showing people. CHARLES: You don't have to convince me because I think one of the biggest problems is the router is like the one non-reactive piece of Ember, which is unfortunate because it's essentially, what is the equivalent of the Redux store in a Redux application, where it's the state that drives literally the entire application and yet, any type of non-hash change driven updates, you have to manually manage. Every time that we've done it, it's been a problem and depends on what data, at that point you have to be very thoughtful because, at least from the highest level, if there's damage to a piece of the tree higher up, you need to realize those effects of that damage or that change all the way down the tree. ALEX: Exactly. That is a great way of putting it. This is maybe a good time to mention this thing called ember-rideshare. I've had a really hard time describing these problems to people so I figured what I would do is write this blog a few months back, a little article called ember-rideshare. It's just a given name to the kind of app that still really hard to write in Ember. It's a mobile app. It involves stack routing but the other part is really difficult about it is this problem of the router being in a silo. It is reactive but it's only reactive to that URL. Other things changes, they need to, like you said come in and patch up something else about the router in case you add some URL that is no longer able to present some model of whose status changed. That's an article on a blog that I can probably link to in show notes or something. When I talk about ember-rideshare, imagine using Ember to build Uber or Lyft and it's got just the slightest bit of the whole thing. The whole point of the app is to coordinate your client-side request of I want to ride with the server going off and doing a bunch of things and finding a nearby driver, displaying you bunch of driver locations and it'll show up. Then finally, find you a driver. It's a constant communication. Throughout that point, you can sort of imagine modeling all the different screens as routes but the routes that are actually allowed to see at any given time are heavily dependent on what is the current state of the user's current ride. But you shouldn't be able to go to a route that says like 'cancel ride request,' if you haven't requested a ride in a million of these other things. If you're an Ember developer and you think that's an easy problem to solve, you're probably thinking, "I would use before model hook when I'm entering that route to check the state of the model," and if it doesn't make sense for the route of entering, I want to transition elsewhere. That's fine. That's good if you're doing an app if the user is the one deciding where to navigate to. But then when you're on a route like that and then the server tells you that your ride is done, you can't still be on that route so you've got to have some kind of validations that is like, "This is no longer a valid route to be in. Is the user still in this route?" CHARLES: "Where am I going?" ALEX: Yeah. Before model doesn't really help you. It's this one-shot discrete event and you just can't capture all the different things. The ember-rideshare describes some of these problems a little bit more detail but that's the main issue with it. Like you said, what is actually missing about the router? Maybe it's reactive but it's only reactive to the URL, what about all these other things that are happening into your app? I think there's a handful of APIs in Ember that they're great but they're kind of siloed off in a way. If you want to make two different kinds of worlds meet, you've got to write a bunch of your own code yourself or you just have to do mentally going back and forth and being like, "I did this, so I can't use this kind of API." I did a lot of work on the Named Blocks RFC, which previously there is silos between if you're passing blocks to a component versus data, you've got to think about them differently and all the ways that you might forward that data to a different internal component, if you want to build these composable, reasonable internals, you got to be kind of split-brain about it. I feel the same way about how the Ember router works. It's only good at dealing with stuff that has to do with the URL and you're on your own, if you needed to react to data changing. That's what I'm trying to fix. Does that correlate with your experience of working on Ember stuff as well? CHARLES: Absolutely. I think that's a great way to put it. I think we've come to a consensus of the problem statement. I am curious to see a big separate query params. I'm going to throw that wildcard out there or maybe we should save it for later. ALEX: Yeah, I definitely going to come back to it. If I say all this cool stuff and I still don't have a solution to that, then what am I talking about? CHARLES: Right. ALEX: Which to be honest, I haven't thought of every single possible thing. I'm doing the thing where I talk about it on a podcast that everyone can guilt me into really finishing it. I actually really think that I'm going to finish it. I'm very confident in stuff I'm working on. I'm very excited to bring it to people but it is not all 100% fleshed out and I definitely appreciate anyone's help to those interested, understands the nature of the problem and wants to help me work on some of this stuff and like that, in Ember community Slack or wherever. CHARLES: Yeah, I'm really excited to hear it and see in what ways we might be able to contribute. ALEX: Basically, the goal is to find some underlying primitives that can model the current behavior without mistake because obviously, we can introduce something that's going to break into Ember apps. Basically, to recognize that the URL is something that goes through multiple passes of transformation, to eventually become the thing that displays stuff on your screen, from the very foundation of it, and this is the actual mini-course of what Ember router does internally because it involves a few different libraries and maybe this is a re-hash from the podcast that I did with you guys but -- CHARLES: Can I just say that there are some things that the Ember router really does right, that are fantastic? One of those things is it baked in to every single piece of data. It doesn't do the stack but in that tree that it models, every single node in that tree abstracts away the asynchrony of that node. I think that's absolutely huge so you get both the dependency enumerated like these are the things that I need to marshal the data to render myself and it's implicit that it might take some time. I might need to draw on a couple of different things to actually assemble this data so the asynchronous nature is modeled up front and it's implicit and it's there every single time, which turns out to be the right thing. The sampling that I've missed has been an excruciating void in all the other routing solutions that I've tried outside of the Ember community is that they just punt over asynchrony to you. You deal with it, not our problem and it's like, "Actually, that is the problem." Anyway... ALEX: That's a great point because if the router doesn't help you with any of this stuff at all, then it basically means that every one of your pages that you might want to render after the fact, probably has to have some loading logic like if data is loading, show us spinner. Otherwise, here's all the data -- CHARLES: Yeah, if something happen wrong. ALEX: Right and sometimes that is actually what you want to do. Sometimes you want to do these skeletal in UIs that looked like the page that's about to display but the date isn't there yet so everything is, regardless going to be wrapped in these 'if' statements, 'else' statements. I worked in ember-concurrency and some people are using that to basically move more of that loading into controllers, that's fine. If that's what you're actually trying to do and that's what you're opting into, that's a perfectly reasonable solution but most of times, chances are you're entering a route and you don't want to have to teach the entire template tree underneath it that has to handle all these different states. There's these nice ideas that work in some cases and I'd like to make them work in more cases than Ember helps with and a whole loading all the promises and the model hooks and absolutely going into the loading state are really cool primitives that Ember is going to do for you. The other frameworks, they don't try to be opinionated. They won't do any of that for you. Sounds like you ran into that with some of your React stuff? CHARLES: Yeah. I definitely did. There's just not much help when you actually want to model asynchrony. You can do it. It's pretty easy. You just implement the right hooks or model a series of actions, either with a Saga or Epic, if you're using redux-observable. But again, you have to assemble it by hand and you have to generate those abstractions by hand and you just want to have them at hand already and not have to worry about that. But the advantage, though is that generally those ones that you do have at hand or that you generate are fully reactive. If new information comes that's germane to that particular leaf in the tree or that particular note in the tree, there's no difference between the initial state and the update state. Whereas, in Ember, you got your first shot and then that data is now at rest. ALEX: Right. I definitely have been looking at React router, in particularly v4. I think it's all contentious for people to see it at first but being able to put things like in your render function, you can say, "If this data is present, something that's going to be past and be a prop or something," then show a loading spinner or otherwise, start matching these subroutes. That's really cool. That's expense that you can't look at essential map of all the states of your router can be in but that's also a real problem and if you can demonstrates that the state world is not in a separate silo than the routing world. CHARLES: With great power comes a lot of bugs. You do run into a lot of things where you have rogue matching. You have random things that are inside your view tree that are matching against the route and they just render and you have to be very careful because it's almost the difference between blacklisting and whitelisting. I see what you're saying. It could be confusing. ALEX: Yeah. I think it's definitely a tradeoff. I think if I had something like a match, I might have been able to maybe arrive at a stack routing solution a little earlier. I'm not sure about that. It's definitely something that could be handled by React router. I think one of things that React and React routers better at in general is that everything is, more or less a component that is more easily swappable or something else here. You're not going to have as many of those silos and I really do think, it went through a lot of churn and maybe, some people had trouble, maybe a lot of people, I don't know had trouble kind of following all the major versions. But I think React router Version 4 is pretty damn cool. I think there's a fullest realization of that kind of modular mindset. CHARLES: I think the biggest problem I have with it, though is it requires the view tree to model your routing structure. That bothers me. I feel like you could do the exact same thing. You could have a way to express your routes, not necessarily with a separate routing file. I supposed you could do it with JSX or something but actually have it be kind of orthogonal to your view tree. The way you can model this dynamically updating thing that can match against anything and maybe, even express it all in one place. Although once you get a big tree, it could be hard to control that. The part that I've come into most conflict and maybe who knows, maybe I just haven't used it enough, we've only got one application that we're using the router V4 on. But the fact that it's actually in the view tree, it bothers me. It's in the state objects. It's hard to adapt to Redux because that state is opaque. It's the routers controlling it and I would it to be not have to pass through React components but just be like, give me the firehose of the router state. ALEX: Right. I love what you're saying. If I'm going to bring this stuff to Ember, I can't suddenly make it work like matching within the view tree. That's not what I'm working at or proposing here. All the stuff is basically to empower that firehose to respond to more things that can drives views and respond to them in a live way, not like a one-shot async validation, only when you enter. CHARLES: Maybe this is what the problem that you're trying to solve and one of the things it's really nice to be able to match against anything inside the view tree is that Ember's rendering process of a route is very opaque. The process, by which an outlet gets connected, that's not something that you really have much visibility into. Is that a good statement of the problem? ALEX: That's definitely part of it. You definitely have to go to the documents. I think it's telling that -- CHARLES: I've never done it. I don't really know how that works and I've written a lot of Ember code. ALEX: How what works? CHARLES: How the route gets rendered, like the mechanics around, which I understand how the route object actually, you makes the decision to render its template and do all that stuff. I know it as a user but I don't know the mechanics and I wouldn't know how to extend it. ALEX: I'm not sure if the stuff I'd work on but it immediately make some of that stuff more clear. One of the goal or constraints is to really try and break down the silos. Whatever I'm about to propose bringing to Ember, I want it also be something that would be useful, possibly at the component or template or controller level, rather than just being this thing that lives only in the router's weird black box of logic that occasionally calls hooks that everyone knows about. CHARLES: Right. In a sense, I'd say that they both suffer from that same problem. I'm curious to hear about the firehose. ALEX: To actually get into what I think you're building here, we can dance around it all day and then we -- CHARLES: Just save it for the last 30 seconds of the podcast. That way there could be no -- ALEX: We're swapping JS for React router V4. Bye! It's basically this. What's happening today is that you have a URL, it's going to be parsed in a way that you've tied it to via the router map file, which every Ember app has the place to go to see all the different places that you can navigate to an Ember app, which is great. You basically taught Ember how to break your long URL string into these usable bits and that's going to give you an array of these things that internally who cares what they're called but they're called handler infos and they basically say, "The first element of this array is named application. Every Ember app has one. It doesn't have any params." The next one, it starts getting into what your URL actually is. Maybe it corresponds to the '/post' portion of the URL so that's going to be named 'post,' and that doesn't have any extra params either. Then there's this thing that is post show or something like that. That has a dynamic param because that's the part of the URL as like the '/123' and that corresponds to the post ID. It's basically, if you like thinking of things in terms of transformations or observables or mapping and functional transformations, that's taking a URL and turning it into an array of these useful POJOs of information. The goal is to keep transforming that into something eventually has enough data to display and templates and whatnot. In this giant black box of the Ember router, it's going through those transformations and then it's going to go through this long series of using these params and this useful array of POJO information, start hitting hooks on people's routes to load data. Hit before model after model, redirect all these things to give tasteful names to all the tons of validations and checks that you might want to do. You do cool things in your before model hooks, check if the current user is actually an admin to prevent them from going into any '/admin' subroute. That's a really cool place to go and it's also a great convention. If you're new in Ember app, you realize you can't go on this route. It should sort of click in your head and that sounds like they've got one of these redirect hooks to ensure that you're not going anywhere you're not supposed to go. All these things are really still to this day, extremely strong, well-designed, it went through many passes of review before it landed. I think they cater to a certain kinds of user-driven clicking around apps but they are extremely strong to this day. I think the only thing that's missing is the smell. That example I gave like checking if the user is an admin, it's a bit of a smell that is not reactive. It's a hook. If it passes, great. You're in the route. It's not going to keep on checking that. What I want to do is basically, either in addition to or as an alternative to specifying these one-off model hooks or these hooks that you, not only really just fire one time, have essentially what is an async computed property or an async validation that is upfront about things it depends on. Ember is going to be smart enough to constantly reevaluate these things as stuff changes. It can depend on not just URLs or URL parameters but it can also depend on data. If you're thinking about ember-rideshare, which again is the imaginary Ember app that it's essentially Lyft or Uber, if you have a current ride model loaded somewhere, maybe by a parent route or maybe it's some sort of service, you should be able to specify it like an async property or validation that says, "I depend on ride.state," and for all these subroutes, you would want to say that, either upon entry or any point in the future, if the state ever changes to something that I don't know how to handle that go to some default route. That would be already, particularly in my app, which is a subset of a different kind of ember-rideshare app, that would be a huge help because the only other alternative is to build a sibling-central coordinator to the router that isn't the router but has to sort of agree with it and then, every one of these frames that you might push onto the navigation stack, they have to do some little chunk of code and then invoke this logic and be like, "Did the state change? Go where you're supposed to go," and they have to do that logic. It would be, I think a great win for conventions as it has if it's a benefit to make people shout out their states in advance to empower them to shout out also their data constraints in advance so that you get things like automatic redirects and things change, I think that would be huge. I know that would immediately benefit off of it and I think it would fall in the same kind of problem solving that they worked on like Ember-related stuff which people don't realize how big a problem is until they see there's a better way of doing stuff. I think with that being there -- CHARLES: As an example, let's say that you're an admin and then all of a sudden, you got fired and there's an event that comes from a server that's this person is no longer an admin and it wipes out the Ember data store and then redirect you outside of the admin route or something like that. ALEX: Yeah, that's a perfect example. To be pedantic, I think a lot of people do hard refreshes between login/sign-off stuff but if you have it all in your Ember app, that would just happen automatically. You'd still want the ability to have more graceful transitions because one of the tricky things about having stuff driven by data is that you have this giant matrix of like, "If I'm in this state and this event happens, how do I handle it? How do I make it look well-designed to the user?" But you're not going to be able to hit every one of those constraints so to just have some basic logic that's just like, "Oops, something happened," you're not an admin so we move you to the sign-in page. For in those cases, we haven't fully filled in all those leaks. I think it would be a huge win and you can just progressively decorate things according to the common flows that people take through your app. CHARLES: You know, I'm just imagining this. Model promise, for example would be some computed property, then how would you enumerate your dependencies? Just do the mechanism that we have now? Or are you imagining something entirely new? ALEX: I don't have a strong opinion on it because the moment I start saying what that specific syntax is, more people will agree on what's missing and what we need to have, regardless and be like, "I don't like it." I'm leaning toward something inspired by a lot of my learnings from observables, which is actually we talked about last time. The whole thing about observables is that there's almost limitless flexibility as to if you're in observable, it can take that event. It has been another observable based on that thing. If a URL changes and you're listening to that via observable description, inside that, you could kick off another observable of Ajax request based on that URL and it doesn't make you enumerate all these things upfront. I think there is going to be a compromise between that. I think when you get into these kinds of problems, you run into stuff like Relay, which is familiar with -- CHARLES: I haven't used Relay. ALEX: Just the idea of dynamically collecting all of your dependencies upfront before hitting the server and asking for specific chunks of data that you need, it's a very promising idea. There's cases of just dynamicism where the data comes back from the server, then you realized that you need this other piece of data and there's no way you could have collected upfront, unless you statically wrote it upfront. I expect to find that with this approach that there's going to be some stuff where you just have to be more upfront about it. But I had a cool little strike the other day on auto-computed properties and I'll also link to that. It's a different way of running computer properties where you don't have to specify your depending keys upfront but your getter function gets passed a getter function itself. CHARLES: It's past the dependencies? ALEX: Not even that. Imagine writing a computer property and the first [inaudible] is a function that you can call to get a property off of this but also track that you've got that property. If it ever changes, it'll invalidate again. That means if you're implementing a [inaudible] in computer property, you don't have to write first name twice, both in your dependent keys and in the actual getter in your function, which I think is kind of cool. I'm trying to make that pattern work for this data loading thing so that you don't have to have this huge verbose thing. You just lift this stuff in one place. I've sensed that the magic will probably break down in some complicated cases but that's what I'm trying to run with because I think it's pretty cool and succinct and sort of the natural evolution of what people think of as computer properties. The other major constraint and this is also what we're talking about because it's one of the best kept secrets about the router or it's one of these things that everyone's benefiting from without realizing it, is that if a transition occurs in the router, everything in the router is going to be a possibly long asynchronous chain of operations that it collects all the data that it needs for the new routes to display. In that time, if something happens, if some hook comes along and has an exception, it can load data from the servers. If something happens then it just says 'transition.abort,' that's going to stop whatever transition is in place and you're going to stay exactly where you were and if you're not stuck in a partial transition state, that's pretty awesome. That's basically database atomic transaction semantics that people have been benefiting from if they've been using Ember for years at this point. But again, it suffers a problem being locked away in the router. That is a cool concept. You should be able to specify like I intend this change of the state this way and if I gave you something that is logically inconsistent or can't be fulfilled, don't leave me in a weird half-assed state that I need to somehow fix and know how to fix all the different places, where I might be kicking off this transaction. I'm trying desperately to preserve those semantics when data comes into it. One of the hardest things to do is and honestly, can be one of the hardest sells for people who are used to thinking about Ember is there's an issue of if you imagine whatever API we're talking about, it's probably going to live on the route. Some kind of hook that might be called resolve or something else, like what is the value of this context object that every function has? Is it a route? It's tempting to want to do that and maybe, that will end up winning but winning out is the best API to get people to use. The thing to realize is that there is no consistent value of this. This implies that there's a state of the world and you're looking at it and currently, these things have these values. But in the transaction phase, there is no stable 'this object' and you can wind up with some weird surprises. I know because, not actually these days but particularly, when a lot of the stuff landed and people started trying to do weird things and these transaction hooks, there's just like, "Why can't I grab the controller? The property isn't what I expected?" Honestly, all the stuff that is gross about query params because of this fundamental violation. You have something that pretends to be a property that is there today but is still driving this asynchronous thing that could fail. CHARLES: I kind of viewed this as playing an off-note in the jazz thing like you only want to reserve using this, unless you're the Miles Davis of JavaScript, don't use this. ALEX: And by Miles Davis, you just mean like the god of concurrency that's incorrect race-condition-y code. CHARLES: Right, so it's just like you've got the right reason and you can spot the one-in-a-million case, where it's appropriate. You can spot it in an instant. ALEX: Exactly. I'm not that person and I don't know too many people who are and that's not the API you want to land. I'm trying to, maybe wean people off on dependency on this because the way we've gotten around it in the past is to use again, is more discrete, get the value functions called 'get model' and 'get params.' These are all very in-depth stuff if you're pretty experience Ember developer but it's a way of getting a value from one of these parent routes when you're inside a transition and the rest the world can't see it but you can because you call this hook at the right time. It's super gross because it's just a method on a route that anyone can call in any given time, whether you're inside this transaction or not. The branching logic of, "Should I look up the data from the transaction object?" because once valid, I should have get the current value of a loaded route. It's really gross to me and it causes real problems that confuse people and causes them to write issues because they've given an API that makes them feel good about treating these things as stable objects. CHARLES: I'm trying to imagine now, just like a spike in my head. I know you don't want to get too into syntax but essentially, modeling the route tree as a set of observables, where essentially, instead of returning a promise from your model, you're just mapping an observable off of some combination of the URL state or what are the other streams of state you want to merge to realize that route. But what I'm not seeing, which I'm sure you also have the answer is the original problem, which was stack routing. What we've been talking about is making the router fully reactive like this fully reactive tree that's always on. But that problem seems almost orthogonal to the stock routing problem. ALEX: It is. It's been very tempting to combine them. Why it is such a hard problem? Because you've got navigation stack, which almost to this route hierarchy stack that [inaudible] about but they're separate so you can't really apply the same lessons. Then you've got stack routing, which is you want the ability for routes to while they're loading, reference data that is dynamically available to them. I don't have a solid answer but I would say, the one thing that I think is going to help is that you have a few options for what you want to stash how you want to represent a URL or where you want to stash your hierarchy. Actually just track it in-memory and if you refresh the page, it'd be like, "I depend on some data that I expected to be there but it's not. It transition elsewhere," which is not a great developer experience. You could want to be able to make changes and refresh the page and continue where you left off. Otherwise, URLs aren't actually used by mobile app users. But the other place that you could possibly put the navigation where event stack is in a query param because that can be fully dynamic and you can just sort of manage every single page. The most current page you've pop is just some top-level route but you're tracking the state on the side. I think if you solve the problem of being able to depend on things that aren't the URL or go through a more complex transition than what the router gives you by default, I think it would be possible to treat that query param or that thing you're stashing in in-memory as another source of data. The other thing that I want to try and make sure that this new API has is really treated dependency injection where you specify all the things that you need and you don't really care from a route's perspective where they come from. I think if you had that, that would solve a lot of problems with stack routing and where it gets data from. To be very specific, today if you were in that post '1, 2, 3' comments route and you needed to access the post model from within the comments route, you would probably do this model for post. Basically you're naming not just the model that you need. You're naming the route that you know provides it upfront, which I think is that. Actually, the real reason it's kind of the smell is that, if you ever need to change the nesting, maybe you need to introduce another level or you want to nest all that under an admin route. Then suddenly, you're asking for the wrong route name. You're not really sure all the different things you need to update if you ever change the nesting of your router. There's solutions like relative URLs that a lot of people thrown around but I think -- CHARLES: To go back in the observable world and specifically, the redux-observable world, it's like a simple map. You're just mapping down off of a global prop, you've got some tree of state and you're just mapping off... What was that like? A model hook and you're just mapping down off of that? Wherever that state lives, you're mapping to it and now you kind of slicing off your little garden hose off of the firehose. But still one huge -- ALEX: I've tried to apply observables to this problem. I don't think I've never seen the observable analogue of is this idea of dependency and injection. To model something as a stream that transforms over time, that's proven to be very useful but to sort of say, "I am an observable that expects these objects given to me," I'm not really sure what that API would look. CHARLES: I would say, just as a straw man perhaps, you have this dependency that it's a well-known location. It's a well-known name. With dependency [inaudible] in classic, it's like, "I depend on the off service. This thing called 'service:off' or whatever. Imagine that you have some pool of state and there's some key called ‘service.off' there and as long as I'm just basically basing my stream, the first thing I do is map off of this and maybe map off of another key and then combined those into a single stream, then I can be sure that I have those things at all times. If they change, my mapping function or my transformation function is going to get evaluated again. Does that make sense? ALEX: Yes, I think we should [inaudible] C without code or something. CHARLES: And maybe I'm thinking about it wrongheadedly but that would be a simple mechanism. ALEX: Could you run by me one more time --? CHARLES: Yeah. Let's say that we've got some authentication service that you want to depend on like you want to inject on it. You want to inject that dependency so why can't you base your stream off of that key? You have observable map, for example. The list of transformations that you would have to do to peel off multiple keys, I'm sure you could write helpers for it. But basically, probably if you're going to be wanting to inject multiple dependencies will -- ALEX: The problem is this. Basically, if you want to write your resolved observable, if this thing based on observables, remember that there is no this in a route because of the transactional reasons of what we've talked about earlier, what are you getting that from? You need to have something passed into you, to be like 'context.get observable blah.' CHARLES: I would just assume that it's implicit. I was thinking a bit basically, the simplest case would just be an observable that was basically taken off of the entire global state or whatever of the router or what have you. The way the redux-observable works is every single epic is what they call them is just a transformation on the global stream. Usually, the first thing that happens is they map down to the local context so the -- ALEX: Like a path? CHARLES: They have a helper like action of type, blah. You only see a subset of the actions that get maps to the Redux store. I think it's redux independent but at least in theory, every single epic is basically going off of the entire global state but the first in reality, what the first thing that happens is you're like, "I am only interested in this subset of the state," so you do a map off of the global state down to your local scope and then you work from there. In fact if you had the convention around that, you could even make that part implicit. It's like I return an observable that it's only seeing the stream of local states. ALEX: That makes sense if there's sort of canonical state of the world but what you're doing when you're transitioning into a route is trying to feel out another state in an asynchronous manner. Redux is the action causes state to change, now the state is this. But the action for type thing, I think that makes sense if you are subscribing to the world global action on this one store when you're constructing this new tentative, may not actually become the store, you're depending on values. What we need in our API is something that depends on values that are from a tentative store. CHARLES: It's similar so in redux-observable, you're mapping actions to actions and you're not necessarily mapping actions here. You want to get state into the equation. ALEX: Yeah and it's so almost observables. It's just this twist of transaction dependency injection. It sounds really over-engineered but the thing is it exists in Ember today and if it exists in a less siloed way, I would certainly benefit on it. I think everyone else would too. CHARLES: Okay. With that hand wave... ALEX: Oh, I didn't mean for that to come as a hand wave. CHARLES: No, no, no. I'm kidding because I think we actually have a lot more to talk about here and we're running out of time. One of the thing that I want to ask is, talking about redux-observable, talking about redux and stuff, have you given any thought as to what this might look as a library that everybody could use? ALEX: I basically have something that's using Ember CLI only because it's so easy to just use it as a sketch pad and get test passing but everything I'm building so far is just ES6 class syntax that can be transpiled in it to whatever. I'm actually realizing, there's a lot of overlap between some of the primitives that are involved and Glimmer so it may or may not have a pass that uses references for tracking when things change until no one to invalidate and refire these async hooks. But either way, I'm going to make sure it lives in the JS usable world and not just Ember's special object model end. CHARLES: Right. Those interfaces are pretty narrow. The things that implement those interfaces are huge and complex but the way, at least I understand it, isn't the reference interfaces themselves -- ALEX: They're really simple, yeah. CHARLES: -- Really simple. It could almost be copied and pasted and not have much maintenance overhead in there. Here's a question and this is probably getting too far into the weeds. Can you not model a transaction as an observable? Essentially, with a flatMap, you would merge in some observable into the chain that was basically a transaction of all the other observables from which it is composed. ALEX: You know, a transaction as it builds up all the new state over time could be part of the main tree and if there is an active transition, then that's future potential state that the world might become and it could be modeled as a leg of the Redux state. I think you could theoretically do that. Definitely worth a try. I don't think I would benefit too much from doing it now and I think this could be a premature optimization but I think there would be just quite a bit of intermediate object collection to express that. I think theoretically it works but how it's going to physically map to Ember in the near future, it would be harder [inaudible] in a way. There's actually a lot of stuff that is very redux-y that again, a lot of Ember people don't maybe know about because it's internal but the way that Ember [inaudible], I think since Edward brought some of his learnings of Liquid Fire back to core Ember, there's this concept of outlet state, which describes -- I'm not an expert on it -- what's rendered where and then each outlet gets a chunk. Like you said, a little piece of the firehose or garden hose, pulled off the main thing so it can just focus on the one piece of state. Those are simple objects that produce this part of this transformation process. That's kind of redux-y in the way that everything just gets a new POJO and stuff changes but it's not strictly redux, obviously and probably won't become that just because it's already good enough on its own. CHARLES: Yeah. I think it's actually good at this point to be hand wavy because the most important thing is to be non-committal about the syntax, like you said because that's when the bikeshedding begins and now it's not the phase. The phase is to come to some agreement about what is that we would love to see. ALEX: Basically, the thing is this. I think people need to realize that Ember won the bet that the URL is an important thing to build apps around and if you have a state that's representable in URL, that state should go in the URL so you can send links around and not break the web and have an app that works that's built on half-assed routing. The only thing I'm proposing is going to make that go away. It's just that there is already this giant world of stuff that's not expressible in Ember today because it is driven by state. If you make that as easy to express and as upfront to express, I think you can have shared conventions versus what everyone is building these apps that I have to do, which is to make a sort of separate router of state-aware stuff and not have to make those two things agree with each other because it's really hard. CHARLES: Right. At that point, you're writing your own framework. Maybe this is the next big thing because I feel like Ember usually has the best stuff way, way, way, way before. Now, we're finally getting to a point where everybody seems to realize that having a CLI is absolutely critical to the developer's experience and most frameworks aren't taken seriously until they've achieved that. It was the same thing with a router back in the day. I'm wondering what that next thing is. ALEX: I don't know. I don't think this is going to be it. I just think it's a good progression. I think a way forward that progress is still a pretty legit central structure to build apps around and just would be welcomed. CHARLES: When are you going to be done? ALEX: About two or three days. I don't know. I think I'm basically going to be continuing to get feedback like the way that a lot of that original router stuff came back or it's just like constantly hit people with real examples, Ember twiddles, things are just like, "Oh, yeah. That thing. That's a cool pattern. That sucks in my app. I didn't realize that until I saw this example." These things that really teach people why this is necessary because that's going to get people's urge to be like, "Well, you could just do..." Oh, you can't because the thing that's hard to explain. It's going to be a lot of that regardless and I hope that will kick off in the next few weeks. CHARLES: And the focus of that is going to be the ember-rideshare application. ALEX: I think that's a good one. This is one that everyone's familiar with. CHARLES: Have you already kind of implemented in it, like this kind of Frankenstein-ish, like this is the kind of histrionics that you have to go through in order to implement the style of routing or the style of application using today's Ember? Or have you started to begin experimentation with these new concepts and try to build out better ways of doing it? ALEX: I'm not strictly extracting it from one app. It's sort of combined. Like I said, the few different apps that we had were an opportunity to be like, "This sporadic stuff is hard." The main route recognizer approach was an example to try different stack routing pattern. But the thing that sort of working on is drawing from three different apps and slightly different takes on it. Basically, I have something that is close to being testable in one of my main apps that will be a great chance to validate if all the stuff is as nice as I think it is going to be. CHARLES: Okay. If the people want to get in touch with you, to help to contribute to the conversation or just publicly guilt you into moving faster towards it, how would they get in touch with you? ALEX: I'm at @Machty on Twitter and GitHub and also, the Ember community Slack. I think I'm going to try to get people to talk about this on channel called Dev Dx Router where it's focused on development stuff all around the router. This is kind of funny because I'm talking about this thing that I've only had maybe, 12 people take a look at and comment on and begins these conversations. I think maybe some people are going to hear this and be like, "What are you talking about?" but if it gets people -- CHARLES: No, no, no. You know, the best conversations seemed to be organized around you, man. I'm just trying to think of some of the best development conversations that I've had in 2017 and you were definitely, I would say the one who fomented them. It starts with 12 people but then, if enough people take interest and be like, "Wow, yeah. Oh, man. I didn't even know that was a problem. This would be a cool way of doing it." They have a tendency to balloon and some fizzle out and some end up with real results. Anyway, I'm looking forward to it. ALEX: I appreciate it and likewise, you're definitely one of the best people to talk about this stuff with. CHARLES: Well, I hope other people will love listening to our conversation. With that, we'll head on out. Thank you everybody if you've made it this far. As always, you can get in touch with us at @TheFrontside on Twitter or just send an email to Contact@Frontside.io. We will talk to you next week.
Today’s guest in this episode of Cult of Startup is Alex Littlewood, the founder, and CEO of Motoroso. Founded in 2013, Motoroso is an online hub for motorsports and automotive enthusiasts alike to plan, build, and share their dream vehicle projects -- from drawing ideas and inspiration through content to locating specific parts, accessories, and service providers. Motoroso stemmed from Alex’s passion for working on and riding cars and motorcycles. In today’s episode, we get to the root of what the company’s all about and how it got to where it is now as a result of that passion. Some questions I ask Alex: How did growing up in motorsports influence the work you’re doing today? [7:47] What was the experience of working at a startup that was later acquired by Google like? [11:40] What was the next phase after you left Google following the acquisition? [35:39] What the plan for making Motoroso happen while also working a 9-to-5 at your then-job? [45:37] What were some of the lean methodology procedures you used to get to the point of figuring out your idea before having the code for it written? [52:36] What was the application process for Techstars like? [1:07:59] What was it like going from Silicon Valley to Detroit? [1:16:05] What was the makeup of the Techstars experience and program? [1:26:32] What did the day-to-day of the Techstars program consist of? [1:35:02] What’s your opinion on the environment of accelerators? [1:38:05] What were the criteria in making the decision to move to San Luis Obispo, and where is Motoroso at today? [1:53:07] What do you want Motoroso’s next stage to be? [2:03:35] Some Things You'll Learn In This Episode: What differentiates a “market network” from a “social network” What website inspired Alex’s idea for Motoroso How Alex’s career turned into a path focused on marketing What the challenge in helping to position the company for success was when it came to dealing with larger enterprises while at Wildfire A word of advice to anyone thinking about going into a startup How the idea of Motoroso came to fruition What factors went into deciding to start Motoroso and realizing it was the right move What side jobs Alex took on to make ends meet while making his vision happen Why it’s not necessarily the case new startups should always be in the Bay Area Why every startup founder should apply to an accelerator What accelerators are actually for The difference between an idea and an actual startup
The Nickscast discuss why a show targeted towards men became unexpectedly popular with women and has continued to grow in popularity: We're talking about the SPNFamily (Supernatural fans!). How is the show so popular after even after twelve seasons? How does it differ from its peers? What keeps its fans going? We're going to eat some pie and find out on this week's episode of Fanthropological! Next week, we'll be talking about fans of Sherlock Holmes (BBC Sherlock, Elementary, classic; we're talking it all). Stay tuned! ## Episode outline ### [Last episode's](http://fanthropological.com/e/26-whovians/) Famous Last Words **Z:** Who is the fan favourite character and why? **G:** In canon, who is born first and why do fans think it is one way or the other? **T:** Is it just because its two hot people? Will any show about two hot people succeed? **Alex:** How much slash fiction is there? ### Fandom facts **Origins:** An American fantasy horror series that was first broadcast in September of 2005. It follows the nomadic lives of brothers Sam and Dean Winchester, travelling the US and hunting down supernatural foes (as their father did, who spent years seeking revenge against the demon responsible for his wife's death). It just ended its 12th season, as of this recording, and is renewed for a 13th. **Fandom origins:** Largely Livejournal ([supernatural_tv](http://supernatural-tv.livejournal.com/)) **Names:** Supernatural Family / SPNFamily **Size of fandom:** The TV series pilot has 5.6 million viewers, and episodes regularly have about 3 million viewers. **Fanfics:** Archive of our own: Over 92000 (January 2015); Over 60000 (February 2014); Over 27500 (December 2012) ### What did we discuss? A brief history of strikethrough and splintering of fandom from Livejournal ~ the Supernatural newsletter ~ Fan terms like imbroglio (vs fanwank) and real-person fiction (RPF) ~ Keeping a long running show like Supernatural fresh ~ changes in television and storytelling for long running shows ~ the cast, crew, and fandom as a tight knit family ~ charmingly flawed shows that keep trying (which is good) ~ character and fandom relationships: "Family don't end at blood" ~ Targeted at men (classic rock, killing monsters, cars) but women as biggest fans ~ Z's Supernatural boyfriend ### Are you in, or out? > Z, so now that you're romantically involved with one of the Winchester brothers, are you going to continue things further? > > — G **Z is in.** > ...As part of my research, I have to watch the first episode of this to see if its any good, to see if it holds up. And, after seeing that first episode, I can definitely say that I am in for the first five seasons. > > — Z - T briefly explains the cosmology of our universe compared to that of Supernatural's **T is out.** > Z, I'm going to take your 'in', I'm going to take it, and carefully toss it into the trash because I am out. I don't care if that metaphor works! > > — T - At 12 seasons and still going, media fandom is too big - **But** T is committed to watching the pilot and the fanfiction episode. Hold him to that! **G is out.** > I want to try and find these more experimental episodes and watch those. Like *The French Mistake*, as I mentioned, the fanfic episode, the one from the perspective of the car. *LARP and the real girl* ... There are few that have piqued my interest. > > — G ### Fans of the week No fans of the week this week, sorry :( ### This week's spotlights [Random Acts](http://randomacts.org) Started with Misha Collins (Castiel, on Supernatural) in 2009 asking his "minions" on Twitter to come up with ideas for a "minion stimulus" project (during the economic recession). Has since grown and and changed, but is set up to encourage folks to conduct random acts of kindness in their communities, and holds different fundraisers. In 2014, spent over $47000 USD
Katie Gengler @katiegengler | GitHub | Code All Day Show Notes: 01:23 - Testing 06:20 - ember-try 14:11 - Add-ons; Ember Observer 17:43 - Scoring and Rating Add-ons 25:25 - Contribution and Funding 27:41 - Code Search 30:59 - Data Visualization 32:27 - Change in the Ember Ecosystem Since Last EmberConf? 34:35 - Code All Day 35:39 - What's Next? Resources: ember-qunit liquid-fire capybara Selenium appraisal emberCLI Bower Transcript: CHARLES: Hello everybody and welcome to The Frontside Podcast Episode 54. I am your host, Charles Lowell, with me is Alex Ford. Today, we're going to be interviewing Katie Gengler. I remember very distinctly the first time that I met Katie, it was actually at the same dinner, I think that I met Godfrey at EmberConf in 2014. That was just a fantastic conversation that was had around the table and I did not realize how important the people that I was meeting were going to be in my life over the next couple of years. But Katie has gone on to do things like identify a hole in Ember add-on ecosystem so she created Ember Observer. There's a huge piece missing from being able to test this framework that spans multiple years and multiple versions and being able to make sure that your tests, especially for add-on authors, run against multiple versions so she created and maintains Ember-try. She's a part of the EmberCLI core team. She's a principal at Code All Day, which is a software consultancy and just an all-around fantastic woman. Thank you, Katie for coming on to the show and talking with us. KATIE: Thanks for having me. CHARLES: One of the things I wanted to start out the conversation with is something that's always struck me about you is there's a lot of people when it comes to testing, they talk the talk but you have always struck me as someone who walks the walk. Not just in terms of you make sure that your apps have tests in them, where your add-ons have tests in them but talking to people about testing patterns, making sure that when there are huge pieces of the ecosystem missing like Ember-try. I remember this as something that I struggled with. I was running up against this problem and all of the sudden, here comes Ember-try and you've been such a huge part of that. I want to know more about kind of your walk with testing and how that permeates so much of what you do because I think it's very important for people to hear that. KATIE: I got really lucky right out of college. My first job was at a place that where people think of mythical themes, XP-focused developers so the first thing I was told is everything is test first, everything is test-driven. I was primarily doing Ruby in Rails at the time but also JavaScript. At the beginning, we didn't have a way to test JavaScripts and there was a lot of missteps in the way of testing JavaScript until we came right around to QUnit. I was QUnit long before Ember even came along. It's kind of bit ingrained in my whole career. Michelle as well. Michelle is my partner in Code All Day. We're both very test focused. I think that's what drew us to start a company together and working together. Every project we're on, we try to write encompassing tests: test drive everything, if we're on it, projects upgrade or any project to fix. We try to write tests as a framework for everything that we're doing so we know whether we're doing something right or not. When it comes to Ember-try, that wasn't entirely my own idea. That was something that Robert Jackson and Edward Faulkner were looking for something right. I remembered that appraisals gem from Ruby. I really enjoyed being [inaudible] gems that I had written Rails so I wanted it to exists for Ember so I just kind of took a promise of to do it. It was extracted from Liquid Fire. I had some scripts that would sort of test multiple versions but it was rough. It wasn't as easy as it is today. CHARLES: Yeah, it does speak to a certain philosophy because if you're coming to a problem and it's difficult to test, you often come to a crossroads where you say, "You know what? I have a choice to make here. I can either give up and not write a test or trying and test some subset of it," Or, "I can write the thing that will let me write the test." It seems like you fall more into that second category. What would you say to people who are either, new to this idea or new in their careers and they butt up against this problem of not knowing when to give up and when to write the thing to write the test. KATIE: I almost never don't write the test so if you're suspicions are true, I will write something to be able to write the test. But there are times that I'm [inaudible] and sometimes I'm just like, "This is not going to be tested. This is not going to happen." Finding that line is pretty hard but it should be extremely rare. It's not when people come to me, I work with a client and they're telling me, "No, it's too hard to write the tests." A lot of times, it's not only how you write the test, spreading the test and learning how to write a test. It's the code you're trying to test that could be a problem. If you have a very complicated code, very side-effect driven code, it's very hard to write the easier sell, which might Ember acceptance tests. What you're really kind of on a level of integration because you do have a little bit of knowledge of what's going on and you have to be within the framework of what Ember tests wanted you to do, which is async is all completed by the time you want to have this assertions and test. That means to look different tools like going back to something like Capybara or Selenium and have some sort of test around on what you're doing in order to replace the code that makes it hard to test it at a lower level to begin with. I think a lot of people are just missing the framework for knowing what to do when their code is intractable or not, necessarily that the testing and the guides that have you tested. I think most people could go through tutorial and do tests for a little to do MVC app perfectly fine. But that's easy when you [inaudible] size of the equation so if you're already struggling with code and you're not quite sure, either in Ember, it can seem very, very hard to write tests for that. I think that's true with Rails as well. I think people that begin in Rails don't understand what they're going to testing, especially if they have an existing app that trying to add test to but unfortunately, Rails not a long ago, kind of got into everybody's heads that your tests go with what you're doing. It's just ingrained part of the Rails community. Hopefully, that will become how it is with Ember. But a lot of people are kind of slowly bring their apps Ember so they really have a lot of JavaScript and they don't necessarily know what to do or they're write in JavaScript have always are written with jQuery and a little bit [inaudible]. They don't understand how to test that. ALEX: How does Ember-try help with that? Actually I want to roll back and talk about what is Ember-try and how does it fit into testing? You mentioned the appraisal gem which I'm not familiar with. I haven't done much Rails in my life or Ruby. But can we talk about what Ember-try is? KATIE: Sure. Ember-try, at the basis, let's you run different scenarios with your test. At some point, I would've said, let's run different scenarios of dependencies for your tests so primarily changing your Ember version and that's pretty much what add-ons do but a lot of people are using it for scenarios that are completely outside of dependencies so different environment variables, different browsers. They're just having one place to have all these scenarios, where if you just put it in travis.yml like your CI configuration, you want it as easily be able to run that locally. But with Ember-try, you can do that locally. I found that it's kind of beyond my intentions, expanded beyond dependencies. Primarily, it lets you run your test in your application with different configurations. I could see running it with different feature flags, it would be what something to be interesting to do, if that's something you use. Primarily, it just lets you try the conversions and appraisal gems let you run test with different gem sets so you have a different gem file for each scenario you possibly had. That was definitely dependency-focus. CHARLES: That sounds really cool. It's almost sounds like you could even get into some sort of generative testing, where you're kind of not specifying the scenarios upfront but having some sort of mechanism to generate those scenarios so you can try and surface bugs that would only occur outside of what you're explicitly testing for, which is kind of randomly choosing different versions of environment, variables, feature flags, dependencies and stuff like that. They didn't thought of that? KATIE: Randomization [inaudible] but Ember-try really does have a kind of general route way of working on and that's we're leading to that. If you wanted to, especially for add-ons, you can specify this version compatibility keyword and your packet at JSON and give Ember and give an Ember string a version and it will generate the scenarios for you and test all those versions. These Ember strings are pretty powerful so you can say specifically versions you want. You can do a range of versions and it will take the latest patch release and a reminder, at least you don't want to be too crazy and test each of those for that add-on. But I can definitely see something random, they're really cool. Some testing thing that's like just tries to do random input into all of your inputs on a page. I've really been meaning to try that out. Sounds like [inaudible]. CHARLES: Yeah, just like to try and break it. I remember a world before Ember-try and I can't speak highly enough about it and the fact that how many bugs it has caught in the add-ons that we maintain because you're always working on the latest, hottest, greatest version of Ember and you're not thinking what about two-point releases back. They're might be not a deal breaker but some subtle bug that surfaces and break your tests and the coverage has just gotten so much better. In fact, I think that they're as brilliant as it is bundled with EmberCLI when you are building an add-on. It's like you now you get it for free. It's one of those things where it's hard to imagine what it was like, even though we lived it. KATIE: And it was less than a year ago. [Laughter] KATIE: Ember-try existed for more than 15 bundle with EmberCLI so since last EmberConf or so. CHARLES: Yeah, but it's absolutely a critical piece of the infrastructure now. KATIE: I'm glad it caught bugs for you. I don't think I've actually caught a bug with it. CHARLES: Really? KATIE: Yeah, but I don't do a lot of Ember re-add-ons. I do a lot of EmberCLI-ish add-ons. It can't change versions of EmberCLI. Not yet, we're working on that. I get some weird npm errors when I tried it but I haven't dug into it much yet. CHARLES: I don't want to dig too much into the mechanics but even when I first heard about it, I was like, "How does that even work?" Just replacing all the dependencies and having a separate node modules directory and bower and I'm like, "Man, there's so many moving parts." It was one of those things where we're so ambitious. I didn't even think it was possible. Or I didn't even think about writing it myself or whatever. It's one of those like, "Wow, okay. It can be done." ALEX: This exists now. CHARLES: Yeah. ALEX: Add-on authors are accountable now for making their add-ons work with revisions or versions a few points back like you said but it makes it so easy. The accountability is hardly accountability, turning Ember-try. It's really amazing. KATIE: What I'm laughing about is that what it actually does is not very sophisticated or crazy at all. For instance, for bower, it moves your existing bower components structure. It's a placeholder. It changes the bower.json run install. Then after the scenario, it put's everything back. CHARLES: But I don't know, it sounds so hard. It's intimidating. You got all this state and you got to make sure you put it all back. What do you do with if something hit you and abort midway. I'm sure you had to think about and deal with all that stuff at some point. ALEX: I kill my tests all the time in Ember-try and I was like, "Oops." I forgot I shouldn't do that just like for this. KATIE: Yeah, it doesn't recover so well. It's pretty hard to do things on process exit in node correctly, at least and I don't think I gotten it quite right. But there is a clean up command. Unfortunately, with the way it interacts with EmberCLIs dependency tracker so when you run an Ember command, Ember checks them to make sure all your dependencies are installed. If you still have the different bower.json and install haven't run, you have to run install before you can run the cleanup command which is kind of a drag. CHARLES: I have one final question about Ember-try. Have you given any thought to how this might be extracted and more generally applicable to the greater JavaScript ecosystem because I see this is something that Ember certainly was a trailblazer in this area. Some of these ideas came from Rails and other places. This is going to be more generally applicable and had you given thought to extracting that? KATIE: Yeah, some of [inaudible] since we first did it because we realized very early on that it doesn't depend on EmberCLI. I didn't even using it as a command line arguments parser which doesn't seem too important. But there are some assumptions we get to make. For it being an Ember app, we know how EmberCLI was structured. Some of those assumptions, I wouldn't really know with the greater node community and I gotten those assumption might not be possible at all because they don't have the standards we have on EmberCLI. It generated EmberCLI. There's generally certain things that are in place in Ember [inaudible] works for [inaudible] so there's no part of it that could be extracted. But I worry about some assumptions about no modules always being in the directory that they are in because then can be link the node modules above it. In EmberCLI, it usually doesn't support that. But other places, obviously have to. I realized that it could definitely happen but I'm not so sure that I'd want to personally support that because it's a little bit time commitment. CHARLES: Right. Maybe if someone from the outside want to step in involuntarily, you might work with it but not to personally champion that cause. KATIE: Definitely. I think it would be really cool and I do think it will end up having its own [inaudible] parser eventually, just to be able to do things like different EmberCLI versions. As long as it's not part of EmberCLI, I think that would be less confusing, though. In theory, that can be done with an EmberCLI still but I'm not clear on that. I've had people talk to me about that and I haven't fully process it yet. CHARLES: Right. Alex you mentioned something earlier I had not thought about but that was the technologies like Ember-try keep the add-on community accountable and keep them healthy by making sure that add-ons are working across a multiplicity of Ember versions and working in conjunction with other add-ons that might have version ranges. Katie, you've been a critical part of that effort. But there's also something else that you've been critical part of that you built from the ground up and that is Ember Observer. That is a different way of keeping add-ons accountable. But I think perhaps, even in a more valuable way, more of a social engineering way and that's through the creation of Ember Observer. Maybe we can talk about Ember Observer a little bit. What it is and what gave you the insight that this is something that needs to be built so I'm going to step forward and I'm going to build it? KATIE: I'm definitely going to refer again back to the Rails community. I'm a big fan of Ruby Toolbox. Whenever I needed to jam, I would go there and try to see what was available in that category kind of way. There's variables that have on there. It will have something like the popularity in the number of GitHub stars and the last time it was updated. You can see a lot of inspiration for Ember Observer in there so maybe I should step back and explain the Ember Observer. Ember Observer is a listing of all of the add-ons for the Ember community. Anything that has the Ember add-on keyword will show up there. We pull it off from npm and it all show you all that kind of information: the last updated, the number of GitHub commits, the number of stars, the number of contributors and we put all of that information and a manual view together to put a score on each add-on. You can look at it and we categorized them as well. If you look at a category, say, you're looking at a category for doing models. You would see all of a different model add-ons and be able to look between them and compare them, decide which ones to use. Or if you're thinking of building something, you can go in there and be like, "This already exists. Maybe I should just contribute to an existing thing." What gave me the idea for is I was looking at Ember add-ons, which just shows you the most recently published add-ons for that Ember add-on keyword everyday and every time I was clicking on these add-ons I go, "They did the same thing," and it just seemed like such a waste in [inaudible]. People were creating the same things and then they started clicking into and I was like, "Why they bother clicking into this. It doesn't have anything. It's just an empty add-on." We're pushing add-ons just to try that out so I thought I'd be nice if something filtered that out and I happened to have some time so I got started and dragged my husband, Phil into it. He's also an Ember and Rails developers so that's pretty convenient and my friend, Lew. Now, Michelle works on it a little bit as well. That's what drove us to build it and it's been pretty cool. I like looking all the add-ons when they come up anyway. I feel like it's not any actual work for me. It's quicker than my email each day to look at the new add-ons. ALEX: How many new add-ons are published every day on average? KATIE: On average, it's probably four to six maybe but it varies widely. If you get a holiday, you'll get like 20 add-ons because people have time off. You know, if somebody just feeling the grind at two and you'll notice that the add-on struck commeasurably too. It would be else that come on the same kind of week. ALEX: You mentioned that an add-on gets a score. Can you explain that score and how you rate at add-ons? KATIE: Sure. The score is most driven by details about the add-ons. There's Ember factors that go into it and it's out of 10 points. Five of them are from purely mechanical things, whether or not there's been more than two Git commits in the last three months, whether or not there's been a release in the last three months, whether or not they're in the top 10% of add-ons, top 10% of npm downloads for add-ons, whether they're in the top 10% of GitHub stars for add-ons. ALEX: I know that I'm a very competitive person but it also applies to software. Not just on sports or other types of competition. But I remember a moment and I'm an add-on author and my add-on had a 9 out of 10. I was just about to push some code and just about to get a release. Even before that happened, it went to a ten. The amount of satisfaction I got is kind of ridiculous. But I like it. I like the scoring system, not just for myself but also for helping me discover add-ons and picking the ones that might be right for me. I'll check out any add-on basically that might fit the description. As long as there's a readme, I'll go check it out. But it still helps along with the categorization. CHARLES: Correct me if I'm wrong but I believe you can achieve an 8 out of 10 without it being a popularity contest. By saying there's a certain concrete steps that you can take to make sure that you have test and you have a readme, that's a thing of substance. I don't remember what all the criteria are but you can get a high score without getting into the how many stars or if you're in the top 10%. I think that's awesome. But it does mean that if I see an add-on with a five or something like that, it means that they're not taking my concrete steps or it might not be as well-maintained. You know, that's definitely something to take into account. I'm curious if there are any different parameters you've thought, tweaks you thought of making to the system. Because this gets to second part of that, what things had you considered just throughout out of hand, as maybe not good ways to rate add-ons. KATIE: We haven't thought about everything. I don't particularly like the popularity aspect of it. It did feel necessary to include it in some way. The stars and theory are representative of interest, not as much as popularity but it probably gets into popularity as well then downloads are inferior for popularity. But the problem downloads and I found this happening more and more frequently is that if large companies start publishing their own add-ons, then they have a lot of developers, they are going through the roof on those downloads so they're getting that to a point that just from their own developers and I have no way of knowing if anybody else is using this. CHARLES: Probably their continuous integration with containers, right? Like if it's running on Travis or Circle, it's just sitting there spinning like pumping the download numbers. KATIE: Yeah and that frustrates me quite a bit. But I haven't found another thing that really representative popularity. Unfortunately, with npm you can get the download counts but you can't tell where they came from. There's no way to do that. I simply would like to see the things that are popular, they rate higher than the they currently do, like you said either, it's 10 points go without the popularity coming to affect it. But you do need a collaboration with at least one of the person to get eight points. If you give seven by yourself, you need to have another contributor. If you only have one contributor, you don't get that point because that's trying to be representative of sort of a bust factor but it's not truly there. You can just have one commit from somebody else to get that. CHARLES: Of all the pieces, I think that's totally fair. KATIE: Yeah, there's definitely a few other things I have in mind to bring in to the metrics but we're not quite there yet. I need to entirely refactor how the score is given so it's not exactly out of 10. The idea is to have some questions and some points that are relevant only to certain categories about us. Whether or not in add-ons testing its different versions of Ember, it might have matters for add-on but it's only adding 10 for CLI or whether or not they have a recent release. Might not matter if it's kind of a one-off with the sass plugin or something more of the build tool that doesn't change for everyone. CHARLES: Yeah, I've noticed we have that happened a couple times where we've got a component that just wraps a type of input. Until the HTML is back changes or a major API changes happens in Ember, there's no need to change it. I can definitely see that. How do you market it is like something that changes infrequently. Is it just that add-on author says it's done? You give them a bigger window or something like that? KATIE: There are probably some sort of categories that fall under that. For the input, I think if it's doing something that Ember producing components, it probably want to be upgrading every CLI, at least every three months. I think in that case, it's probably fair to require an update within that period of time. But some of the things that are more close to Broccoli like as they are in Ember add-ons, that make sense to not have that requirement. Maybe not that's the [inaudible] exact example of the kind of questions that [inaudible]. ALEX: In Ember add-on was the first time that I gave back to the open source community. It was my first open source project and Ember Observer really helped me along the way to say what is an open source best practice and I thought that was really cool. Now, it sounds like with some of the point totals, you're leaning towards Ember best practices to help Ember add-on authors along that way. I think that's really awesome and very, very useful. I would not like to see what the Ember add-on ecosystem would look like without Katie. It would be a very different place. KATIE: Thanks. I'm glad it had some help on that and I'm affecting add-on authors. I actually didn't originally think about it when I was first building it and I was really hoping to help consuming of add-ons but it really has kind of driven out people finding add-ons to not build because they contribute to existing ones. Also, driving them for the score because as you said, people get very competitive. I really didn't realize what kind of drive the score to be because to me I'm like, "Somebody else's score me. How dare you?" [Laughter] KATIE: I have had people say that to me, "How dare you score me? How dare you score my add-ons?" Well, it's mostly computerized. Even the review was manual but only thing about it has any sort of leeway is are there meaningful tests. That's really the only thing when I go through an add-on is whether or not that has any sort of leeway for the judgment of the person that's doing the reading. If there's a readme and we're kind of a rubric so that goes if you have anything in there that's other than the default Ember [inaudible] readme. Whether or not there's a build that is based entirely whether or not there's a CI tag in readme, these are for the owner to go look for them [inaudible]. We hope to automate that so I don't have to keep looking for those. A lot of add-ons turned out have to have builds when they didn't have any meaningful tests. They just had tests so that's kind of confusing. CHARLES: What do you do in that situation? You actually manually review it so that add-on would not get the point for tests. KATIE: No, they don't get the point for test and if they don't get the point for test, I put 'N/A' for whether or not, they have built so it doesn't apply. It doesn't mean anything to me if they haven't build their own test. CHARLES: Right, that makes sense. A lot of it is automated but it still sounds like consume some of your time, some of Phil's time, some of Michelle's time. I guess, my question is do you accept donations or a way that people can contribute because I see this as kind of part of the critical infrastructure of the community at this point. There might be some people out there who think, "Maybe, I could help in some way." Is there a way that people can help? If so, I'd love to hear about it. KATIE: We don't have any sort of donation or anything like that. I mean, we should. We consider it primarily just part of our open source works, part of our contributions to the community because we also make a great deal of use out of the community. Fortunately, it's not very expensive to run. It's only $20 a month VPS. Other than time, it's not really consuming very many resources. That may change over time. The number of hits is increasing and we're doing some more resource-intensive things like Code Search and we're running Ember-try scenarios from the top 100 add-ons to generate compatibility tables. It hasn't been the most reliable. Think about if you're trying to do nvm-installed times 100 add-ons, times every day, times the different Ember dependency settings so it's been very much like a game of whack-a-mole but for now, it's not bad. But we probably should think about some sort of donation by then. Maybe something that writes out the exact numerical cost of something like Ember Observer. The API is getting about 130,000 hits a month but that's the API so that's some number of quests per person. [inaudible] tells me something about 12,000 visitors each month. CHARLES: Does Ember Observer has an API? Are there any the third-party apps that you know about, that people built on top of the Ember Observer? KATIE: None that have been kind of public. I know a couple of private companies seem to be hitting the API but it's not a public API. It's really not public yet. I'm literally process of switching over to JSON API and at some point, I'll make some portion of that -- a public API -- but it's pretty hard to support that at the same time. It change Ember server pretty frequently and do any kind of migrations we need to do. Ember add-ons does all the scores from us from API end point. CHARLES: I actually wasn't aware. I remember the announcement of Code Search but how do you kind of see the usage of that? What's the primary use case when you would use Code Search on Ember add-on or Ember Observers? KATIE: I think the primary use case is if you're looking for how to use a feature. If you're creating an add-on and you want to know how to use certain hooks like [inaudible] or something like that. You can do the Code Search for that and see what other add-ons are doing. It's only searching Ember add-ons that have the repository are all set so you'll only find Ember results. That will be nicer compared to searching GitHub. Then I find another use case is more by the core team to see who is using what APIs and whether or not they can deprecate something or change something or something has become widely used since we're pretty excited about that possibility, we've never ever been searching. ALEX: That is brilliant. CHARLES: Yeah, that's fantastic. The other question that I had was this running Ember-try scenarios on the top 100 add-ons and that's something that you're doing now. Are you actually reflecting that in the Ember Observer interface? Is that an information or is that an experimental feature? Or is that reflected all the way through so if I go to Ember Observer today, I'll see that information based on those computations? KATIE: I start playing in the Ember Observer interface. It's only for the top 100 add-ons currently but hopefully expanding that to all add-ons. Especially, for few months but maybe it's not easy to notice. The only on top 100 add-ons would be on the right side bar and there will be a list of the scenarios we ran it with and whether or not it pass or not. There's add-on information there. The top 100, I'll link to right on the main page of Ember Observer so you can see in the front. CHARLES: How do you get that information back to the author of that top add-on? KATIE: We haven't actually done that. It's just on Ember Observer. It's more meant for consumers to be able to see that this add-on is compatible with all these version. We're not using their scenarios. We're using our own scenarios saying Ember from this version to this version, unless they have specified that version compatibility thing and then we'll use those auto-generated scenarios. This might get harder for add-ons that have complex scenarios so it need something else to vary along with the versions like Ember Data or maybe they're using Liquid Fire and Liquid Fire have these three different version and for each versions, it's being used. For those, we'll just have things which are unable to test this. But hopefully, this is still providing some useful information for some add-ons. A lot of add-ons, their build won't run unless they commit. In this case, this is running every night so new Ember versions released will see if that fails. On other side of it, we have a dashboard where we can see which add-ons failed and maybe see if a new commit to something broke a bunch of add-ons. It commits to something like Ember and for CLI Ember-Gate, one of the main things. CHARLES: I know that certainly that right after we get over this podcast, I'm going and running or checking up all add-ons that we maintain and making sure everything is copacetic. If you guys see me take off my headphones and dash out the door, you know where I'm going. KATIE: Got you. ALEX: I just have a further comment that I'm excited for the public API of Ember Observer just because I've been thinking a lot about data visualization lately. I think it would be really cool tool to do a deprecated API, like one of those bubble charts where like the area that's covered by this deprecated API -- I'm doing a bad job of explaining this -- just like the most use deprecated API methods and visualizing that, I think they'll be really interesting to see it. CHARLES: Right, seeing how they spread across the add-on. ALEX: Yeah, or just all add-ons in general. KATIE: I am most nervous about a public API for Code Search, though because it's a little bit resource-intensive so just freaking out a little bit about the potential of a public API for it. But an Ember Observer client is open source. If you want to add anything to the app, that I consider as public think it is. Adding to that, I really do want to figure out some way to have like a performance budget for when people add to the client because sometimes I'll get people who want to add features and I'm like, "That's just going to screw all of it. It's going to be a problem for all Ember Observer and it's going to make everything slower and it's really little slow. But JSON API fortunately, I have kind of a beta version that running and it's going to be much faster, thank God. I probably shouldn't said that either. CHARLES: Definitely we want to get that donation bin set up before the API goes public. Okay, let's turn to the internet now and we'll answer some of the questions that got twitted in. we've got a question from Jonathan Jackson and he wanted to ask you, "Where have you seen the most change in the Ember ecosystem since last EmberConf?" which was March of 2016. KATIE: There was definitely fewer add-ons being published but the add-ons that are being published are kind of, say more grown up things. We've got... I don't know if engines was before or after March. I have no idea. Time has one of those things that engines and then people doing things related to Fastfood so things are coming from more collaborative efforts, I think. This is just my gut-feeling. I have no data on this. Isn't a gut-feeling from looking at add-ons and then there's a lot of add-ons that are coming out that are specific to a particular company. I think that maybe, I hope representative of more companies getting it to Ember but hopefully, they'll make things more generic and share them back. The other problem with the popularity is like about before, where big company is getting itself into the top 100 list, probably with just its own employees only appear over the summer. I tried a few different ways to mutate the algorithm to try to get them out of there but there was no solution there. It's much fewer, novel things. Very rarely do I look at Ember add-ons and I'd be like, "Oh, that's great," but when I do, it's something very exciting. CHARLES: Right so there's a level of maturity that we're starting to see. Then I actually think that there is something in the story too, of there are now larger companies with big, big code bases that have lots of fan out on their dependency tree that just weren't there before. KATIE: Definitely. I don't think some of the large companies were there before but I think some of the largest companies are probably keeping most of their add-ons private so there's kind of mid-range of company that's big enough to donate things or willing to put things open source. A few of these companies that can have a lot of add-ons now and a lot of them are very similar to things that have already existed so you're going to be like, "I don't know why I use this," but they obviously make changes for some reason. CHARLES: The other thing that I want to talk to you about, before we wrap up, is you actually are in partnership in Code All Day. What kind of business is that? What is it you guys do? What's it like running your company, while on the same time, you're kind of managing these large pieces of the Ember ecosystem? KATIE: Code All Day is very small. It's just me and Michelle. It's a consulting company, we kind of partnered together after we left to startup and decided to do consulting together. We primarily do Ember projects, also some Rails and we try to work together and we love test-driven things. It's pretty kind of loose end. We ended up running it since it's just a partnership. We don't have any employees. But Ember Observer will take up a lot of our time and we really had an idea that it might help us get clients that way so I suppose it kind of helps our credibility but it hasn't really been great for leads so much. But fortunately, there hasn't been a big problem for us. We really enjoys spending our time. We enjoy the flexibility that consulting gives us and while that flexibility is what's going to making these things keep running. CHARLES: All right-y. Well, are there any kind of skunkworks, stealth, secret things you've got brewing in the lab, crazy ideas that you might be ready to give us a sneak preview about for inquiring minds that may want to know? KATIE: Some of them are really [inaudible] which is redoing Ember Observer with JSON API instead of currently, it's using ActiveModel serializers, which is a kind of custom API to Rails and [inaudible] fortunately, it's an API now. They're removing something called JSON API Resources so that will get the performance of Ember Observer much better and that's pretty much my primary focus at the moment. I don't really have any big skunkworks, exciting projects. I have far off ideas that hopefully will materialize into some sort of skunkworks projects. CHARLES: All right. Well, fantastic. I want to say thank you, Katie for coming on the show. I know that you are kind of a hero of mine. I think a lot of people come to our community and they see like, "Where's the value in being a member of this community, in terms of the things that I can take out of it? What does it provide for me?" And you demonstrate on a day-to-day basis, asking what you can do for your community, rather than what your community can do for you, to paraphrase JFK. I think you live that every day so I look up to you very much in that. Thank you for being such a [inaudible] of the community which I'm a part of and thank you for coming on the show. KATIE: I'm very happy that I've been here and thank you. I use a lot of your guys add-ons and it's really the community has given so much to me, which is why I ever want to participate in it. It's really great group of people. CHARLES: Yep, all right-y. Well, bye everybody. ALEX: Bye.
Book A Call: https://calendly.com/scaleyourstory/15min Websites: https://www.mizhq.com https://marketwithmiz.com Instagram: https://www.instagram.com/misbah.hawk YouTube: https://www.youtube.com/c/MisbahHaque Market With Miz Podcast: Spotify: https://podcasts.apple.com/us/podcast/market-with-miz/id1543290030 Apple: https://podcasts.apple.com/us/podcast/market-with-miz/id1543290030 Purebred Weirdo Podcast: Spotify: https://spoti.fi/3gunLg6 Apple: https://apple.co/2ZMJnys YouTube: https://www.youtube.com/channel/UC4lGUvqdd0vgEhGDFQvyKiA Get the 4x4 Program Design Accelerator: https://www.remotecoachinggrowth.com/products/program-design-accelerator Daniel Camargo is a 27 year veteran in the sport of Olympic Weightlifting. As an athlete, he has represented Team USA in 9 international competitions. and set 3 American records. As a coach, he has reached the top tier as a U.S. Senior International Coach. You might know one of his athletes Mattie Rogers, but he has also produced several State, Collegiate, and National Champions. Many of his athletes have also made it to the international stages of the competition. In this episode we talk about: The solution to growing the Weightlifting community in the U.S. and how we can help The stuff that really matters if you want to be a great coach Evolution of Weightlifting through Danny's eyes in the past 27 years Show Notes: What Danny loves about working with CrossFitters (2:40) How he got started in coaching and his time as a law enforcement officer (3:43) What his parents were like when he got into Weightlifting (6:50) Danny’s daughter asked (10:30) Will the next generation of lifters be raising the bar? (13:00) When no one cared about the barbell to TV commercials (16:20) The solution to growing spectatorship in Weightlifting (19:25) Tips for coaches on growing their own Weightlifting community (23:00) What are some responsibilities of a coach that are often left out? (26:05) If you had one year to live and you wanted to become the best coach you could be, what would you do? (28:45) What do you look for in an ideal athlete (31:50) Training methodology for CrossFitting Weightlifters (35:15) Thinking while you’re lifting, Sensation of effort/proper movement (42:35) What are you looking for during error correction through the coach’s eye (43:55) People Mentioned: Mattie Rogers Greg Everett Kenny Leverich Resources we talked about: Olympic Lifting: Cues & Corrections by Daniel Camargo Watch People Get Their Minds Blown When An Old Man Crushes Muscle Beach How you can connect with Danny: www.olyconcepts.com Instagram: @camargo_oly Related and Recommended Posts: Getting To Know Influencer Daniel Camargo – 24 Year Veteran Of Olympic Weightlifting – 9x USA International Competitor Daniel Camargo Talks About Mastering Your Mental Game, Improving Speed, And Developing Olympic Hopefuls Adee is the founder & CEO of Working Against Gravity. Her nutrition consulting company consults with about 2,000 clients and has a waiting list of about 3,000 clients. She has helped literally thousands of people with not only their nutrition but the overall quality of life. She works with top Games athletes like Katrin Davidsdottir, elite Weightlifters, and Olympians to make sure they're fueled up and recovering efficiently. But that's not all, her clients are from all walks of life. She has a very unique approach to encouraging transformations within her clients. In this episode we talk about: Why meal plans and diets are usually not the solutions How zoning in on your behavioral psychology can drastically affect your success Tools Adee uses with her clients and things you can start doing today The most important question you can ask yourself when dealing with body image and self-confidence Show Notes: How Working Against Gravity got started (1:25) Why Adee doesn’t give out meal plans and what the process looks like if you become a client (6:20) The psychology behind resistance and why we fall off the boat (10:03) The difference in diets between elite athletes (12:30) What an ideal client looks like (14:05) The psychology behind body image and why people are uncomfortable in their own skin (14:55) Tools that WAG uses to help clients (17:00) 3 things you can do if you’re on the waitlist (19:27) “I feel like I put in the work, but have nothing to show for it.” (23:15) Strong is the new sexy (25:56) Performance vs Aesthetics: How to win at both (27:02) Training with Catalyst Athletics (28:18) How to juggle training while managing your own company (29:00) Morning routines (32:43) Recommended books (34:20) If you had one year to live, what would you do to become the best nutrition consultant you could possibly be (37:00) Zen N’ Juice and Mental Health (41:20) Drawing as meditation (46:00) What really makes you feel fulfilled and accomplished (53:10) People mentioned: Gay Hendricks Kathlyn Hendricks Eric Helms Alan Aragon Resources we talk about: Slim By Design Daring Greatly Conscious Loving The Big Leap Morning Pages The Perfect Day Formula Precision Nutrition Bodyrecomposition.com Alex How you can connect with Adee: Workingagainstgravity.com Zennjuice.com Instagram: @adeecazayoux Facebook
The Nickscast discuss why a show targeted towards men became unexpectedly popular with women and has continued to grow in popularity: We're talking about the SPNFamily (Supernatural fans!). How is the show so popular after even after twelve seasons? How does it differ from its peers? What keeps its fans going? We're going to eat some pie and find out on this week's episode of Fanthropological! Next week, we'll be talking about fans of Sherlock Holmes (BBC Sherlock, Elementary, classic; we're talking it all). Stay tuned! ## Episode outline ### [Last episode's](http://fanthropological.com/e/26-whovians/) Famous Last Words **Z:** Who is the fan favourite character and why? **G:** In canon, who is born first and why do fans think it is one way or the other? **T:** Is it just because its two hot people? Will any show about two hot people succeed? **Alex:** How much slash fiction is there? ### Fandom facts **Origins:** An American fantasy horror series that was first broadcast in September of 2005. It follows the nomadic lives of brothers Sam and Dean Winchester, travelling the US and hunting down supernatural foes (as their father did, who spent years seeking revenge against the demon responsible for his wife's death). It just ended its 12th season, as of this recording, and is renewed for a 13th. **Fandom origins:** Largely Livejournal ([supernatural_tv](http://supernatural-tv.livejournal.com/)) **Names:** Supernatural Family / SPNFamily **Size of fandom:** The TV series pilot has 5.6 million viewers, and episodes regularly have about 3 million viewers. **Fanfics:** Archive of our own: Over 92000 (January 2015); Over 60000 (February 2014); Over 27500 (December 2012) ### What did we discuss? A brief history of strikethrough and splintering of fandom from Livejournal ~ the Supernatural newsletter ~ Fan terms like imbroglio (vs fanwank) and real-person fiction (RPF) ~ Keeping a long running show like Supernatural fresh ~ changes in television and storytelling for long running shows ~ the cast, crew, and fandom as a tight knit family ~ charmingly flawed shows that keep trying (which is good) ~ character and fandom relationships: "Family don't end at blood" ~ Targeted at men (classic rock, killing monsters, cars) but women as biggest fans ~ Z's Supernatural boyfriend ### Are you in, or out? > Z, so now that you're romantically involved with one of the Winchester brothers, are you going to continue things further? > > — G **Z is in.** > ...As part of my research, I have to watch the first episode of this to see if its any good, to see if it holds up. And, after seeing that first episode, I can definitely say that I am in for the first five seasons. > > — Z - T briefly explains the cosmology of our universe compared to that of Supernatural's **T is out.** > Z, I'm going to take your 'in', I'm going to take it, and carefully toss it into the trash because I am out. I don't care if that metaphor works! > > — T - At 12 seasons and still going, media fandom is too big - **But** T is committed to watching the pilot and the fanfiction episode. Hold him to that! **G is out.** > I want to try and find these more experimental episodes and watch those. Like *The French Mistake*, as I mentioned, the fanfic episode, the one from the perspective of the car. *LARP and the real girl* ... There are few that have piqued my interest. > > — G ### Fans of the week No fans of the week this week, sorry :( ### This week's spotlights [Random Acts](http://randomacts.org) Started with Misha Collins (Castiel, on Supernatural) in 2009 asking his "minions" on Twitter to come up with ideas for a "minion stimulus" project (during the economic recession). Has since grown and and changed, but is set up to encourage folks to conduct random acts of kindness in their communities, and holds different fundraisers. In 2014, spent over $47000 USD