Gwlad yn i, ddigon i'n meddwl, roedd y gallwn i'n meddwl y cwrwch i'n meddwl ar gyfer i'r pryd. Roedd y cwrwch i'n meddwl am ei, roedd y cwrwch i'n meddwl. Yn y pethau, mae'r ddigon i'r sphysgwr, ac roedd angen yn ddigon i'r sprwmp, nad oedd yn gweithio'r holl yn ei beth, ar y cwrwch, yn ei ddigon, a'r rai'r ddigon i'r grannu, yn ei ddigon i'r sprwmp, a'r rai'r ddigon i'r ddigon i'r brwynt, a dyna'n ymlaesol. O'r trafodeg 那. Trafodeg is one of those things that I guess we're all kind of guilty of ignoring early on. It's only kind of when the spikes start happening, when the proverbial hits the fan, stuff starts getting slower and slower and customers grumbled more and more, and then you kind of think, I probably need to like look at that I guess. There are lots of different ways we can scale. So all this talk really does is it looks at some of the basic approaches Some of the things that perhaps you could apply to an existing application, not just things to think about the next time you do it. My name is Liam Wiltshire and it says there. No, it doesn't. I love it when this works. You love it when a plan comes together, right? Hello there. My name is Liam Wiltshire, as it says there.  You've never heard of us. I haven't heard of us four months ago. We basically do in-game! commerce platforms for sandbox games like the one that doesn't work. There we go. That's fine. It's minecraft if you don't know. Of course we have to have at least onecross reference. This is the only one, make the most of it now. Scaling is a massive topic. Beth rydw i wneud o'r boeth bwysig, i'w fwy o fyng iddiadau y llyfr, y teithio, yn podcasio, a bydd o fyddeithas. Felly, mae'n ddysgu'r dyfodol yn ddefnyddio'n ddweud. Felly, mae'n ddysgu'r ddweud yng nghymru o'r ddylch chi'n mynd i ymddangosiaeth, mae'n ddweud yng Nghymru. Yn fy nghymru, mae'n ddweud yng nghymru i'w rhai tan iawn i'r ddechrau. Felly, rydych chi'n gweithio Why we need to scale in the first place? What are the reasons that you're going to be doing this? Often, like I said, it's because you're already having problems. So we'll look at some of the things that you could do today. The stuff that you can do to buy you some time to then do the bigger things, I guess. A lot of the stuff we're going to look at is stuff that we at TEDx have done on our existing platform. But also some things are things that we're doing on the new product that we're currently building. Things that we're going to do better the next time around. So, because a lot of the examples are based on stuff that we're doing at TEDx, I thought it would be useful just to give you a vague overview of what our platform looks like. This isn't talking about what kind of databases we have or anything like that. This is purely what stuff, what things make up our platform. So it starts off nice and simple. We have an admin panel. It's written in Laravel. All of two people log into it. It talks to a database. Great. Fine. Then we have our customer control panel. Now, this obviously gets a lot of use because all of our customers log in and use it. It does all the customer reporting. It's where customers go to set up their products, set up their categories, integrate their servers, whatever else. So it's not just pulling data in from the database, but we use some third party services such as Keen to do reporting. But again, it's in Laravel. It's fine. Then it gets interesting. Every single customer has one or more web stores. Some customers only have one and that's it, and they've only got one server. Great. Some customers have lots and lots and lots of web stores. Each web store is unique to that customer because obviously they have their own products and they have their own categories. They have their own content and on the paid plans, they can also build their own templates and themes and whatever else. At the moment, we have just under half a million web stores and then it gets even more fun. Every web store has at least one Minecraft server attached to it. A lot of them only have one, but again, some web stores might have multiple Minecraft servers if they're running clusters and whatever else. All these servers phone home at different intervals depending on the package they're on. Some of them phone home every 10 minutes up to enterprise that phones home every minute. Any packages that have been bought, the commands, then get pushed out as part of that phone home process to be executed on the server. On top of that, you can also buy in-game, so we've got these web stores, but as I said before, you can buy all the packages in-game as well. Whenever someone types the slash buy command within Minecraft, it then has to come and fetch the package list and the categories and everything else as well. That gets interesting. We have somewhere in the reach about 550,000 Minecraft servers connecting at the moment, so, yeah, it's fun. With all that stuff, what are we looking at in terms of traffic? It's not huge, it's growing, but it's enough that it's caused us problems, I guess. On an average day, we'll serve around about half a million requests an hour. Obviously, a lot of our customers are in America, so our late evening early morning, often the traffic's a little bit higher and then during the day our time, it tends to be a little bit lower, but, yeah, on an average day, it's somewhere like half a million. We do get regular spikes, which can be three, four, sometimes five times the traffic. Often that's around Black Friday side Monday, or when an enterprise customer launches a new product and doesn't tell us, which happens more or less every week. Also, and this is one that surprised me, it wasn't the biggest spike, but just the fact that it happened, I wasn't expecting it, Christmas Day. At one point on Christmas Day, we served 1.2 million requests in an hour, and one of our customers made $200,000 on Christmas Day. I'm in the wrong industry. So, that's kind of our normal traffic and then on top of that, something that we've noticed, which is interesting, is that we have this kind of continual level of a, I call it a DOS attack, it's not really because it doesn't work. But there's this anywhere between kind of 60,000 to 100,000 requests each hour, just junk requests, people just firing stuff at us basically. So, we list it in our metrics as a DOS attack. The fact it's not denying service means it's kind of not, but they try, bless them. So, like I said, the first thing we're going to look at is why do we need to scale? I'm going to be honest, if I didn't need to scale, then I wouldn't do it, because why would you, right? The reason we have to do it is because we've become successful, because we've built this app, and it's wonderful. And then someone sees it on Twitter, or kind of back when I started in Web Dev, it gets slash dotted. Does that exist anymore? No idea. And then you suddenly get some traffic and stuff starts to build up. And we get to a point where we're handling too much data, we're handling too much traffic. In short, our servers, in some way, shape, or form, are under too much load. This normally becomes apparent in kind of like three stages. So, first of all, you get kind of slight performance. So everyone's requests are being fulfilled. However, they're competing for some resources. They're having to wait for a connection to free up to the day space or whatever else. So everything starts to get a little bit slower. And people are going, well, yeah, I'm getting my request. I'm getting this page I've requested, or I can access the reporting, but it's starting to take a little bit longer. And then you start getting outages. So, for some people, it's still fine. Some people can still get onto their dashboard or get onto their web store or are getting their commands delivered or whatever else. But other people are starting to see some errors. Hopefully, you never get onto the last one because you've realised what's happening by this point. But if it goes unchecked for too long, the servers start thrashing, they run out of RAM and your operating system goes, okay, I'm going to kill the thing that's using the most resources. Goodbye, MySQL. It's not a good place to be when you get a phone call at, you know, 11pm going, everything's gone. Yeah, you ought to be doing that. Let's try and sort it before we get to that point. So, like I said, if you've got to the point where you're starting to see this stuff, you probably need some kind of quick fixes to buy yourself some time, right? So, let's look at some of those first steps. The first thing you can do is what we call separation of concerns. Now, I kind of see some heads nodding anyway, so obviously for a lot of you guys, this probably isn't new. But we've all done, let's be honest, who's built an application before? It's been wonderful, but they've got one server and it's running Apache or Nginx and it's running MySQL and it's running Redis on one box. Yeah. We've all done it. And that's okay. That's a perfectly legitimate way to start. But actually being able to split some of those things up means that, A, you can allocate resources where it's needed. So actually, if you're looking at, well actually my database is struggling, but my web node is fine. You can split onto two, you can throw some more resources at your database, pair back on what's been given to the web node, and again, you've bought yourself a little bit of time. It means that you can scale the parts of the application that actually need it, not just throwing metal at everything because that's always the money. The other thing means that if God forbid something does go down, it doesn't take everything else with it. Before I was working at Tebex, I, for my sins, worked at a Magento shop. I know, I'm sorry.  An exactly 13 minutes passed. So it was 13 minutes passed, four, 13 minutes passed, 30 minutes passed, 12, whatever. And the reason for it, we found after about 10 seconds because it was a very specific time, was that there was a, basically a schedule task, a crime task that ran there every four hours because their backup system kind of gave us all its data in XML and lots of it. So, you know, they had their products, that was fine, but it wouldn't say the colors red, it had a color code. So for something like red, it was fine because the color code was red. You could kind of guess what it was. But they wouldn't tell us when they were creating new ones. So one day you'd get one that, you know, the color code was BLWH, which was black and white. Obviously, right? But it then meant so we had to then fetch the color XML file to work out which ones are which. Obviously we had the ones we knew about, we had stored, but we had to fetch that XML file as well. And sizes and washing instructions and what happens if you give it to your gran on a Tuesday, whatever. So there was a lot of stuff. And it meant that this process was burning through four and a half gig of RAM. Which is why everything else stopped. It wasn't actually like making a problem to the database. It wasn't, you know, crashing the database or anything like that. It was just burning through resources. So, obviously it needed to be optimising. It needed to do a better job of building it, but that was going to take some time. So what did we do as a short-sum solution? We went to Linode. Got a four gig virtual server from Linode that cost like $20 a month or something. Stuck it on there and that ran away happily and the rest of the website was fine. And then it gave us the time. It bought us that time to then do a proper job of fixing that script. And this is the same thing. Of course it doesn't just have to be kind of web and DB and things like that. If you've got different parts to your system. So like I said before, we've got web stores and we've got the admin panel and we've got the control panel. Think about splitting those up. So have a separate platform for your web panel. Have a separate platform for your server command delivery network, whatever. That's not something we can do with our current one, but that is something that we've looked at and gone, yeah, we really should have done that. So that's what we're going to do next time around. Next thing you can look at is optimisation. Now you might argue, oh, well that's optimisation. It's not really scaling. But if you're saying, well scaling is being able to serve more requests, then it kind of is. The thing you need to do here is look at what is using up your resources. So use something like New Relic. New Relic I think is brilliant. If New Relic could pay me to run around the country saying how wonderful it was, I would probably do it. Even if it was naked or something, I don't know. But New Relic is awesome. Your slow query logs in my SQL, they're all good things. Consider what is burning those resources like I said. Because you might have something, you might have a query for example that takes 40 seconds to run. But if you're running it once a day when the server's quiet, yes, you could probably look at it at some point, but it's probably not a problem. But if you've got a query that's taking half a second to run, but you're running it 20 times a second, then you're probably screwed. And that's the one. So that's what, even though the individual time is less, add it all together, that's what's causing the problems. That's what you need to focus your efforts on first. So, yeah, look at that and tackle the common bottlenecks. An interesting kind of example of this is hopefully some of you guys have heard of the N plus one issue. I've seen some nodding heads and some rise smiles. Awesome. So the N plus one issue is something that's common if you're using an RM. Because an RM will say, I've got this model and I want to relate it to this other model and here's the relationship and then it'll give you a way to access that relationship. Which makes life brilliant when you're writing code because you can just do all this stuff and not really have to think about it until you do. So with 16 slides in now, we're actually going to look at some code. It's a PHP conference with code people. Yeah, it's four lines. It's not good. It doesn't get any better from here. So this is a good example where we're grabbing some users which is assuming we've got a table, a user table, and we've got users by company. So there should be a space after the comma. So we're getting the users where the company, presumably an ID or some form of indicator, is five. And we're going to grab that. And then in our view, so this is probably on a separate profile, some front-end genius has gone on. I want to show the name of the department. So I know I can grab the related department and I can grab the name. So far, so good. Except the way that that works is for each user, it's going to do another database query to fetch the department. So if you've got six users, probably not a problem, right? If you've got 1,000 users or 5,000 users, I'm probably going to be knocking on your door with a torch and pitchfork or something. It's a lot of queries. It gets worse. If you remember, I said there are kind of paid plans. They can build their own templates that are in twig. So yeah, this happens. So now someone's gone, well, actually now, I want to know the supervisor of the department of the user. So now you're going to have a query to get the department. Now Eloquy is clever. It'll cache the department. It knows you've got the department. So the second time it doesn't need to do it, but it does need to do another query to get the supervisor. So you've now got 5,000 users. So you did one query to get the user, 5,000 queries to get the departments, and 5,000 queries to get the supervisors. I've just done 10,001 queries. Happy days. Yeah. So what you were doing in Ideal World is you'd go, well, no, I know what these relationships are, and most RRMs will give you a way to equalode them. So you can say, when you get your collection, well, I want you to load the departments, and I want you to load the department supervisors, and then what it'll do is it'll do one query with a load of IDs, and it'll fetch the only one going nice and efficient, except it changes over time. So someone will add a relationship in, and probably not tell you. That happens all the time. Or equally, you had a relationship that you were using, and then someone changes the view so you no longer need it. But you're now still loading that query anyway. So what we did, rather than trying to go through our entire code base and find them all, which would have taken a little while, is we wrote an extension to the eloquent model. And what it basically does is it checks if the model is part of a collection, is a child of a collection, which in itself Laravel doesn't let you do, so I had to add that too. But if it is, if it's part of a collection and you ask for a relationship, rather than just loading that one, it loads it on the whole collection. So, again, it goes back to doing that one query. It was actually fairly straightforward to do. I did it on a flight back from Canada, and there's some extra code to assign it to a collection, so this parent collection isn't in Laravel by default. That's something we added. It checks if it's in there, and if it is in a collection, it actually loads the relationship on the collection, not on the model. Instantly, we cut the number of queries we were running by about 70%. So, we've done some quick fixes, things that you can go away and apply. You've kind of stopped people from trying to hammer your door down. You've bought yourself a little bit of breathing space. Good. So, what can we do now? Because this is really only a temporary fix. You know, there's obviously many more things that we can do to fix it longer term. So, one of the things you're probably going to look at is hardware scaling. Now, hardware scaling can be very straightforward. Honest. It can. It can. But you just need to kind of think about it and plan it out before you kind of dive in with both feet. Again, as we said before, what's the thing that needs to scale? If you've got a web node that looks like it's running slow, is it actually the web node that's running slow? Or is it that it's waiting for the database and it's making it look like it's running slow? You need to, again, go back to something like New Relic and work out where the bottlenecks are. Because if it's actually the DB that's running slow, you can throw as much metal as you want at the web node and it's not going to make a jotted difference. So, just often it will be the database. That tends to be the thing that gives up first. Not always, but most of the time. But just make sure you are scaling the correct thing. So, the first thing we're going to look at is vertical scaling. Now, vertical scaling is really, really easy. Basically, it just means a bigger server. So, you've got a server that's this big. You get a server that's this big. And certainly, if you're using cloud infrastructure, that's normally a case of going, done. Straight forward, yeah? It's pretty much a one-way transaction. If you've scaled up, it is possible to scale down, but you don't really want to be sitting there and going, oh, it's suddenly got busy. Let's scale up again. Oh, it's quiet again. Let's scale down. It's kind of, once you've done it, you're kind of more or less accepting that's it. Unless, I guess, you have like long peaks. So, if you know you're busy throughout November and December, you might then go, well, we'll give it some more resources now and then turn it off for the rest of the year. Okay, maybe you could do that, but if you've got kind of daily peaks and troughs, that's not going to work. A single server is still a point of failure. So, if you've got one web server, it doesn't matter how much resource you've thrown at it, if it goes down, that's it. You've got no redundancy. So, it works, it's a quick fix, but it has a lot of kind of downsides. So, the thing that you're more likely to look at is horizontal scaling. So, what that basically means is rather than making A server bigger, you just have more servers and you spread the load out. That's what we're doing at Tebex. So, you know, we have a horizontal cluster of servers for web, we have a separate horizontal cluster of servers for database, we've got two reddit servers that work in parallel. And yeah, so that's what we do. We're going to look at horizontal scaling of web services first, which means you know there's a brilliant story coming up. But yeah, again, as long as you put a load balancer in, so you can distribute that traffic, scaling out web nodes horizontally is not too difficult. The only thing you might have to consider is if your application is doing things like storing to the file system.   Likewise, if you're storing your sessions on the file system, that doesn't work, so stick them in redis. But apart from that, you can then add and remove nodes, and it makes it redundant, because if you've got, say, three web nodes and one drops off, yes, the other two are going to have to work harder, but it's not just a complete blackout. And they will probably, you know, hopefully they'll carry on, struggling along until you can bring another node back up and all joy is restored. So, it probably looks something like this. Like I said, you've got two load balancers. We just use HA Proxy, but actually, if you're using AWS, in fact, even digitalisation, I've got an email the other day, I think they're now doing managed load balancers. It's only taken half many years. And then, that then distributes the traffic between your nodes, so it'll check that they're healthy and it'll go, there's a request for you, there's a request for you, there's a request for you. And it keeps going and everything is good in the world. Databases. We love databases. Scaling databases to put it nicely is something that's quite hard to do well. When I was doing some research for this talk, there's actually a blog post I came across where the title is, relational DBs are not designed to scale. It's like, great, thanks for that. That's basically, I'm going to go home now then. There are a few ways to go about it. The two common ones, as it says there, are sharding and replication. But whatever you do, there tends to be compromises. As I said, I'm not going into too much detail, so this is a very brief introduction to sharding, mainly because if you don't already know what sharding is and therefore don't have a huge engineering department, you shouldn't be doing it. If you're Google, you're Facebook, or you know, Sam knows whatever else, then great, go ahead and do it. If there's four developers, you're going to break stuff. What sharding basically does is you have many databases, but each database only has some of the data. So you first of all have to say, well, how are we going to split this data up? And people will go, I know. I'll do it by date. So stuff that gets added this year gets added in this database. And the stuff that gets added the next year is added in that database. And based on when they were added, they can do that. And that's fine. But so you've got a customer who joined in 2014. So it's in the 2014 database. But now he's adding some new products in 2017. What database do you put those products in? Because if you put them in the 2017 database, you're then having to do cross database queries to get the user and the products. And they might still have some products that are in a different database. And the categories might be in another database. Then it's not going to work. Or so you go, OK, no. So I'll do it based on the user's ID. So the user ID and all their stuff gets put in that same shard. OK, but what if you've got a user that has or an account that has multiple team members? One of their team members has an ID of 10. So it's in the first partition. Or one of their users has an ID of 4,000. So it's in a later partition. So now you're still doing this. So I think the point I'm making is that coming up with an effective sharding system is really difficult. I've never done it. I wouldn't try to do it. So yeah, it is possible. And if you've exhausted all other options, then pay a consultant a shedload of money and they'll come and do it for you. But yeah, I would stay away from it as much as possible. Replication. Now, this is a bit more straightforward. On replication, every database has a complete copy of all the data. So it means that you can query any of the database instances. It doesn't matter whether it's database A or database Z. And you'll get the same data out of it in theory. When we talk about replication, we normally talk about master slave. So what this means is you have a database that is the master and all the rights get sent to that database. So anytime you're doing an insert or an update or a delete, it gets sent to your master database. Then as those changes are then replicated across your infrastructure to all the slave databases. So they all then get up to date. Normally this happens quickly within 10 milliseconds or so, but not always. We had, I think, at one point, we had a lag of about 40 seconds. It wasn't a good day. What we said meant, that common thing where you do an insert, you get an insert ID back and then you redirect them to slash user slash ID, no data. Because it's now gone to a different node that doesn't have that data and it all falls over. That's obviously work aroundable. That's not even a word. You can get around that by holding that data or caching it or whatever else. So again, there are ways to fix that. You just have to consider those things as you're kind of building your replication in. However, you've probably noticed that you've still only got one master. So you've only got one point that you can write to. If you've got a read heavy application like a Magento Web Store, then it's not a problem. That's not an issue because you're doing mostly reads anyway. But if you've got a write heavy application like we do, that still doesn't really solve your problems.  Yeah, this is going to be good. We did some research. We went, oh, yes, Galera. Yes, that's definitely what we want to do. And what that does is I think it's something that's by Pacona that gives you nearly synchronous replication. There's a 10 and a half. Donald Trump would be proud. Nearly synchronous replication. What it means is that you can insert or do any write command on any database. And it'll get sent across to all the other databases. But you won't get collision so you won't get ID crashes or anything like that. And it's all wonderful. The way it works is a transaction isn't considered closed until the replication is complete. Yeah. So, again, we use HA proxy to balance our nodes. So we literally fired in sequence and went, right, query for you, query for you, query for you. That didn't work so we updated it to go, well, actually, let's look at the one that's the least busy. Query for you, query for you, query for you, and so on. Notice how I used the word had. Yeah. It didn't work very well. Basically, what happened was that our rights was so frequent and we were having some network latency issues that none of the transactions were closing. And then, so what happens is, you know, Galera's quite good. It'll go, well, hang on. I can't guarantee consistency here. So I'm just going to stop all the rights and then all the processes wait because they go, well, I need to write and he goes, well, hang on, wait a minute. Yeah, but I need to write to me. Yeah, but you need to wait. And then it all falls over. So as a temporary solution, we went back to our good old trusty vertical scaling, got the biggest node that DigitalOcean could give us at $320 a month and just threw it at the database. And that got us through. It got us through kind of Black Friday and Cyber Monday, which is not a time when you want your databases to be going down, incidentally. Don't do it then. And that kind of got us through. And now what we've done is we've gone back to that whole kind of having a compromise. We've actually used to move to Amazon Aurora, which is a drop-in replacement for MySQL. So all your queries still work. Everything works exactly the same way. But because they basically got their own custom storage engine and it means that the throughput for rights is massively better. So again, we've gone back to we can only have read replicas, but they are very low latency, because AWS's network tends to be pretty good. But we've got plenty of access throughput on Aurora, and we're not even on their biggest machine, so we're okay for now. By doing that and having that read replica, you still do have that failover. And actually, with AWS, it will do it automatically for you anyway, which is quite nice, because if the master goes down, it will promote one of the slaves, and that becomes the new master. And because we're just pointing it to a load balancer, it knows which one's the master, and it roots all the traffic properly, and everything is good again, as they say. So that's what we've done for databases. On the new product, as I've already said, we're splitting it up anyway. So we're going to have separate databases and a whole separate infrastructure for authentication, a whole separate infrastructure for web stores, for the control panel, for the server delivery. So A, we can scale them all separately, and we'll have a lot more resources anyway, because actually the job of each database will be significantly smaller, which is good. So we've now scaled out. We've gone to our boss and gone right. I need four times the hosting budget, which has gone down like a lead balloon. So what else can we do? Rather than just throwing metal at it, adding for an item, there's got to be something else we can do, right? And there is, caching. Basically, caching makes stuff really fast. That sums it up. What caching effectively does is means you're using less resources because you're not generating stuff, because we all know dynamic content is bad. Just funny, bearing in mind I'm a PHP developer, speaking to everyone in PHP developers, but anytime you can serve static content, that's going to be better. It's going to be faster. So anything that you're doing that requires work, whether that's creating a database, whether that's going to a third-party API. Like I said, we use Keen for reporting, but it means we're still sending stuff across the net, waiting for responses back. Even if it's just as simple as going through a loop, that stuff takes time. So if you've got something where you know actually the end result is going to be the same on more than one occasion, don't bother wasting those resources and wasting that processing power and that processing time and that memory and whatever else. Use a cache and just serve that. Cache all the things. Okay, that's a slight exaggeration, but I had to have all the things in there somewhere, right? So you don't want to cache everything, but it is a case of working on what makes sense to cache. So if you've got something that is only generated once every 24 hours and it's only looked at once every 24 hours, then you probably don't need to cache it. If you know there's a report that the boss looks at once a day and he goes, and he gives him a report and he prints it because you know what, the bosses hate trees, then you may as well just, you know, there's no point caching that, it's a waste. However, if you've got something that, you know, it might change every minute, but in that minute it's being requested 60 times, then generate it once and cache it for a minute and then generate it again in the next minute. That makes sense. How you do your caches entirely up to you, we use Redis, people use Memcache. I mean, to be honest, just writing stuff to a text file is better than having no cache at all. Don't write stuff to a text file. But whatever you do, however you do it, some cache is better than no cache. So we've already kind of touched upon this. How long should we cache stuff for? Unfortunately, I'm going to say it depends. I'm going to sit right on the fence because, you know, I'm British and that's what I'm good at. If you've got stuff that you know doesn't change, if you've got static HTML pages, then cache them forever. In actual fact, just cache it and then when someone makes a change in your CMS, then invalidate the cache. You don't need to set an expiry on it. If it can only change if someone changes it in the admin panel, just cache it for 59 million years and then worry about it when someone makes a change and then invalidate it at that point. If you've got stuff like reporting, yes, it's lovely for reporting's real-time, but if you're pulling stuff over APIs and it's slow, it's not going to happen. We kind of had a conversation with some of our biggest partners and said, well, we're going to give you updated reporting every 15 minutes at a couple of them moment. I went, well, how dare you do this? Well, if you want to pay 10 times as much, then we'll give you real-time reporting. And their answer was, oh, no, no, 15 minutes is fine. So, you know, if you can do real-time, then, you know, do it. That's awesome and your customers will love you and whatever. But if it's a choice between having all your customers leave you when you say, right, now pay us £5,000 a month or giving them an updated statistics every 15 minutes, then that's a value trade-off. Even if you've got something that can only be cached for a minute, if it's being requested more than once, more or less, then it's worth doing. The other thing that you might do is pre-warm your cache. So at the moment, you'll say, right, so we're going to cache, but someone has to hit that webpage first. And try, you know, we all try and make wonderfully optimized code and it's all brilliant and everything loads really quickly. But let's face it, it doesn't always happen. And certainly if you like, let's say you use Magento. Things like the homepage tend to just be really slow anyway. So rather than making the first person pay that price for it not being cached, if you've got quiet periods in the evening, pre-warm your caches. So just, you know, automatically hit those pages so they're sorting cache and then your cache is there. So when an actual person comes to it, they go, here's the cached version, aren't I clever? And they never know. We, like I said, used to use it in my old place when we were doing Magento. So we basically would know what the top 100 products were.  We knew what the top categories were, we'd pre-warm those and we'd pre-warm the homepage. And clients would come to us and go, wow, my touch really quick, won't it? We're good, wouldn't it be like that? Oh, this has been recorded, hasn't it? So caching, that's definitely a good thing. The last kind of thing I want to look at is threat protection. Now, as I kind of mentioned earlier on, we have this kind of ongoing bubble of quasi attacks, failed attacks, overly optimistic attacks, whatever you want to call it. But it means that there can be quite a lot of background noise. They're not necessarily just attacks. You could have, if you've got an API and someone's written a really, really, really horrible client, which we've had people do this where we weren't throttling API requests and they were hitting it 80 times a second each. Rogue crawlers from those dodgy search engines in Russia or whatever else. Whatever that might be, that stuff is just adding to your overheads and you're having to process that. If you don't know it's happening, it means that you're spending resources satisfying this just ongoing stuff. So if we can sort that, we can then basically that, and it might not be a lot, you might have a few thousand or you might have hundreds of thousands or you might have millions. But you can stop all that stuff and then all that resource that was being used up is now available for your actual customers. As I mentioned, rate limiting, consider what's reasonable. In our instance, 80 requests a second was not reasonable. I think it's now down to about 15, I think. But if you've got an API or even if you've got your web application, if you know that no one could possibly be generating 50 requests a second and people are generating 50 requests a second and just block them, however you do that is entirely up to you in an old place. We used to use fail to bands. We used to use these scan a lot and when we saw an IP that was making lots of requests would stick it in IP tables. That works. If you want to use something like Cloudflack, then use that. Sometimes you have to do it in a bit of a piecemeal way. So, for example, if you've got an API, you might have one piece of the API that you know people shouldn't be hitting more than once every 10 minutes. So, you probably wouldn't rate limit to once every 10 minutes but you can be a lot more aggressive on the rate limiting than something you know people need to hit every minute. Or in our case, the fact that different plans have different numbers of refreshes so we actually have different rate limits depending on how much money you give us. As I said, Cloudflack, not only is it good for stopping a lot of those DDoSs or layer 7s or even infrastructure attacks because they just deal with all that stuff at the edge. It also will cache static pages, images, provides a CDN. So, it will give you a lot of protection against different things. They share the information so if there's a particular profile of a type of attack or an attack vector that's being used against lots of their customers, they will automatically block that against anyone. So, even if someone else has suffered, we kind of get the benefit, which is great. But, yeah, definitely something like Cloudflack, there are alternatives available. Of course, I don't know what they are. But definitely something like that is well worth looking at. So, in an ideal world, we would all look at scaling when we build an application. It's not. You don't have time, you have pressure, you've got your boss going, no, I need this yesterday. We need to launch by this big conference or whatever else. So, let's be honest with ourselves, it's probably not going to happen.  There's stuff that you can go and do today.  Or even, yeah, there's plenty of good tools within Linux and Unix systems. You know, using SAR is better than not using anything. Using the slow query log is better than not using anything. So, there's definitely ways that you can work out where the problem is like. Then, isolate those problems. Like I said before, there's no point throwing metal, a web node, if the DB is crashing. It's not going to do anything. So, isolate things off. Go, well, I know this is a problem. I know that these crons are a problem. I know that this database is a problem. Isolate that stuff off and then focus your efforts and your resources on the bits that are a problem. Thank you very much. So, we've got some time for questions. You know, once we're finished, please do rate this. I am also the maintainer for joining. So, a little plug. We always, always, always need more contributors.  That's absolutely fine. I'll be around for the rest of the day. Speak to me, catch me on Twitter, email me, whatever else. Any questions? Stunned silence. No? Not even, what's the meaning of life? No? Okay. Oh, yeah, sorry. In places where that isn't necessary? Yeah, so for anyone who couldn't hear that way to what the question was, is that obviously we talked about the N plus one issue and our solution for that and whether there were any kind of negative impacts of that and whether we'd looked at those. Because of the way our application works, if something's in a collection and the relationship is being loaded, it's about a 95% chance we're looping the thing. So we're going to need all those relationships anyway. You might have issues if you've got stuff that you kind of paginate after a relationship's load, then I guess you'd have a problem now. I mean, whenever you've got pagination, we take the size of the collection first. So we'd still only be loading a relationship on 25 records or 50 records or whatever, whatever a page was. So in that sense, because we're doing it as part of the loop, we don't have those issues because we know we're using it in a loop anyway. If I guess you were loading a collection of 50 and only using the first item, then you need to consider that. But then I would suggest you probably don't need to be loading the collection of 50 in the first place potentially. Okay, so a question again was how do you cash kind of third-party APIs if we kind of have millions of sales? And the short answer is we actually cash the output that we generate.   I'm not talking hours. But then we'll use that and we'll take that data and we form that into something that we can inject into our graph building JavaScript library that I've never looked at. Oh, and that's what we cash. So we'll cash that array. So we don't cash the raw data coming in. We'll generate that report and we'll cash the result for that. And then so because that's on their dashboard, every time they get to their dashboard, they then just get that cash data graph for 15 minutes. Anything else? People are stating? Well, thank you very much.


I'd like to call to order the community television of Santa Cruz County Board of Directors meeting for April 24th 2014 I'd like to do a roll call I'm here Nathan Benjamin not here James Fisher not here Tess Fitzgerald not here Joe Hall Is here Total rank Dory Steinman here Lou Twasso here Adam Wade here Tom man. Hi here. Thank you The bottom of the list made it So now is the time for oral communications any person may address the board about an item not on today's Agendas must be within the jurisdiction of the board and you are limited to three minutes I see we have Phil here. So would you like to address this Phil? Please do Thank you so much for all the work you guys really really hard work. You guys are doing to bring the station around I know that there's countless hours that you guys put together together and I'm just saying I'm very grateful for the work you're doing here for so that we can express ourselves artistically I look at video as a Electric canvas Also, and I look at that look at video as just another art form just as valid as a Stradivarius or just as valued as a 25 years of music school, you know, so this is this it means a lot to me you guys here and then you're doing it I'm just saying thank you. I Have been a member of the station for about eight years and I Just recently tried to rent two cameras to try pots to microphones and The quote that I came up with was 472 dollars Compared to about $80 the same equipment. I guess okay, so Keith asked me how long ago was that you know, Keith I have to admit it was six years ago It's still but still it was it wasn't that expensive just six months ago It wasn't it wasn't 472 dollars. It would never come up 472 dollars Four kids just barely hanging on So I Plead you guys to think about this price is I'm gonna go out and buy a camera actually probably instead of Instead of excuse me online Okay, I buy camera But I don't want you that you know You know what I want to do is at least cameras are gonna be sitting on the shelves here come Wednesday when I do jazz day International jazzy on the beach, which is it which is done by Insepo, which is Started by the UN United Nations. This is something that the CTV should be involved in and I want to be there I'm gonna do it, you know, but if I can't get equipment from you guys for a reasonable price reasonable fashion plus my quote has been taken so long On on the 7th I asked for a quote on the 10th Still I got the 7472 dollar quote just recently but now they said okay, we're gonna do it, you know commercial It's not commercial. This one is they're not paying me anything to do this So it's not it's not a commercial shoot. So supposedly the price will come down. We'll see we haven't gotten the baby yet I'm still waiting. So here I am going forward to Wednesday a week from yesterday and Jazz day on the beach huge promotion International promotion. It's going to be also shown in in Europe It's gonna be broadcast to over 500 million people in Europe. Okay, so this is gonna be a great event and it's gonna have CTV on you know, and We can we can you know If I want to hear it here also, of course But I just I just feel like it's keeping the tools on the shelf Where there's no use to anybody and it's not helping CTV to have those tools here without me using them That's my that's my bottom line. Thanks So that's that's your time. So I asked you to wrap it up. Oh, it's right Thank you guys again for all you do and I can't express it You know man, I'm sorry if I came off a little harsh, but man 472 bucks compared to 84. I mean, that's over 400 percent. Okay, I'll do you also because Okay We really that's it's a letter order to you that I think actually we we can't we can't really Just just it's not the right time to we can we can address that later Okay, great. Are there any late additions to the agenda Because there are I do want to change the consent agenda. Are there any late additions to the agenda? Okay, everything that's on the consent agenda. We need to move to a regular agenda Finance committee did not have a quorum. So We could leave we could leave approved minutes on the consent agenda The finance committee two items need to be brought to the full board and the governance committee has asked that this rules and procedures Be brought to the full board So I'm going to move five six and seven to the regular agenda. I'll keep their numbers and I'll just keep for Consent agenda If that's acceptable with rest the board and I'll ask for Approval a motion to approve the consent agenda, which is just the minutes. So Tom moves. No second back Okay Any discussion Okay, all those in favor Anonymous Okay, so then the item five now is on the regular agenda is Approved recommendation of the finance committee Item now is to accept the March 31st financials as proposed by executive director So can I just make a really clarifying comment for folks so we When we had our bookkeeper take a look at it The CPA who normally comes hadn't come because of tax season So we actually have the bookkeeper reconciled today So we are up to date as of March 31st So the finance supplement that I gave you this evening has been corrected So I just wanted you to know that because there were a number of things that changed in the last month in March They were very critical for you to be able to look at For example, the fifty thousand the forty eight thousand dollars that we took out as a loan from the community credit union That hadn't been entered because we didn't receive it until March And so it had to be reconciled for March and now it's in there Additionally the funding that we get from the county hadn't arrived until April 4th So that will not that'll be a month slightly delayed as well, but I don't think I think it's all good news And having it reconciled. I just want to make sure you have the numbers tonight does the board need some time to Look at the agenda as gentem Oh, I see it under business. Oh, that just needs to be that's just a typo business equipment loan There is a typo. Thank you busy knees Yeah, we'll get that. That would be my only comment to fix that little short and just so you know that it's it's not an actual loan I mean it is but it's secured against our 12 month certificate. That's at the credit union So it it was less liability for them to give us that loan and we've already put it in the county's budget for a capital budget for 2015 so we will receive those funds back from the county and pay ourselves back as of July After July first, okay, so that will be taken off as a liability great If there's no further discussion do we have a motion for number five, I'd like to make a motion that we approve at the Financials per the executive director with the one little typo corrected Second discussion All those in favor posed The next item is the CTV financial policies, which was also part of your packet This is as it came out in that committee discussion. Oh, that wasn't me This is an addendum to the current policies that we have They need to still be merged in with the current policies to make sure that there's nothing redundant But the main point purpose was that our auditor asked us to come up with a checklist that the treasurer and the ED initial at the end of each month that's part of the packet and The other things were just general Financial policies that are normal for nonprofits It did come up that there was an eye a concern from a board member that It specifically says all mail will be opened by the ED or the board chair and The ED and the board chair feel that that is a reasonable and normal policy I'm happy to entertain any discussion if someone disagrees, but Seems like that's a normal policy All business mail that comes in Yeah, if it becomes onerous we can always make amendments to it later You know, I think that the main concern is that employees should not expect to receive personal mail at the organization's Business address, so that's really what it was addressing that any mail that comes in for any employee past present Future that the executive director of the board chair have to be able to Open any mail that looks like it's for CTV and any mail that is received here is assumed to be business mail We don't want ways getting mail here. Got it. Okay.  It's the parking fees from the city of Santa Cruz how I got my name on it I don't know right, but I certainly want Kathy to open that And we don't want to wait for a month if you go to town or when have you to have to check on that mail And also there's things that are in passing And I'm sure there's mail that comes to Mary and Mike and there is And so I think that's pretty well now that that seems like it's a really sensible solution to that I don't have a problem with that since we're discussing it. Does that formalize the I guess policy that we have that's somewhere that should have read to know to know that or should we somehow Memorializing that in some fashion because it seems like if that's happening Except for you know in these instances where somebody you know sent you something because it's tied into what you do But should we do that or is it pretty standard procedure just to kind of talk about it and not leave it alone Or should we get a letter out to that individual say if you were getting mail sent to CTV Personal mail that needs to cease this is Well, the board hires executive director and executive director deals with employees And I'm sure Kathy has dealt with this there has been a conversation with that employee in the manager So it's already been taken care of Just just to remind her we don't talk to employees directly about these things Okay, is there any other discussion on the financial policies? Or I think what Tom was recommending. Yes, so I'll make a motion to approve the CTV Financial policies that you have in your packet Has an addendum to the existing financial policy Any further discussion And then the last item is the CTV rules and procedures Now we've been it's been in your board packet for the last two or three board meetings It came to the governor's committee yesterday the governor's committee met and had a quorum and felt that We're pretty much Rung out these rules and policies there were two items two issues that came up and It was recommended for approval to the full board Dependent on These two items being resolved Number one is Kathy had mentioned to us that it's under legal review at the moment Which which issue is this governance? We do have to get our attorney to prove them before they can be finalized But that doesn't prohibit the board from approving them as a draft So the the board was going to approve it contingent on legal approval Mm-hmm, and the second one was there was a concern from one of the committee members that the section about Users Equipment and all had a lot of redundancy in it and that maybe we take one last look at it before finally For a file play to see if there's anything that could be removed But it wasn't a strong feeling it was just a suggestion that maybe it would be More likely to be read if it didn't Because that's something a staff could take on with yes, the board In fact, that was the grammar and feeling is that we'd like that a staff to take I'll let you know what section that is So that's the committee was recommended that the board approve it contingent on those two things staff reviewing it Okay, it seems like that would be a lot of eyes on it. So that seems very reasonable Yes already Thank You Tom To Nick Brant who is on that committee. Yes that number so I Would entertain a motion. I can't make a motion. I'm happy to move approval of the CTV rules and procedures as recommended by the governance committee with the two Recommendations additional recommendations from the committee that you the chair voiced And now All right Hello everyone So We had our relaunch. Thank you so much for those of you who attended and Those of you who gave us wonderful chocolates for that event. They were big hits. They said CTV on them We had a wonderful event it was really It was just great Fred Healy spoke as sort of the keynote for us and his I thought his presentation was just so right on target for Really the importance of public access Even in a post-youtube world and how important it is for government transparency and for democracy and how There isn't still the kind of local content because of the conglomerations of the media industries and How we really provide For a real need in our community. So he said it much more articulately than that And we will have the video up so people can go and watch the whole grand opening. We did videotape the entire event Okay, so if you missed it, we'll have that up. I was just talking to staff today to make sure we had all our donors Reflected in the credits for that event I will say just as a huge Kudos to all of the staff this last I would say six weeks almost all of us were working on every Saturday So we we really went Above and beyond to make this event successful As you probably saw when you walked in the front door, we have two new brands for our community channels And we'll be launching a design contest for the third the third channel It's cruise TV on channel 26 and you got gov on Channel 25 so it'll be our government channel cruise TV will be our local channel for Educational and sort of more curated content and then channel 27 will continue to be a free speech People's channel So we will be doing a redesign for that I've also handed out to you, and I don't know maybe somebody who's in front of a camera could hold them up for the viewers Because I don't think I'm in front of a camera Am I There we go, so there's the sponsorship Of sheet that we made for this event and you can see the that how to become a CDV sponsor. Thank you so much Then we have the CDV user So there's there's really two in the in the new model that we launched on April 15th There's really two different types of users We no longer really have members the way that we have in the past we have users So we have a commercial user which Tom could you hold up the ctv pro? So ctv pro is really for a commercial user of Who needs video productions done for their business or for their nonprofit or perhaps for their school district? We come in we do a professional level shoot. We're paid for that Our director of content and production Jeremy Whalen's been doing an excellent job with these productions And I think this product sheet that we've created for this Really sort of shows you that the level of quality that we're now putting into all of our paid professional production work The ctv users is really for people who have been involved with community TV regularly They do have to become certified to use any of the any of the tools So the pro folks just come in they hire us we provide a staff person an engineer in the studio That's all built into the pricing so you can see the rates are much higher for a professional level crew And equipment for a ctv user You can actually get certified in this equipment and then be able to go and check it out And so the fees are much lower For for this kind of use of ctv's resources And then we're hoping of course to get new sponsors of war. Thank you so much for showing of those documents We also were able to really kind of formally thank staff and the interns and the board and Lynn Miller who helped us to get to where we're at. I want to also again thank Keith I didn't embarrass him in front of everyone that night, but I planned to and then I got really busy Keith and Matilda in particular and then also Tom who's been really involved in our former chairs Well Karen in the transition over the last year. I want to thank you guys for really Being here almost every day sometimes so it took it took a village to really go through this transition I was just this morning looking through a document that I had sent to our attorney last April so really a year ago April 18th just about a year ago And it had four things that we were going to do in the next 12 to 18 months Just just four things and I looked at that list and I thought oh my goodness We've done like 20 more things than that so what we were able to and we were able to accomplish that in less than 12 months So I really want to say thank you to this entire team for the board for having the faith in me And in my team to be able to do this work There are many times I didn't know if it was possible and I want to thank all of you for Be very encouraging very trusting and really allowing us to do what we do best as staff Which is manage operations of community media centers It's been great for for our entire team also to learn what's possible and what we can do We really pushed our own boundaries about what we what we thought was possible, and I think we'll be looking For folks out there in the world who who really are trying to figure out how to do what we've been able to accomplish this year So thank you very much for that support You can kind of look through all of the things that went into both the relaunch event I do want to point out that We weren't able to have a personnel committee meeting prior to this meeting But we do have a personnel handbook that we want to have the personnel committee Review and that it'll come to you in the main meeting But we have spent quite a bit of time on that we actually it's a it's a great Example of a joint collaborative project by both C map and CTV We both needed a employee handbook a new one And so we actually compiled our resources and we're able to hire somebody wears a loan We really wouldn't have had enough money So that's one I think very good example of our collaboration And that will be completed and available for your hopeful approval And we would like to have that approval of the committee even before we go to the county Which will be on May 13th. We'll be going to the county. We'll be presenting our 2014 capital budget operating budget and our Activity plan for the year and most of that's already been outlined in the business plan that we submitted It was a 72 page business plan that we submitted to the county back in November 1st of last year But we'll be revising it based on some of the changes that have happened even in the last couple of months and Submitting it to the county this next week and then we'll be presenting all of that on May 13th I do also want to mention that we made a final decision a couple weeks ago to hire Lindsey Bishop Who will be our new station director? Lindsey is the second in charge at the access Monterey Peninsula Community media center has been in community media as the number two person there for nine years Working closely with the executive director. I think she's going to be a great addition to our team It was a unanimous decision by our hiring committee, which was comprised of Matilda Keith and Tom So thank you the three of you for all of your help that was a lot of work and Nick was also involved in that decision When did you say the main meeting would be? I? Did not say I did not say just that we will be talking about that We will hope because I'm your personnel committee and we have to meet before we do and that's probably something we can do after the meeting to figure out those dates And Lindsey will start on Monday, so we'll be training her During that time. I think the only other things We have done a number of training programs in Watsonville I just wanted to bring to your attention, especially I know for Adam who works a lot with the PVUSD community We did a collaboration with the Watsonville Film Festival where we did a workshop for three days Unfortunately had pretty low turnout, but we were able to then reach out to Dale poor and did a program Tricaster training which he has been really excited about and really grateful for because he had a Tricaster and wasn't really sure how to use it And so we were able to really bring both him and his students up to speed on that and we were able to help him troubleshoot It when it wasn't working so it's been a really good Collaboration and it's also helped us to fulfill some of the requirements of the grant that we received from the Irvine Foundation Which will need to be reporting the deadline is June 1st for that Um, the only other thing that I probably should mention. Oh, there is I did pass out the C CMAP CTV contract The time frame for renewed work One thing that Keith and I because we've been so busy with all of the actual work that we're doing We haven't talked about whether CTV would like to and that's that's the correct one that you have in front of you It just says April May and June so as you may or may not Remember we signed a one-year contract with CTV that started June actually July 1st of last year for one year and so it will end on June 30th this year While we have put $50,000 in contract work, which is is about a third of what we provided for you this year That will only give you 1.6 days a week of both myself and or next time And we know that you're going to need Nick in July and August in particular because he'll be Rebuilding on your behalf rebuilding or submitting a bid to the county to rebuild their facilities So we've already been working with the county for that. So Presume that probably Keith and I will begin working on that But I wanted to just give you an opportunity to ask any questions or provide any feedback or or give any information To us that would be helpful in drafting the contract for next year As I mentioned, it is a more limited contract. We really feel like I think from the beginning My goal was to help you have the foundation to be sustainable on your own And not really need us to manage your operations And I think we've we are really close to achieving that Once we get the new station director in place that will really go a long way towards meeting that goal and then You know the technology is all in place. I think we've really built the foundation for a CTV to be sustainable for the long run So if you have any questions about the contract timeframe, this is just the next three months what we anticipate doing to complete our contract with you for 2013-2014 fiscal year You have you have put a heck of a lot of time and energy into CTV and we are deeply grateful Thank you for all your work. We really want to recognize that. Thank you very much. I really appreciate that That's what I just echo what you said about the last six weeks The event was a terrific event. I think it really was a great launch Fred Keely was terrific his comments were great and the staff just did so much work to make that event happen. It was a Really good event Thank you very much and thanks for your help on being my personal pressing and blur that evening That was very helpful. I was a little into me and and Tom was was very helpful in keeping me on track. So thank you, Tom Other questions for Kathy Okay The next is or a report from me and I just was going to mention that we had the personal Manual to approve I had down here So we can move on to 10 most anyone has any questions Requests for specific items to appear on the next meeting agenda What about a picnic don't we usually do a summer picnic or it's been in the fall all these last two years Oh, okay, it's been in early October the last maybe work on a date for that because people's schedules get so busy So I don't think it would hurt to have something planned. I think last year we scheduled in June We planted in June for Okay, we're going to do okay in September. Yeah, it was a three and a half four months Especially when people come back from school towards school with families Okay, any announcements I I want to thank you Keith and and all the other board members and staff and really everybody because The amount of work that has gone into this trip transition is tremendous And I don't think any one person, you know can take credit for it But you know it all came together because of the team that came together to get it done I'm just I'm really proud of everybody for all the work that they did Thank you I'd like to point out that there's still a lot of pull go back to the old bottle And I think as a board we could really help Kathy by supporting her and letting people know when you hear a complaint that Things cost more things are harder to do things aren't like they used to be right in our budget It's unfortunate. It goes back to Divca and federal law And what we have to do is a board is support the new model support Kathy and Nick and all the rest of the staff Because we don't have a choice and we were told that so we have to follow through You might do you want to go grab him? Yeah, I did want to mention Yeah, I think that's really great that you mentioned that And it is difficult for staff because we are still getting quite a few complaints and it's hard when We need to make the work happen Just to get things moving into place and be set up so that that foundation can be established that it can be Difficult when we're getting a lot of complaints. I think those complaints have really diminished I think people have been getting more and more comfortable with the way things are now Which is very different than they were six to seven months ago Has there been a blip up in terms of complaints since the relaunch and people sort of reconnecting Yeah, I would say we've gotten two or three comments just I think people it sort of hit home The fact that we were going to have to charge for things now I don't I think that there's probably also some confusion. I've heard a little bit of confusion about what the costs actually are You know when you're renting equipment for an entire day and it's you know two field kits It's going to be more expensive than renting a camera for one hour to shoot an event or two hours So, you know, of course, we should be involved in every production that we could possibly be involved in but we don't We used to be funded to do that and now we are not So we hope that the community will be able to get certified on the equipment be able to use their volunteer time to purchase Equipment and that really we've just sort of formalized a system that in the past has been less structured For people to volunteer and be able to use the resources at a community television Yeah, I think as long as we explain that to people I'm hoping that they'll understand that we just We don't have a choice. It does seem that we have been explaining that for over a year and a half now And yeah, so sometimes we have to keep explaining that and also I mean I think change is hard I think it is reasonable for people to be having a challenge dealing with you know the change I think one of the things we tried to do during the sort of vibrancy program is do a non-volunt communication class about You know how to as volunteers how do you manage those expectations of the community because we do hear people from nonprofits say well You used to come cover that for free Yeah, we did used to come cover that for free and I'm glad we were able to provide service for your nonprofit for 18 years Providing service every year to cover that event for free for you But we simply do not like many nonprofits have the funding anymore So I think the volunteers are also going to have to deal with that too when they go out to the community when Board members go out to the community. It's not just staff I think all of us that are involved with this community that is community television need to be able to really articulate What's changed here, but how wonderful that we've been able to protect this this valuable asset that we have I just had a little technical thing that I want to make sure you guys know about Announcement wise I'm going to be out of the country in May So unlike my usual days off where I email you back and forth I will not be emailing you for a two for two whole week I'm going on a real vacation. I would you do you want to give the dates so everybody knows you're not maybe not My roommates will be there every day. So I'm not you're gonna be gone for two weeks. I will be I personally will be out of the country Yes, so I just want to let you know I'll be back on the back in the office on the 1st of June out after After sometime really okay, but I will be here for the presentation to the county Oh, okay. Yeah, and all board members are invited to come to the county 13 I think not just invited but urged I think it's it's it sends a good message to the daytime Well Keith knows I'll be at the international science and engineering We don't need you to actually In fact probably just let the executive director and the board chair speak on behalf of your organization But I think to have numbers there they can applaud. I mean, I think that's a great thing to have Supervisors meeting starts at 9 that our agenda item will be somewhere between 945. Oh, it's in the morning. Correct Okay, well, I don't have to go to the spot I can so I will try and let you know But I will not know the agenda item number probably until a few days before that mean Okay, if it's just like as a pass should be out on Friday probably Friday before Tuesday Should be but I have had times where it was Monday. So anyway, why I have an eight o'clock. Oh The 30th. We'll send an email 13 May 13th. All right because I had the 30th with the question mark for is that the board meeting perhaps for Us is that our board of directors meeting Keith our next board of directors meeting To be the week before that probably second Of May Not be there for that. Oh, okay. That's good. It's on the board calendar and I will check it And then the personnel committee you will only talk to you after the meeting actually There's a full personnel committee, which I will be talking to okay. There's five members Okay, oh, okay So any other announcements? Okay, I will accept the motion for adjournment So moved second. Okay. All those in favor Thank you everyone


Never have I ever gotten a tattoo. Never. I feel uncertain about what I'm doing next week and having some... Ambulance is not something like that. I mean, what would you get? I wouldn't want to wash it off. Unless it was a part of my body that I couldn't get to. No, but I really want one. Any particular one that you want? I'm gonna get a moon, I think. Never have I ever dressed up as a member of the royal family. Never. I mean, apart from work. Well, apart from on set, no. Never have you had an embarrassing moment on set? Have. Have, have, have, have, have, have, have, have. God, like 50 times a day, dying. What's a memorable one? Just me dying. I mean, just not actually embarrassing. It's embarrassing. It's the most embarrassing thing you can do with your life. And you get it wrong all the time and everyone's watching and then, you know, it just keeps going wrong and it's, yeah, it's tough. Oh my god. Do you even know this? Um, I don't think I can say it. I actually got red. Oh, God, I can't say it. I can't see embarrassing. I'm actually getting red. Give us a G. So, when I was walking down a corridor and I just, I farted and it was, it was right in the middle of the scene. It was, I was like, I'm so sorry. They were looking at me down a corridor. I didn't mean to. Oh, God. How would it have to be a staying character? We just kept going in the scene and I just broke down by the end. I literally ended up on the floor and I was like, it was so red. That was actually very embarrassing. Just because the whole set heard, you know, and I had a mic on, so.  Half. And who? Oh, God, them all. All, yeah. I mean, so many. Well, just Colin Perth, actually, really. Yeah, Colin Perth. Was that yours? Well, I found him impossibly attractive in that film. Impossibly attractive. It was a moment in time, wasn't it? It was. And he does it so brilliantly. Oh, just brilliant.  Yes, oh my God, I used to fancy Aladdin. Yeah. Never have I ever used a fake name. Have. Never. Oh, I have a lot. I bet you have. Yeah. Do you have a particular fake name? You can tell us. It actually wasn't my own doing. It was for something else, but yeah. It started with John. It was a John. It was really rubbish. And then I check in and then I wouldn't have the right idea. It's just a nightmare. Yeah, but you're called Matt Smith. And they're like, oh yeah, but it's in there like, yeah, but you're not Brad Pitt, mate.  No, I'm travelling under a suit, aren't I? It's a, no, no. Why? What in case? It was an unraveling. Checking, just having to justify your... Well, no, but it is, but I am on the room. No, my nickname's New, but that's kind of real. I've had it since day one. Never have I ever had a secret party trick. Oh, never actually. Apart from being a twat. That's not a secret. No, I know. I don't have one. Apart from, like, my foot being double-jointed. I'm boring as that. I need to get one. Oh, when I, once when I was very drunk, I got out of the only song I know and sung it on repeat with this poor guy on a guitar and then the room emptied. What was the song? Summertime. I mean, so inappropriate. I think I did it for, like, a drama school audition once, so it's, like, the only lyrics that I knew, really. Anyway, the room emptied, and my boyfriend at the time was, like, hideously embarrassed the next day. Was that for karaoke? He went, it was mortifying. It was mortifying. No, it wasn't even karaoke, so some guy with a guitar went, play that one. And then, yeah. So, yeah, emptying rooms at parties, that's my trick. It's what Margaret would have done. Oh, she did. That's it. Never have I ever gone skinny-dipping. Have, have. Not in the ocean. Not actually in the real-life ocean. I think I'm going to be too scared about sea creatures. I will, though. Watch out. It's on the list.


Choice, freedom, and flexibility. I could not agree more. Welcome back to the channel, buddy. For those of you who are new around here, my name is Michael, aka Dr. Cellini, and I'm a board certified diagnostic and interventional radiologist in New Jersey. Now I just finished filming a video. I closed out of that video, opened up YouTube, and what did I see? A friend of mine, Christina Barale, anesthesiologist extraordinaire, YouTuber extraordinaire. Did I mention someone I've been following for many years now in this career? She decided that she's quitting medicine. And I haven't watched this video. It literally just popped up, but I had no choice. Turn on the camera and we're going to react to it together. Let's go. So Christina Barale is an anesthesiologist. Like I said, she's done a lot of stuff on the side. YouTube started a scrub company, all this other stuff. So I know she has a lot going on. She also has one, maybe two kids, her husband's orthopedic surgeon. She has a lot going on. Kind of like myself, but I don't know. I need to watch this video. I need to see what's going on with Christina. Maybe I'll text her. Should I text her and tell her I'm gonna react to her video? Maybe I'll do it at the end. Maybe I'll do it at the end. Remind me at the end. All right, let's go. Where's the balloons? I need some balloons, some confetti, some fireworks. I have quit my job as an anesthesiologist. Say it ain't so. It is though. I have quit my job as an anesthesiologist. As you know, medicine is a changing landscape. The pandemic has shifted everything. I have to say, if there was one field that was incredibly affected by this pandemic, it would be anesthesia. Anesthesiologists had to deal with the airway of all things during this pandemic. It was terrible. And also with emergency medicine physicians who also had to be on the front lines seeing these patients as they came into the emergency room in the hospital. I can't even begin to even know what kind of stress they endured throughout the last few years. Sometimes places get shut down because of COVID or there are lockdowns or things like that. And where you may normally have worked as an anesthesia provider is no longer having cases. Yeah. So like she says, a lot of people may know or may not know that a lot of outpatient places don't really accept any outpatient procedures during the pandemic, which means people who work in outpatient centers could be an interventional radiologist as well.  So yeah. Basically, what has transpired over the past two years is a shift to anesthesia being sort of a mobile job. And this is something that, although I think it's very smart from a business perspective, it's something that no longer worked for me in my lifestyle. So I think what she's saying is she used to work predominantly in an outpatient setting. And then now that the outpatient clinics were shut down, they had to utilize those anesthesiologists, put them in the hospital or wherever they needed them, essentially another hospital here, another hospital there, whatever they needed them. She probably took this job to work in an outpatient setting and she's no longer working there. She's being thrown everywhere into crazy cases that she may not be into. So I totally understand this. If that happened to me, I'd be upset too. A bunch of us were asked to be able to move all around the town and sometimes multiples places a day and or sometimes not knowing where you're going until like eight o'clock the night before and it might be literally 45 minutes away the next day. And basically I said, no, this is not very similar but kind of similar. When I worked for that real estate company in Atlanta before I went into medicine, the reason I ultimately quit was, even though I was planning on quitting anyways, they gave me an ultimatum where they said, we want to move you to another property. And I said, I don't want to move to another property. And I was like, what happens if I don't go? They're like, well, we're gonna have to let you go. And I was like, well, I guess you're gonna have to let me go. So that's probably how she felt there. And I basically shifted my status from full time to something called PRN, which in healthcare speak means as needed, I can now work when I want to. I do have more flexibility, more free time to pursue my creative passions. So yes, she quit her job. But she's also doing what every single person, not just in medicine, but every single person has realized that freedom is the only thing that we have.  The hardest thing to do is work a daily grind the job like we do in medicine or anybody does throughout the world. But if you can just work when you want or when you want to pick up a shift here, pick up a shift there, that's the best way to practice. And that's how you avoid burnout. Now, obviously, you don't make the same money. But if you don't need the money, you might as well focus on your free time, what you actually want to do with your life and not burn yourself out. Over these past few weeks in my videos, I've been putting out a lot more content lately. I have been happier. I am escaping something that was really dragging me down. Now she's further ahead in her career than I am. So I've only been working as an attending now for what, seven, eight months now. But I absolutely love my job. She sounds like she loves her job, but not at the expense of being thrown into a million different hospitals, because that's not what she signed up for. So I totally get this. I think if my job were to be like, we want you to work like an hour down the road and then tomorrow be here, I'd be like, but I didn't want to do that. But she has the freedom to do that because she has another outlet of making income, Strubline, YouTube, social media. Her husband also works. I mean, this is the best case scenario. This is why I always say you need to have two means of income, not just one, even as a physician. I just realized something. She's actually practicing medicine and practicing as an anesthesiologist the way you're supposed to practice. And what I mean by that is she's practicing a way that prevents her from burning out. She does as little or as much as she wants. And that keeps you loving your job and not hating your job and being overworked. Unfortunately with things being in this environment where I didn't know where I would be going the next day, I just said, you know what, this was the, the emphasis I needed to move on. And so I am free, free to do freelance work, which in the medical field is called locum tenants. And it's a Latin term, which I have no idea actually what it means. I didn't know what that meant either to hold the place up. So one of my buddies I was actually talking to as an interventional radiologist, he does locums work. That's what we call it for short. He just kind of bounces around from hospitals across the state, shout out Kavi. And doesn't have like a full time set job, just has multiple part time jobs. And some people love that and they keep some kind of wanting more and it keeps him interested in his career rather than being at the same spot, working a mundane job over and over again, overworked, underpaid, et cetera. I'm all for this. So she's quitting her job, but not exactly being an anesthesiologist as a whole, just she's free. She's free as a bird. Whenever there is a shortage of an anesthesiologist, whenever a facility has someone sick or whenever they have someone like on an attorney to leave or on vacation, I'll go there for there a couple of days or maybe a couple of weeks or maybe just one day. And to kind of like, you know, show up and be an anesthesiologist and like love my job and love what I do, but have the freedom to say no and take a job only when I want to. That is the T freedom to say no and take a job whenever she wants to. That's the dream freelance anesthesiologist. That sounds pretty cool actually.  That's insane. She must have like a really good practice or something, which it sounds like it, but we can kind of schedule our vacations, you know, a couple of weeks, a month, maybe. The goal has been to really kind of push everything that I do in this space and even offline. There are a lot of things that I work on offline that I don't talk to you guys about. And I think that that that is really kind of taking a front seat for now. And I'm very happy about that because that's what I've wanted to do for a very long time. The best way to love your job is to not overwork yourself to death while doing it because I keep reiterating this. This is like the dream here.  That's what everybody wants in medicine, but unfortunately we have to kind of burn ourselves out to get there. What I found I was chafing against was sort of the rigidity of the job itself in terms of like absolutely having no flexibility to do this or that. And I was really struggling with those in terms of being able to do what I want to do creatively. I think I totally feel her. I mean, if she didn't really have time to work on YouTube or her scrub line or whatever she's doing creatively, that kind of gets suppressed and you want to have that creative outlet. And if you can't do it, it kind of just bottles itself up and it makes you resent your job. So I totally did it if she wasn't allowed the flexibility at her job. And then now she has the flexibility to do all of her creative things and get that stuff from being repressed in her mind. It's going to be a lot better for her and she seems happier already. I mean, this will apply to any job, not just the field of anesthesia. Yeah, that's the crazy part, right? Because you see so many like YouTubers, comedians, the best part about their job is not having a nine to five. It's crazy how this is like the way our generation is going. I think the pandemic has really affected a lot of people, but particularly healthcare workers, nurses, techs, doctors, surgeons, anesthesiologists, CRNAs, AAs, all of us, we have been really, really, really hit hard. Yeah, I totally agree with that. I think healthcare workers are obviously more so than most other fields outside of medicine. I mean, a lot of other fields were home or working from home or just had a leave of absence from their job while healthcare workers were like working extra long hours in full PPE, walking into the unknown at all times constantly stressed out. It was a very tough last few years for healthcare workers. So when I was administering anesthesia, hands on myself, I am happy. I love it. I absolutely, it's like the biggest privilege and honor. She sounds just like me. This is exactly true. You know what I mean? Like practicing medicine in its truest form in your specialty is exactly what we're trying to do. And that's exactly what we want to do. The problem as all healthcare workers experience, there's a lot of other issues and other factors that come into play at our jobs. So if you can just focus on that one thing that we all want to do, kudos to her. I want to create things. I want to create content. I love creating, whether it's virtual content or whether it's products like I just, there's so much I have in my head and I just need to pick out of the air and my in this cloud above me. It sounds like me when I'm like in the shower or when I go to sleep at night, my head is like constantly thinking about stuff that like I want to do videos on, want to do content, I want to do this, I want to do that. It's like never sleeps. Probably why I don't sleep that well, but totally feel her. And that's the problem with people who have that creative gene in their head, just never sleeps. But I'm not quitting medicine because I love my job. All right. So that officially concludes this video. Shout out to Christina Braly for quitting her job, being more free, taking your job in your own hands. I think that's what everybody wants to do. So kudos to you for that super pump for you. That's awesome. So as always, make sure you smash the like subscribe button, follow me on Instagram, and subscribe if you don't already. And I'll see you all on the next video. Bye.


This is Pete, and this is Paul, and both are veterans. Pete here doesn't belong to any veterans service organization. Paul is a member of DAV. Pete's idea of veterans advocacy is complaining about veterans issues on social media. Paul sees more value in meeting with elected officials to discuss proposed legislation that will positively impact veterans. Pete gets his information from questionable sources. Paul reviews the toolkit on DAV's new grassroots website to improve the effectiveness of his advocacy efforts. Paul is a member of DAV's benefits protection team. Pete. Well, we're not really sure what Pete does.  Be a Paul. Go to DAV.org slash grassroots to find out how you can become a member of DAV's benefits protection team. After all, preserving our benefits begins with you. Thank you.