Hello there and welcome. We are so glad that you're here today. It's another episode of the non-profit show. Our ask and answer is the episode that culminates the end of the week, and it really helps us set the charge for the weekend as we hopefully rest and relax for a brand new week coming up ahead for all of us. Do you want to honor and give a shout out of gratitude to Fundraising Academy at National University for allowing us these opportunities to provide the ask and answer episodes. We always have a representative from Fundraising Academy, and today we have one of my personal favorites, Muhee Kwaja joining us. Muhee is a trainer at Fundraising Academy, and he's also the co-founder of the American Muslim Community Foundation. He's been on several times and always brings his A-game with a lot of skilled expertise and experience in our sector.  The questions that come in, the opportunity to talk, and as I said to you earlier, Muhee, I think we'll riff off a couple of these, because between the two of us, we should probably combine our years of experience, but we've got some great experience between us, and I'm really looking forward to these questions today. But before we dive into the questions, I do want to remind our viewers and our listeners that we have an amazing team that supports these episodes, so day in, day out, marching towards 800 episodes. So I wanna say thank you so very much to our presenting sponsors that include Blimmering American Nonprofit Academy, Fundraising Academy at National University, where I guess Muhee joins us from today, non-profit thought leader, your part-time controller, staffing boutique, non-profit nerd, as well as non-profit tech talk. So these companies, as I mentioned, many have been with us from the very beginning, which was March of 2020. So this month actually recognizes three years of broadcasting for these episodes and many, many amazing guests. And I just really feel honored to be alongside here. Most of our episodes, if not all of our episodes, are on Roku, YouTube, Amazon Fire TV, as well as Vimeo. They're also on the podcast platform, so wherever you stream your podcast, you can download and listen to the non-profit show. We hope that you give us thumbs up and reviews there as well. That would always be great to have. So before we jump into this question from Robert, I do want to give you the opportunity, Muhee, to please share with us a little bit about yourself, a little bit about your role at Fundraising Academy and maybe if we're so lucky where you're joining us from today. Oh, definitely you're too kind. Thank you for the illustrious welcome. So I started my career back in 2009 after graduating from the University of Michigan and stumbled into development through their summer internship program and was really fortunate to have a lens through the university to see how the alumni, how the hospital, how the athletics department and everyone in between helped raise billions of dollars for the university. And it really was an eye-opening career opportunity for me and having switched from mechanical engineering of all majors to history and psychology, I had no clue what I wanted to do. So I was very fortunate for that DCIP internship and it led me on this 14-year journey now. So I've been a one-person development person, I've been a chief development officer, I've been an individual major gifts officer, everything in between from events to grants to everything nonprofit people have to deal with. So happy to share this journey with you and whatever answers I come up with, hopefully you find them helpful. And I'm joining today from Jakarta, Indonesia. So my current role as a trainer at Fundraising Academy is remote. So I get to enjoy the flexibility of logging in wherever I can, whenever I can and honored to be here today with you. Thank you. It's so fantastic to hear about your journey but I also think to have you show up and to model the remote, you know, living and workplace in today's date is so inspiring and reality as well because as we know, many of our teams, many of our nonprofit teams across the nation are working with remote workforces and staff and so it's really cool to have you model that here for the nonprofit show. So, okay, we're gonna dive deep into these questions. I believe we have four for today's ask and answer and the first one comes to us from Robert, city and name withheld and I'm gonna start it off by reading it aloud, toss it to you, Moohee and then we'll see if I have anything to add but you're usually pretty good at those slam dunk. So, okay, Robert wants to know, while we are based in a large American city, our board wants our development team to start working in a rural and regional parts of our state. We work in the Midwest and could have a larger donor footprint. What are your thoughts on this? Take it away, Michael. This is a really great question and I think it's of course mission dependent. I think if the beneficiaries or people in these rural and other area, local areas, do you have board members that are reflective of those communities? Do you have some donors who can introduce you? What's the in and would this expectation fall on the current employees or is the organization willing to hire somebody local from those rural areas to be a donor manager for them? So a few questions that come to my mind and around the workload, making sure that it's something that can be managed based on the current structure of the organization. You know, one thing that stood out to me on this question was, you know, they mentioned that the development team was asked to go rural, but I didn't hear that the programming was going rural, right? And so that might be a bit of a disconnect, but there could be, as you were saying, Muhy, you know, there could be an immediate champion in that rural vicinity that could absolutely, you know, wave the flag of this mission and really start to galvanize support, perhaps in those, you know, more remote areas. And so I love that you brought up like is this an existing person? Will this be a new person? Maybe Robert, something to think of this is that it is an established person within that rural and that regional part of the state. I know that many national teams, you know, will create regional offices, if you will, or like certain geographic areas to expand their footprint, as you mentioned here. So, you know, one thing that I know we've seen over the last three years, Muhy, is the net that we as nonprofits have casted to our supporters has gone far and wide, right? Because of what you're demonstrating as well, is that remote connection, you know? It's no longer, this is only supportive or for the individuals right here in our backyard, many people can either, you know, maybe participate in the programming, but so many people can be a part of the fundraising and the financial support. So Robert, we hope this is helpful in the Midwest. You know, it could be a big task for you, but I think you're up for it. We'd love to hear back on how this manifests forward for you, so good luck. All right, we've got a lot of long questions this week. So we're gonna get through them, but this one comes from, it looks like the entire group of boards, to the board members of a Dallas, Texas organization. And they wanna know, does it impact a donor's sense of our nonprofit stability when a new CEO is announced? We have had a long-term founding CEO replaced by a new CEO who only lasted two years. We have a new CEO coming in who we think will be amazing. Should we keep the new CEO leadership somewhat quiet during the transition or should we really promote it? Ooh, this is a really good question and I can't wait to hear your response, Moony. Yeah, you know, think of the incoming CEO, like what is the best welcome for them? If you really think they're gonna be amazing, try to promote it in that way and share your excitement. I think that a unity stronger front, presenting it with the board support makes it a much smoother transition. Two years, you know, lasted only two years. I wonder why they frame it that way. I think two years should be celebrated. You know, it could have been challenges, but you know, you have to take some wins out of situations, even if they're difficult and understand that, you know, maybe the workforce isn't as career-centric as the founder was and that was their passion and their baby, so they were able to stick with it for that long, but you know, I've seen a lot of people take other positions because it helps them increase their salary. I've seen people leave jobs that they love because of things like being able to go remote. So there's a lot of different factors in these that just adjust to the lifestyle that we're living. So I would say, embrace the CEO, support them. Donors understand these transitions and if the donors have confidence in the mission of the organization, a turnover in leadership can be alarming, but if it's coming with, I would be more alarmed if I didn't see an announcement from the board than if there was one, so. You know, that's exactly what I'm thinking. And you know, nonprofits, we should come from a place of transparency, you know, not only financials, but talking about transition as well. And so I think if we didn't announce this transition, as you mentioned, it could actually bring more concern to the supporter group because there was no announcement, right? So I think that could be a piece of it. Mui, I'm gonna put you on the spot here and I know it's not quite the same situation, but you moved from an executive director role into, you know, another role and you brought in, if I'm recalling correctly, an executive director for the American Muslim Foundation. Could you share with us, you know, how that transition happened? Cause I'm curious and really around the communication because I'm curious if your personal story might shed some light on this for our boards. Yeah, sure. Happy to share a little bit more about American Muslim Community Foundation. As a co-founder, I was full-time and realized that after doing that for two years, I kind of burnt myself out. And I was able to take a step back, go part-time with AMCF and hire an executive director, hire a nonprofit manager, hire a donor manager and really create a team where I was doing all of those things in my own capacity, but I decided to take a pay cut and bring on other people to help us really scale and implement processes and bring in other people where my skill set was really strategy, donor relations, fundraising and these other people brought in their skill set to really ramp up the organization. So I wanted to avoid being an organization with founderitis, right? Somebody who's just there and I wanted to really expand the team and allow us to grow. So that was a decision that I made with the support of the board. And we've had challenges along the way and trying to figure out a good balance. So even with a thoughtful transition, there'll always be challenges that come up and arise, but I think that the way in which it was communicated with our stakeholders was one that's continuing to tell our story of how we're growing and transitioning and being more grassroots and growing together with our client base. Thank you. I know I put you on the spot, but I love when you share that story because it is personal, but it's really just so telling for how this transition is strategic. And what I would like to add to this as well is yes, let's celebrate those two years as you mentioned because the leader, the CEO for those two years could have come in for where you were as an organization in your life cycle so critically pointed for those two years, moved you to a new direction or in a new space of the life cycle. And now you're ready for a different type of leader or a different kind of focus leader. So I'm right on the page with you, Muhee. Let's not say only lasted two years, let's really celebrate that two year leadership because that in and of itself is strategic and now it's time to take another strategic move, if you will. So I hope that's helpful, but I love having you share that because I do think that it likely resonates with a lot of people. So thanks for letting me put you on the spot. Okay. So this one's coming from St. Louis, Charlina here. Are you seeing more people returning to national conventions and trainings or staying with online options? I ask this because I have been tasked with budgeting this and we would get a lot more of four hour money if we engage with online training since there are no travel costs. Looking forward to your responses. This is timely. Very timely. I think the challenge with online options is it doesn't allow the person who's taking advantage of the professional development, in my opinion, to really pause and stoke it all up and have time to let it sink in and come back to their work because as soon as the online session is over, you're back in your work immediately. And a lot of the time, the benefit of going to in-person trainings is the networking, the atmosphere, the excitement, the stepping away from work and life to go somewhere new and interact with like-minded people. So online is commonplace. It'll always be there. But as we know, in person is coming back in full swing. So I highly recommend you budget for it. And I'd be remiss if I didn't mention Fundraising Academy's very own Cultivate Conference coming up on Thursday, June 1st. Take a look at our website and sign up. We've got our early bird pricing right now. I believe it's only $79 for a whole day in San Diego. Jared will be there, I'll be there. And one of the more famous conferences I'm sure you've heard of is the Association of Fundraising Professionals International Conference icon. And that's gonna be taking place in New Orleans and such a wonderful conference. Fundraising Academy will have sessions there and we're present there. So I'm a big fan of in-person and I've always seen it as a way for me to reflect on my career, reflect on my journey, come back to my organization, more nourished and stronger and enthused about my work. So I definitely would suggest including traveling your budget, including professional development in your budget going forward as much as you can. Yeah, great plug, I love that. So thank you for both Cultivate for Fundraising Academy at National University in San Diego, June 1, and then also the AFP icon coming up very soon. Actually, middle of April in New Orleans. So I will be at both of those IRL for a shout-out to Julia Patrick in real life. And you're so right, Muihiya. I do think adding this to your budget and what I would recommend, Charlina, is maybe go back to what your budget was five years ago to see how you were investing in these, you know, travel and conference and personal development. Maybe go back to those records if you can and if you don't have access to them, your accounting team absolutely should have access to them to see what was spent maybe on average five years ago. I know I'm looking at a lot of donor information, Muihi, from five years ago because that was pre-pandemic, right? And so I feel like it's very similar, Charlina, if you look back at your travel and what you were providing at that time. The other thing I will add is I have absolutely heard many of these conferences are no longer offering a hybrid option. So I do think that that online and that hybrid option may very well be disappearing in the very near future. I don't think that, you know, there will never be another online conference. I think those will still exist. But I do think that the hybrid is probably starting to disappear and you'll see that more and more as we move forward into 2024. So good luck and hey, we hope to see you in San Diego. All right, so this one's coming from Flagstaff, Arizona and Jeffrey wants to know about an online auction. So the question is, we are kicking around an idea of doing a mid-season online auction without any event. We would run it and promote it like it was attached to an event, but it would be a standalone. There would be no tickets to access the bidding site, just registering with an email. It would run for two weeks. Any feedback on this? Yeah, I love this opportunity. It sounds like a low-cost effort. It allows you to still have a touch point with your supporters. But a few things come to mind, you know, are you gonna have people who are primed and ready to bid? Will it be engaging? Have you done this before? Just a few things to keep in mind as you maybe are changing what you've done in the past and trying something new, but it sounds really great. And hopefully the items that you have are engaging and people will be fighting over them and bidding back and forth. And it does really well for you. Yeah, and I will add, and I shared this with you before we even open our green room chatter, but my son's school does an online auction. And I've noticed that that has been very beneficial or it seems to be very beneficial. I'm not on the planning committee. I did set that boundary, right? But really looking at it from the engagement piece because the auction can go to people, you know, not just that are tied into the school, but it could go to the entire family unit, right? So extended family members, grandparents, cousins, you know, anyone really to support the school. And I have seen that, you know, really benefit. One of the things that I will say, and I laugh every time I see it, but it goes for a lot of money, is a front row parking space. And I just think that's hilarious because I know the pressure and the chaos when it comes to school traffic. And so, Jeffrey, as you think of what might be a hot commodity, like I always love experiences, you know, where can I go? What can I do? What can I experience? But also think about for your constituency base that might be immediately local, right? What are some of those opportunities that you could include in this? I agree with you, Muhy. It does not sound like a big, heavy lift, but what I do think will be, you know, a big piece of its success, Jeffrey, would be the marketing communications that goes into this to really stress and share the importance of raising these funds and what it will allow your organization to do. So there's so many online auction events that I think, you know, if you partner with them, they can also, you know, sync or integrate rather into your donor database. So I think this is a great opportunity, but what I will also add is my final point here, Jeffrey, is to track and measure its success, analyze what it does. So you can see if this is something worth adding to your annual fundraising calendar going forward, because I do think that this could be something that you might wanna continue, but you might find that it was a total flop and not something that you wanna continue. But I think it's worth, you know, checking it out. So good information. Yeah, a few additional thoughts come to mind as well, is like, are the vendors going to be donating any of the proceeds? Are they discounting the items? Are they taking care of shipping? And how would those collected who are winning? Is this something that you can maybe even try to do outside of the region of impact nationally all across the US? So a few things that could make this a lot more lucrative, but I think that running it and promoting it like it was an event makes sense, but really allowing yourself to do this as a standalone and not have the pressure of a full on gala as well is a really smart way to do a mid-year type of online event. So kudos and best of luck. Yeah, best of luck and great, great additional points there, Muhy. Thank you so much. Again, for those of you watching and listening today, I've had the great pleasure of having Muhy Kwaja joining me. I always love to say the alphabet behind his name. It's M-P-A-C-F-R-E and C-F-R-M. He serves as a trainer at the fundraising academy. And again, Fundraising Academy is with National University. Another shout out to the Cultivate Conference that is coming up June 1. I almost said January at the other J, but June 1 in San Diego. So we'll be there for that. And again, please check out the American Muslim Community Foundation that Muhy is a co-founder of and still very involved. So thank you, Muhy. It's always a pleasure. I know it's nighttime or now it's probably first thing in the morning for you where you are now, but I hope that you are having a wonderful Friday or almost Saturday. Thank you so much. Pleasure to be here and can't wait for the next one. Yeah, thank you. Well, and pleasure to have the support from our ongoing presenting sponsors, which include Fundraising Academy at National University, also Bloomerang, American Nonprofit Academy, your part-time controller, non-profit thought leader, staffing boutique, non-profit nerd and non-profit tech talk. Again, these companies, many of them, if not most of them, all of them have been with us from the very, very beginning and so very honored to have the ongoing support. Please check them out. They are here for you, as I like to say, they're here because their mission is your mission and they wanna help you do more good. And speaking of doing more good, we like to end every episode with this mantra that is extremely heartfelt and we wanna remind you, all of you, including ourselves, to please stay well so you can continue to do well. So thanks everyone and thank you, Moohi, for joining me.


Let's do a little yoga before we, uh, sun citation. Uh... You're going all the zen. I'm like, where's the whiskey? Let's get the drinks out. It's 8 AM. I have standards. I put coffee in my whiskey. Come on. I have standards. I saw a stat one time that said that more people are killed annually by donkeys than plane crashes. It looked like somebody had had a beaver that chewed on the door frame on this one. Yeah. Benjy Bollack. Benjy with a chain and like a big padlock.


The Brexit negotiations are the negotiations currently taking place between the United Kingdom and the European Union for the prospective withdrawal of the United Kingdom from the European Union, following the UK's referendum on EU membership in June 2016. The negotiating period began on March 29, 2017 when the United Kingdom served the withdrawal notice under Article 50 of the Treaty on European Union. The period for negotiation stated in Article 50 is two years from notification, unless an extension is agreed. On June 19, 2017, British Secretary of State for Exiting the European Union, David Davis, arrived in Brussels to begin negotiation of the terms of the withdrawal with the chief negotiator appointed by the European Commission, Michel Barnier. The scope of the negotiations could include the withdrawal agreement, the temporary transitional period agreement and another agreement for the post-transitional period.attribution needed. Brexit negotiation might also need to address free trade agreement treaties between the European Union and its members including the UK for one part and third countries for the other part and the tariff rate quota, which might be split or renegotiated.


has been a hot topic in software engineering over the past few years. And I think this is rightfully so. Refactoring is an immensely important tool to any developer who must add to and maintain pre-existing code. Now, there are many benefits to refactoring. And frankly, I feel like I'd be preaching to the choir if I went through all of them. But refactoring is still a change to working code. And any change to a code base already in production carries a certain amount of risk. Now, when I talk about the risk of changing software, I occasionally encounter an attitude of, yes, maybe there's some downtime. Maybe it costs us some money. But it's not life or death, right? Well, to this, I answer that software is increasingly being integrated into transportation, which includes planes and self-driving cars, energy sources. This includes nuclear power plants. And most critically, medical devices. Now, this includes pacemakers. The software on a pacemaker literally controls whether a patient's heart beats or not and whether that patient lives or dies. So with all these potentially life-threatening possibilities, it's natural to ask, is refactoring bad then? Well, to this, I'd argue that, like many things, refactoring is neither inherently good or bad. It's how you do it that matters. Now, in my time as a developer, I've encountered two common approaches to refactoring. One is to edit the code and pray or hope that it works as expected. I've heard this referred to as PDD, or prayer-driven development. And the other is cover and modify. Now, this involves using tools to both discover and verify what the code does, covering that behavior with tests, and then making changes to it. And this is from Michael C. Feathers working effectively with legacy code. Now, it probably goes without saying that cover and modify is by far my preferred method for refactoring. Hope and prayer are good for many things, but they should never, ever be used as a refactoring technique. So now that we've discussed the two common approaches to refactoring, I'd like to introduce you to my method of refactoring, which I call surgical refactoring. In surgical refactoring, we change exactly what we intend to change. And here's the key part, only what we intend to change. That means we take extensive measures to eliminate side effects of our refactoring as much as in our power. The first and most important principle of surgical refactoring is to first do no harm. That means none of our changes should break or affect the behavior of existing code. So just like any benefit of a medical surgery will be negated if it caused harm to the patient, likewise any benefit of a refactoring is negated if it breaks other parts of the code or the system that the code runs on. Now, rather than being a prescribed set-and-stone method, surgical refactoring is really a series of good habits. What all these habits have in common is that they reduce risk. Now, when I'm evaluating whether code should be refactored, I generally divide refactoring into two categories. The first is necessary refactoring. Now, this is like a medically necessary surgery. These refactoring are needed for the survival or health of our application. And the second is cosmetic refactoring, which is kind of like cosmetic surgery. Now, I want to make clear there is nothing wrong with cosmetic refactoring, but just that the risk tolerance is different. And we'll go over what risk tolerance means in just a moment. So let's talk a little bit more about what makes a refactoring a necessary refactoring. A refactoring is necessary when we need to add something to the code, but we just can't do it with the code in its current state. Additionally, refactoring is necessary when the code is too inefficient, when it's tying up too much time and resources. So I like to use the example of what I once DDOS'd myself, because a report I was trying to generate took so long and ran so many queries on the database that the server ran out of memory and the application crashed. Now, this was a prime candidate for refactoring. Finally, a refactoring is necessary when without that refactoring, we would be blocked from achieving a business need. Now, if you're refactoring code at work, there must be a business need of some kind for refactoring to be considered a necessary refactoring. This is how you justify that refactoring to project managers, business users, and anyone else who's concerned. So necessary refactoring is have a moderate to high risk tolerance. We still need to do them very carefully, but we can tolerate a higher amount of risk because the benefit of the refactoring outweighs the risk of the change. As for cosmetic refactoring, a cosmetic refactoring is when there is no business need to change the code. It's not blocking us from adding or fixing anything, but something about it just bugs us every time we see it. How many people here have experienced this? Quite a few hands went up. There's just a code smell, some sort of weird syntax. It's just something that we are desperate to fix. Now, the risk tolerance for a cosmetic refactoring is much lower. Even if something about the code bugs us, it's better to have ugly code that works than elegant code that does not work. Now, while we're on the subject of cosmetic refactoring, I want to take a moment to address white space for factoring, and this is because white space for factoring is the ultimate cosmetic refactoring. And as I'm sure many of us here in this room have experienced, it's a massive source of distraction and what I consider unnecessary conflict among team members. So the solution to this is if you do not have a style guide, get one, or adopt one. The GitHub style guide is a particularly good one. And if you come across some white space in an application that you just don't like or doesn't meet your own preferences, if it does not violate the style guide, leave it alone. So now that we've covered the difference between necessary and cosmetic refactoring, let's go over what's involved in surgical refactoring. Now, there are three stages, and these stages are the same whether it's a necessary refactoring or a cosmetic refactoring. The first stage is pre-op. This is what we do before touching the code, diagnosing the code, figuring out what it does, adding inspects to verify that behavior. I usually spend by far the most time in the pre-op phase. Next is the operation. That's when you carry out the actual refactoring. When you make those changes to the structure and style of the code. And finally, there's the recovery stage, where we take additional steps to verify the refactor. Now, I could just talk about each of these stages, but I instead like to take you through an example of surgical refactoring and discuss these stages as we go along. So let's say we're browsing through our applications code base and we come across a method that looks like this. Now, this is based on an actual example sent to me by Michael Lorenz on Twitter. Now, this is not a long method, but it's a very complex one. We have a system call, we have a substitution involving multiple regixes and more. So this is the kind of method, if I were to come across it in my code base, that would make me drop my head to my desk and moan in despair. So let's refactor this using surgical refactoring. And the first stage is pre-op. The main thing we need to do in the pre-op phase is make our diagnosis. What exactly is this code doing and how could we preserve that behavior? So let's start out by looking at this method and then mapping out what we think it does. So the first thing I notice is that this method uses Ruby's system method to execute some sort of command. And I notice that the command it executes is a said command with some flags passed to it. Next, I notice it performs a substitution of some kind, finding a pattern of text and then replacing it with a different pattern. And finally, it looks like it does this to a series of directories and files. So does that mean we know what it does now? Not quite. A map like the one we just made is helpful but is also influenced by our own experiences and expectations about the code. It's not an objective assessment. The only objective, definite and canonical way of knowing what the code does is to execute the code itself. And the best way I've found to repeatedly execute the code, and we're going to need to do that a lot in this refactoring, is through automated tests. So let's begin our refactoring by creating a spec which verifies the first thing this method does, the system call. Let's start off just by verifying the call to the system method happens. Now, even though it might seem pretty obvious from looking the code, it gives us a starting point for our tests which will execute the method. And the first thing I'm going to do when I create my test, I'm going to use our spec for this example, is to create an instance of my class that contains the method I'm refactoring. I'm also going to do this in a let statement which will allow me to use the instance of my class in multiple specs. Now let's create another let statement. This is the argument will pass to the method. Now when I don't have much context about how a method works, I like to just use a string for a sample argument. This way if the test fails, the failure message will probably give me a good clue as to what kind of argument the method expects. Then I'll create my spec, verifying that it calls the system method of Ruby. And to do that, I'm going to add in an expect statement saying that I expect the instance of my class to receive a call to system. And I'm going to expect it to happen with any arguments at all. At this point, I don't really care what's passed to the system call. I just want to verify that it happens as I expect it to. Then we need to actually call the method from the spec. Then we'll run the spec and the spec passes. So we're done, right? Not quite. Since the test passed first, I don't know for certain that it actually executed the code I expected it to. This could easily be a false positive. Now if we were writing this code from scratch, we would write a failing test first, then write just enough code to make it pass, and then refactor, the red-green refactor method. However, when I'm adding test to code that already exists, sometimes the test passed first, and then I use a green-red-green method. That means I add in the test first, and when it passes, I make sure the test fails by changing the code itself. So to do this, I'm going to remove that system call, then rerun the spec, and this time the spec fails. So now we can be confident that the test is a reliable indicator of whether the code is working or not. So now that it's failed, let's put that system call back in and run the test again, and this time it passes. All right, so we know the call to the system method happens, but now it's time to figure out what the system call is expected to return. And to do this, I had to look it up in the Ruby docs. The system method returns true when it executes the command passed to it successfully. So it will return true when that call to the said command returns true, or when the said command executes successfully. So let's create a spec for this. First, I'll set up my spec, expecting that when the method call is successful, it returns true, and then I'll expect that when I call the method on the instance of the class and pass in that sample argument, it will return true. And when I do this, the spec fails the first time. So here's where I take a look at the error message returned from the spec failure for clues as to why that spec failed. And it looks like it returned an error from the said command, no such file or directory. So let's take a close look at that error message. It seems like it's expecting a directory or subdirectory in a .rb file within that subdirectory. So let's set this up in the spec. First, I'll create names for the directory, subdirectory, and file. Again, I'm putting these into let statement so I can use them in multiple specs. And then in the before block of the specs, I'll create that directory in subdirectory, and then I'm going to create the path for that file. This is where the file will be created in my system. And finally, I'll create, write to, and close the file itself. Now, before anyone panics, yes, this is creating an actual object on our system, and yes, this is a code smell. Fear not, we will come back to it. Our primary objective right now is just to get these specs around the method running and verified, then we'll come back and optimize them. So when I run this spec again, the spec passes. So now we know we're passing the directory and file structure it expects and getting the expected value in return. So we've just added a whole lot of setup codes that last test, and it wouldn't be hard for that logic to quickly become tangled. So let's take all that setup code we just created and move it into its own method. This way it's more maintainable and we can use it in other specs as well. So this method will take a path and a file name, then make the directories associated with that path, then create, write to, and close the file itself, which we'll now be ready to use in our spec. So back in that spec we were just working on, I call this new setup method in the before block and pass it the path to that directory and subdirectory and then the name of the file we are creating. Then I run the spec just to make sure it still works and the spec still passes. All right, I promised I would come back to this. Since we're creating actual directories and files, let's clean them up after the spec runs. After the spec runs, let's remove the directory and everything in it, including the subdirectory and the file. So if I run the spec again and the spec still passes. Now if I were to look at the directory I'm running these specs from, I would not see any additional directories or files added to it after the spec run. So let's pause for a moment and look back at the original method. Now we're making good progress. We know that if it calls the system method, we know that we need to, what we need to pass that method for the said command to be successful. Now let's take a closer look at the said command itself. Now said is a streaming text editor. That means it is somehow changing the file or files within that directory structure. We passed that method. And it looks like that substitute command is the core of what the said command is doing to that file or the files within that directory structure. So let's zoom in a little closer. Here it is. Now what the substitute command appears to be doing is to find a match for this first pattern, this first regular expression and then replace it with this second pattern. So we have not one, but two regexes here that we need to figure out what they do. Now whenever I'm dealing with a refactoring that involves a regex, and by the way, if you can refactor a regex without breaking it, you can refactor anything. I like to first extract the regex into its own method, character by character, so I can get a better idea of what it does without all the clutter of the original method. So let's add in a new method and call it the first regex match method. And what this first regex match method is going to do is attempt to find a match in the string that is passed to it using the regular expression on the left. Now right now that's just an empty regex. This is using Ruby's match method for regular expressions and strings. So first I'm going to set up my spec. Now when I'm adding specs around a regex, I like to paste the original regex in a comment in the spec for me to refer to as I decrypt it. Then I'm going to create a string in a let variable. This is what I will pass to this new first regex match method. For now it's just an empty string. Then I set up the spec itself, verifying that the method we call finds a match within the string. And I'm going to expect that when I call this new method and pass it that string, it will not return nil. Now remember, we're using Ruby's match method. This method returns nil if it does not find a match for the regex within the string that is passed to it. So that means if the result is not nil when we call this method in our spec, it means it will have found a match. So focusing on that reference regex, it looks like the first character in that regex is a colon. So I'm going to add that to the string we are passing the method and rerun the spec and the spec fails. All right, it's easy enough to make this pass. Let's add in that colon to the first regex match method. Remember, we're just copying this regex character by character from our original method and verifying as we go along. Now we are technically creating new code here, even though we're copying and pasting. So our tests need to fail first. Then we need to write just enough code to make them pass. And the spec passes. So who's off? Now let's move on to the next character in that regex. The next character I notice in that regex is the Alnum character class. Now this is an older regex syntax, but it matches any capital letter, any lowercase letter, or any digit. Now I might start itching immediately to replace that older character class with a more modern syntax like the slash W meta character. But remember, we're verifying the behavior first before we change anything. So let's add in a letter to that test string, then run the spec again, and the spec fails. All right, we know how to make this pass. Let's add that Alnum character class to the first regex match method and rerun the spec. And this time the spec passes. So the next thing I wanna focus on is that plus sign in the regular expression. This plus sign is a quantifier. When it appears after a character or character class, it means it will find a match for if that character appears one or more times. So let's add in another letter to the test string, just to make that character appear one or more times, and run the spec, and the spec passes. But wait a minute. We were expecting the test to fail first. So let's investigate why it passed the first time. The regex in the state that it is in right now will return a match for any string with a colon and a single letter or number. So if we pass this our string with a colon and two letters or numbers, it will return a successful match after finding the colon and only one letter or number. So rather than just verifying that a successful match happens, we need to make sure that it matches the entire constant of the string that we expect it to. So let's alter the spec. Rather than just expecting that a match will happen, let's test the constant of the match itself. So when we call the 2s method on a Ruby match data object, match data is the type of object that is returned when using Ruby's match method, it will return the entire text match from the string. So we're going to expect that it will match the colon in both letters, not just the colon in the first letter. So let's run the spec and the spec fails. All right, let's make it pass. Back in that first regex match method, we add in the plus sign after the album character class and run the spec again. And this time the spec passes. All right, next step is to focus on those parentheses around the album character class and the plus sign. Now this is known as a capture group, which means it will capture whatever part of the string matches that part of the regex and save it in the computer's memory for us to use later. This time I'm going to test that the match return by the first regex match method contains a capture group. And to understand how to do that, we have to remember that when a match data object is returned by Ruby, it will include any capture groups within the object. Now we access the first capture group by calling a one in brackets on that match data object. Yes, the first capture group is accessed by using one in brackets, not zero in brackets like an array, but that is a topic for another presentation. And the spec fails. So let's go ahead and make it pass. Now as I mentioned earlier, we're technically creating new test-driven code here, even though we're copying it character by character from another method. So after I get a failing test, I want to add in just enough code to make that test pass. So in this case, I'm going to add in an empty capture group for the moment and rerun the spec, and this time the spec passes. Now let's get more specific about that capture group. Rather than just testing that it exists, let's test the actual content. So using that reference regex, it looks like the capture group should contain the match for the ALNOM character class appearing one or more times. Now if we look at the test string we are passing, that should be the letters A and B. So let's test it that first capture group contains the content we expect it to, and the spec fails. All right, so we are not getting that content in the capture group that we expect. So let's move those parentheses around the correct portion of the regex, that ALNOM character class appearing one or more times. And let's rerun the spec, and this time the spec passes. All right, now I would love to take you through adding each additional character of this regex, that space character class in that hash rocket, but for the sake of time, let's fast forward. Let's say that we've added each of these remaining characters of the regex to our new method, making sure we had a failing spec first, and then making the spec pass. So at this point we know what this first regex does, and we even have a sample string which we know will match it. So rather than continuing to test this regular expression in a separate method, let's add in a test for its behavior to the spec exercising the larger original method we are refactoring. And we do that by writing that sample string, something we know the regex will match, to the file we passed the original method in that before block. Then we capture the original content of that file we just wrote to. And let's capture a variable. Let's call that variable original contents. Then we call the method and pass it the directory which contains the subdirectory, which contains the file to the method we are refactoring. Then we're going to capture the new contents of that file after we run the method on it. So let's assign that to the variable new contents. Finally, we'll compare the original contents of the file to the new contents of the file. We're going to expect that the original content should not equal the new contents. The file should have changed when the method ran on it. And the spec passes. Now normally, I would go back into the code and modify it to make sure the spec fails. In the real world, we absolutely should do that. But for the sake of time, let's move on. All right, let's take a pause and stay with me here. We're almost through this and I will get you to your coffee as soon as possible. Now we know this method takes a directory which contains a subdirectory with at least one .rb file. And we know the pattern it is looking for in that file, but we don't know what it does with the match for that pattern after it finds it. So let's zoom in on that substitute command again. And we now know what this first pattern matches, so let's take a look at the second pattern with that substitute command we'll replace the match for the first pattern with. And here it is in focus. So let's go through what this does and then devise a test for it. So this first slash is an escape. Now in a regular expression, some characters have special meaning. If we want to use these characters without using the special meaning, we need to escape them with the slash. And next is the second slash. That's what we escape with the first slash. That second slash and that one mean we are reusing the content of the first capture group. So remember how a capture group in the first pattern captures a certain portion of the string? This second pattern will return the match of the first pattern with whatever it captures in that first capture group. Then we will add a colon after it inserts that first capture group into the file. So let's take a look at an example of this, make it a little clearer. Here's the larger substitute command. Now if we were to find this string, which we know matches the first pattern, it will replace it with this string, the result of the capture group and colon. So at this point, it's probably becoming clearer what this method actually does. It finds any part of the file that uses the old Ruby hash syntax and replaces it with the new hash syntax that came with Ruby 1.9. So let's alter our spec. Let's say we write this original string to the file before running the method, then after we run the method on that file, let's define what we expect the new string to be, what the old string should be changed to. So the new contents of the file after the method has been run should not contain the original string, but should contain the new string. The contents of that file should change. So now let's run the spec and the spec passes. Now again, we would normally go back to the code and make sure the spec fails since we're adding the spec to existing code, but for the sake of the running time of this presentation, let's go ahead and move on. So the next step would be to add in tests for these flags. Now unfortunately, I don't quite have the time to show these step by step. However, when I post the slides of this presentation, I will include the slides which detail how to figure out what these flags do and add in spec coverage for each of them. These are essential parts of the method to bring under test before we make changes to it. So if at any point you'd like me to walk you through this, just grab me sometime at the conference and I'd be happy to take you through it. So for now, let's fast forward. Let's say we've added in these specs and verify that they pass and fail and we expect them to. And at this point, we would have successfully verified every or nearly every piece of behavior in this method. Now we know what it does now. We have it documented. We have tests in place to verify its behavior. Now we can actually make our changes. And by the way, everything we just did was part of the pre-op stage. So let's move on to the actual operation. This is where we make those changes to the code. So let's look back at the code and decide where to start. First of all, when I saw this, I started itching to move the Substitute command to its own method to make things a little less intimidating and confusing at first glance. So let's go ahead and move it into its own private method. And then let's call this private method from our original method and run the specs to make sure the behavior did not change. And the specs pass. So we have successfully made a change to our code without altering its behavior. Now next, I'm really not big on that old regex syntax in the Substitute command. It's really old. I had to look it up to understand it. And I think a more modern syntax would be clearer. So I'm gonna replace the ALNUM character class with a slash W in the space with a slash S, the newer regular expression syntax. So that looks better to me. Now let's rerun the specs and this time they fail. We broke something. The reason is that although Ruby's regular expression can handle meta characters like slash W and slash S, SED uses a much older regular expression engine. This Substitute command is being executed by SED, not by Ruby itself. Now it turns out SED cannot use enhanced regular expressions the way most modern engines can. Meta characters like slash W and slash S are considered enhanced regular expressions. As if regular expressions weren't confusing enough, there are varying types of them. So fortunately, since my specs failed, I know that those characters do not work. So let's go ahead and change these back and this time the specs pass. So taking all that time, adding in the specs kept me from breaking the code. And although there are more changes I'd like to make, such as making the name of the class and the method much more helpful, for now let's move on to the third stage of surgical refactoring. And this is recovery. This is what we do after the refactoring. So after refactoring, there are two things we must know decisively before we deploy this code to production. First, does the code still behave the same after the changes? And second, is it connected correctly? Now this means we need to dive into all the parts of our application and anything outside our application that might use this code. Now I unfortunately do not have the time right now to go into this more in depth but is an essential part of lowering the risk of a refactoring. And now what about QA? If our workplace has a separate QA department, isn't it their job to make sure our refactoring works? It's always good to send any code to QA before you deploy it. But remember that ideally QA should find nothing. Now that doesn't mean they won't. Often there are bugs that we as developers just can't anticipate. But that doesn't mean we should allow any slack in our tests. Surgical refactoring is about doing everything in our power to avoid bugs sneaking into a refactoring. The better we do our job, avoiding all the bugs we can control, the better QA can do its job to find the bugs we cannot control. Now even after rigorous testing and even after thorough QA, sometimes something still goes wrong when a refactoring is deployed to the production environment. Now if this happens, the first step is to take responsibility. As developers, what our code does in production is our responsibility. Not QAs, not test users, and certainly not the ops team. The ultimate responsibility for what code does in production belongs to the developer who wrote the code. Next, evaluate the risk of another change. It's not always the best thing to immediately roll the refactoring back, particularly when it's been sometimes since the refactoring was deployed and other features that might depend on that refactoring have already gone out. Now it might seem like a quick bug fix will fix the problem, and it very well might, but a change to a change is still a change and the risk must be evaluated. Finally, it's our responsibility to fix the problem. Again, not our teammates, not the ops team, it's our problem if it came from our code. If we can't fix it, and I have personally found myself in this situation, it is our personal and professional duty to find out someone who can and make sure the fix gets done. And with that, I'm Nell Schemeral Harrington. I'm a software development engineer at Chef. Here's how to find me on the internet, and that's it for me. Thank you very much.


Please welcome to the stage Sarah Taylor, Washington District Director of the United States Citizenship and Immigration Services. David Ferriero, Archivist of the United States. Ken Cuccinelli, Acting Director of the United States Citizenship and Immigration Services. United States Secretary of Transportation Elaine L. Chow. Ladies and gentlemen, the Vice President of the United States and the Second Lady of the United States, Mrs. Karen Pence. First and foremost, congratulations to our 50 candidates for citizenship. Today we're here to celebrate your new citizenship, which happens to be on another very special day, Independence Day. And it's a great honor for us to have the Vice President of the United States, Mike Pence, here with us today to celebrate your American citizenship. Thank you to Secretary Elaine Chow and Acting Director Ken Cuccinelli for joining us also. We have with us Senator James Langford and Congressman Mark Meadows and his wife Debbie, Congressman Mike Turner and his daughter Carolyn. So welcome to all of you. The National Archives is proud to host this naturalization ceremony with the Vice President, the Office of the Vice President and the United States Citizenship and Immigration Services. There's no better place to become an American citizen than here in this room. Behind me, the Constitution, which remains the basis on which our federal government is structured. The preamble contains three important words, we, the people. That brief phrase is the essence of our democracy. The Constitution gives the power to the people. To my left is the Bill of Rights, the first ten amendments to the Constitution.  And to my right is the Declaration of Independence, the parchment that our founding fathers signed in 1776 in Philadelphia. Setting us free from England. 243 years ago today, Congress approved the final text of the Declaration. It took courage for them to sign it. They risked their lives, their families' lives and all they owned. And we have them to thank for the freedoms we enjoy today. These three documents, these charters of freedom, make up our foundation as U.S. citizens. I am the grandson of Italian immigrants and great-grandson of Irish immigrants. Using passenger lists here at the National Archives, I discovered that my grandfather, Paolo Ferriero, at age 15, arrived from Boston from Naples aboard the ship Commonwealth on March 22, 1903. My grandmother, Antonia Giorgio, also from Naples, arrived on March 8, 1909 aboard the Romantic. My great-grandfather, David Buckley, arrived in Boston from County Cork in 1883. He petitioned to become a U.S. citizen in 1892 in Salem, Massachusetts. Many Americans have stories like mine, and now you, our newly naturalized citizens, will have your own journey to share. We have over 15 billion pages of records here at the National Archives. Becoming American citizens makes you part of the National Archives. Your naturalization records will be a part of our holdings, and someday your descendants will search our records to discover your history. Right after this ceremony ends, our annual Fourth of July celebration begins outside, and I invite you to join us for our spirited reading of the Declaration of Independence. Afterwards, the National Independence Day Parade will start in front of our Constitution Avenue steps at 1145, and feel free to stay all day for lots of hands-on activities for all ages, not to mention the air conditioning. On July 4, we enjoy hot dogs and cookouts. Many enjoy a day off, but tonight and for every American Fourth to come, when you watch the fireworks, I hope that you will remember our founding fathers who were willing to fight for our country and for our freedom. I encourage you as new citizens to be active in government, to vote, and to continue to fight for freedom. And now I'd like to welcome Sarah Taylor, USCIS Washington District Director. Good morning. To officially begin today's naturalization ceremony, I would like everyone to please stand for the singing of the national anthem. Jürgen Poth was born in Heidelberg, Germany. When he was eight months old, he was adopted from a Catholic orphanage by an American military couple. They named him Roger McGee. Later, at the age of five, with other children from around the world, he became a United States citizen in a citizenship ceremony in Mobile, Alabama. Roger loves his German heritage, but is extremely grateful for his country, the United States of America, for growing up in Alabama and for living in Alexandria for the past 25 years. Please welcome Mr. McGee. Oh, say can you see by the dawn's early light What so proudly we hailed at the twilight's glass gleaming Whose broad stripes and bright stars through the perilous fight O'er the ramparts we watched were so gallantly streaming And the rockets red glare, the bombs bursting in air Gave that our flag was still. Oh, say does that star-spangled banner Mr. Ken Cuccinelli, Acting Director of U.S. Citizenship and Immigration Services, for him to administer the oath of allegiance. Mr. Cuccinelli was named Acting Director of U.S. Citizenship and Immigration Services June 10, 2019. He served as Virginia's Attorney General from 2010 to 2014. He also served in the Senate of the State of Virginia from 2002 to 2010. Candidates for naturalization, when you hear your country of current nationality call, please stand and remain standing. Afghanistan, Argentina, Bangladesh, Bolivia, Canada, China, Costa Rica, Ecuador, Egypt, El Salvador, Ethiopia, Ghana, Grenada, Guinea, Honduras, India, Iraq, Latvia, Mexico, Morocco, Nepal, Pakistan, Peru, Sierra Leone, South Korea, and Vietnam. Mr. Cuccinelli, I present to you 44 candidates representing 26 countries who have applied to become citizens of the United States. Each of the candidates has been interviewed by an officer of USCIS, and unless exempted by the law, has demonstrated the ability to read, write, and speak words in the English language. Each has demonstrated his or her knowledge and understanding of the history and principles and form of government of the United States. Mr. Cuccinelli, I recommend that these candidates be administered the oath of allegiance, thereby admitting them to United States citizenship. Thank you, Sarah. Ladies and gentlemen, as the Acting Director of U.S. Citizenship and Immigration Services, it is my privilege, and it is a privilege to administer the oath of allegiance to the candidates for naturalization assembled here today. Candidates for naturalization, please raise your right hand and repeat after me. I hereby declare on oath that I absolutely and entirely renounce and abjure all allegiance and fidelity to any foreign prince, potentate, state or sovereignty of whom or which I have here to forebend a subject or citizen that I will support and defend the Constitution and laws of the United States of America against all enemies, foreign and domestic, that I will bear true faith and allegiance to the same, that I will bear arms on behalf of the United States when required by the law, that I will perform noncombatant service in the armed forces of the United States when required by the law, that I will perform work of national importance under civilian direction when required by the law, and that I take this obligation freely without any mental reservation or purpose of evasion. So help me God. Congratulations, you are America's newest citizen. I would ask everyone to please remain standing, and as your first official act as American citizens, I invite you all to join me in the saying of the Pledge of Allegiance as we face the flag behind me. So please stand and face the flag with your hand over your heart. I pledge allegiance to the flag of the United States of America and to the Republic for which it stands, one nation under God, indivisible, with liberty and justice for all. Please take your seats. First of all, on behalf of the men and women of the U.S. Citizenship and Immigration Services, it is my honor to be the first person to address you all as my fellow Americans. It is a distinct privilege for me to join you and take part in such an important milestone in your lives. I'm proud to welcome you as America's newest citizens, as individuals who've made a commitment to this greatest of nations, and I'm confident you will dedicate yourself to exercising your new rights and fully meeting your responsibilities as U.S. citizens, all while making positive contributions to the communities in which you live and your new nation. Congratulations again and thank you. It's now my privilege to introduce the Secretary of Transportation, Elaine Chao. Secretary Chao once sat where you sit, only a couple of years ago when she was 19 years old, and she looks exactly the same as she did on that day. Secretary Chao served as the 24th U.S. Secretary of Labor from 2001 to 2009, giving her the distinction of being the first Asian-American woman to be appointed to the President's Cabinet in our history, and you will note those years are not the current years. That was only her first time in a President's Cabinet. On January 31st of 2017, she was confirmed by the U.S. Senate as the 18th U.S. Secretary of Transportation, the position she still holds today, her second Cabinet position. And as I said, like you, Secretary Chao is a naturalized citizen, and I particularly appreciate on behalf of USCIS that Secretary Chao has repeatedly participated in these ceremonies, and she is such a special person in terms of government official who can come and speak to where you all are today. She arrived in America at the age of eight, speaking no English, and received her citizenship, as I said, at the age of 19, and her experience transitioning to a new country has motivated her to dedicate most of her professional life to ensuring that everyone has the opportunity to build better lives, especially here in America. In 2008, USCIS recognized Secretary Chao as an outstanding American by choice, an initiative at our agency that honors the outstanding achievements and commitments of naturalized U.S. citizens. She received this recognition thanks to her dedication to public service and her continual efforts to promote and protect the health and competitiveness of our nation's workforce and to ensure that people have the opportunity to achieve financial independence. Secretary Chao, it is a genuine honor to have you here with us today, and the podium is yours. Thank you, Ken. And also, I want to once again thank Senator Langford, Congressman Metals, Congressman Turner, for being here on this very special day. And to our new citizens, wow! You're so lucky to have the ceremony at the National Archives, home of the founding documents of the United States, on America's Independence Day, and presided over by the Vice President of the United States. Wow! This is an extraordinarily emotional day, and I got quite teary sitting over there listening to all this, because to our new citizens, your journey is the American journey, and it's shared by so many. And I hope you'll let me share a little bit of my journey, because as you can see, I'm an American of Chinese heritage. My parents are born in China, and at the height of the Civil War, they immigrated to Taiwan. My father became one of the youngest sea captains at the age of 29, but life was really difficult, and he was often away for months at a time. So to seek a better life, he took the national examinations, scored number one, and broke all the records. This gave him the opportunity to go to America to study. My mother was then seven months pregnant with their third child. They didn't know how long it would be before they would be reunited, but my mother was so brave, and she encouraged him to seek a better life for all of us. We were separated for three long years. When my father was finally able to send for us, the only passage he could afford was on a cargo ship. Our initial years in America, I don't have to tell you, was very difficult. We didn't speak English, couldn't eat the food. We didn't have family or friends nearby. Somebody understood that. My father worked three jobs to make ends meet, and I remember my first year as a third grader at school. Every year I would sit in the classroom, every day I would sit in the classroom, not understanding a word of English, and I would copy everything on the blackboard onto my little notebook. And every night, after a long day of work, my father would come home, sit with me at midnight, and translate that day's lesson, and that's how I learned English. But throughout those challenging years, my parents never lost faith that America was a land of hope and opportunity, and that our futures would someday be bright. I can still remember to this day when I received my citizenship, and that's why I'm emotional here as well. But as I mentioned, your story, my story, and so many others, the arc of this story, are part of the American experience. And I know you've worked so hard. You've sacrificed so much to enable your families to have better futures. And I am here to affirm to you that your sacrifices are worth it. This country is a great country, and it will offer tremendous opportunities and freedom to you and your loved ones. Your family will have wonderful futures in this country. So congratulations on becoming an American citizen. I told you I'm a little teary, but now it is my great honor to introduce our keynote speaker, the Vice President of the United States, Mike Pence. He is a leader of great integrity, integrity, and integrity, faith, compassion and decency. And he and his beautiful wife, the second lady, Karen Pence, have devoted their lives to serving others. We are all so lucky to have them here with us today, so please join me in giving a warm welcome to the Vice-President of United States, Mike Pence. Thank you for those gracious words, but for your inspiring personal story and for sharing this moment with us today. To Senator Langford, to Congressman Turner, to Congressman Meadows, to our Acting Director Kuchinelli, to Archivist David Ferriero, the members of the National Archives Board. It is deeply humbling. For Karen and me to be with you today, here in this place, on the hallowed ground of our National Archives, to celebrate the 4th of July with 44 new Americans. Congratulations to you all. It is amazing to be standing here today before all of you. And to be able to extend the welcome of the American people to your new place in this nation as citizens. And it's remarkable to think of the journey you've traveled on. You come from 26 different countries. We heard them called in the role that Bolivia and Morocco, Vietnam, and Mexico and Afghanistan.  There's an electrician among you, a banker. There's a college counselor, an IT engineer, and even an Uber driver. But all of you aspired to be Americans. You stepped forward. You followed the law. You went through the process to immigrate into this great nation. And as of today, the men and women gathered before me today who just raised their right hand have now joined the ranks of the freest and most prosperous nation in the history of the world. But the 44 of you and your families are hardly alone. Last year, more than three-quarters of a million people raised their right hand and swore the very same oath that you just took. Your example and theirs gives evidence that then as now and throughout our nation's history, America has the most generous system of legal immigration in the history of the world. And we are proud to have you join our ranks. Now, as fellow Americans, you'll be a part of many debates in the life of this nation, including debates over immigration in America. And we all know that our current system of immigration faces real challenges. But to those of you who stepped forward today, who made the sacrifices and went through the process, let me say on behalf of President Donald Trump and on behalf of the American people, welcome to the American family. But like those who've spoken before, it is humbling to stand before you, but it's almost indescribable for this American to be flanked by these extraordinary documents. Because here, we are surrounded by the three great founding documents of this great nation, the Declaration of Independence, the Constitution of the United States and the Bill of Rights, that very Constitution that you just swore an oath to uphold and defend is behind me, as we speak. And it was forged in the fires of the American founding. It is remarkable to think of the courage and the tenacity of those who crafted these documents. And on a day like today, as we look at their images on the walls above us, I think it's important that we remember their story. When we study history, we often forget that those who were living, it didn't know what was on the next page. And they risked all. The signers of the Declaration of Independence, 56 delegates to the Continental Congress, that adopted that Declaration of Independence 243 years ago today, pledged their lives, their fortunes, and their sacred honor. And it was not just words. It's remarkable to think that when those 56 delegates signed that Declaration of Independence, the largest city in America then had a population of 40,000 people. And that was the city of Philadelphia. And at the very moment that those delegates were asked to sign their names to that document, an armada of British soldiers, 32,000 in strength, was sailing into New York Harbor with one order, and that was to put down the rebellion in the American colonies. In fact, history records that anyone who was to sign a Declaration of Independence by order of the king was to be hanged by the neck until they were dead. They risked all for us and for you to be able to have this moment. By the end of the Revolutionary War of the 56 who signed the Declaration of Independence, five were captured by the British Army during war. Many lost family members, and many were left destitute and impoverished, even though they came from some of the most prosperous families in the colonies before the war. I mean, the very idea that the Continental Army, which was led by a man who had never commanded more than 2,000 troops, would be able to defeat the army of the most powerful empire on the planet, was unthinkable. In fact, when the British did finally surrender to George Washington at Yorktown after six long years of war, all the military band could think to play was a song entitled The World Turned Upside Down, for surely it was. In the early years, they forged freedom first with an Articles of Confederation and then with this extraordinary constitution in Bill of Rights. There's that famous story at the close of the Constitutional Convention when Benjamin Franklin was walking out of Independence Hall in Philadelphia. A woman approached him and asked these words, "'Well, Doctor, what have we got? "'A Republic or a Monarchy?' And Benjamin Franklin replied, "'Echoing into history a Republican, Madam, "'if you can keep it.' And so we have the adoption of the Bill of Rights and in all of the many years since we've kept it. And now it's yours. You're inheriting a legacy purchased at a high price. Men and women through the generations have risked all, have laid down their lives to ensure the continued success and vitality. The document or the government forged in these documents. And now in those stirring words of the oath you took, now it's also yours to support and uphold and defend if necessary. It's a remarkable thing. So the new Americans gathered here. I submit that as you continue to study the history of your new home, you will learn that over more than two centuries that in the American experiment, freedom is not for the faint of heart. It requires vigilance, sacrifice, sacrifice on behalf of citizens to maintain it. And as you yourselves have demonstrated even up to this moment, as we cherish our freedom, our freedom continues to inspire the world.  Well, you've heard stories from this podium about immigrant families, from the nation's archivist and from the secretary, but I'll tell you one more story. It was on April 11th, 1923 that an Irish immigrant named Richard Michael Colley stepped off the boat onto Ellis Island in New York City. He immigrated to this country. He became an American citizen. He took the train to New York City. He drove a bus for 40 years and raised a wonderful family. The story of his family was a story of, as a legend that his mother walked him across the street from their modest home in Ireland and walked him up the hill and pointed in the direction of the Ox Mountains into the west and said, you have to go to America because there's a future there for you. Well, I stand before you today as that future. That man was my grandfather and I'm his namesake. He raised a precocious red head up there in Chicago and she married a fast-talking salesman who built a gas station business down in a small town in Indiana. And that's where I and my three brothers and two sisters showed up. On the day that I raised my right hand just a few years ago and took part of the oath you just took to serve in the role in which I'm privileged to serve right now, I had many things in my heart in mind that day. But my mind kept going back to my grandfather, to his courage to be able to leave everything behind, everything he knew, family and hearth and home and come here because it was a future, because he believed in the American dream. And I was up on that platform just down the street by the Capitol building in January of 2017, thinking that Richard Michael Cawley and his courage is the only reason that Michael Richard Pence became the 48th Vice President of the United States. I share that with you just to encourage you because we all know the sacrifices that you've made, not just to become citizens, but to join us and we commend you for it. But now as your Vice President and as a fellow American, let me at least leave you with this charge. You have become citizens in the freest and most prosperous nation in the history of the world. But as the good book says, to whom much is given, much will be required. So be prepared to exercise your prerogatives as free men and women as citizens of the United States of America in a way that will benefit your family, your community, your state and your nation throughout your life.  Raise a great family. Build a business. Be a good neighbor. Be a teacher. Be a public servant. Put on the uniform of law enforcement. Volunteer in a local service club. Be a school teacher. Or even serve in elective office. Live out your commitment to this country by creating more opportunity for your family and your fellow citizens. Live out the oath that you took today. By contributing to the life of this nation and use your newfound citizenship for good, for your good and for the good of the United States of America. In so doing, I promise you, you will have paid back all that's been bequeathed to you if you live a great American life. You've made a remarkable journey to arrive at this moment. And I know that you and your love funds will forever cherish this day. So will we. Today, with this solemn and sacred oath taken on these hallowed grounds, you've sworn to exercise and uphold the rights and responsibilities of citizenship. You've inherited a legacy of liberty that generations of Americans have paid for with their lives. And this legacy is now yours. Serve it well. And remember, finally, dream big. There are no dreams too big in the land of the free and the home of the brave. And you are now citizens of that great nation. So live your dreams. For the sake of yourselves, your families, your children, and your children's children. Go prosper, because in America, the sky's the limit. So once again, allow me and my wife to offer our heartfelt congratulations and welcome to 44 new American citizens.  At this time, we are going to distribute to our new American citizens the paperwork. That your certificate of naturalization. And I'd invite the Vice President and Secretary Chow up front here to greet each of our newest citizens one at a time, as Mr. Taylor calls their names. And I will hand each of you your certificate. Achtron, Fatima Murad. Asagadesh, Alamayu, Jiru. Klee, Reza, Kadami. Enrique, Aranal, Fernandez. Saiku, Amadu, Diallo. Dayak, Binad, Gimre. Yewubanesh, Temescan, Adeba. Jose, Antelon, Herrera. Alejandro, Rosales, Zamora. Pedro, Alfredo, Rejas, Duran. Varun, Shaitakumar, Patel. Nabi, Bagesh. Jong-Chun, Yunei. Mohamed, Masad, Alom. Julia, Paide, Alvarado, Chavez. Forzin, Rizwan, Choudhury. Edmund, Michael, Carpenter. Jo, Jose, Viquez, Venegas. Donia, Syed, Salim, Syed. Trang, Khan, Tran. Janita, Janek, Patel. Hannah, Glenda, Frederick. Catherine, Ya, Asantewa, Larte. Tai, Fouk, Pham. Mirella, Stephanie, Saldana, Moreno. Shailaja, Kanal. Rajila, Zaman. Vinci, Biji, George. Jaisu, Yong, Shouaf. Anise, Belgian, Lovelace. Mustafa, Loe, Kasim. Martin, Davila, Leon. Mirian, Gabriela, Pagano. Mani, Ashelal, La Madado, Dado. Tanzima, Katun. Mario, Renee, Valle. Fatima, Zora, Benadada. Yusuf, Khan. Hyojin, Kim. Chaohong, Lu. Milton, Enrique, Ibarra. Gajendra, Singh, Saud. Mula, Mebet, Gatachu, Aiju. Jason, John, Fair. Let's have a round of applause for America's newest citizens. Please have a seat until the new citizens come back into the rotunda.