Coding 101 50 (Transcript)
Father Robert Ballecer: On this episode of Coding 101, we’re getting back into PHP its time to do image manipulation.
Netcasts you love, from people you trust. This is TWIT! Bandwidth for Coding 101 Is provided by CacheFly, at cachefly.com. This episode of Coding 101 is brought to you by Lynda.com. Lynda.com is an easy and affordable way to help you learn. Instantly stream thousands of courses created by experts on business, software, web development, graphic design, and more. For a free trail, visit Lynda.com/c101. Lynda.com/c101. And by HipChat plus. Collaborate, save time, and be more productive with your teams. HipChat plus is IM, video chat, plus file code and screen sharing all in one place. Invite your team members and get a free 30 day trial of HipChat plus at hipchat.com/c101.
Fr. Robert: Welcome to Coding 101. It’s the TWIT show where we let you into the wonderful world of the code monkey. I’m Father Robert Ballecer, the digital Jesuit, and I’m joined by our code warrior, he was here last week, Mister Patrick Delahanty. He is the master of all things PHP. Patrick, thank you very much for coming back onto the show.
Patrick Delahanty: My pleasure.
Fr. Robert: Now, last week, we gave people some basic PHP, it was a loop.
Patrick: Its stuff they’ve seen in the other languages we’ve covered here.
Fr. Robert: Which is what you want, you want to lay the foundation and then layer on it. So we layered on C Sharp and we layered on Perl, and now we’re layering on PHP.
Patrick: Yeah, we’re going to skip a few layers and get to coding 302.
Fr. Robert: As always, as we get closer to the end of the module, and this was only a 2 episode module, we want to give you something that’s a bit challenging so this week, what are they going to be doing?
Patrick: We’re going to modify an image, we’re going to take an image off the internet and add some text to it.
Fr. Robert: Yeah, it’s going to be cool. Actually, I’ve seen the demo already and me likely. But before we get to that, let’s go ahead and talk about some of the little tidbits that have been going around the programming world. This one actually gets me excited. Have you heard of Ur Web?
Patrick: No, I haven’t.
Fr. Robert: It’s a brand new programming language that’s designed to take away some of the angst that you get if you’re a web developer. Specifically if you’re a web developer. Now, you know this because you help keep the TWIT site running, some of the issues that you’re going to have if you’re designing a website today is that a programmer is going to have to juggle multiple services, languages, modules. It’s not like designing HTML 1.0 where you wrote a bunch of hypertext markup and that was it. For example, when you program here what do you have to include?
Patrick: All sorts of other bits of code that I’ve included and certain libraries, and there’s a lot of stuff.
Patrick: And then one of them doesn’t update and everything fails.
Fr. Robert: And we’ve actually seen that here on TWIT TV. What was the last one that messed up the website?
Patrick: I think it was the API for the Google calendar.
Fr. Robert: Yeah. Which doesn’t sound like it should be able to break anything, but when you’ve got all these modules that are independent on one another, and when the programmer is really the only one who knows how they interact, it happens way too often. Far more than it probably should. Now Patrick, what if I told you there was a way you could program, with one interface, one language, and all of those things would be taken care of?
Patrick: I’m skeptical.
Patrick: So it does all the configuration for you, and saves you from having to search for conflicts.
Fr. Robert: Right. And it does it two different ways. The first one is it uses very strongly typed variables. We’ve talked about some of this in some of the past episodes of Coding 101, where you go from a language that may have very strongly typed. So this variable is only integers, this one is only characters. This is only floating points. That strongly typed, and then you have dynamic where basically data can flow back and forth. It uses strongly typed variables which means that you’re not going to have to worry about data being misused- and it also uses variable scoping to make sure that you’re not going to run into overflow problems.
Patrick: I said I’m skeptical, what’s the catch?
Fr. Robert: The catch is that no one really knows if this works yet. It’s like every other unified language that has been promised. On paper it sounds great. Theoretically, it could work. But I actually want to see. I mean, it’s coming to us from the guys over at MIT, so I wouldn’t say that you should abandon everything that you’re doing right now and jump over to Ur/Web, but if you have a chance and if you’re running a sandbox right now, it might be something you want to look at just to see if it lightens your programming load. Now, a little bit of good news. We did get a lot of emails over the Christmas break from people who are saying “I really want to get into PHP”. I’m so happy because Patrick is going to come back and do occasional PHP modules. Because people like it. It’s actually a very useful language, especially for those who maybe don’t want to go hardcore at programming but do want to do web design. PHP is incredibly useful. But people were complaining that they couldn’t configure PHP on like the home server box that they created, it can be daunting.
Patrick: Yeah. And it’s different for different platforms and it can be a bit of a pain to get it configured, but once it is, it’s great.
Fr. Robert: So, over the Christmas break a fan of the show by the name of Jared Bartamus, he owns a hosting services called Atabyte Hosting, he made an incredibly generous offer. We are not getting paid by him. They’re not advertisers on this network. But he wanted to do something for our people. Specifically because he wanted programmers who wanted to get into PHP to have a place where they could test their code without having to buy expensive hosting. So this is what he is going to do. if you are a fan of Coding 101 and if you want development space, he’ll give you 500 megabytes of storage, he’ll give you 5 gigabytes of bandwidth per month, he’ll give you PHP 5, Perl, Python coding support, My Sequel, Sequel Light, GD image manipulation support, full email access, SSH, SFP, SFTP, C Panel and a subdomain on C101.net.
Patrick: I think the fact that he has c101.net is awesome. How much?
Fr. Robert: Free. At least 6 months, of course if it gets crazy, he’s probably going to have to cover his costs, but this is not for hosting. If you want to host a website, you can buy a hosting website. This is only for development. So this is only for your Coding 101 assignments. Be it Perl, PHP, Ruby. He wanted to give you a nice pre prepared way to test out your code.
Patrick: And so where do we sign up?
Fr. Robert: We don’t have a sign up yet, he’s going to create a landing page for us. I actually have to make sure I’m not going to get in trouble. But this is an offer from one fan of the TWIT TV network to other fans. I think it’s incredibly generous. Now when we come back we’re going to be showing you the demonstration of his super cool bad mama jama PHP image manipulation program. It’s awesome, but before we do that, let’s go ahead and thank the first sponsor of this episode of Coding 101 and that’s Lynda.com.
What is Lynda.com? Lynda.com is a one stop shop. A repository for knowledge. Both of new knowledge and knowledge that you just need a refresher course on. Lynda.com is an easy and affordable way to help you learn. You can instantly stream thousands of courses created by experts on software, web development, graphic design, and more. Lynda.com works directly with industry experts and software companies to provide timely training, often the same day you get the new releases on the new versions on the street. You’ll find new courses on Lynda. So you’re always up to speed. All courses are produced at the highest quality. Which means it’s not going to be like a YouTube video with shaky video or bad lighting or bad audio. They take all that away because they don’t want you to focus on the production, they want you to focus on the knowledge. They include tools like searchable transcripts, playlists and certificates of course completion, which you can publish to your LinkedIn profile. Which is great if you’re a professional in the field and you want your future employers to know what you’re doing. Whether you’re a beginner or advanced, Lynda has courses for all experience levels, which means they’re going to be able to give you that reference that place to go back to when you get stumped by one of our assignments. You can learn while you’re on the go with the Lynda.com apps for iOS and Android and they’ve got classes for all experience levels. One low monthly price of $25 gives you unlimited access to over 100,000 video tutorials, plus premium plan members can download project files and practice along with the instructor. If you’ve got an annual plan, you can download the courses to watch offline. Making it the ultimate source of information. Whether you’re completely new to coding or you want to learn a new programming language, or just sharpen your development skills, Lynda.com is the perfect place to go. They’ve got you covered. They’ve got new programming courses right now including the Programming the Internet of Things with iOS, Building a Note taking app for iOS 8, and Building Android and iOS apps with Dreamweaver CC and Phone Gap. For any software you rely on, Lynda.com can help you stay current with all software updates and learn the ins and outs to be more efficient and productive. Do something good for yourself in 2015. Right now we’ve got a special offer for all of you to access the courses free for 10 days. Visit Lynda.com/c101 to try Lynda.com free for 10 days. That’s Lynda.com/c101. Lynda.com/c101. And we thank Lynda for their support of Coding 101.
Patrick: That’ll be great for people who need to catch up on PHP.
Fr. Robert: Yeah, because we are making a sizable jump. Don’t worry, you’re going to be confused. By the way, I also understand that the code for last week, the notes messed up. That’s my fault. I thought I had set things on automatic. I was at CES and on vacation. We’ll fix that. But last week it was just introduction. This is how it works, here’s a loop, here’s how to put data out. We’re getting significantly more advanced today.
Patrick: Yeah. I think I had ended last time on submitting a form. And that’s where we’ll start this time. But there’s a lot of stuff in between that we’re kind of skipping over. But that’s okay because if you’ve watched the other modules, you pretty much know how a 4 loop works, and all the other functions of programming and so if you’ve been paying attention you can figure out where to go with PHP. So we’re skipping over that and going right to something cool.
Patrick: Right. Now even though this is a skip, again, as Patrick mentioned, these aren’t topics that you’ve never heard before, it’s just that you haven’t heard specifically how to do them with PHP. It’s going to be more loops, more decision statements- If/then/else type stuff- so if you want to know how to do that with PHP there’s always plenty of tutorials on the internet. Or just use your 10 day Lynda.com free trial to study up on PHP so that you’ll understand what we’re doing. I think we’re going to start with the demo right. One of the biggest things that you can do with PHP, and what I love doing with PHP, is its actually quite good at image manipulations. There’s a lot of libraries that you can access where you can take an image and do something to it with very little effort. Patrick, want to show them what you cooked up?
Patrick: I’ve got a form similar to last week’s module, and up here it’s just “enter your name”. So we can enter Bryan Burnett. And so when I submit the form, what we get back is, Bryan’s name on the album art.
Fr. Robert: Now we should mention, this is not an overlay. This is not just the Coding 101 album art with text on the bottom. This is an image. See, it’s been baked as an image. So code that he wrote takes an existing image and it allows you to do image manipulation that easily. This, you added text but you could have had that image manipulation do anything that you wanted.
Patrick: Yeah. I could have put in a watermark, I could have done all sorts of crazy stuff with these libraries, but I decided I’m just going to take the album art and just change the name.
Fr. Robert: Let me back it off a little bit. Whenever I see image manipulation, like for example there was a router trick I did for April fool’s where I was reversing images or adding things to images, it always seems to use PHP and maybe some CGI scripting in the back. Why is that? Why does that seem to be the language of choice for image manipulation on the web?
Patrick: Well, this was actually very easy to do because I didn’t have to install any sort of libraries. They’re already there. And so I was able to take advantage of those and just change the image.
Fr. Robert: And as we know form our previous modules, any time you can take existing code, something that someone else wrote, and do what you want, that’s always a time saver.
Patrick: Yeah. I don’t know how jpegs work. But there are libraries there that do it for me. So I just say take a, make it look like b.
Fr. Robert: Now let’s go ahead and confuse people. Let’s jump into your code. First of all, show us the overview. This obviously is way more than just a loop, but what do I have to do?
Patrick: Well, I start off- I have to have a font in place. And so I’m going to true type font Ariel. Pretty standard. And I just put that on the server with it. And I told it here where the font is. Otherwise it doesn’t know how to format the text.
Fr. Robert: Right. And by the way, be it Windows or Mac, you will always be able to find either program or folder that will tell you all the fonts that are available on your system. So just choose one of those and you’ll be good to go.
Patrick: Yeah, so I just Ftp’d it up here. Then I set the font size. I used 40 because when I compared it to the actual album art it looked pretty good. And then here is what we saw last week. It’s setting text to get name. So this is getting the form submission for the variable name. So when I submitted that form with Bryan’s name, it said name = Bryan Burnett.
Fr. Robert: Right. So what this line is doing is its first creating a variable. Called text, and then it’s using the get command, which says okay, let’s go ahead and get some user input. And its saying, give me that, and dump it into text.
Patrick: Exactly. And so then I need to figure out the dimensions of the text that I entered. So what this is doing is seeing if it will fit. Just as reference, the base image that I’m using is the 600x600 album art. And so I have to make sure that the space I have in there for the name, that it doesn’t get longer. So what I do is I get the dimensions of the text, and so here it takes into account the font size, name, and text and figures out the box around that text. And I have these commented out just for reference, but these are variables. It’s an array that gets set, with the coordinates of the lower left, lower right and the x and the y coordinates of each corner.
Fr. Robert: So imagine the box is an XY plot and you need to have the four corners so that it knows whether or not –
Patrick: Right. So I can measure from X to X, from Y to Y. figure out how tall it is or how wide it is. And here I need to know how wide it is because if it’s too wide-
Fr. Robert: Actually that’s a good question. Why do I have to do this? Why do I have to let the code know how big the box is?
Patrick: If I’ve entered too much text, it’s going to go way outside that image. And some of us here at TWIT have really long names. And maybe it doesn’t fit. And so we need to adjust. So what I do here is- I checked the upper right X. and so this tells me if this is greater than 400, which is the size I determined that area should be, 400 pixels, then reduce the font size. And then it’s a while loop so it keeps going. Until that. So it keeps reducing the font size until it actually fits. And so then this next line, I yank the base image off the interwebs, so all this is doing is getting the image that I’m using as the template.
Fr. Robert: Now, that’s interesting, because you didn’t have to modify the image before it came in. you’re pulling it straight off the internet.
Patrick: Yeah. And I didn’t have to have this on my server. I just point it right at CacheFly where we have the album art for the show.
Fr. Robert: And remember, the original album art actually has my name on it. So you have to write code to make sure that’s not going to –
Patrick: I’ll show you what the original looks like. I’ll just copy this out and we’ll paste it into a window here. There is the original. That’s what I’m grabbing. And it’s got the text in here. My font didn’t quite match but close enough. And so that’s the image I’m loading into this code.
Fr. Robert: Alright, so, so far we had to load the font. And then we took the text from the user, then we figured out how big that text was going to be and we started shrinking it down if it wasn’t going to fit into the box that we have allocated. And now we’ve pulled the original album art onto which we’re going to put our text box.
Patrick: Yeah. So next I’m telling it I need a background color. And I need black so I can hide the “Fr. Robert Ballecer”. So I just set the background color to black. And then I set my text color to white. And so these are using RGB values for the color. The first number is the red, second is green, and third is blue. So it varies from 0-255 and through a combination of those three numbers you can get any colors.
Fr. Robert: Now something else that it’s actually interesting to note here is, we could just use that. So what you’re doing here with background colors, you could use backgrounds of different colors and boxes of different sizes to do massive image manipulation. It would take a while. But it doesn’t have to be just text.
Patrick: Yeah, I could put bar graphs in the image if I wanted to.
Fr. Robert: Alright, so now we’re at the point where we have something to cover up “Fr. Robert Ballecer” because we want to get rid of it. Which means we now have the image pulled from the internet and it’s ready for us to put our text box on.
Patrick: Yeah and it knows what color I want the background to be, it knows what color I want the text to be and so the next step is to fill in the background. So this image filled rectangle- and these are all just standard libraries that I’m calling. And there’s plenty of references to these online. And we can find a link to these and put it in the show notes. But this image filled rectangle is filling the image, which is referring back up here to the album art. And it’s filling between these coordinates. 150, 525. So that is the top of the album art part where the name is. That black bar. Down to 600x600. Which is the very bottom right corner of the image. So that just makes it put that black box over the name. So if I ended the code here, all we’d get is coding 101 art with no name on it. And that’s where I want to start.
Fr. Robert: It’s interesting, CodeMonkey23, there is a discussion going on right now in the chatroom, “well, how come you didn’t start with PHP?” There is a reason I didn’t start with PHP which is, it’s kind of messy. It’s not actually a good language to learn on. It’s a great language to do things with on the web, but as far as learning structure and how functions work, there’s at least a dozen different languages I would start with rather than PHP.
Patrick: Yeah. And I learned in other languages, but it was very easy to take what I learned in those other languages, C, Pascal, even going back to Basic, I learned fundamentals and now that we have PHP it’s easy to just whip up something.
Fr. Robert: This is more of like an applied language.
Patrick: yeah. Once you know how everything works, this is a nice relaxation programming language. It’s my vacation language.
Fr. Robert: Okay. Now we’ve got the box and it’s ready. But now we have to actually add something in. this is where people are going to start getting lost because it’s not an overlay. You’ve actually baked into the image, show us how you do that.
Patrick: So next I had to tell it the X and Y coordinates for my text and this was the start of the first letter. The bottom of the first letter, where that has to appear on the image. And so I just messed around with these numbers a bit until it looked right. It took some trial and error. I could have measured it out in Photoshop, but it was easier to just guess and then adjust it. So after I’ve determined the X and Y coordinates I put it all together. And so that takes the image with the font size and then puts in the X and Y coordinates, the text color and the font and the actual text I want to put in. it puts all of that on the image. So that is what puts the final thing together. And then I just have to present it to the user. So I tell it, I set the header for the request, so this is telling it, it’s not returning in HTML, its returning in image. And so I have it set to this mine type. Which is content type, image, jpeg.
Fr. Robert: Now, that function- so image ttf text, right there, if I wanted to, I could have hard coded parameters into that. So everything that came before it was to give it functionality. To get something from the user, to pull in an image, to figure out what size the font should be. But if I had all that information-
Patrick: Makes sure it fits and adjust it, but if I had all that information from the start, if I had fixed text, I knew the size, I could put it right in there and have it all in one line.
Fr. Robert: But as we’ve talked about before, you could do it, it’s then not a very useful program.
Patrick: If I didn’t figure out if the font size fixed, if I entered a different name, it’s going to look all weird.
Fr. Robert: So where does that function come from? That’s just included in PHP?
Patrick: Yeah. Nothing was downloaded or installed, this is a standard PHP installation. At least on my web host.
Fr. Robert: That’s why PHP is so popular with image manipulation. Because literally, that line, put it all together, you could do everything in that line. Everything else is gravy to make it more useful and make the final product a little nicer.
Patrick: For comparison, if I had one this in Perl, I would have to install Image Magic, I’d have to go to C Pan and grab stuff. And there’s a lot more work for me to do. I can’t just sit down, okay, print this out.
Fr. Robert: I’m trying to think of everything I would do in C Sharp to make that happen. That’s a pain. It seems like 3 different packages you’d have to load up.
Patrick: Different languages have different strengths. Perl maybe regular expressions, PHP is just quick and easy.
Fr. Robert: If you do web presentation, PHP is very good. Alright, but there are a couple of lines left here, so what do you do?
Patrick: We’ll close this out. So I set the header. You may remember this from the Perl module. When I printed the HTML I had to put content type is text/html. Here I am telling it my content is an image and its jpeg. And then I just output the image. And there’s an image jpeg which prints my image as jpeg content so all the ones and zeros are in the right place. I don’t now how jpegs work, but I don’t have to know. And then it just cleans it up and destroys the temporary image because I don’t need it anymore.
Fr. Robert: That’s actually good program. That’s garbage collection. I’m really bad that that.
Patrick: And so that’s how this works. And there’s a lot more you can do with this, this is just one example.
Fr. Robert: This is the funny thing. We talked about how this was a jump from what we did last week. Last week was just with a little bit of a loop and some out statements. Even though this is more complicated, the code itself is ridiculously short. And again, you’re paying into the strength of PHP. In fact, you’re playing into the strength of a lot of object oriented languages, which is, you have a lot of existing code that you can pull from. We’re going to do some final recall here, we’re going to wrap up this project and hopefully Patrick can give us some hints on what we should be doing as we try out our PHP. But first let’s go ahead and talk about the second sponsor of this episode of Coding 101, and it’s a new one. You may not have heard of them, it’s HipChat. Now what is HipChat? It’s fantastic. Its business communications. I know there’s going to be people out there going wait a minute, we communicate in my business. We’ve got email, we’ve got text, and some of us have pagers. We have voicemail, we have video calls. But even though that may work and even though that’s a good way to communicate, there are plenty of sweets out there, HipChat is specifically designed for businesses. And businesses are the ones who are going to love HipChat because it allows you to keep a history of what your communication looks like. I’ll explain why that’s important. When your team communicates, when they use a variety of programs, from email, IM, texting, cloud storage, document sharing apps, they have little bits of pieces of the answer everywhere. And if you’ve ever had to do forensics on your project planning to figure out where a good idea came from, or where a bad idea came from, you know that you want an easy way to look back through time. Through the time of your communications and figure out what happened when. That’s what HipChat lets you do. It gives you a time machine so you can see the geniuses of that next great idea. They give you IM, video chat, document sharing, screen sharing, system updates, and code sharing integration, which is important for our audience, in one simple platform. Email is too slow, meetings get sidetracked and regular IM doesn’t work well for groups, but HipChat keeps your team in synch. And it works from any device no matter where you are. The best part is that HipChat integrates with the top developer tools like GitHub, Gira, Zen Desk and more. You go to their website and check out the 57 services that HipChat plays nice with to see if maybe you don’t have to do much integration at all. Just turn on HipChat and start working better. They bring your entire project and team together in one communication suite. It’s easy to set up, its fun to use, and it makes you productive. Now here’s what we want you to do. We want you to try HipChat Plus. You can get your team on the same page in seconds. I want you to try them for free, no credit card required. Visit HipChat.com/c101, click on “start chatting” to sign up now. Then invite a few team members and all the features are free for 30 days. After the free trial you can always stick with the freemium version. Remember, that’s hipchat.com/c101 and here is a super-secret piece for everyone who wants to act now. If you sign up now the first 100 signups are going to get their free trial extended to 90 days. That’s hipchat.com/c101. Hipchat.com/c101. HipChat, your team, your project, in synch, instantly. And we thank HipChat for their support of Coding 101. Patrick, very cool. We were chatting back and forth a bit about this, and you were rubbing your hands together gleefully, saying “I want to optimize this”. You could have made this long spaghetti code, but this is so easy to understand. We’re going to make this available for them right?
Patrick: Absolutely, yeah. And while you were talking I changed a little bit of the code here. So if you go to the screen, let me submit. I changed your name to “The TWiT Army”. I just changed the line. So, that easy.
Fr. Robert: So yeah, that’s right. You can do this for any image. So you could take an image that doesn’t work. So can you find a picture of bunnies? Get your bunnies here. Let me explain what’s going on right now. He is going to change a line in the code on where it draws the raw image from. That’s probably not going to match up because the code has been optimized for our album art. So here is an image that you can pull off the internet. He’s going to replace the CacheFly line. So that’s pulling the raw image. He’s going to replace it with that castle. So now it’s going to pull this out and we should be getting an overlay of the bottom.
Patrick: But now you can see the black box that we put in, because that part was kind of hidden before.
Fr. Robert: I see a challenge we can hand off to people. Because remember, you’re going to be able to download this code in its entirety. But you can write a function to figure out how big the image is and they can determine where they can put the box and how big it’s going to be.
Patrick: I would just like to see people take this code and do other things to images on the internet. I can’t wait for next week, I hope there is time for some of the examples.
Fr. Robert: Patrick, thank you so very much, and as I mentioned, we’re going to have you back on to do these quick hits for PHP. Because, again, even though it’s not a language of choice for me, I don’t like to learn or teach people on PHP, it is a great language to learn if you’re going to be doing functional things on the internet like we do here all the time at TWIT. We are going to make all the code from this episode and the last ready for you to download. So you don’t have to copy anything off the screen, don’t worry about that, it’s going to be on our show notes page. Just go to twit.tv/coding. You’ll be able to find our show notes along with the link where you can download everything that Patrick was just playing with. The comments in the code are actually pretty good. That’s pretty much all you’re going to need. Don’t forget we do this show live every Thursday at 1:30pm. If you drop by our live stream at live.twit.tv, you’ll see the pre-show, the post show, and everything in between. Including what we cut out. As long as you’re going to watch live, jump into our chatroom at irc.twit.tv. I pull questions from the chatroom, so that we can change what we cover in the show. Again, it’s part of the live experience. Don’t forget we also have a Google+ group, just search for Coding 101. Jump in there, there are code experts. If you have a question, if you get stuck, if you can’t get to me, they’re actually a really good place to go because they’ll help you and help you figure out what you want to do for your next project. And finally, thanks again to you Patrick. Where can they find you on the internet, where can they find your projects?
Patrick: Well, I’ve got a new project that I just launched at the beginning of the year called “Back to the Predictions”. And it’s looking at Back to the Future 2, and judging all of their future predictions. So check out backtothepredictions.com and every day at 4:29pm there is a new judgment on the film. I’m going into excruciating detail.
Fr. Robert: Bryan, I believe you mentioned they’re coming up with self-strapping shoes, correct?
Bryan Burnett: Yeah, that’s correct. Nike is coming out with the shoes apparently this year.
Patrick: They’re coming out very soon. Because I’m going in order, so they’re coming up very soon. Backtothepredictions.com. and also adequate.com. I link to my other sites on there. And Twitter @PDelahanty.
Fr. Robert: And you can find me @padresj. Twitter.com/padresj. If you want to follow me and find out what I do in-between shows. Until next time, he is Patrick Delahanty, I’m Father Robert Ballecer. End of line!