All right, it's five-ish or close enough. So we'll go ahead and get started. If you are here to learn about recurring billing, subscription billing, taking someone's credit card and charging it over and over and over and over again, then you're in the right room. If you're not, you can leave and go find what you're looking for and I won't be offended. So introduce myself a little bit about me. My name's Joe Schindler. I'm EOJ The Brave on Drupal.org, Twitter, pretty much anything on the internet. I work at Lullabot. Lullabot is a company that does Drupal consulting, training, and development. I'm the lead trainer at Lullabot, so I do a lot of standing up and talking to people about how to build your first view or how to create sites using Drupal. In addition to doing that, I also work on the Drupalize.me team. I do a lot of Drupalize.me's video recording. In addition to that, I also do a lot of development on the site. And this is actually where a lot of my information that I'm gonna be sharing with you comes from, from having spent a lot of time working on the subscription platform that we use for hosting our videos, allowing people to sign up for a monthly subscription and watch those videos. I think it started, I think it makes sense to just talk a little bit about what exactly is recurring billing. Basically, at its simplest form, recurring billing is when you give someone the permission to charge your account at a regular interval. Whether that's giving them your credit card number and saying, go ahead and charge my account once every month, giving them a bank account and saying, yes, you can debit my bank account for my mortgage payment on a monthly basis, anything like that where you're basically saying, go ahead and take money from me on a recurring interval. Recurring billing or subscription billing is how we often see it. Some examples of that might be something like a newspaper or a magazine subscription.  If you stop paying them 10.99 a month, they stop sending you the magazine in the mail. Other common examples that we're probably used to, something like an ISP, an internet service provider. So not necessarily a physical good but a service that you're giving someone. Your Comcast charges you X dollars per month in order to provide you a service. If you fail to pay them and they're using some kind of subscription-based billing system to charge you or they may just send you a check or a bill in the mail but they're still billing you on a monthly basis, you fail to pay that bill, maybe not right away but eventually they're gonna shut down your account and no longer provide you with that service. Netflix is another common example. There's also the software as a service model which is becoming pretty popular and probably something a lot of people here are interested in. You're building some kind of web-based application and you wanna charge people for access to that application. Again, you're providing them a service, things like Basecamp, Pantheon, Unfuddle, Yammer, all these tools where we sign up for an account based on how much we pay them, we may get different features or it may just be like a, you sign up, you get an account, pay one rate and you get all the features.   In a sense, you have an apartment, you have to pay the landlord on a monthly basis. They might not have a whole subscription-based platform in order to charge you, they'll probably just show up at your door and knock on it if you forget to pay them. But at the same time, it's still some kind of recurring billing. I also realized that this session takes place at 5 p.m. on the second day of DrupalCon. So it's going to be the end of the day and everybody's had their brains kind of filled with a lot of stuff. You're probably waiting to head out to the bar and have a beer. So if you take anything away from this session, this is going to be the five minute version of how you can do recurring billing. So the five minute version of my session is, if you can, use a service. Use somebody else to do the recurring billing for you. Focus on building your application or your platform and let somebody else do the hard work as much as possible. This is going to vary a lot. You might end up with a scenario where you can offload some of that work to someone else and do some of it yourself. A good example is if you were in the previous session, they talked a lot about PCI compliance. You might want to offload some of the credit card data storage to a business that specializes in doing that so you don't have to spend a lot of time working that out yourself. If you do have to build your own system or even when you're using an existing service, try and simplify your needs as much as possible. I think we tend to look at these things and go into it with this. I need all these features. I need to be able to do all these crazy things and we end up kind of complicating the problem. A really good example of this that happened with the Drupalize Me site is when we first started building it, we spent a lot of time figuring out how to handle trial accounts. Somebody signs up for a trial account, we want to give them like a one month free and then after that we'll start charging them X dollars a month. But it was always weird because in order to get their credit card, we would have to charge their credit card something or it was weird to say give us your credit card but we're not actually going to charge you anything sort of from like a customer relations standpoint, that was kind of bizarre. Things like that, we were able to sort of just simplify the idea a little bit and then we stepped back and said, what are we really trying to do? What we're trying to do is give somebody the opportunity to experience what our site would be like if they had an account on it without having to commit to paying the $45 a month. So we just made some of the videos on our site free and it's the exact same experience that you get if you sign up for an account. You just don't get it on all the videos, you get it on a handful of them and that was awesome because it's really easy to do that in Drupal. You just check a couple of boxes and change some permissions and you're done. You can give away an account to somebody and they can get a trial of what your site is like. So things like that, figuring out ways to simplify your needs.  For a couple of reasons, when you're doing recurring billing, you're charging people money for some service. If you mess up charging people money, they tend to get pretty upset about it. The other part of it is, if you fail to charge them money on a recurring basis, your business model isn't doing very well because you're not making money. So testing things becomes really important. We'll talk about some tips for that. Finally, focus on communication and building relationships with your customers. When you're doing any kind of sales, but especially with the recurring billing type of stuff, focusing on building good relationships with your customers becomes really important. We find at Drupalize Me, when complicated things happen or when something messes up, it's a lot easier for us to talk to our customers when we've already established a good relationship with them. They don't come at us and are really mad that something was broken. They come and say, oh, hey, I noticed on your site that this was a little bit out of whack and could you please fix it? And we say, sure, yeah, no problem and we'll give you a free month and be friendly about it. It becomes much easier to maintain your customers. So that's the five minute version and then there's the longer version because the truth is, if you are doing this kind of stuff, you're gonna spend a whole heck of a lot more time than five minutes working on sorting it all out. It's actually a fairly complicated problem, not only within Drupal itself, but just sort of in general, doing recurring billing has a lot of moving pieces to it. So like I said before, this is all based on my experience working with recurring billing for DrupalizeMe. DrupalizeMe is a Drupal 6 site so a lot of my knowledge is based on UberCart and that system, I've also done some looking into the commerce subscriptions for Drupal 7 though I haven't used any in a production environment yet. And I've also spent a lot of time talking to people from various services like Recurly and Chargeify and just kind of picking their brains about this. At the end of the day though, I don't know that I have all of the answers to how to do recurring billing. You're not gonna be able to walk out of this room and download these five modules and turn them on and magically start doing recurring billing, but we can hopefully help get you pointed in the right direction. So one of the first questions that you need to ask yourself when you get into this and in that five minute overview, my first step was if you don't have to, let somebody else do it for you. So you need to be able to figure out should I roll my own recurring billing service system or should I use a service? In this context, by roll my own or building our own system, I'm saying that if you're building the system in Drupal using something like commerce or Uber cart, you're in a sense building your own. If Drupal becomes the business logic that is responsible for charging once a month or make it whatever it needs to do, it needs to contact the gateway or charge the credit card or whatever it needs to do on a monthly basis to charge that card, we're gonna refer to that as we're building our own system. So if Drupal's performing the majority of the business logic, we're building our own system. If we can offload that to something else, then we're using a service. There's various parts of it that we can offload to other things. And there's a lot of different types of services. So by a service, I mean something like Chargeify is a common one, Recurly, there are a lot of billing subscription management platforms that exist that basically have an API that you can use in order to charge somebody's credit card on a regular basis. In a very simple level, how they work is somebody fills out a form, whether that's on your site or on their site and adds their credit card data into it, hit submit. Once that service, like Recurly, has successfully charged a credit card, it then pings your server. So it calls back to Drupal and says, hey, there was a successful charge made, or hey, this charge failed, and then Drupal can do something, like add a role to a user if the charge was successful or remove the role if the charge failed. There's other types of services too that are sort of at a little bit different level. So in addition to doing that, something like Recurly provides you with a lot of reporting, it gives you Dunning management, which we'll talk a lot about, how to handle errors, what happens if I try to charge somebody's credit card, but they actually got a new credit card or they changed the dresses or something like that. Services like Recurly provide a lot of tools for handling that for you as well. There's other things like PayPal or Stripe or Authorize.net has their ARB, Automated Recurring Billing System, which do part of this. They do the part where they essentially act as a credit card data store and a cron tab. So they store your credit card data for your users and then on a regular schedule, whatever you've defined as a plan, they'll charge that card so that maybe we'll say that's once a month, they'll charge the card, they'll call back to your server and say whether it was successful or not. In these cases, that service like PayPal or Authorize.net is still the one that's responsible for that business logic of actually knowing when to charge the card and doing so. And then finally, there's gateways in sort of the build your own using something like Authorize.net or Braintree, but not using their ARB system, but just using them as a card store and you perform the logic to charge the card. We'll talk more about that. Of course, there's the question, what is this going to cost me in order to build this kind of system? And this plays a really important part, I think, in trying to determine if you're gonna use a service like Recurly, you're gonna pay them a fee in order to use that service.  And it's an important question to ask. I have some slides where we kind of break it down a little bit more and we'll talk about that. You also have to ask how much time is this going to take? Am I gonna spend a lot of time integrating with some third party service versus am I going to spend a lot of time building it myself? Time and money, those two often go together. Sometimes you have not very much money, but you've got a ton of time. If you're building it yourself, you can spend maybe as much time as you want to, or maybe you have a lot of money and very little time and it's kind of managing that scale. And then finally, there's the question of, if I'm gonna use this service, does it provide me with the flexibility that I need in order to perform whatever plans I've come up with? Plans, in this case, being something like, I'd like to charge people once a month, or a plan might be I'd like to charge people every six months, or I'd like to charge people once a month, but I'd like them to have half off on the first month and so forth. So figuring out your plans doesn't provide the flexibility that you need. So services, we talked a little bit about this. There's a whole bunch of them out there that perform this service of basically acting as both the credit card data store and the business logic that does things like bill at a regular interval every 30 days or whatever the case may be. In addition to that, these also provide a lot of reports that you can go and look at. They provide interfaces for managing things like dunning, so dunning management being when their credit card fails, how do I send them, do I send them an email, do I contact them about it or not? So lots of services that provide that. I like the idea of these services and I think that if it seems to be a good fit for you, I would highly recommend going with one of these services. Let them do the work of things like automating the billing and dealing with all of the security and so forth because then you get the opportunity to just focus on your application, focus on the thing that you're good at. You know, it duplifies me. The thing that we're really good at is recording videos that train people on how to do things. And we'd rather spend our time working on recording new videos than spend all of our time in the background working on writing some kind of logic in order to perform this dunning management when we could just pay somebody else a fee to do it. So, build your business and not your billing system. We also talked about other types of services like PayPal or Stripe, which are kind of a hybrid between a payment gateway and a full-on recurring billing service. Again, PayPal is a really good example of this. They can do both taking your credit card and charging it and you can set up a plan with them where you say charge this card every 30 days, ping me and let me know that it was successful. Both of these types of services, whether it's a PayPal service or something like Recurly, on the Drupal integration side of it, basically what you need to do is you have to have a URL that these services can ping and they'll ping with a status code that basically says this was a successful transaction or was a non-successful transaction depending on the service they have different status codes and you need to respond to what their status code is and take the appropriate action on your side. So that becomes really all your application has to do. It's generally something like remove a role from somebody because if they don't have the role, they no longer have permission to see the things that they're paying for and so forth. And then there's the sort of standard payment gateway side of things. Let's get a question. I guess this is not too bad a time to mention this. This one's a little unusual as an alternative kind of a service. It's only really relevant if you could also use like email management and CRM features. But we have this thing that's called InfusionSoft and it is email marketing, CRM and e-commerce. And we actually also use UberCart and we use DrupalSite because the basic shopping cart that's in InfusionSoft isn't as flexible in general as I would like, doesn't have multiple currencies, doesn't handle lots of things. But it does actually have a really good recurring billing feature and it covers all kinds of things including the done process and there's a way to get a portal that people can come in and fix their credit cards or update their credit cards, all those things, not too expensive. I think one seat is like $59 a month or something. PCI compliant, so it takes care of a lot of things but mostly you would use it if you also are interested in their email facilities and CRM and there is some basic integration for Drupal. There's one module out there called InfusionSoftAPI I think. There's another module that I wrote that is only in a sandbox called InfusionLink. Okay, so it's called Infusion. Yeah, so basically there's a lot of different services InfusionSoft being another one that I personally have not heard of. But I would say any of these services that you're checking out, you're still gonna need to ask yourself those same questions. Is it worth the cost of me paying for this service or even if it's a separate piece of software that I'm down licensing and installing on my own hardware, there's that cost tradeoff to pay that licensing fee versus writing the code myself and now I own it. So I wanted to mention this gateway thing, this concept of a gateway being something like Authorize.net. You have a merchant account. Authorize.net is responsible for, you hand them a credit card number, they charge that credit card number, they deposit some money into your bank account. It's sort of a very high level. A lot of these also offer some type of recurring billing service, similar to what PayPal does where it has, you can set a plan and then it'll automatically charge the card every 30 days and ping you and let it, you know if it worked or not. In addition to that, a lot of these gateways provide some sort of credit card storage or a vault. Braintree calls, there's the vault. Authorize.net has their CIM customer information manager. There are packages that you can add on to your account with Authorize.net that says I'd like you to store credit cards for me. So this is really important, both if you're using a service like Recurly or if you're building your own. You're gonna need to have a gateway that can do the charging of the credit card and something that's storing that credit card data for you. Some of these services like Cheddar Getters, one that provides their own gateway as well. But at the end of the day, they're providing two things that they're providing the recurring subscription management software and they're providing the gateway. So at a bare minimum, no matter what route you take, you're gonna need some kind of gateway. And I would highly recommend that you use your gateway as your credit card data store rather than trying to store it yourself because you're gonna run into all kinds of complications with PCI compliance in order to do that. There's no reason not to use a third-party service to do that part of it for you. So what is this all gonna cost? I did spend some time kind of looking into it and researching and looking at the numbers of what it would cost to use different services.  There's gonna be a $99 one-time setup fee.  So doing the math of saying I have 100 subscribers that are each paying $10 a month, it's gonna work out to be about $30. Or sorry, you also have to pay monthly for the CIM or Customer Information Manager. So you're gonna pay $20 a month just to have your account and $20 a month to use their credit card vault. Then you're gonna pay 10 cents per transaction. Basically, with 100 users at $10 a month, you're gonna be paying about 5% of your total profit to use Authorize.net's gateway as charging credit cards and storing credit cards. So at a bare minimum, you're looking at something like that. The cost to use a service like PayPal is a little bit steeper, but you're also getting more out of it. They're doing the automatic billing part of it for you. They're doing the business logic of saying, I'll take that plan that you set up, charge every 30 days and ping you. Looks something like this. Works out to be roughly $130 per month for 100 users at $10 a month in order to use PayPal as your subscription billing thing. In this case, you're still gonna be responsible on your end for implementing a lot of logic to deal with Dunning Management and so forth. They don't really provide that. They also don't provide that much in the way of reports that you can look at. Not the same way that a service like Recurly or Chargeify might provide. I also found this interesting website, Billingsavvy.com, which you can go to and basically, it uses some of the more well-known and popular subscription billing services. You plug in how much you're gonna charge a month or how much you're gonna charge at what interval, the number of subscribers that you have and it gives you this chart that says this is what the cost is gonna be. I will point out on this site that Stripe is a little bit misleading because while it's on this site and it's become really kind of like a popular hot topic Stripe is pretty cool right now. It doesn't provide you nearly the level of services that something like Recurly or Chargeify does. Stripe is much more equivalent to using something like PayPal in terms of the services that you'll get for doing subscription-based billing. So it can be a little bit misleading. I kept adjusting the numbers and then putting them in an Excel spreadsheet and then doing the math off of it and basically figured out that if you're in the 100 to 300 subscribers range, you're looking at paying a service like this somewhere between 50 and 20% of your profits in order to just use that service. Keep in mind that this service also includes things like the gateway, so authorized.net or whatever, that 5% that we were already talking about. So really you're looking at maybe like 10 to 15% just to use something like Recurly but you're still gonna have to pay the gateway as well. So then the question becomes, is it worth it? I can't answer that question for you if 15 to 20% of your profit at 300 subscribers is worth it. I will note that the more subscribers you get, the lower this percentage is gonna go and I look at this and I kind of say, oh, it's hard because then as a startup you might think 300 subscribers is awesome. Like holy cow, I finally got the 300 subscribers but you're still paying 20% of your total income. Or you may be looking at a business model that you'll only ever get 300 subscribers. So you kind of have to weigh that. So then there's the cost of building it yourself. Building yourself again, referring to, I'm using something like authorized.net as a credit card vault but I'm doing everything else, all the business logic and stuff myself. I can't make sure exact numbers but I kind of did the rough calculations on the amount of time that we've spent working on this on DrupalizeMe. And I figured out that over the last year and a half we've spent roughly about, we'll say 8,000 hours working on the site in total across everything that we do on the site. And then if you estimate that like, let's say 10% of that time was working on developing features related to recurring billing. Whether that's adding in reporting, extending the UberCart or UC recurring module to do things that we needed to that it didn't, or just dealing with customer relations and dunning management and that kind of stuff. And at that it ended up to be, I have to check my numbers here. So over the course of a year and a half that worked out to be about 300 hours spent doing that. And if you're charging a developer, let's say $30 an hour, when you're talking $30,000 just to build and maintain that yourself, what's the non-trivial amount of money? How much time is it gonna take? Again, I don't really have a good answer for this one. I can tell you that no matter what system you use you're gonna end up writing some custom code yourself. Whether you're using Recurly, whether you're using Commerce or UberCart or any of the solutions existing in Drupal, there isn't anything that is so fully baked that you can just download it and install it and turn on the module and it'll work and solve all of your problems. Recurring billing is a tough place thing to figure out. No matter what you do, you're gonna end up spending time writing some of the code yourself. How much of that code you write is gonna vary depending on whether you're using a service or you're responsible for all the billing logic and so forth. Does it provide the flexibility I need? Can I implement plans that are necessary if you're my business? When we launched the Drupalize Me website we started building it and we're about four months into building it and we said there are two things that we absolutely have to have figured out in order to launch this site. One, we need to be able to serve videos because we're all about streaming videos and people being able to watch them. Two, we need to be able to take people's money when they watch our videos. Everything else was kind of a moot point but those two things had to work flawlessly. We launched the site on PayPal initially using their recurring billing system. A couple months into it, we switched to a different provider. We also ended up switching video streaming and stuff as well. We totally got it all wrong. We launched the site, we said, yes, finally and then we went, oh, let's switch everything. Okay, let's try this again. We ended up switching off of PayPal because two months after we launched the site we decided that we wanted to lower a subscription from $55 a month to $45 a month. And with PayPal we had no way that we could lower the subscription for all of price for all of our existing customers. Because the way it worked with PayPal was somebody signed up for an account. We sent them a credit card number, a dollar value and an interval. And so an interval being say a month or 30 days. PayPal said, okay, I'll store all of that. I will charge this credit card, this dollar value at this interval and I'll let you know if it was successful or not. Once you've set up that plan on PayPal you can't actually ever change it again without customer interaction. So that meant that we could offer all of our existing subscribers a $10 a month reduction in the cost of their plan but we'd have to send all of them an email and say you actually need to cancel your existing account and then sign up for a new one at the new rate in order to get that cost. Which when you get into recurring billing as we'll talk about you get to that stage of telling people that you're gonna charge them money and how much you're telling them. It's kind of interesting waters to navigate. Part of the whole business model as you sign up for an account I'm gonna charge you $10 a month and you might forget about it. I have a Netflix account that I use like once every two years or so and I see it on my credit card bill every now and then and I go oh yeah that's right they're charging me money. I should cancel that and I usually don't get around to it. And then like six months later I'm like oh yeah that's right they're charging me money. Eventually I reduced it to just the streaming instead of the DVD thing but that's a lot of how this people are thinking about doing these recurring billing systems and so when we had to deal with let's email all of our customers and tell them go cancel your account. Suddenly that rose a bunch of red flags being like let's not actually email our customers and tell them to cancel their account. So PayPal ended up not providing us with the flexibility that we needed in order to reduce the cost of a plan and in the way that we wanted to do it. So that's the kind of thing that I would think about with flexibility. Another thing that becomes important to think about too that we deal with a lot is if people have a bad day or if we really like somebody we wanna be able to give them a free month to our service. You know maybe we just wanna be nice and say hey you can have a month free. Does the service that you're using or whatever system you're using allow you to do that? I would say at a bare minimum what you are gonna wanna be able to do is change the price of a plan especially when you're first launching something. You launch it, you have this idea of what people are gonna wanna pay for it.  The other thing that you're gonna wanna be able to do is comp somebody a month. Those are like the two bare minimum things that you'll need to be able to do. And that comp somebody a month can be really handy for a lot of scenarios. So being able to do that without having to tell somebody yeah just cancel your account and then sign up again in a month cause they won't. We also talked about this concept of a card store or the CIM in authorize.net or the vault and brain tree. Basically someone that is storing credit card data on your behalf in order to keep it secure but so that you can charge it at a regular interval. The way that most of these systems work is you authorize.net, you send them a credit card number and say go ahead and create me a customer based on this credit card number. Store the credit card number and then create a token and send the token back to me and I'll store the token on my end. So I'm not actually storing any insecure data on my end. I've just got the token or at least I'm not storing credit card numbers. And then I can use that token and I can say authorize.net charge this token X number of dollars. So that's like if you're using the UC recurring module or the commerce recurring module this is essentially what you're doing. You're setting up a scenario where somebody else is acting as your data store on in Drupal you're storing a token and then your Drupal implements all the logic to on Cron once a month. Take that token and charge it X number of dollars. Authorize.net says cool I've got the token here's the credit card that matches it I'll charge the credit card I'll let you know if it was successful or not. Most of the time they'll let you know sometimes they forget. So you gotta store your credit card data somewhere. When you're building a subscription based system your customers are your most valuable thing. And in fact it's their credit card numbers that are really your most valuable thing because with that you can charge them every month. So you need to be aware of the policies that these gateways have for storage of the credit card data and whether or not you can get it back from them if you ever need to switch or ever want to switch to another service. Technically they're all supposed to be able to give you a method to extract your data from your credit card data from their service transfer it to somewhere else. There are lots of standards about how that is done so that the credit card data gets extracted and encrypted and then moved somewhere else and they decrypted and imported into their system. But if I wanted to move from something like authorize.net to world pay I want to bring all of that data with me. So at a minimum make sure that whatever you're using as a gateway will allow you to take that data with you when you're ready to go. Portabilitystandard.org is an initiative to start to standardize mechanisms for transferring credit card data between payment gateways. So you can look at that and you can get an idea of some of the gateways that support this already.  If I ever want to leave you guys can I take my data with me? The other thing that you can do too is if you are in a scenario where you've already got a credit card store with a company and you want to move somewhere else call the company that you want to move to and ask them to contact authorize.net or whoever you're with on your behalf. Most of them will be pretty good about that because they're like sure we want your business and they're generally in a better position to talk to the techs at that place about how that data can be transferred in a secure format. Why do we want to do something like this? Because PCI tends to be quite a pain in the butt if you were in the previous session you heard a lot about this. You don't want to store people's credit card numbers on your server. Period. Pay somebody else to do it for you. It's worth it. All of the complications of doing it and how much money you would spend in order to do so definitely outweigh the 5% that it costs you to use authorize.net's customer information manager. Another thing that I evaluate and think about a lot when I'm trying to determine whether or not I want to build this system myself or use an existing service is this process of dunning management. Like we said, dunning is the process of when I charge somebody's credit card there are a lot of reasons that that charge could fail. The first time I charge it, no big deal if it fails I don't send them the product that they bought. But if I'm doing it on a recurring basis I want to have a process in place to kind of deal with these failures. And I also want it to be smooth enough and simple enough to deal with that my subscribers will most likely stick around. That's that whole scenario of not really wanting to remind people that you're charging them some money. But in this case you definitely have to so you want to make sure that it's a smooth process. Example being somebody, we try to charge somebody's credit card on a regular basis. If it fails the first time we say, oh that sucks, but we'll extend your subscription for three days and then we'll try it again and see if it works. So we'll try again three days later to bill your card. And if it fails the third time we say, oh that really sucks but we're pretty nice so we'll actually give you two more days. So you get a total of five days and we try to bill your card three times. If we fail on the third time we cancel your account. During that time we'll also do things like if it fails the first time we'll send you an email that says, hey we just tried to charge your credit card and it failed, here's what we can glean about why it failed from the gateway. Most of the gateways are actually pretty cryptic about the messages that they return. Authorize.net has something like 400 possible transaction responses that it can return. And you have to kind of figure out like what does this one mean? And am I telling somebody that their credit card changed or that it expired or that they changed their date or that I don't actually know what their real name is and lots of different errors. But basically we want to email them and say, hey this didn't work. Can you, here's why it didn't work. Can you take action? Can you update your credit card number? Can you update your address? Whatever the case may be. You also then need to provide them an interface to do so. So that's one of those things that starts to get a little bit complicated to do it yourself within Drupal. And why I do like the idea of using a third party service. A service like Recurly has a team of who knows how many people. I guarantee it's a lot more than three. Working on their billing system and the process for doing dunning management. They've got better integration with the gateways. They'll be able to respond with more informative emails to your customers. They have processes in place for dealing with the dunning management. They have the ability to provide them with forms where they can update their data. You can do this in Drupal as well. That's how we do it. But then it ends up being just more and more and more custom code that you end up having to write yourself in order to handle all of these things and in a way that makes sense for your business. The other part that's hard about it is dunning management changes potentially a little bit depending on your needs. So it's hard to write one end all be all solution for doing it. Yeah, see, there's a lot of steps to this. This is just sort of the like, oh yeah, how do I pick? Whether or not I'm gonna use a service or write my own. So that's the easy part of subscription billing. Now we can talk about the stuff that's actually hard. When I was doing research for this, I came across this quote on Twitter which says, easy, subscription billing was striped. Still annoying. Reporting to users, their invoice history, plan changes, cancellations. You could add a whole bunch of other things in there. But basically I took this to say, the part of subscription billing that's really easy is charging somebody's credit card once a month. And there's a lot of services that do that. Drupal can do that for you really, really well. There's a lot of other aspects of this that get more complicated. There's a lot of things that have to do with reporting. In this case, not all of the services or Drupal itself are equal. This is something that I would spend some time researching if you're gonna use a service like Recurly or Chargeify. Is it gonna provide you with the sales data that you need in order to monitor whether or not you're successful? Same with using Commerce or UberCart. Both of these solutions have basic reporting built into them so they can tell you how many of this product have you sold? How many of you sold this month? What's the dollar value that you've earned this month? The things that we found to be lacking in that are user retention reports. So I wanna be able to view a report that says somebody signed up but how long did they stick around for? Did you do more people cancel on the first month or the third month and those kind of things? So reporting can be interesting with that. If you're gonna build your own service using Drupal, my suggestion would be anything that deals with the business logic side of things. When you charge someone what happens, log all of that information. If somebody changes from one role to another because their subscription canceled so they lost the role or they just paid again and renewed their account and now they gain the role again. Every time something like that happens, log it somewhere and then expose that data to views and you can use views in order to create a lot of these reports for you. The trick is making sure that it all gets logged. There's a lot of modules for dealing with things like that whole thing of removing or adding a role on Cron basically but you wanna make sure that whatever solution you use, you're tracking the data so that you can have over time use it to generate reports. Other things that are complicated about this that are sort of not just the standard I need to charge your card once a month but you also are gonna wanna keep in mind. We talked a little bit about the allowing for trials thing or that whole first month free. This is something that a lot of the services will offer but it varies what they do offer. There's a lot of possible things that you're gonna wanna do when you're charging someone once a month and a lot of possible ways that you may wanna deal with say, I wanna give you a $10 discount on the first month. I wanna give you the first month free.   There's a lot of variance on that. Coming back to the keeping it as simple as possible. So deciding on one or two basic plans that you're gonna implement and sticking to that. I highly advise that.  We can do a bunch of fun stuff. We don't use any of it. At most we say you can have $10 off the first month. You can have $10 off the cost of a year but all of these other complicated things that we thought, wow, this is really cool that we can do this. We end up not using it. So we spent a lot of time writing a lot of code and figuring, testing things that we just don't really need. And then other things. We talked about providing UI for updating your account.  Again, that may depend on your needs but on Drupalize Me, we wanted people to be able to put their account on hold for three months. So we're not necessarily losing them as a customer. We got a lot of, we don't want them to cancel their account and then have to come back and sign up three months later because they're not going to but if we say you can put your account on hold for three months and we won't charge you until three months later but then we'll start charging you again and that's actually helped a lot for us in order to keep people around. You pay $45 a month for something.  If we give you the opportunity to put, suspend your account, you're much, much more likely to stick around after that two months just because you don't have to go through the hassle of signing up again. We talked a little bit about making sure that you test your recurring billing system. This is something that we've spent a lot of time figuring out how to do on our sites and I just kind of wanted to share some of this as well. So this is the five commandments of testing. Thou shalt test everything. Even the parts that seem hard to test. Recurring billing, it gets a little bit tricky to test things because you might sign up for a dummy account on your site and then you have to, the part that you're testing is whether or not the role gets removed when my credit card fails to get charged a month from now. So you have to sit there and wait for a month to see if it happens. You don't actually have to wait for a month, but it makes it tricky because you have to get into the database and basically change timestamps and fake things so that when I run Cron and all my business logic fires, I can check and see if it does what I'm expecting it to. Make sure you're doing those things. It's important. Sanitize your data. When you pull data off of production or off of a QA server onto your laptop to start testing things, sanitize it. Remove anything that could reference that person, that account, back to their credit card on authorize.net. So remove that token. One of the things that we actually do is when data comes off of production, we actually parse through the entire database and change everybody's plan to use a dummy gateway instead of authorize.net. So then when it's on my laptop and I'm testing things, I don't accidentally charge somebody's account while I'm running Cron on my laptop to test out a new feature. And I recommend, if you can, using some kind of dummy gateway to do this. There's like both Commerce and UberCart provide this feature, but basically you just want something that is very quick and easy. You don't even need to ping authorize.net's developer account. You just need to send off into nowhere and say, return my own response, but make sure that you're testing using some kind of dummy account. Once you've tested with a dummy account, you should also test with a developer account on whatever service you're using, just to make sure that that end of things is working. All of these gateways and services provide the ability to have a developer account. And finally, you should test with real data, but not real credit card data. One of the things that we discovered with DrupalizeMe is that as the site's been around for a year and a half, our data isn't like perfect lab clean data anymore. We've done things over time to people's accounts in order to just kind of tweak it. We might have added a couple of extra days to someone's account here or there by going into the database and tweaking things. There's a lot of forms that you can tweak in Drupal in order to remove a role or add a role or all these kind of things. So we don't have pristine data anymore. One of the things that I really like to do is when I'm testing this in new features, I'll actually commandeer existing accounts on our site. So I'll just log in and change the username and email address and password associated with some account that already exists on the site to mine, and then I'll use them in order to log into the site and test things out. And just it's a nice way to make sure that everything is really working outside of this perfect lab environment. We also do a thing where we've got a couple of, instead of just having one settings.php file, we actually have two of them, one that includes the other. We store all of our keys for APIs that we use in order to do billing in settings.php. And we also, so that it's not in the variables table. In addition to that, we have it set up in a way that in our settings.php file, which is stored in version control, we have either no keys, like we set all of our keys to false, or we have the keys for a developer account for that API. And then on the server, we have a settings overrides file, which gets included by the settings.php. The overrides file contains the actual keys that are used to interact with, say, authorized.net or PayPal, but those only exist on the live server. They're never checked into version control, they never make it onto a developer server. That's a nice precaution, because even if I fail to do all of those other sanitization things, if I don't have the appropriate keys, I'm not gonna be able to charge your card. So then we do this where we put settings.php and those developer versions of all the variables into version control. And then on the live server, we put the actual keys. And this has been really important because you add new people to your team over time, and they're gonna need to grab your code, start making use of it. You don't wanna have to have a really long document that's like, oh yeah, and when you're setting up your development environment, don't forget to change the live keys to the developer keys because somebody will forget. Another thing that we do that is sort of a not as well-known, if you have the develop module installed, you can tell Drupal to route all of its email that it's sending through the develop module instead of using the built-in like SMTP or post-fix stuff. And what that does is develop will just log those outgoing emails to the watchdog, but never actually send anything. And this is really nice for when we're testing all of our business logic stuff because we might run cron, and even if I'm not testing cards, if your account has expired, our site attempts to send you an email that says your account was expired, and I don't wanna accidentally double up when I do that with data that's on my local machine. Other ways to do that are use a development server that doesn't have post-fix installed, so it's impossible to send email, but sort of blocking that from happening. Yeah, a lot of things outside the scope of Drupal and just sort of billing in general. In Drupal, these are some of the things that I've looked into, and to use to varying degrees of success. On DrupalizeMe, we're using UberCart in the UC recurring module and a handful of other customized bits that we've added in there in order to meet our business needs, and that's actually working really well for us. I've been very pleased with that. In Drupal 6, there's also a implementation of the Chargeify API. I've not used it myself, but one of my coworkers has made good use of that and said good things, and he really liked Chargeify. In Drupal 7, right now, it's an interesting space. There's a lot of people looking into how to do the recurring billing. My experience so far is that there isn't any one completed solution yet. There's a lot of stuff in progress, but nothing that I would trust to use in production yet. There's a mostly implemented Recurly module, so that would possibly be a good way to go if you're interested in using the Recurly service. There's also Commerce module and the Commerce Recurring, and all these other associated modules, which basically does the same thing that UberCart and UC Recurring does, though it does it in a bit more cleaner way. So there's a bunch of, if you're interested in that aspect of building your own, start with Commerce Recurring and follow the trail of umpteen billion dependencies to get all of what you need and start getting things set up that way. But like we said at the beginning, if you're gonna be doing Recurry billing in any form, you're gonna end up writing code. And part of that is just because there isn't a solution yet in Drupal that has it all perfectly figured out. And finally, we kind of touched on this a little bit, but basically when it comes down to figuring out how into doing Recurring billing and sort of the thing that has worked the best for us, the secret to I think why this has been successful for us isn't the services that we use, and it's not the code that we've written, but it's the people on our team and the customer relationships that we've built with everyone. Haley is one of my coworkers and she is amazing at responding to people when something goes wrong. We've had incidents where we talked about a lot of things to look out for testing. You learn these kind of things by trial and error over time. When we have errors, it's been really nice to be able to contact our subscribers and say, we messed up, we're sorry, we have the ability to comp you a free month and we'll do so, but having that kind of customer relations is gonna become really important, because like we said, customers are your most important part here. So focus on communication and customer relations. Use a system that's going to allow you to focus on building your applications and communicating with your customers, whatever that ends up being. So as a recap, I recommend trying to use a third party service if you can, something like Recurly, Chargeify. Again, even doing that, you're gonna need to write some code in Drupal just to get all of that working. Write some, be prepared to write a lot of code if you're not using a third party service. My experience so far is things like Dunning Management is virtually non-existent in the Drupal space. It's there, it can do things like email your customers if you failed to get to charge the credit card, but it's not really smart enough yet to do things like say, fail to charge your credit card and these are the reasons why and so forth. So you're gonna end up doing a lot of work to figure that stuff out. Try and find a way to simplify your needs as much as you can, and then charging someone isn't really the hard part. It's pretty easy to set up a cron tab that charges somebody's credit card every 30 days. It's everything else around that that gets to be more difficult with this. That's what I got. If you wanna ask questions, I'm happy to answer them. We do ask that you come up to the microphone so that it gets recorded. I think it's on. So it sounds like there's not really any kind of solution at all for Drupal 7 without writing custom code. I'm not a coder. I'm using ubercarauthorized.net. I've got errors on the recurring billing after the first month's tread to charge. I'm wondering what I do because I really don't wanna spend more time or money than it takes to do this, and so I'm looking for any, even just something manual for now? I don't know. If you're looking to continue to, so the question was, what do I do if I can't actually write the code? If you're using a system that's based off of existing Drupal modules and it's totally failing to work, it's possible that that's a bug in the code. So file an issue in the queue, try and contact the module maintainer and provide them with details about what you've tried and what is or isn't working, and hopefully they can help you get that sorted out. If you need like an interim step, like the most manual process would probably be something like using PayPal or Recurly, but not having it integrated yet with Drupal at all, but you could log into PayPal or Recurly and set up that account and let somebody enter their information and charge them, but then you would have to be responsible for managing the business logic part of it on the Drupal side where you add the role to their account or remove it if it doesn't work. That would be my recommendation. I would start though with contacting or trying to file bugs in the issue queue for that module providing information about what's not working. Well, I'm using the UC Recurring module for Drupal 7 and I guess I'm not storing credit card data, so maybe that's where the error is coming from. I'm not sure, it's like really over my head, so I don't know, but I mean, I've not used UC Recurring for Drupal 7, but if it's anything, I imagine it's a lot like the version for Drupal 6, they have the same name in fact, and so what that module does is use a service like Authorize.net, so I assume then you have like an Authorize.net account or something like that. You also have to have the Customer Information Manager or ARB stuff set up in Authorize.net. It works in six with those, so it may just be a settings problem too, but again, talking to the people that are more familiar with the code and maintaining the module would be probably your best bet there as a starting point, thanks. Yeah. I actually had a question. You mentioned part of when you cleanse the database information, like removing customer information that you would change the payment gateway you use. My experience is that the Recurring module in Drupal 6 actually uses one payment gateway for the entire site and that's like a configuration. So I was just wondering if it was hard for you when you wanted to switch from PayPal to Authorize.net, like do you have now customers who are on boats or like one system in the different media? Yeah, so there's a couple questions there. One of them regarding sanitizing the data and switching to a test gateway, and then the other one being how do we deal with the fact that we switched from PayPal to Authorize.net. Dealing with the test gateway thing, it's actually not that complicated. UberCart allows you to have multiple payment gateways enabled at the same time. You just set one as the default and whichever one is the default is the one that actually gets used. But you can have more than one turned on at any time. But what we do is we actually have a custom Drush script that pulls data from our live site and when it does that, I don't remember the table name off the top of my head, but there's a table that stores a transaction and the gateway that was used for that transaction and we just update that column and set every value in that column to be, in UberCart, it's test underscore gateway is the test gateway. And so that's how that works. And then in that whole settings override process, since those are just variables in the variables table that says what gateway is being used, we set that in our settings.php. Okay. With the PayPal and Authorize.net thing, our service now actually has some subscribers on both. We're over time getting away from PayPal as those people cancel their accounts, but we still have a handful of them that are on PayPal and it works because you can have multiple gateways enabled. When somebody signs up for a new account, they all go to Authorize.net. We don't allow signing up for a new account with PayPal, but we have maintained those old ones because that was the easiest solution for us. And also when you store information, you talked about making reports with views, but you have to store some information. Do you store that inside the order and then pull that from views? Because I think it's a little harder sometimes to hold that order information. I usually log in of all that information that's going on and transactional stuff. I tend to write a separate module that listens for hooks that are fired by either Commerce or UberCart when things happen and I record that thing happening. And generally I do it in my own table and just reference it back to the transaction, but I like to try to keep it as separate as possible and then just expose that to views. Thanks. Yeah, you bet. Yeah, have you found any services that kind of work really well in a mix and match type situation where you kind of want a payment gateway sometimes, but a lot of the times you're going to end up doing recurring billing and is there any that works kind of better for a both case scenario? So most of your transactions are single one-offs, but then occasionally you do recurring billing or vice versa? Correct. If you're talking about using a full-on service like Charge-A-Fire or Recurly, a lot of them do offer the ability to do single one-off transactions through their service as well. So you can use it primarily for recurring, but then say, oh, I need to charge somebody for the t-shirt that they bought too. Most of those services allow for that in my research in doing so. If you were doing it yourself, then it's just a matter of making sure that your gateway that you're using supports both the one-off transactions and some kind of card store. Yeah. So I'm using a system pretty similar to Drupalize.me with the UC recurring on Drupal 6, and I just ran into an issue where we had to raise prices like last week and I saw on an issue queue that the price was kind of separated from the order, and after I raised prices, the first payment would go through as the raised price, and then the recurring charge would go through as the original price that I had set, and I was wondering if you knew what table or where that was being set. I don't know the table off the top of my head, but I can tell you what it's doing. So the problem is you tried to change the price, and then it worked the first time, but not every time after. Right. The way that the system works is it creates an initial transaction, and that first transaction, it charges you $55 a month, and then it stores that transaction, and every time it recurs, it's actually creating a new transaction based off the first one. So it's not reusing the same order, it's creating a whole new order each time, using the data from the first order. So if the first order that was made for the user's account was $55, it'll always use that. So you need to actually find the original orders for each one, and change the price on that in order for it to... So these are new orders, actually. On new orders? Yeah, so the new order it came through at the higher price, and then the recurring price was set at the original. I don't have off the top of my head solution, but grab me afterwards, and I would be happy to brainstorm with you. Thanks. Yeah, you bet. Awesome, that's it, it's $6.01. If you guys could take a minute to fill out the survey for the session, that would be awesome. Otherwise, thanks for coming.


Amongst the largest and oldest of all diasporas, Indians have been venturing out for centuries. Yet they remain tied to the land of their forefathers. It was great to know a little bit about the Indian culture and how people there live. And so, rediscovering their roots is important, for to know themselves, they have to know India. India, where yesterday, today and tomorrow exist right here, right now. It is into this land that no India participants come. The idea was that you would bring them in and give them an opportunity to see India for the first time in their lives and also feel India and absorb India in a manner more than just a tourist. The latest crop of no India participants come from across the seven seas. I'm from the United States, from South Africa, from the Fiji Island, from France, from Trinidad to Bego, from Suriname, from Lima, Peru. See you soon, India! New Delhi, the capital city that's also the heart of India. Here, the participants are smack dab in the middle of 21st century India. Their first stop, New Delhi's pride and joy, the metro. I've been on the metro in New York and in London and this was by far the best experience we had travelling on their trains. An experience that owes much to the metro spiritualism based management style, a uniquely Indian melange of technology and piety. After all, we're home to all the world's great religions. So we're better to study our composite culture than the Jama Masjid. It's about this mosque and I'm so glad that I finally got to see it. A new day brings with it new destinations and the team gets all set to cross into the land of the five rivers. One of India's most ancient cities, Amritsa, encompasses in itself the most sacred of Sikh shrines, the Golden Temple or Harmandar Sahib. As the peace of Harmandar Sahib seeps into the participants, they're able to fortify themselves to experience another of Amritsa's memorials. This is where hundreds of men, women and children were killed in cold blood. Fired by patriotism and a flame with passion, everyone is well-primed for the lowering of the flag at dusk, at Vaga Atari, the only border crossing between India and Pakistan. It's a leisurely start to the day with plenty of time to catch up with old friends and new. Today in the fields we saw some sugarcane so it was good for me because it was a new experience. We like Punjab with all water. Chandigarh, famed for its urban planning, this city designed by La Corbusier is a jewel of modern India. The participants whist past its avenues in search of Nekchand's rock garden, made entirely out of scrap. Started in secret, this garden retains its sense of wonder. Just as Ranjit and company celebrate with some completely unexpected camels before heading east to Uttar Pradesh, home to Fatehpur Sikri, the dream capital of Emperor Akbar. With its sumptuous public buildings, grand terraces and expansive avenues, Fatehpur Sikri transports the no India participants to the court of the Mughals. But they've seen nothing yet. Until they experience Emperor Shah Jahan's ethereal monument to love, the Taj Mahal. Consider the epitome of the Mughal style, the Taj Mahal combines Islamic and Hindu architecture to create perfection. Immersed in the sumptuous era of the emperors, it takes a readjustment to appreciate the ascetic age of independence at a museum that honours the father of the nation, Mahatma Gandhi. The deep sense of peace at the Gandhi ashram is only reinforced as the participants immerse themselves in yoga at the Aurobindo ashram. I thought the ashram was really an amazing place and the yoga practice really relaxing. Yoga is perhaps the most familiar Indian export to the world but catching up fast is a much more modern export. Bollywood, the Kingdom of Dreams where the Bollywood bug bites. Kingdom of Dreams is exactly as it says, Kingdom of Dreams. This place is extremely astounding. It's something that you see in Bollywood movies. From the glitz and glamour of Bollywood to the rarefied heights of India's highest office, a chance to meet the head of state, India's first woman president Pratibha Devi Singh Patil. I welcome all of you. You'll be the ambassadors of India and your this visit will bind your country with India. The ceremonial aspects of the trip, largely over, it's time to kick back and indulge in the truly fun part of a holiday. Souvenir shopping in Delhi's world famous bazaar. With their magical three weeks in India nearly at an end, it's time to look back. I really like it to go to Punjab and to see my roots. When I came to India, I liked it and now I love it. Sad though they are at leaving, there is also comfort in knowing they're part of a larger family that transcends nations, the diaspora of India. Learning about India together has shown that we have similarities and differences but together we are one.


Fragrance of geometry is a new branch of mathematics that describes the world as it is, rather than acting as though it's made of straight lines and cubes. Nearly everything in the human body is fractal. Everything from your nervous system, to your breathing system, to your blood supply system, to the arrangement of skin cells on the surface of the body. These things are always fractal. Why? Because they are developed by repeating patterns that evolve and grow tree-like structures or branched structures. The most important thing that's happened over the last 30 years is the transition from thinking about smooth spheres, smooth processes that have been very powerful in science, to thinking about rough processes and non-differentiable and broken processes. We have the mathematical tools to start to describe these rough objects. The formula for this teapot is no more complicated than a formula for something like a sphere. It looks rough and sort of random, but it's very precise. Every single wrinkle and dinkle in it is all part of the same fractal deformation, represented by a tiny formula. It opens up a whole new way of analyzing signals, for example, to do with signals that the body gives out. Basic idea is the following. Here is a complicated signal, such as a radio signal or my voice, and you can break it apart into its respective sum of components. When you look at it very closely, it becomes boring. It looks like a little bit of straight line. This one is very complicated. It comes out of your brain, and if you look at it very closely, well, it still looks like very complicated. Fractal Fourier, exciting advance. So you're able to not just model the boring old stuff, you can model the new stuff with exactly the same types of precision and error estimates. Vierstraß, 1878, Berlin. He came up with a function that was a nightmare to everyone. It's called the Vierstraß Nowhere Differentiable Function, and guess what it looks like? Well, it turns out that if you take a collection of Vierstraß functions with different scalings, you can take them and add them up just like we added up those ones to make arbitrary signals. That have the same complexity. It's just a good piece of mathematics as the formula for a sphere and the work of Euclid. There is now a modern geometry that handles beaches and seas and skies and clouds. ANU is the centre for the mathematics behind the description of these new structures. It's time to start thinking about fractals and stop thinking about spheres.


3 ways to get rid of 97% of your problems According to American author and entrepreneur T. Harve Ecker, the size of the problem is never the issue. What matters is the size of you.  What's solving and overcoming them is our responsibility, especially if we want to be happy. As defined in Business Dictionary, a problem is a perceived gap between the existing state and a desired state, or deviation from the norm, standard, or status quo. However, if you want your life to change for the better, problems are necessary. Norman Vincent Pail, an American minister and author, once said, Problems are to the mind what exercise is to the muscles. They toughen and make you strong. You see, now that we have established that problems are a big part of life and they help you become a better person, how best can a person handle problems considering that there are different kinds of problems in the whole wide world?  You do not blame them on your mother, the ecology, or the president. You realize that you control your destiny. In this video, I'll share with you three ways of getting rid of 97% of your problems. This I believe will help you become a successful person. If you're new here, consider subscribing so that you won't miss other interesting videos like this. 1. Identify a problem and choose your reaction. You see, there are two categories of problems in life, the ones that you have control over and the ones that you don't. For instance, say you run out of some groceries at home, or your clothes no longer fit. You can easily solve those problems. You can consider going to the nearest store to pick up some items. As for the issues with your clothes, you can either decide to get new ones or lose some weight. Whichever option you opt for, you can fix it. On the other hand, say you don't like the condition of the weather or someone does something to hurt you, or there is a situation of a delayed flight. There's little or nothing you can do in such situations to change things. So what do you do? In the second category, where you do not have control over the situation, how you respond not react to the problem is the first step to solving the problem. According to Captain Jack Sparrow, the problem is not the problem, the problem is your attitude about the problem. When it is clear that you have no control over the problem, choose the path of positivity. For instance, say your flight was cancelled, you can either lose your temper and react in a manner you'll end up regretting, or you could accept the situation as it is and look for ways to enjoy the best of it. It's all up to you. In the end, you have no control over it. When you get pissed over something that you cannot influence, it'll make you unhappy. So rather than react to the situation, respond to it positively. 2. Choose the mindset of being bigger than your problem. Remember Ekka's words. The size of the problem is never the issue. What matters is the size of you. Remember some of the things that you complained of when you were much younger. Well, why are they no longer a bother to you? Or do they cease to exist anymore, just because you're older? The truth is that you have outgrown them, hence you no longer consider them a problem. When you understand the size of your problem is the size of you, you'll begin to approach your problems from a different perspective, a better perspective that will help you overcome them easily. According to T. Harvecker, the secret of success is not to try to avoid or get rid of or shrink from your problems. The secret is to grow yourself so that you are bigger than any problem. Grow yourself a bit bigger than your problems and approach it from that standpoint. And you'll see that the things that used to seem like so much of a big deal to you will no longer feel that way.  So focus on yourself, not the problem. Constantly remind yourself that you are bigger than your problems. You can even say it out loud. Also, the next time you come across a disturbing situation that wants to get you pissed, quietly ask yourself. Is this the size of me? Am I that small of a person? Once you do that, you'll be able to overcome that challenge. 3. Break the problem into smaller bits and find a solution for itch. Once you've identified what a problem is and you've developed your mindset to see yourself as bigger than the problem, you can then proceed to solve it by breaking it into tiny bits. When you break problems into tiny bits, you won't feel overwhelmed or anxious as you try to unravel each piece of the puzzle. For instance, say you need to buy a new car for yourself or to help your business so that you can deliver faster to your clients. Instead of feeling so overwhelmed, thinking about how to raise the money, you can decide to start cutting a portion of your paycheck at the end of the month within a specific period of time. You'll find out that doing it that way will help you feel better and less bothered about how to achieve that goal. When you are less bothered, you'll feel completely happy with the situation. So, you see, solving a problem isn't as hard as people often paint it to be as long as you follow the rules. Identify and accept the problem. Outgrow the problem. Divide it into smaller bits to find a solution. Thank you very much for watching our videos. We'll like to give you another interesting video for you to enjoy next, but before then, our team will be very happy if you can like this video and share it with your friends on social media. If you're new here, don't forget to subscribe so you won't miss other interesting videos like this. Look at your screen now to see two other videos we handpicked for you to enjoy next. We love you.


Hey everyone Shabear 1000 here. Merry Christmas Feliz Navidad. It's that time of year again Today we're going to be fixing this 12 volt cooler. I've got here. I just cleaned it up Washed it all out and everything. This is what we got to do. We got to put We got to put an end on this so we're gonna fix this we'll explain something to you about this cooler here in just a second Now this was her dad's cooler and You know, of course when he passed away we got it. So we've had it a couple years I've used it a couple times when I first tried it out. I tried it out in the garage and I Left a bottle of water in there overnight and it froze and But I got a look at this today We've used it a couple times camping and I always thought it was weird that there wasn't a Plug in it for ice, you know after ice melts and I thought because normally Just a regular cooler will have that in case you don't want to use the power And then I got to looking at it today and I thought Well, that's a strange place for the Coleman mark. Usually they're right across here So I pulled the lead off to clean it out real good And I got the looking in here. What are these for? Well, this is a daggone refrigerator Cool, but anyway We're gonna put an end on it and we're gonna try to We're gonna see if this this still works Because I know it was out in the water for a while. It was outside Because we just thought it was a regular cooler except for you know Just uh Like a heat sink So I thought, you know, it's not a big deal and it had water in it and one time I had ice in it and it melted and It was full of water. So I don't know if the motor's still even any good or not or if it works Like I said, and another thing was there's really no handles. I thought it's peculiar I never did never dawned on me. That's a little refrigerator. So let's get it in the house Let's try to put Put that end on here. I have an extra end and then we'll get a plugged into something And we'll let it run for a while. I'll put a temperature thing inside there. We'll let it run for a while See if it still works. Okay guys, so I'm probably gonna have to solder these wires so I got my old soldering iron here and Some cutting implements wire strippers here These things are super old I did that set my soldering gun on it one day or my soldering iron or something Anyway, okay like first There's a way you can tell Well, actually you can tell this thing's been kind of chewed up by an animal because it sat outside for a while See those are chew marks probably a squirrel We don't see many mice around here because we do have snakes. How you can tell which one is Positive and which one's negative This one is positive. Well, you see the red on it, but if that wasn't on there, how can you tell? Well? On one side, there's a ribbed side. I don't know if you can see them ribs on there or not See the ribs There's lines on the other side you either have some writing see the writing There's numbers and stuff on there or a white line or a white dotted line. That'll be your power So anyway, let's open this up Hopefully this will this one will work. If not, I have another one. This is just a car charging adapter that I Don't use I've never used it. I don't use these things because I had a a Our light one time Had one of these and I plugged it into the car and it Got hot and melted my or light so Anyway, so we took a screw out. There's a little light here. I'm not gonna worry about that light See what's inside of here. I was gonna say there should be a fuse There is a fuse in these so guys if you have one of these something like this It's not working sometimes not all the time, but a lot of times there'll be an end on here You can screw off and check that fuse But you also have to wonder If it's a blown fuse what caused it right what caused it to blow This comes apart so I Don't know if this screws on or just pops on Okay, that just that one just pops on now. It should be able to take it apart. There we go There's the light so we've got Negative side is this And positive side will be the center So what I'm probably going to do I may leave the light on there. I'm just going to unsolder it from here and unsolder it from there But in the meantime, let's go ahead Let's get this two mark out of here I have checked the rest of the cord and it seems to be fine So let's cut that that part out of it that spot out make them about the same size I may have to put a bigger fuse in there I'm not sure off to look to see what that is the fuse is good, but I may have to put a bigger fuse in it I'll probably do that anyway But so let's go ahead and trim these wires back. Okay. I see it and I'm not going to go real far because I'm just pretty much Just going to solder that onto there So I need to get don't lose that spring either. So what I need to do is I have to get my soldering iron hot and Also, I'm gonna figure out how this goes So anyway, let me get my soldering iron plugged in let it get warmed up and I'll tin it and We'll go ahead and I'll keep this in though the end of this is still good then I'll go ahead and Get that soldered off of there So let me get this plugged in go pick a piece of rubber up off the floor And I'll be right back with you guys stick around Okay, guys, so I'm gonna zoom you in a little bit, but again the lightings Not that great here. So First thing I'm going to do so I'm going to unsolder this I'm not going to leave the light in there I don't need that light. So when I plug it in If the motor kicks on it's working if it don't it's not because there's no switch on that thing. So All right now I want to solder to that bottom piece there That's for a second. I say I know I say this every time but One of these days I'm going to get me a soldering station. I'm going to try to tin these wires I've already put Flux on them Just got some old paste there. It seems to work. Okay because these soldering irons they They heat up and then cool down heat up and then cool down so they can't overheat But it takes them so long especially these older ones I've got a brand new actual soldering gun in there that monkey bought for me for christmas one year I have never used it still in the plastic. We'll get it out sometime and check it out. I think it's a weller I'm not sure but When I was hinting around I needed a soldering station. She just thought I meant a soldering gun So They look okay. All right now. This is going to go See this goes like this So I'm going to want to solder that It's going to come up through I don't want to solder this one Sorry guys positive wire onto there You get some helping hands too What that is guys, it's not a joke. It's actually They got little clamps and stuff. Um, I could probably make a set Because I got some of those little clamps those alligator clips or whatever Um, I could probably make a set of them Let's see if I can Make sure I get the right one because I did that once if you guys remember I put the wrong wire on I forget what that was on. I know you guys can't see too much Sometimes if you do that it gets it hot again for a second Plus I'm using metal here, but I I really have no choice To hold this thing. I think it's over a little bit too far. Maybe not Let's just go ahead and fix it now. There we go. There's where I want it. Sorry guys I Made a thing to where I could put my camera right over Right over in front of me but It's kind of this camera here is kind of too heavy for it Because when I build it I build it for old blue And old blue is a light camera Okay, so there's that Now We're going to unsolder this piece Like I said, I'll save this end. I can you know always using Well, I can save that light too because I know the light works Because I did plug it in to check it Okay, let me get this tinned up right here on the corner flux on there Now we're going to put this wire on here Well, let me see. I need to figure out a way To hold this up in the air That's not going to work To try to keep it away from that metal because that metal will take my heat away So hopefully this will work all right I mean I could always put You know those gator clips on the end of here if I wanted and just put it onto a regular battery You know just clip it onto your battery in your car or truck, but our battery And the suv Is underneath the floorboard Now there is a place out under in the engine compartment that That you can use for if you have to You know you get a jump starter you're giving someone a jump start But I don't like using that so I think But the reason but this it has a power source in the back too Like not a cigarette lighter, but you know the power source. It looks like a cigarette lighter Come on It um It's got one of those in the back You know that you can plug in your charger your phone charger or whatever And being that the cooler is always out back there Wherever we're going to be That would be That's why I want to use this Hate the soldering gun. Well soldering iron. It's not a gun That's not even Getting hot enough to melt solder Let's see here A new tip would probably help but they still don't work that great brand new out of the box Hi, let me get this hot warmed up first All right guys, so I thought I turned you on but apparently I didn't hit the button hard enough So there's that so let's go ahead Well, let me unplug this And I'm going to move this out of the way Because if not, I will burn myself or burn something else up. Hang on. Okay, I'm back All right, so let's go ahead Get these in here where they're supposed to be like that This I can't see nothing. I'm sure you guys can't either. Remember if that went like that Like this, but I'm going to put it like that I'm getting somewhere Just gotta make sure them Nothing's touching here Okay, it doesn't look like it Well, no once we plug it into something Twisting on me there we go All right now Let's put our screw back in here One side Well, usually one side's around one side's octagon or whatever, but this side is either or Jeez things fight me all the way Get out of there This is crazy Well, that's strange Put it in there with my fingers. Let's try this way Good Man That was a pain This back on there Put our spring down inside there Make sure it's springy Fish Now we're going to go outside Those tree lights kicked. There's all the outside lights kicking on too Okay, so let's go outside and plug it in. I've got a battery um outside That I hooked up just in case monkey wasn't back in time and I should probably try it with that anyway So I'm not you know blowing fuses in the truck. So let's go outside. Okay guys, so I used this when I was trying out my uh FM transmitter. So let's plug this in I can't tell if the fan's turning on. Hang on. Let me check this out All right guys, I just had a dirty connection there, but I know you can't see it, but maybe in here She's running. Okay. Now. Let me go get my thermometer Oh, yeah, I can feel that And we'll which was this open and we'll put it in here and we'll see how cold it gets Okay, so There's the temperature We've got our probe here That's about what the temperature is inside the garage Because I just took it out of the garage. So let's open this up I won't put our probe inside there All right now it is Time is it 6 16 All right, let's come back In an hour That's staying right about 65.3 So let's come back in an hour And see if that has worked See if that drop that number drops. Okay guys, we're 6 30 so it's been 14 minutes 38.3 38.4 So it's dropping 38.2 And so yeah, once you get some stuff in there You leave that thing plugged in On your way to the campground and why you're setting up and stuff This thing will be fine There's 38 degrees 37 37.9 All right, let's give it another say 10 more minutes and we'll see what it's at Let's see what it's at Okay guys, it's been about 10 minutes Covering about 23 degrees and I remember when you had that full of stuff. It's not going to freeze Um, but like I said, I had I did have a tube of water in there just a bottle of water 16 ounce bottle of water One time overnight. It was over 24 hours. It did freeze. It didn't freeze solid, but it froze into some ice So if you got that full of pop beer or whatever food It's not going to freeze it at that because it's going to take more to cool it off But yeah, there you go Yeah, we fixed it It's working Awesome Cool Yeah, I don't think it'll get much colder than that It might if I let it sit all night long without anything in it, but I know for a fact though that once that's full, you know, it's going to take more to cool everything off so You know, you put your popper beer in there If it's already cold, it's just going to stay cold. It's not going to freeze like a six pack of pop overnight It's not going to freeze your food, but it will keep it cool. So there we go. All right guys. Thanks for watching. I appreciate it I'm going to say she bear the myth the man legend. I'm gone for now Uh, monkey's mom didn't get out of the hospital yesterday but um Because she put in like an appeal or whatever and But they denied it. So they're going to make her come home tomorrow Or she might go into rehab. So All right guys. Anyway, there we go Thanks for watching. I appreciate it. Happy holidays everyone 21.7 now Um, we'll see you guys in the next one. Bye. Bye guys. Take care. Stay safe. Have a good one


What's everybody jz ever jazby's case breaks calm 2020 peony penini prison draft picks football four box hobby break number 17 Sold out around in college football teams number 18 is already uploaded on our website So I'm just showing you guys this remember this is number 17 number 18 is that 23 spots up So all full spots left and again 23 total spots Everybody gets three random teams from the list below just remember no veteran base card ship and from Alabama all the way down to Wyoming Cowboys So here you go Roll the dice And it's a three-in-a-one or two-in-a-one three times so from Mark all the way down to Renee one two and three three times Teams down one Two Three three times a zoo Down to Minnesota Golden Gophers Actually, let me Was on a 12 that's funny Tyler. That's actually a good strategy. All right, guys So let me show you guys the way it's going down. You'll be in my hands very soon Down to Aaron with the Golden Gophers and I'm gonna quickly alphabetize by your customer names I'm gonna say every single team you have but Show you guys and I'll share this Google Doc with you guys So Aaron you got UCLA Texas in there. You got Tennessee, Ohio, Oklahoma, Auburn, SMU and a couple combo teams Andy Mizzou Texas Tech and one combo team Chad Oregon State NC State and a combo team Dan and there you got TCU Michigan State, Colorado, Alabama, Ohio State Florida Oklahoma State and a couple combo teams here you go Jigar with Wyoming Ole Miss, Nebraska Joey You got Syracuse Iowa Clemson Arizona State, Arkansas and a couple one combo team. Sorry Mark Baylor Bears USC Miami Temple, Washington, Michigan, Georgia and two combo teams Mark N with Notre Dame, Virginia one combo team Matthew Look at that. What a great randomizer with just one spot LSU, Oregon and Stanford, Cardone What a deporter Mike with a couple combo teams including Kentucky Phillip, Utah, Utah, Utah, Utah, Texas A&M and a combo team. Renee, your last-bound module got your combo team Florida State and Cal Golden Bears Ramon Ramon, sorry, I want to say Ramon, with Washington State, South Carolina and Penn State and Sandy, Boise State, Boston and a combo team So I'll share this with you guys so that way you guys can view this page just in case You forget your teams or whatnot. So this would be list for Drive so there's that list and I'll give you guys that 30 seconds if you guys want to trade You guys can view that there Eric gets the new one number 18 All right guys trade window close-in Doesn't look like anybody else is gonna grab or try to propose a trade I'm not sure Curtis. I thought we had another one or maybe we just had one. I don't know But if we do I'm sure we'll post it up soon. We'll get some more printing paper really quick guys Sad news. Let's print it and let's rip it. There you go Fresh case and this case is only for group breaks. So we save that one. So I have at least four of these breaks. I Believe they do Tyler. I don't think we have any But you can check jaspys.com, but I believe they do All right. So again, like we usually have been the top four here. Yes. See a little stream will be one break This will be one break This will be one break. All right. No tough to see but there's one two three four I'm gonna roll a die and again If I roll anything but oh one through four, we'll just redo it six redo it again one What this one right here? And just to show you guys that it's from the same case these boxes You guys know it's from the same case We'll put these away, and I'm sure we'll probably do another one later today or something All right. Good luck. Yeah, that's true. And again if it hasn't been scanned in, you know, a couple days That just only believes me to say is that either one they're not scanning them for some reason like they usually do Regort or that means that it is stuck at one of those facilities that is closed And again, they're trying their best to go and get those packages and move into a different facility Like I said, we've been getting all these notifications from them saying just be patient Isaiah Hodges, Oregon State Again, I know it's tough. Some people do have some nice hits waiting for them And some packages may get there quickly like normal and some of them won't I can only imagine how many Facilities there are across the United States and how many packages aren't each one Millions and millions and millions of them Cam Acres to 99, Florida State And Cam Acres autograph now. There you go. Joe Burles rookie AJ Dilla Sweet next one. I know my mom did it for 30 plus years she was a male carrier and She had just retired last year in October, so She just got out of it. Although she keeps on telling me that she she'd think it was fun. I'm like, it's not fun Chase young. I was like, they're overworking them like crazy and to 199 Isaiah Simmons Clemson with that one Joey Barry Sanders Oklahoma State three out of 49. We got to 149 Brian Edwards and Kelly Bryant Mizzou Tagus Andy with that one Rebel you got to look at those emails man. Also, if you follow us on social media Don't all those automated emails go to our social media accounts. So they're all connected Sorry about that rebel. I didn't I didn't even know those one until I got here, but Jared Pinkney we got Adam Troutman date Henry Ruggs, I know exactly we don't send him all that often, but what we do Gotta look up for a discount code. I don't even know what did that end already rebel? I'm sorry if it did Again little perks for this every once in a while Give a little deals Of course with break credits and stuff like that Terry Bradshaw Well, I did a couple of personals that they bought yesterday So I just squeezed them in early, but I Mean unless we're totally dead I won't do it until later tonight But if kind of dies down after a break or two then I can squeeze in some of them. So CD allows it to 99 Hodges for Oregon State. So I mean if you want to get one When the time is right, I can do it for you. If not, it'll be towards the end of the night But Sunday's Monday's with me here more for the website, but I can do personals every once in a while John Elwin Nate Stanley and tonight I'm KJ Hill. That's a nice one The Ohio State going to Dan Henry Rooks Austin Echler Cam Akers 75 Terrell Lewis Alabama CD lab two more packs and then we're halfway through and I'm really excited for this water see your class this year It's so so deep as well as a quarterback class It's crazy Jigabeeson and other Kelly Bryant autograph To 149 another one from zoo Tom Brady 34 out of one 99 you got Steven Montes and Trout no effort there for date Dan you do or then does our Joe that is a combo team with Duke Blue Devils and our these boxes haven't had a handful of duplicates, but We'll see what the rest of these boxes look like. I mean, I guess I've seen some fireboxes out of here Let me see some boxes like this with a lot of duplicates. Oh, yeah, Joe. If you want to see yours you have Actually, here's the spreadsheet first of all. Thank you. God Yeah, Arkansas Red Wolves and Liberty Flames. It was your combo team. There you go. There's a list again. Let's you guys can see it No worries, man No worries. All right guys halfway through. Let's get some fireboxes now sequan Barclay 92 out of 299 for Penn State Claypool or sorry to 49 Tyler Johnson for Minnesota We got Chase Claypool for Notre Dame Mark There you go. Little Notre Dame for you. I do not decons. Uh, if it's not on cardboard connection or a group break checklist then It's probably not out just yet, but I would think it's out already, right? Oh, yeah, that's on there. Here you go. I like to go cardboard connection more official, but group break checklist does help you out with Ooh to a tag below Silver Alabama going to Dan. There you go And Donovan people's Jones from Michigan Mark with that one Sony Michelle How about DeAndre Swift to 1.99 and Justin Strad Strad Wake Forest David Montgomery JK Dobbins, and we got to 1.49 and James Morgan. I believe that's the FIU quarterback Marlon Mack Donovan people's and Colby Parkinson Stanford Cardinal. All right guys last boxes again. We have more of these on the website This box in the remaining boxes can be fire Tom Brady Crusade 1.13 out of 2.49 Justin Jefferson LSU Tagus Kishan Vaughn 2.99 I believe that's a Vanderbilt And Tua Tagvaloa Patty Mahomes Crusade Texas Tech Red Raiders DeAndre Swift 2.99 from Georgia and Courtney Davis Texas A&M. All right, three more packs Rhett Favre Kyler Murray to 2.99 OU Terrell Lewis Wisconsin Zach Bonn Wisconsin Badges There you go All right, two more packs We got DK McHalf for Ole Miss out of 1.99 Jacob Eason four out of 30 Washington Huskies and Charlie Warner for Georgia Mark with that one Jordan Love, Jacob Eason All right guys and the last pack again.  That was the break again Here are the autographs not the greatest autographs. We could have got out of here But again, this is just one fourth of the case The rest of the case is hiding On the website number 17 or 18 as are on the website guys Let's get the next one. I have a feeling that we're gonna get those going really really quickly But still got some nice stuff though. Appreciate it guys. Jasper's case breaks.com