Hello everybody, I'm Aaron Longwell. I'm the track chair of the business track at Drupal Con. When introducing our next speakers on your program, it may just say Jason Swain. It's actually two speakers. We have Kevin Sanders from Hanon Associates and Jason Swain from Swain Associates. They're going to be talking today about branding and organizational development, the topic of which is the authenticity advantage. So I'm going to introduce Kevin Sanders first. Before we get going, we wanted to talk a little bit about Jason and myself, not going to bios necessarily, but to give you a sense of why we're both here and why we're both sort of talking about stuff today. And we're going to take turns at covering some of the material. Again, my name is Kevin Sanders. I'm actually a marketing guy by trade. And a little while ago, in the process of doing a lot of branding work for clients that we've got, it became increasingly important for me and for us as an agency to really make sure that the marketing that we were doing for clients was authentic in the sense of it really reflected who the companies were. And so I found myself in a situation where I kept needing to help organizations figure out sort of really what they were about. And so a friend of mine, Jason Swain here, kind of brought him onto this team to help sort of figure that out. And I've always kind of had the opposite problem again. I'm Jason Swain and what I've done for a living is do organization development. So I help organizations kind of get healthy on the inside. And a lot of times I get a client kind of all healthy on the inside and working really well, but I have no capacity to help them tell their story. So who cares if you're working really well and efficiently if no one knows who you are and how you do what you do so that it became this great partnership where we like to describe it as two great tastes that taste great together. So an external marketing guy and an internal OD guy kind of joining forces. So. And that's really what sort of brought about this whole discussion and whole process that we've developed around authenticity, but we wanna really talk today specifically about some changes that we've seen in the world really and how they affect how organizations relate to their customers. And we call it the authenticity advantage and it is about creating loyalty in a distrusting world. Because we are in the midst of basically a distrusting world. We are in the midst of what we call a crisis of credibility. And by credibility what I really mean is trust. And the idea that trust, we as a society are trusting less than we used to. And this is not necessarily a new phenomenon. Actually trust has been sort of slowly eroding for decades, but there's been a number of recent dynamics that have significantly accelerated this decline of people's willingness to trust. And we'll talk about those today. We are, in fact we believe that we're in a bit of a tipping point with respect to people's willingness to trust organizations and really institutions in general. And it is as a society it is having a pretty profound effect on us. And it is fundamentally altering the relationship that customers have with their clients. For example, when we talk about trust, you know, people don't trust the government, right? In fact, trust in the federal government is the lowest it's been in a generation. The quick slide here that looks at people's trust in government over the last 50 years, 60 years. And you can see that in the last 10 to 12 years basically the trust in the government has been cut in half. And this is not just amongst a particular political party or a particular segment of the population. This is across the board. This is US citizens in general. People don't trust corporations either. Less than half of the people in the US say that they trust businesses to do what's right. And this percentage has dropped eight points in the past year. And as a country the US has now officially categorized as a distrusting company, the country, excuse me country. Fewer than one in five of us trust the business leaders to make ethical decisions and to be honest with us no matter what the cost. Fewer than one in five of us. And people don't trust the media either. This has actually been in decline for about 30 years but it's only in the past 10 years has the percent of people who say they distrust the media the clips, the percent that say they do trust it. It's really all institutions, not just those. This is data from Gallup that shows they actually track about 16 different institutions, everything from the military to public schools to the criminal justice system to Congress. And for the past about 45 years they've been tracking people's confidence in these institutions. Well in the past five years more than half of these institutions have historic lows in confidence and in trust. So this is not about any given institution. This is a societal trend. In fact it's not that we're just trusting less we're actually distrusting more. This is a slide that shows the number of countries that are in the, that are called, that are categorized as distrusting countries meaning that more than 50% of their population says they distrust the major institutions within that country. And the number of countries that are on that list has doubled, nearly doubled in the past year. So it's not just that we are trusting less we're actually distrusting more. And why is that? Well there's a number of reasons. The first is technological. And specifically the internet. And our ability to access information and share information about everything and anything. We know more, we see more, we learn more about the world around us. It used to be that companies could just sort of stay protected with inside their walls and just sort of put stuff over the wall at their customers, right? And because they pretty much controlled the flow of information. If they screwed up, likelihood, not many people would find out about it. Well not anymore, right? In this hyper-connected world now, every flaw, every failure, every transgression is not only exposed but shared with everybody. This information is being shared at rates that we can't imagine 10 or 15 years ago. And this level of transparency that allows people to have from a corporation, from a company standpoint, it's exposing all of the potential flaws that you have as an organization and allowing people to share it with themselves. And the effective it is that it is that everybody knows sort of what's going on and you can't hide necessarily from your consumers anymore. The second major dynamic is economic. And that is the great recession of 2008 and the world financial crisis. This had a fairly significant impact on us as a society. It really had a strong impact on our psyche. What was interesting about it is we just didn't take our frustration and our anger out on those institutions that we felt responsible or that were directly at the people that we blamed. It actually ended up undermining our faith in all institutions, both public and private. And you can see the impact of some of that data that I showed earlier. It's changing the way we view things as a society. And the last major sort of dynamic involved in this is the sort of repeated violations of our trust by the people that we hold in highest esteem in our society. Many of these people are our role models and they have sort of consistently and repeatedly let us down. I like to look at the picture on the bottom right down there, the look that Vanessa Bryant is giving her husband, I think sums it up for all of us. We're continually being disappointed by the folks out there that we put our trust in in some ways or that we hold up his role models for our children.  So to give you an idea of how this is really affecting the relationship companies have with their customers, we can look at the key drivers of corporate reputation over the past few years.  What are the attributes that you put in your definition of what is a good corporate reputation? In 2006, number one was having quality products and services. Number two was being attentive to customer needs. And number three was having strong financial performance. In 2006, this was people's definition of good reputation. In 2010, number one is now transparent and honest practices, being a company that I can trust and then having quality products and services. And by the way, strong financial performance dropped to number 10. And if you put in the percentages of the people that chose these answers, it really gives you a sense of how strongly people feel about this. Trust has never been more important to your company than it is today. So we believe that we've hit a bit of a tipping point. It used to be that people would trust you unless and until you violated that trust. The companies didn't actually have to build trust. They just needed to preserve it because the default position was that they would have it. And that's not the case anymore. It's not necessarily that you're guilty until proven innocent, but you can't take people's trust for granted anymore. You can't assume that people are going to trust you in the environment that I've laid out in slides earlier. So we want to step back, I guess, at this second and talk about what it will mean specifically by trust. Because we have a tendency to think of trust as a single thing. When in fact it's actually a combination of things. It's a combination of judgments and assessments you make about somebody on whether you consider them to be trustworthy. So when we talk about trust, we're usually thinking of it in the context of either competency or authenticity. And by confidence, see, we mean whether somebody is capable, meaning that they have the ability to do what they claim to do and that they're dependable. And that is that they have a history of fulfilling their commitments. On the other side, authenticity, what we mean by that is typically whether somebody is being sincere, whether we believe them to be acting honestly and in good faith, and also whether they're genuine. Do we believe that they are who they claim to be? So there's really sort of two sides of this dynamic of trust and what it means to people. We think most companies have done a really good job over the years of trying to build trust through competency, making high quality products and offering dependable service. But we'll also argue that a lot of the breakdowns and trust that we're experiencing now are due to failures in authenticity. In failures from organizations being sincere and being who they say they are. Now, most companies, excuse me, most companies when they screw up, they screw up on the left side of this equation. There's a breakdown in competency. But then they try to deny it or cover it up and it ends up undermining people's faith in their authenticity. We prefer people who are honest but incompetent over people who are competent but dishonest. There's a great quote by a gentleman, Kurt Dirks, who wrote a book about trust in leadership. Kurt says that people will forgive a leader who compromises their trust because of a lack of competence but not a lapse of integrity. We as a people have a tremendous capacity to forgive. We're more than willing to forgive organizations that screw up on the left side of that equation, right? But it's much harder to rebuild trust after you've been misleading or deceitful. So I'm going to invite Jason up here to now talk about sort of how do you build trust? I've talked about sort of what's broken and he's going to sort of help you figure out how to fix it. Thanks. Well, as Kevin has clearly illustrated, today you have to actively work to build trust. So the question is how? In fact, we less want to trust and actually looking for reasons not to trust you. How do you earn and maintain people's trust in today's world? And not surprisingly, our claim is that you have to be authentic. So the question then is, well, what exactly is authenticity and how does one become authentic? Well, philosophers and writers and artists have been kind of wrestling with authenticity for centuries. You know, everyone from Plato to Shakespeare to more contemporary folks. And the common definition of authenticity seems to always come back to this. It's being true to yourself and it's being who or what you say you are. So let's unpack these a little bit. Let's start with being true to yourself. So the first thing you have to do if you want to be true to yourself is you have to understand yourself. You have to know yourself. You know, what I would say is when most organizations go to create their identity, that's a process of creation. They're trying to create something that sounds good. Something that will convince people to want to come do business with them or come to work with them. And what we would claim is you don't want to create that. But if you think in most of the marketing campaigns, it's marketing people sitting down and creating a story. And there's a real danger in that because the second you're not who you say you are, that's exactly what creates distrust and cynicism.  And so it's not a process of discovery. Instead it's a process of... I'm sorry, it's not a process of creation. It is a process of discovery.  But before we get there, let's look at the second piece of this. It's not enough once you do discover who you are and what your identity is. It's not enough to just stick with that. It makes me me or what makes my organization authentic. I actually have to consistently express that authenticity through those things I mentioned earlier. The products and services that we offer, the way we design our customer experiences, the kinds of people that we hire. And that's a very deliberate and prescriptive and disciplined process that you need to go through to make sure that we're consistently expressing our authenticity. Fortunately, we've got several great examples. So Kevin painted this very bleak picture of the declining rate of trust over time, but there are organizations that nevertheless have sustained these very high levels of trust and customer loyalty over that period of time. And so a couple of researchers studied these elite institutions to try to discover, well, what are they doing differently than everybody else that enables them to just stay at the top of their market and maintain this high level of trust and consumer loyalty? And not surprisingly, these companies were uncompromisingly authentic. They consistently are exactly who they say they are, and they are true to themselves. Well, one of the authors, one of the researchers named Jim Collins, and by the way, they wrote a book about all these companies called Built to Last, and he summed it up this way. These organizations understand that it's more important to know who you are, i.e. authenticity.  So it's kind of a lot going on in that sentence. So it's kind of unpacked that sentence for a second. And you'll notice that there's this interesting dynamic going on between a couple of things. There's something that never changes and something that's constantly changing. And these organizations have the rare ability to know the difference of what's sacred, what's enduring, what do we not mess with, and what's okay to tinker with. So the thing that's sacred, the thing that never changes is who you are.  You never want to violate that straight from that. But the stuff that's constantly changing, it's the products and services that you're offering, it's the technology that you're currently using, it's the strategic decisions that you make. And you have to constantly change with those things because where you're going to go is going to change as the world changes around you, but you only want to make decisions in that realm based upon whether or not it's consistent with who you are. So this might still be a little bit foggy, so let me give you an analogy to kind of flesh this out. Let's imagine that all of us suddenly found ourselves lost deep in the woods at night. So it's cold, it's dark, we're all hungry, we have limited supplies, and everyone wants to get the hell out of the woods. So if we're in that situation and we had no objective criteria for which way we need to go, it's literally anybody's best guess. And all we can do is base our decision on what's right in front of us. And chances are pretty good, we just lead ourselves further into the woods to our own demise. But now imagine that we had the luxury of knowing that the closest civilization is due north. If that's the case, and let's say we had somebody in our group that knew how to read the night sky, and we could identify a star that we knew as due north from where we were currently standing. Now every single one of us knows exactly which way to go. We just follow that star, and in terms of where do we go on the ground, we just find that star and trace our finger to the horizon, and we can agree on a point on the horizon and say, let's agree to rendezvous on the top of that hill in three hours. So now if we're all going on this journey, every single one of us knows exactly where to go and why and how to get there. So if I turn an ankle and get lost or I get chased by a pack of wild animals or something disrupts me, I as an individual can always write myself by finding that guiding star, finding the point, and knowing how much time I have to get there. So every single one of us is making progress. Where are we going to go after we get to the top of that hill? Well, we don't know yet because we can't see that far. Where we're going is going to change as the world changes around us. When we get to the top of the hill, we simply cast our eyes upon the star again and find a point on the horizon and agree to get there. And we always base our decisions upon that guiding star. I think this is a good analogy for organizations because of this. The star itself is not a destination. We're never going to walk up and stand on the star, but we're going to use that star to guide every step we take on the ground throughout our entire journey. Similarly, an organization that wants to remain competitive and trustworthy for long periods of time, its entire duration of its organization needs to have that enduring sense of who they are and why they exist and never stray from that and base all their decisions on whether or not they're consistent with that. So I want to take this analogy. I want to give you some real-world examples. I'm going to give you an example of an organization that has completely lost its way in the woods, as compared to a couple of competitors that I believe have never lost their way in the woods so far anyway. I know for me, growing up in the Midwest, my mom took us to Kmart for everything, from sporting goods to kitchen utensils to sheets and towels to automotive supplies, that sort of stuff. So back in the 70s and 80s, at least in the Midwest, Kmart was pretty much king. It kind of ruled the marketplace. Kmart still uses Kmart as your store of choice for those kinds of things. Okay, not a single hand. So I think it's a pretty good indication of the market share that Kmart enjoys today. So if you don't go to Kmart, where do you go for those sorts of things? Walmart and Target? Interesting. Okay, so here's what happened. So in the late 80s, early 90s, Walmart really hits its stride, right? They come on the market strong and they have always known exactly who they are and they've done not only a great job of indoctrinating anyone who ever comes to work for them into what that is, they've also done a fantastic job of making sure that every single one of us know exactly who they are and why they exist. So well that I'm confident that you'll get this right. What are they all about? Low price. So they've never not been that. So on that level, we trust them because they're always who they say they are. So let's go back to Kmart. Suddenly Kmart wakes up one morning and they don't have a guiding star. So all they can do is base their decisions on what's in front of them and the only choice left was to lower their prices. Well Walmart saw this coming from a mile away. They obviously went after Kmart, knew this was happening, they're experts at this, this is their own game. So no matter how low Kmart went, they were able to go lower. So Kmart's fighting this bloodbath, emerging cash and customers in a battle that they can't win. And someone else comes along and says, Duke in and out of our low price down there, we're not even trying to compete down there. So for you and I, if we choose to go into a Target store, when you walk through that threshold, you know I am going to pay more than I would have paid had I gone to Walmart. And yet millions of us choose to do that on a regular basis. So why is that? Why would you choose to go to Target as opposed to Walmart knowing you're going to pay more? What are you paying for? What's that? So they're much more of a premium on customer service, so they're nicer to you, the stores are nicer, and they have famous name brand designers. So let's go back to Kmart. So Kmart suddenly wakes up and another third of their market share is gone. And all they can do is base their decision on what's in front of their face, and they realize, oh crap, we're going to have to compete on that level too. And I don't know if you remember this, but they brought in the Martha Stewart line, the Kathy Ireland line and the Jacqueline Smith line. And I'm scratching my head, and I'm having this identity crisis. Who are we? Are we low price? Are we high end? Because we can't be both. And as consumers, we're looking at this scratching our head and saying, well, why the hell would I go to Kmart? Because if I just need the lowest price on something, I know if I go to Walmart, I'm going to get that. But if I wanted something a little bit nicer and a nicer shopping experience, and I want a particular designer, I'll go to Target. Why would I go to Kmart? And I'm from Bakker Psi, and I would argue that they're probably not long for this world. So, the question is now, how have these companies done this? And more importantly, how do you do this? In other words, how do you discover your guiding star? Well, if you go back to that study, the Bill Tillast study, all those companies that have enjoyed that long-term competitive advantage and customer trust, they all had a couple of things. All of them had a very small set of core values. And by small set, I mean none of them had fewer than three and none of them had more than five. But the thing about these core values is they're alive. They use them deliberately and prescriptively on a regular basis to make sure that all the decisions they make are guided and informed by those values. So again, that's like that guiding star. So the values define what the company stands for. It's your identity. The other thing now is a very clearly articulated core purpose. That defines why the organization exists. And there's a very big difference between why an organization exists and what that organization does. You can pursue your purpose to the end of time, but you'll go through lots of different things that you do, different products and services and so on. But you're always pursuing that core purpose. So some examples, well actually let's kind of further define these core values. Again, there's a small set of timeless guiding principles. These are things that you would adhere to even if they became a competitive disadvantage. And these are the things that you have to look inside and discover what they actually are rather than create things. They're independent from current environment or competitive requirements. Again, you go back to Kmart. They're responding to the current competitive environment. Authentic companies pay no attention to what's happening in the world and they adhere to their core values. And they always are who they say they are. They don't require any external justification.  And they have intrinsic value and importance only to the people in the organization. So again, a lot of times we'll work with an organization and we'll help them discover and unveil their core values. We're not creating anything new. We're helping them discover what's already there. And inevitably they always have these employees that say, well, we've got this group over here that don't really have value congruence. So you guys are smart. Help us. How do we get these people to align with our values? And we have to say we have bad news for you. You don't. You have to find people and attract people that already share your values. So just to give an example of an organization that knows its values and how it manifests, so it is authenticated and expresses its authenticity consistently, I'm just going to do a couple of these. Just to give you an example of how Starbucks lives its values. Let's look at everything matters. Never ever lose focus on your customer's perspective and point of view. One of my favorite stories of how this manifested itself at Starbucks is there was a particular store and they discovered that a high percentage of their customers were deaf. So the employees in that particular store took it upon themselves to bring in an American sign language tutor and learn sign language so they could communicate with their customers via sign language. And let's just take a leave your mark at the very end. There's a couple of things that Starbucks does really well here. They actually have corporate policies that mandate environmentalism, volunteerism, and philanthropy. And the other thing they have is their famous triple line. Most organizations just have the financial bottom line.  So they're very true to this and that's what causes people to trust them and be loyal. So let's look at core purpose. Core purpose is another thing that I'll have to come and share. Again, it's why the organization exists as distinct from what it does. It reflects people's idealistic motivations for joining the company. Again, if you find people who share your values and believe what you believe and want to be part of your purpose, when they get to work, they're excited because they get to do that all day. That's why they come here. It captures the soul of the organization. It should be something you consider should last for about 100 years. Something I could devote my entire life to pursuing and hope that I leave a legacy so that others can keep doing it after I've gone. It's got to be that powerful. It's why you do what you do. So again, goals are to be achieved, but you can never fulfill a purpose. That's why it's that guiding star that pulls your company forward through thick and thin. Here's some famous core purpose examples. 3M, the purpose of their organization. Not what they do, but why they do what they do is to solve the world's unsolved problems innovatively. So again, if I'm an engineer and I love to innovate and I get a job at 3M, I have arrived because I get to show up and innovate all day. And one of the ways they manifest itself is they have what's called 20% time. So all paid engineering staff get to spend 20% of their time working on anything they want to. Now you might think they'll be watching back episodes of Breaking Bad on Hulu or checking their email or whatever, but no, these people who love to innovate. And that program is a thing that's yielded things like the Post-it Note and other of their famous products. Mary Kay Cosmetics, one of my favorite stories. The sole purpose of that company is to provide unlimited opportunity for women. Now what they do is sell hair and makeup products. But the story is that Mary Kay Ash was a senior executive in the 70s and 80s and she got so sick of hitting the glass ceiling. And she said, you know what? Forget this. I'm going to go start my own company. And the sole purpose for this company is to make sure that there is no glass ceiling. And the fact that they sell hair and makeup products wasn't afterthought. It's the way in which they pursue this purpose. And undoubtedly hundreds of thousands of women all over the world are driving pink Cadillacs and making farm bar money than they ever could have had this company not come to pay. Let's jump down and look at Apple. One way of saying their purpose, I think, is fair to say that they've always been about challenging the status quo, resisting Big Brother, and giving us more simple alternatives and choices. And if you look at everything they've ever done since the dawn of their company, it's always been devoted to that singular purpose. When they first started their company, they took on IBM, the big status quo monopoly organization that made things challenging and difficult. And suddenly they take them on and force them to do things very differently. And then they challenged Microsoft. And then they're challenging the music industry, the phone industry, publishing industry. And if you're in television and movies, watch out because you're probably next. So it's singularly always devoted to that singular purpose. What they do is sell computer products, but a lot of other companies do as well. This is why they do it. So I think it's fair to say that if you're truly authentically you, people will connect with your organization on an emotional level. And they'll experience this as an invitation to belong to something rather than just an opportunity to make a purchase. And as social beings, we're drawn to things like that. And it's at this point that choosing to do business with your organization, as opposed to one of your competitors, is no longer a rational decision. It's an emotional one. And this is when consumers and your clients and customers become beyond reason. They're loyal to you and trusting of you beyond reason. I think my picture of this, people waiting in line, giving over nights in the rain waiting to buy their next Apple product. So Kevin's going to come back up and round out the talk about authenticity. So the other half of this equation of being true to yourself is being what you say you are. This is the area, unfortunately, this is about sort of being honest and genuine and accurate in how you communicate yourself. This is sort of the marketing piece of this. So the marketing guy gets to come up and talk about that. When they ask people what forms of communication were trusted and not trusted, it'll come as no surprise to you that what others say about you is considered far more trustworthy than what you say about yourself. And as marketing people, this is the area that we've got the sort of biggest hill to climb, the most work to do. And it's a part of our organization that we probably ought to put more focus on when it comes to authenticity. And that is because, like I said, when it comes to marketing, our products were a bit authenticity challenged. There's a reason why marketing as a profession and people that are marketers are in the top five of the least honest and ethical perception of professions year on year on year. It's because they are a bit sort of authenticity challenged. I'll give you a couple of examples, first of all. I believe that somewhere, somebody is brewing a beer that is truly using the finest grains and hops. They just don't believe it's PBR. Much as I like their product, I gotta believe that somebody is actually using the world's very best grains and hops, and it's not them. Let's look at Snapple Apple real quick. If you take the bottle of Snapple Apple and you flip it around and you notice the ingredients, notice anything missing, apples. Snapple Apple contains no apples whatsoever. They say it's made from the best stuff on earth. Apparently that does include apples. This is not being genuine, right? Not being authentic. There's another one we'll pick on Burger King. This is what they say they are. This is what they actually are. We'll pick on just Burger King, we'll pick on McDonald's too. And it's not about... I understand the idea of sort of making the product look attractive, right? But look at the meat. When you tell me that I'm gonna get that, and when it turns out I get that, how likely am I to trust you in the future? What's worse about this example is the advertised burger doesn't actually fit in the box that they serve it in. Again, this isn't being what you say you are. Now, I'm sure there's people in the audience saying, I'll come on, this is harmless, right? It's just sort of salesmanship. Nobody actually believes in stuff anyways. Isn't that exactly the point? Every time an organization hucks this stuff over the wall, it chips away at their credibility just a little bit. It makes us question their trustworthiness and potentially trust them a little bit less. We tend to think that the purpose of marketing is to build our business. It's ironic that it's also one of the areas where it is most inauthentic. One of the best ways to build trust is to stop tearing it down. So who's doing a good job of this? You guys probably remember this campaign from a few years back from Domino's.  This is essentially Domino's saying, admitting that their food's kind of crappy and vowing to repent. In fact, they went so far as to stream customer feedback in real time unedited on a billboard in Times Square. That is transparency. So you got the good comments. For example, my order was made just as I ordered so the bad ones wasn't cooked all the way. That is, it takes a, how many people in this room would have the sort of nerve to do that at Times Square broadcasting what people actually think about you. But it sends a message. It's transparent. And it's honest. Is it working? Well, you tell me. This is their stock price in the last five years and this arrow represents when they essentially kicked off this initiative. It is attributable to a marketing campaign, right? But a lot of it is.  It's definitely better, but it's not that much better. So they've done a really good job, I think, of being honest, being authentic, and trying to continue to push themselves further to make a better product and to be honest when they don't and when they screw up. And they're building a reservoir of trust and of good will that if nothing else is reflected in their future earnings potential as rewarded by Wall Street. The reality is that we as consumers have way too many choices and not enough time or energy to figure out which one's better and how they're different. In fact, we're actually kind of looking for ways to eliminate people to narrow our options down. So coming off as inauthentic brings your trustworthiness and credibility into question. It's often enough to get you eliminated from the list right there. Just why we consider trust to be the new currency. 30 years ago, companies competed on quality and then it was service and more recently innovation. Now those are all out of the price of admission, right? We talk about this idea of organizations being transparent and being authentic and knowing who they are, because that is really the true source of sustainable competitive advantage. So we think that the future, in the future authenticity will be a differentiating force within the marketplace. Those companies that know themselves, are true to themselves and are actively building trust with their customers will achieve rewards greater than those that don't. Authentic companies will have increased levels of customer loyalty. They will have a more engaged and motivated workforce. They will have, because they understand clearly who they are and never stray from that, they will have more focused and efficient operations, unlike Kmart, who's jerking all over the place trying to figure out who they're going to be next. And finally, they'll have a stronger and more resilient brand. You guys remember back the old example of the dominoes I just gave when they had that unfortunate YouTube video about the people doing unsavory things to their pizzas? Remember when that sort of hit their ways? Millions of views in a matter of days, everybody watching what could potentially theoretically happen to their pizza. They didn't suffer a really significant and certainly not a long-term damage from that situation. Why? Because they had been building for several years this reserve of trust with their customers.  I honestly, I believe you're going to be honest with me and I believe you were honest with me in how you handled that. And that stands for something. So again, we see that authenticity is really your only true source of sustainable competitive advantage in a world that is increasingly becoming more and more distrustful. The good news is that it's never too late to start being you. Trust me. Thank you. Thank you guys. We appreciate it. Yes, this is our Q&A if you guys have questions about so much stuff that we've thrown up here. Be happy to answer them. Try to tell you when we don't know. Please. I think if it's truly authentically you and it's part of who you are and that's the way you continue to operate as an organization, I think it's fair that you might want to be somewhat careful about it. You don't want it to come across as using this to sell myself. But if it's truly authentically you and your organization always supports those kinds of things and you show how you do that, I think it's fair. Absolutely. Again, I think there's nothing wrong with and I've worked for a number of companies in the past and one of them was Timberland. You guys are probably familiar with Boots and Apparel Company. And Timberland did an awful lot of stuff, a tremendous amount of stuff for the environment, for the community and they gave back much like Jason talked about with Starbucks and they were always reticent to talk about it because again they felt like it was bragging or that it was somehow boasting about the things that they did. And we had to figure out a way to tell that story because it was part of who we were and when Jason talks about this idea of sharing our values so you could attract people that will also share those values. That only works if you've communicated your values. If you've taken a stand and said this is what we believe in, if you believe in the same thing you may want to think about joining us. We had to work really hard when I worked at Timberland figuring out where that line was because again it would be much like you said people are concerned about overstepping it. But I would say if the opposite of that becomes not sharing that kind of information about what you're about and what you do, but all the software consultants please step outside. Well the question was about do we have any particular feelings about software consultancy? I guess I don't. I don't have a strong opinion either way on whether or not it's a trusting segment of industry or not. What I will say is that as consultants and we're actually kind of consultants as well, again if you think back to that equation or that sort of trust we work really hard to build trust and competency, right? Look at all the things I've done and look at all the things I can do and again fail to consider the idea of what are we doing to build authenticity and to get people to believe that we are genuine and sincere about the way we're going to operate our business because consultancies have a tendency again to be sort of thrown in with maybe some of the baddest bankers but very close with authenticity challenged in many ways and again when we talk about a lot of what we're talking about today with authenticity not just being can you get the job done? Because again the reality is even if you can't I'm more likely to forgive you than if I don't trust you and so if you think about companies and this idea of this tipping point the idea that companies have to work at building trust and that they're going to have it and God forbid they're going to keep it if they don't keep building it from a consultant standpoint is often how do I build that trust and I would argue that start with the authenticity side the company's decide will follow So my question is you know sometimes it's very relevant to a company very relevant to even a consulting group and a lot of that's very relevant here but what about the authenticity of a group of business, right? I was at a talk with NBC and it relates to what I do in the CES I'm a small group within that but we are also selling our services internally so do you guys see that really applying in that same context as well? Absolutely, I've got several clients just like that within larger organizations like right now I'm working with just the accounting department in a large city or working with you know within a university one particular department so a lot of times the people within that department or team they're providing services to other people in the organization and the other people don't trust them and so helping that particular group people kind of coalesce around well as an organization internally who are we, why would people come to us and how do we want to be treating people and they essentially sort of internally brand themselves and over and over again I've seen that that takes off definitely they become the place where people want to work and then the next call I get is from another department within the organization or the senior leadership of that organization so absolutely I think the beauty of the work that I do is it translates to any group of people who've come together to do anything I don't have to understand what you do I just help you get better at that because I help you discover and determine who are we and why do we exist and let's all work on that together really well so absolutely I think it's it has to come from the top of your department and everyone has to be on the same page there but absolutely the other question the other corollary I'll bring into that is the idea of partnerships and relationships and that is people needing to spend more time thinking about what about the authenticity of the folks that I am going to associate myself with not just within an organization but across organizations so who are you guys partnering with out there in the community what are you creating yourselves with who are you saying I'm with them and how authentic are they because again the types of things that they may be doing to either undermine their authenticity or to increase the distrust in it of the folks that they're working with might also splatter on you by being associated with that so we haven't talked about it here but the idea of organizations often making partnerships out of because of things like companies inside of it those folks can do something that we need to have done therefore we ought to partner with them without considering what do they represent and who are they about and whether we want to be associated with them whether they will hurt or help our brand by being associated with them anything else thank you very much I appreciate you guys stopping by today I appreciate your time


Hi everyone and welcome back to another vlog. My name is Claire Carmichael and I am a newly qualified nurse working as a GP nurse. Today's vlog is all about I'm going to be talking about LGBTQ plus and everything that comes with it. I've been thinking about doing this vlog for a while and now I've had the opportunity to actually go into it a bit more and talk about it and all that jazz. And just a little word of warning for the trolls out there who are thinking right now about commenting below. Trolling people trolling trolling trolling doesn't sound right I don't know anyone out there that wants to put some negativity on this and say bad things about people that identifies LGBTQ plus don't bother I am prepared I've got all of it you know I've heard it all it's not Adam and Steve it's Adam and Eve no don't bother I'm ready for you and also no where the block button is so you can try and have a little troll you can try and put a negative spin on it you can try put other people down for loving each other don't fret I will block you because as you know the people that do follow me as you know I don't do this for the follows I don't do this for the likes I do not do this for the watch time the views whatever I do this because I want to help other people I'm a genuine caring person and I just it makes me feel so good being able to help other people out there and this is a vlog that really really needed to be done I think so what does LGBTQ plus stand for so it stands for lesbian gay bisexual transgender and then more recently they added the queue which means queer slash questioning and then there's the plus for any additions um because there's just so many different terminologies now different ways that people identify themselves just so many different things that I would be here all day trying to explain every single one of them so I'm just going to cut it down as briefly as I can but explaining as best as I can so that you understand and hopefully help you and help your patients so if you are working as a nurse despite your own beliefs whatever you believe in whatever religion you are whichever culture you are in if you are caring for someone that goes against those beliefs that you have I'm sorry you have to put your own beliefs and religions aside you are caring for a human being we are all human beings we're all the same beings put on this planet to just love care share kindness not everyone does that unfortunately but we are all human beings we deserve to be treated with rights respect dignity and care and kindness every single person in this world deserves that so if your patient or colleagues or friends if they want to identify as LGBT non-binary anything like that then that is absolutely their choice to be identified as that person and it's absolutely their choice to be in love with whoever they want to be and I don't see any any wronging in that at all lesbian so lesbian is someone who is attracted to the same sex as themselves so they identify as female and they are attracted to the same sex who is female female to female gay so this is male to male so someone that identifies as a male is also attracted to a male bisexual is somebody who identifies as female or male and they are attracted to both sexes male and female transgender so a transgender person is someone who identifies as the opposite sex that they were actually originally assigned to so someone may be born with male body parts or female body parts but actually they feel like they're in the wrong body they were born into the different body and then they want to sort of go through a change to put them in back into the right body so that they can feel whole again so that their soul and their personality can match that of the body so someone might have been born male but actually identifies as female because that's the way they feel like they should have been born they should have been born into a female body non-binary and gender fluid I want to talk a little bit about this as well so a non-binary person or someone that identifies as gender fluid is somebody that will not identify as either male or female they feel like they're a free spirit in a way they don't feel like they're associated to any particular part I just wanted to raise the awareness that that person neither identifies as male or female and the sort of pronouns you would use for these sort of people would be they there them those sort of pronouns are what you use instead of him her she he it's other types of words and it's getting used to actually saying those sort of things and it's no different to if you were talking to maybe your friend about a patient or your day at work you don't give away names and you don't say she he usually it's more my patient today well they did this and they did that it's no different to doing that so people need to get used to using the correct pronouns and I just want to say if you're not sure ask the person the person's not going to be offended that person is going to be a lot more offended by calling them the wrong pronouns without even speaking to the patient or even your colleagues if it's your colleague they're going to be getting a lot more upset and hurt that you've just assumed and called them the wrong thing than actually sitting down and having that conversation with them and the only person that's embarrassed or shy about it is you if you've got that problem it's the only person it's going to affect really is you and then it's going to affect the patient if you start using the wrong terminology and it might come across as malicious or bullying or harassing anything like that that's when it's going to start hurting other people so it's about having those open honest conversations and saying to someone okay what would you like to be named what would you like to be called we already do it every day as a nurse hello my name is Claire Carmichael what is your name what name would you like to be called why can't we normalise it in every single day conversation you have to make that normal so that the patient knows that actually this is a normal process and that's just going to help massively I think and again if this is something that you don't agree with then that issue lies with you it doesn't lie with the other person because the other person is happy they're not harming anyone and they're in love with whoever they want to be with okay and it's not for you to judge that person it is not for you to put that person down it's it's wrong and you shouldn't be doing that in my opinion instead you should respect their choices and support them like any good human being should do and obviously in healthcare profession whether you're under the nmc gmc whether you're under the healthcare social work act then you have to follow that code you whatever profession you are nurse doctor healthcare assistant you've got a certain level of standards and code that you have to follow it doesn't matter about your religious beliefs culture beliefs anything like that you have to follow your code and you have to give the best care possible to your patients no matter on their age race identity and sexuality sexual orientation none of that disabilities nothing you have to give the best care possible to that patient regardless of where they're from who they are and what they've done now then this is for you who identify as lgbtq plus or non-binary or gender fluid for example what you tell and disclose your colleagues and your patients is absolutely your choice it's your personal life you don't have to feel under pressure to discuss that with anybody it is up to you whether you want to share that information with your patients with your colleagues you might get some comments from other people you might hear things from patients that say differently and you just have to try and normalise it the only thing we can do right now is by normalising this and making it acceptable and it shouldn't be like that we are living in 2020 but it's still like that out there unfortunately and we've got a lot of challenges and people to tackle and normalise this but we will get there and if we stand together and share and yeah celebrate love i think we'll be all right i think with lgbt community as well there's a lot of mental health problems around this issue because people won't come out people can't feel they can't come out to their families people feel they can't come out because of the backlash the stigma around it the scared the worried and this is heartbreaking this is horrible is again is 2020 people shouldn't feel like that people need to feel loved and supported and if you have a friend who might identify as lgbt or you have suspicions open that conversation maybe with them make it normal for them open your arms and say do you know what i'm here for you if you need to talk with anybody if you need a shoulder to cry on please i'm here for you and support that person i think if if everyone could just do that instead of being so negative and shine away from it i think the world would be a massively better place anyway that is all from me because this vlog is going to be 100 hours long if i keep going and the sun is coming round look at it so i need to try and stop this vlog now but anyway i hope it's been useful just please be mentally aware when you're out there whether you identify as lgbtq plus or you have friends colleagues patients that identify as that please be respectful treat them with dignity respect care for them as you would anybody else and never ever judge another person and if you are concerned or worried about someone or you're not sure about something like terminology with somebody ask sit down and have that conversation just say do you know what i'm really really sorry i have to ask this but i don't want to get it wrong they were honest to god they would much farther you did that than anything else so please have the conversations and if you do identify as lgbtq plus please comment below if you have any further information to give other people to share any websites anything like that any links you want to share so that is it from me i hope you'll have an amazing week and don't forget to keep shining and keep being you


Okay, I'm getting started. Hi, my name is Wei. I work here at Shovee. I am active on Twitter, on that non-syllable handle on top of the corner. And we have a full talk today. So when I first proposed this topic to be spoken at ReactJS Meetup, I got the feedback that it might not be interesting to the audience. So I was really very worried. I checked the GitHub stars for flow versus typescript. And it's not a very good sign. And furthermore, I am seeing maybe a hundred tweets about typescript until I see one about flow. And it's likely that flow published a new version. So last weekend at JSConf Asia, I put a capitalized flow on my name tag there. And I was asking people around, like, hey, do you still use flow? And from my very incomplete sample of developers I've sold to, people are still secretly using flow. They just don't talk about it.  I've been very confused. And here's how I got less confused. So last year before Christmas, when everything was slow, I was browsing through internal tasks. And here's a new ticket that said upgrade flow to 85. As a background, someone from our team has been keeping our code based up to date with flow. So I never really bothered. And then it was a month later before Chinese New Year this time. And everything was slow again. I was browsing through internal tasks again. And guess what I see? That flow ticket was still there. So now I'm curious. There's a C no evil emoji there. So what's the evil there? So this very innocent, cute little kitty in one fine afternoon punched in the command to upgrade flow. And guess what happened? An undisclosable number of unhappiness bursted out, right? I cannot tell you the exact number. But you can interpret yourself by the number of digits there. So something big happened in 85, right? The flow team published a blog post along the release of 85, explaining the why and how it's behind. When I look back today, the whole article makes sense now. But maybe I was too strange to begin with. So basically, I could not relate to what was actually happening in our code base. The first few times I read this article. So today let me try to begin this talk by trying to relate to you what actually happened with my understanding now. Let's look at a simple function first. Can we see this? All right. We want to look at how a function passes information here. This function takes the string of creature and returns a string that corresponds to the unicorn form of that creature. So cornifying a kitten gives you a kitten corn. A kitten corn is a thing here, okay? It's my companion today.  When we export the function down below, Flow will ask us to annotate the creature because exported function parameter is one of the input positions that is required to annotate. We don't have to annotate the return type, but if we do, Flow is able to use that explicit information both inside and outside the function body. So anywhere that value of the function return is used is going to have that type. Now let's migrate the same thinking to higher order components. Cornify now is a higher order component. It takes a creature component and instantiates it with a spiraling horn. But what creature are we cornifying? We don't know yet. They're not as simple as strings. They're react components. So after Flow 89, it provides us with a utile that allows us to annotate abstractly what the component is by supplying just the prop types as well as an instance. But we're not going to worry about instance for today. And now as our higher order component cornify should know the relation between the two components. So cornify should be responsible for deducing and passing the information around. But in order for cornify to know what the input of what creature is, we need to tell cornify what the props are. We can pass that information to cornify by providing a type parameter next to the function definition here. Then cornify is now able to know what the input component is. So it will just put it here. And notice that now we're actually not explicitly annotating the input and the output. At this moment, we're making it implicit for now because we're still waiting for the user to provide an explicit annotation for the props. And notice also how inside cornify, the creature component is actually instantiated here in the return component. Therefore, if at any place we call cornify without providing that props here, at the instantiation step, it is considered an implicit instantiation. Okay, let's move on. And what are the logic behind those props anyway? So here the props on the top, the props should contain the crown prop that the creature should need it. And at the return component, on the other hand, no longer needs crown because cornify is feeding the crown. So we want to take away crown. And we do that by using the div utility, utility provided by flow. And this void appended here is used to go around the potential problem where props may not have crown inside of it to begin with. Okay, now, chances are cornify, the higher-order component lives in its own file. And unicorn, of course, is also going to have its own file. And then the future component that is going to instantiate the unicorn is going to live in yet another file. So the information about the types of those components will come in from a file dependency. Before 85, flow did its type inference walk before merging in the type information from dependency. And therefore it will actually lose those information. And after 85, flow waits until the information from the dependency to be merged in. And then it will do its walk to complete the type inference. That is why flow is now able to catch more errors on those inferred types. But there is a big performance cost to pay if flow walks a long chain of dependencies to learn about props components files away. So it asks that we explicitly annotate within each file's export cycle. So that now it will be safe for flow to assume that here, when it imports the unicorn and the unicorn, both of them are already explicitly annotated. This is also why after 85, flow will ask you to explicitly annotate each module export within one file import-export cycle. Is everybody still with me? We're not at a better part of the story. So we already know that after 85, the code base exploded. And we also know that the higher order components participated in the explosion. So what in our code base are the most commonly used higher order components? Is the ReactRidaz connect? And we're not alone. Apparently, everybody's connected components were exploded. So back then, I had no clue how to fix this. So why don't we just Google it? So I landed on this GitHub issue in Flow's repo. And I'm not sure if I like his words. I see desperate here, painful, complex, and outdated, those kind of things. But at least we're here, right? There's an issue someone already raised in Flow's GitHub repo. So why don't we see what other people say about it? Someone responded to it on the same day, and it goes like that. Have a look at the tests alongside the Flow type library definition. That's the best way to see up-to-day recommend practices. I mean, what do you mean the best way is to look at tests? Are there no docs? Anyway, if we think about it, it's actually not that outrageous, right? Because Flow is not supposed to know about ReactRidaz. And ReactRidaz is not supposed to know about Flow, neither. So what brings them together is this community-maintained Flow type library definition repo for Flow. So after 85, people at Flow type discussed new options for the library definitions and ultimately settled on the new solution for ReactRidaz after V5 because VCA7 are downward compatible. And it's also dependent on Flow version past 89. So here is the signature for Connect. And I'm blinded again. Apparently English is not a good language for abbreviations. And I believe the library author also agrees with that. So they actually provide a dictionary at the top of the file. So now we're able to reassemble what Connect is doing here. There are as many as six type parameters in Connect. But actually we don't need them all because Flow is able to infer some of them. And most of the time, you only need two. And the underscore is a placeholder in Flow that was added in version 84.  So if you're interested, you can read that after this. So ReactRidaz recommends three ways for you to connect a component. They are connecting component with MapStateToProps, connecting component with MapDispatchToProps, and connecting the component with both MapStateToProps and MapDispatchToProps. It also recommends that MapDispatchToProps is an object full of action creators. So we'll go with that as well. You might not be able to see this. I'm going to read this for you. So OwnProps has passed through, which is the props that is not concerned with Connect at all. But it's going to pass through your connected component. And then we have four MapStateToProps, which will be the props that Connect consumes, MapStateToProps consumes. And then props will be OwnProps plus the props that MapStateToProps will feed in to your component. So you will be spreading OwnProps here. And take note that when you spread an object with flow, they better be exact. And then, when you annotate this line here, I'm sorry about the size, you connect with the first parameter being the props and then the second parameter, OwnProps. You don't need the remaining four because flow will infer them. And then that's it. And where did I know about this? It's in the test file. Next one, when connecting with just MapDispatchToProps, OwnProps has only passed through because we're not using MapStateToProps here. And then props will have OwnProps plus the props feeding by MapDispatchToProps. And once again, you put it here, props being the first parameter, OwnProps being the second parameter. And where did I know about this? It's in the test. And then finally, connecting with MapDispatchToProps and MapStateToProps. In props, you have OwnProps plus DispatchProps plus StateProps. And then under Connect, you put props on the first place and then OwnProps in the second place. And where did I know about this? It's in the test file. So once we know how to annotate Connect, we feel we're almost there, right? So everybody good with Connect now? Know where to look when you are stuck? All right. Okay, here is the best part. Our team love higher order components. Anybody knows an article called Higher Order Component in Depths on Medium three years ago? That one was on our onboarding guide. So this is our new product detail page. The whole page is wrapped with a higher order component that wraps your content with the header that has the search bar and the footer that will load the footer content based on which page you are in. And then this wrapper actually is wrapped around with another higher order component that takes care of theming so that the page will change theme on the festival season. Every single component here is wrapped around with tracking and error boundary. And then finally, this whole big chunk of recommendation here. Each of those are wrapped around with a higher order component where you can fit in just the item ID and the type of recommendations you need, and it will fit in all the items you need here. We love higher order components so much that we even still compose from Redux and use it on our components. We thought we were pretty smart. Well, wait until we have to annotate this. So let's start. So a component with everything will have all props. We will pass that information to the nearest higher order component which will be with D. So with D receives all props and because with D is responsible for feeding in D, it's going to take away D what it returns. So when we feed into the next higher order component with C, it's not going to have D in it. So we do that by taking the dip of all props with D props. We're just going to assume that with D props is correct. And then the next higher order component that we're going to feed in with the props information list is with B. And once again, we'll take away the with C props and so on and so forth. Chances are we're not done yet because most of the time we'll still have connect. And I'm like, if you were in my situation like three months ago had some hundreds of components like that to fix not to mention that you're not even 100% sure that all of these higher order components are correctly annotated. Will you go ahead and do everything like this? So for the longest time, I was really stuck and not knowing what to do. I did some searches for it, but they were really very echo-less. This time there's not even a GitHub issue. It was just nothing. I checked the test file too. You can check it later. But the complexity doesn't match. And then in this test file, it's not really what they're also annotating the higher order component inside. So that's actually not really what I wanted to do. So we started to question whether higher order component is still a pattern we want or not. And as a matter of fact, that was the time we were urged to consider adapting to hooks so we can peel off higher order component wrapping. And so we actually upgraded our React dependency to 16.8 during that time. But still it is really very unrealistic for us to rewrite all the hooks at once just to make Flow happy. So we're still here. Still stuck. But my philosophy of life is just that if one blocking problem will eventually unblock itself if you stay long enough with it. So one day it all of a sudden occurred to me, like why is it that I was trying to annotate higher order component layer by layer? I think it was probably the ankle brackets because they're so inviting that they kept making me wanting to put stuff in it. So I went back to reading this article, the one Flow published alongside 85. It's a very long article, and when it introduced implicit instantiation errors, it said that you can either annotate with explicit type argument which what we did just a while ago, or you can annotate the return type. Okay, so that's hint number one. And hint number two somewhere else in this article and said that sometimes annotating the return value will be simpler. And that we only have to annotate once within one import-export cycle. So that was like the aha moment. Is everybody ready to see the final puzzle result? So we won't be doing subtraction anymore. We'll be doing addition. We start at own props which contains no injected props. And once again, we prefer to explicitly annotate our props so we merge all our props to be used in the definition of the component. So here we use all props. But when we export, we do not annotate those higher order components layer by layer. Instead, we just say all at once that the return, the exported component is own props. So in this way, we don't have to worry about all the higher order components wrapping at all. And the component is correctly annotated. It has everything. And outside of this component, you only have to worry about own props which is the intended way we want this component to pass the information around. And in fact, you won't lose any coverage by annotating the final export this way because even if you do annotate with explicit type parameters in the middle, each of those is only going to compute what it returns. And we are going to pass that information down to the next layer, which is not really required. That's when we start moving again. It's not amazing. But wait, there's more. I'm sorry to tell you that if I leave you with the impression that everything is about higher order components only, this talk will not be complete. So there are some other issues that we run into. Like from 85, it was the first time we actually put in function type parameters in the beginning. But Pretier refused to pick up that syntax and not recognize them as full type annotations but instead recognize them as expressions. So every time I saved the file, it would change the file to like that. And it would format them wrongly and it would also block our CI. So you spend the next half a day trying to understand completely unrelated issues like what is the difference between Pretier-Yesling, Yesling-Plugging-Pretier, and Yesling-Confect-Pretier. Turn out that our Pretier was more than a major version away. And there was a bug that was fixed in the recent version. So upgrade your Pretier. There's more. Back then, Flow was using a lot of memory and sometimes if I was accidentally running two copies of Flow servers, this 16-gig memory machine will shout at me and be like, hey, your machine is out of memory and started randomly executing applications so it was just super scary. I'm not sure if this will work. There is even more. Sorry, no audio. Sorry, you can enjoy that at home. The final... Okay, why is it playing anyway? I was really very inexperienced to begin with. For example, I did not know what was going on when, say, I fixed one implicit instantiation errors. I would expect a total number of errors to be go down by one, right? Well, sometimes, some other times it will go up by like tens. And I could not see the newly generated errors because my console maxed out at like 4,000 lines of output. So those newly generated errors, I have no idea where to find those. And when the total number of errors bloated up by one digit, I thought I was clearly doing something wrong and I reverted all my previous changes that was just a complete waste of time. It was only after I cleared all the other errors when I finally saw that the new errors where the errors flow was able to catch after I explicitly annotated my components. So here's what I learned. Fix the groups of errors together. Maybe it's time to review some bash commands at this time. So when I fix our second package, and I know what I was doing, what you want to do is you want to fix all the implicit instantiation errors first. Your number of errors will likely go up. Don't worry about that. Fix other errors also in groups. Normally they will have some identifiable phrases so that you can do something similar. And then when you clear everything else, the newly generated errors will come together with very accurate error messages so they will be very quick to fix. So in the second package that I worked on, also some big three digit number of errors, knowing what was going on and knowing what I was doing, it is actually possible to fix them within just half a day with only four commits. So our CI finally passed after three months and it was really very therapeutic and you can do it too. Thank you. So there were a few questions that we asked along the way. Is it worth the effort? In April this year, the Flow Team published an official blog post, an official blog post that aimed at helping people upgrade their flow code base. The secret is when they upgrade, they have an internal tool that will automatically suppress all new errors caused by the upgrade. If I knew about this in January, I would just do that and there would not be this talk. But if Flow fixed me everything, we are actually losing the improved coverage on that version. And in fact the improved type safety is actually a crucial gain. After this upgrade, Flow is able to notice the errors when the props wrapped with higher order components don't match even if you might be crossing file boundaries. And it also provides more accurate error messages that will pinpoint you to which files are reporting the conflicting types. I believe this question has its ground since the Flow Team themselves has also written that recently a bunch of open source projects are migrating to TypeScript. This first sentence in this quote, sorry, I need to, sorry. So this first sentence in this quote is the highlight of that post, like the most popular highlight of that post. But I think we should not take that line out of context. It does sound to me that the people on the other faction are having a better life, maybe with better community support. Although I think a better question to ask is this. Will switching to TypeScript solve our problems? I think keeping our code base up to date with Flow ever since 85. As we speak today we're at 101. Throughout this process, I've encountered problems over and over and I soon realized that my previous understanding about the TypeSystem was really very shallow. So behind all of this, the bigger picture is Flow as well as TypeScript is a TypeSystem or a static type checker on top of a dynamic language. So whenever I encountered a problem, a closest friend to ask was just TypeScript, is this problem specific to Flow or is this specific to our implementation or is it a battle between flexibility and TypeSafety or is it about the dynamic nature of JavaScript? Consider this example. This is a function that takes a number or a string and may return a number or a string. If you try to use that function, plug in the string and expect the TypeSystem to know that fx, when we give it the value to know that it is a string, it won't. We may have multiple function call signatures, but it is not possible to write overloaded function bodies with JavaScript. So the code below will always result in a TypeError. However, it doesn't matter if you are with Flow or TypeScript, you're always going to have this error. Therefore, it is probably not wise to switch faction before understanding what is causing the hair pulling. You might end up putting all the effort to learn the other syntax only to realize that you're facing the same issue. And by the way, this repo here compares the differences between Flow and TypeScript. So if you're really seriously considering switching over, check this out first. And in fact, throughout the past few versions after 85 that have been keeping our code base up to date with, Flow has become better and better at each releases. They've been focusing on performance, reliability, and language tooling. So a selection of such improvements includes making Flow recheck only what needs to be rechecked when a file changes. They built a feature that creates a saved state per commit so that your flow server can start on the previous commit state. They also re-architected major parts of Flow for better responsiveness, for IDE integration or intelligence. It is now using less memory, and there are more and better utility types around React. So instead of thinking of this as an either or, I prefer to think of them in a both mindset. They're both static type checker on top of our dynamic JavaScript. They can both be considered as a compiler. They have some differences, one relying more on type inference like Flow, the other one being more of a bus. I say try them both on different projects and use them as a stepping stone to understanding type systems better. Because it will lead us to think about this next question, if something is very difficult to annotate, does it indicate a bad practice in implementation? And let me throw in just two more final code snippets, I promise, okay? As we discussed earlier, all we discussed earlier about higher order components, they're not hard, they're not difficult. The difficulty was more on the lack of guidance, rather the actual problem is actually not hard. This is hard. Why? This is a function that it may return either a string or a location shape. If you still remember the example two sides ago, it is not possible for you to know from the function call that what's returned is going to absolutely going to become a string. So whatever this type is, it's either a string or a location shape. It's going to be passed into whatever that uses this function value. And there is no way you can refine that on that spot. So you will have to keep writing that if else condition, if you're writing your function, like the very base function this way. So maybe here we'll consider, instead of having a very smart function that returns either or thing, we have two separate functions and we call them at two different conditions that we can control. And this is hard. This is a function that takes a parameter of a type that's either that type or is a generator of that type. And you will expect that type of function, type of unicorn equals to function to lend you the generator branch. It won't because it doesn't know whether this one is a function or not. So this is hard. I would prefer to think of this as a... Well, I don't think the conclusion is whenever the typing is hard, the implementation is bad. No, I'm not saying that. What I'm saying here is when it is really hard for you to type, think about whether we're actually doing a bad implementation or not. So this final question I propose is that we think about this. We initially brought in type system on top of JavaScript to gain type safety, but when our type system is unhappy, we take that as a chance to think whether our implementation is a good practice or not. So this is all I will be sharing as a content today. I have a long list of references, so allow me to navigate you through a little bit. I have many guides. The ones with an avatar are by myself. I have two guides on essentially the same topic, but they were written in different times. And the second one on top, I believe is a better one, but I know the second one is correct. And then I've been keeping our code base up today with flow, so I have nodes on 98, 99, and 100. I'm still working on 101. And then there are more migration guides by other people. I've checked all of those. All of those are saying the right thing. There are a few GitHub issues and commits that are quite interesting for you to read. And then finally, maybe you should re-ask King for required annotations one more time, see if it makes more sense. And then Flow has a resources page that if you're interested in type system, you can take a look at that as well. The URL to this slide, flowbehappy.netlify.com And I want to save time for our next two talks, so there will be no question and answering session, but feel free to reach out to me on Twitter or speak with me offline. Thank you.


All right folks We do have a giveaway going on right now for two copies of Super Mario 3d world plus Bowser's fury Details on that are down in the description or down in the pinned comment or both probably both But what you're looking at here is a Nintendo hiring page, and I was gonna squeeze us in to Tomorrow's prime news, but I decided to do this on its own because it's kind of interesting We've had a very interesting time When it comes to Nintendo see We have not had a standard Nintendo Direct like a big boy fat full blown Nintendo Direct since September of 2019 and last year we did have one Official Nintendo Direct mini otherwise. We've had a couple game directs We had the 35th Mario anniversary direct and then obviously we had some partner showcases that were sometimes called Nintendo Directs as well So we haven't really had a standard Nintendo Direct in a long time And there has been some thought process out there that we might not get them after all Pikmin 3 Deluxe was just you know A social media announcement people thought it went out to die. It's the best-selling Pikmin game of all time Same thing with Super Mario Party So Nintendo has proven they don't really need Nintendo Directs To really get anything going with the company and when you're talking about third party Nintendo Directs I mean you don't really need Nintendo's involvement too much beyond maybe some editing to put it all together those partner showcases It's mostly just gonna be stuff provided by the third party people But Nintendo is hiring an associate AV producer and this could be for many reasons right you could you could be talking about live streams You could just be talking about you know creating trailers and all that jazz, but in here is some interesting words so let's get down into the description of duties and And then the summary requirements because heck maybe you want to apply for this position So since produces all video assets required to merchandise game launches on Nintendo owned e-commerce channels But not limited to the Nintendo e-shop. So basically game trailers. All right. I mean that's expected Collaborate with internal teams and external agency partners to develop creative concepts storyboards and scripts for promotional trailers Okay, again just working on trailers and stuff like that makes a lot of sense TV commercials works with internal teams Let's select final footage and decide final edit of game footage segments for all television commercials Okay, you know, that's that's pretty standard collaborating with retail marketing to create still such video game-based content for in-store retail Interactives pop and retailer websites collaborate with live services staff to produce all game footage and video assets required for websites and microsites again This is stuff that you would expect this is stuff They still do coordinate with global content production teams on the timing viability and localization of marketing assets from a global perspective collaborate with strategic communications and social media teams to develop content and assets for discrete targeted audiences and unique social media platforms Works with outside vendors to source music and voice talent for use in high-end video production Directs and participates in gameplay footage capture sessions to generate game assets necessary for game and marketing content production Work with internal design staff to produce screenshots for product packaging digital manuals and promotional inserts produces content for native use on mobile and smart device distribution platforms Collaborate with product marketing staff to brainstorm creative ideas in support of the product launch and product initiatives Maintaining a high-level of knowledge of Familiarity with new video production trends technology equipment and software distribution channels may assist with filming live Action footage for use in Nintendo Directs and other content marketing initiatives So we're gonna stop there. You can go ahead and read the rest. I'm gonna leave it on screen They are hiring someone who might be assisting in producing live action segments of Nintendo Directs That suggests Nintendo Directs are not dead folks Nintendo is still hiring people to do Nintendo Direct related work Now if you're wondering what the requirements are for this position It's right there on screen. It says four years of related experience focused on editing market trailers and presentations TV commercials web content Etc. Ability to use a covert multiple media formats in codex be able to perform basic audio mixing and sweetening for video Production strong experience of non-linear audio such video editing programs and graphic design programs Adobe Premiere Don't be after effects photoshop final cut Adobe illustrator Ability to work a basic motion graphics and animation experience the cinema 40 Familiarity with media file types, etc. Etc. Etc. It's right there on screen for you guys if you're interested in this position I'll put a link down in the description for you to apply for it. If you're someone interested. I have no idea what they pay You know, that's something you find out through the interview process But yeah, Nintendo is hiring someone to do Nintendo Direct related work among a whole bunch of other stuff This is just wholly fascinating to me. The hope for Nintendo Directs in the future is not dead That's the takeaway here folks Nintendo Directs not dead. Give me your thoughts down in the comments Alright folks, I'm Nathaniel Robert Janssen from Nintendo Prime. Thank you so much for tuning in. If you enjoyed this video, that's great Hit that little subscribe button hit the bell as well So you can get notified of all future videos and live streams. Alright folks. I will catch you guys in the next video